VPS租用和安全维护

本站为有兴趣自建VPN、SOCKS5代理的朋友们提供几篇教程:

自建VPN:经典的SoftetherVPN 和新兴的 WireGuard
自建Scoks5代理:最简单的SSH代理和超强V2Ray代理
对服务器端和客户端均有详细叙述和配图,可按主辅菜单对号选看

自建代理的前期工作是租用一台VPS(Virtual Private Server虚拟专用服务器),每月几美元租金的VPS可以满足个人使用了。可以在搜索引擎上用VPS关键字搜索VPS供应商,也可以通过介绍VPS的网站来选择。注册租用VPS的帐户要设置一个强密码。

推荐:租用Vultr VPS图文教程

VPS的操作系统以linux为常见,这里推荐Debian系统,占用资源比较小。本文以Debian和Ubuntu系统 (ubuntu是基于Debian的系统)为示例。操作系统往往是由自己选定部署哪一种,部署后会拿到一个域名或IP,还需要设定一个强密码。我们首先要登陆远程VPS系统,这里推荐Bitvise SSH Client这个工具(Bitvise SSH Client的安装和操作)。

在Bitvise SSH Client的Login界面上,填好Host域名(或IP)、Username用户名(一般用root)、port端口(默认22)、Password密码(之前设定好的),点选“log in”即可远程登陆打开终端(Terminal 见下图所示)。我们的自建代理过程要通过这个终端来进行。

自建代理之前,需要对远程主机做一下必要的安全维护。首先推荐安装使用Fail2Ban防御SSH暴力密码破解。

先更新系统:

apt-get update
apt-get upgrade -y

可以用“clear”命令清屏。

安装fail2ban:

apt install -y fail2ban

查看fail2ban服务状态:

systemctl status fail2ban.service

可以看到,绿色的“active (running)”表明fail2ban服务已在运行中。如果不是这样,则需要启动fail2ban服务:

systemctl start fail2ban

设置开机自启动fail2ban服务:

systemctl enable fail2ban

最关键的一步,是配置jail.local

nano /etc/fail2ban/jail.local

因为是新建的文件,所以里面是空白的,将下面的内容复制粘贴进去:

[DEFAULT]

bantime = 604800
findtime  = 6000

[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 3

用“Ctrl+X”保存和退出。

按下“Ctrl+X”时会弹出“Save modified buffer?”:

这时,输入“Y”回车:

会看到又弹出了“File Name to Write: /etc/fail2ban/jail.local”:

再回车,就保存上了。

最后,重启一下fail2ban服务:

systemctl restart fail2ban

上面的配置中:maxretry = 3 ,意味着,只要有三次密码输入错误,程序就会禁止恶意破解者的IP继续尝试登陆。可以自己模拟测试一下,三次失败后,即失去再次登陆的机会,日志中会看到这样的记录(红框内):

提示:本机测试被禁止登陆后,需要更换一下自己的上网IP才能再次登陆远程主机。

准备工作之二:设置防火墙

用这个命令可以看到防火墙的设置情况

iptables -L   

安装 iptables-persistent 这个软件

apt-get install iptables-persistent

安装过程中会弹出窗口选项,均选 yes
安装完成后会自动将现行设置存入/etc/iptables/rules.v4 /etc/iptables/rules.v6
将预先拟定的防火墙规则存入/etc/iptables/rules.v4 (用下面的命令清空rules.v4原有内容并打开从新编辑):

rm /etc/iptables/rules.v4 && nano /etc/iptables/rules.v4

将下面设置复制粘贴到里面(点鼠标右键即可粘贴,不要使用ctrl+v来粘贴):

*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

### Flush all rules
-F
### Trusted IP Access

-A INPUT -i lo -j ACCEPT
#內網全放行
#-A INPUT -s 192.168.0.0/16 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# ↓隱形掃瞄攻擊防範
-A INPUT -p tcp --tcp-flags ALL NONE -j DROP
-A FORWARD -p tcp --tcp-flags ALL NONE -j DROP
-A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
-A FORWARD -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
-A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
-A FORWARD -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
-A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j DROP
-A FORWARD -p tcp --tcp-flags FIN,RST FIN,RST -j DROP
-A INPUT -p tcp --tcp-flags ACK,FIN FIN -j DROP
-A FORWARD -p tcp --tcp-flags ACK,FIN FIN -j DROP
-A INPUT -p tcp --tcp-flags ACK,URG URG -j DROP
-A FORWARD -p tcp --tcp-flags ACK,URG URG -j DROP
COMMIT

Ctrl+X保存修改和退出。

执行下面命令载入规则:

/etc/init.d/netfilter-persistent reload

用 iptables -L 命令可以看到,拟定的防火墙规则已经成功加载: