Linux VPS主机安全-禁止Root登录,SSH密钥授权,Fail2ban,DDoS deflate
使用VPS主机虽然比使用虚拟主机有着非常多的好处,但是有一个最大的问题就是站长自己需要了解一定的VPS主机使用知识,尤其是在数据备份和网络方面需要给予高度的重视,否则一旦VPS主机出现崩溃或者被入侵,造成的损失将是不可估量的。
为了防范于未然,我们还是要提前做好Linux VPS的安全防范措施,本篇文章就来分享一下强化Linux主机安全的多种方法:为VPS增加新的用户,禁止Root用户登录;不使用密码登录,改用SSH密钥授权登录;安装Fail2ban和DDoS deflate,阻止暴力破解VPS登录密码和流量攻击。
Linux VPS主机安全-禁止Root登录,SSH密钥授权,Fail2ban,DDoS deflate
1、最直接的办法自然是查看你的VPS主机控制面板的流量统计,一定的时间内流量超出平常的几倍,肯定是有问题了。
2、有些小规模的攻击可能无法直接从流量异常中得知,这时我们可以使用命令:netstat -ant ,查看当前VPS的网络连接情况,单个IP地址连接数量过多肯定是有问题的。
3、使用命令:more /var/log/secure 可以查看到最近有多少次VPS登录失败的记录。
4、命令:who /var/log/wtmp 可以看到每个用户的登录次数和持续时间等信息。
5、使用以下命令检测短时间内大量IP发起请求:
1 2 3 4 |
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n netstat -alnt | awk '{print $5}' |awk -F ":" '{print $1}’ | sort | uniq -c |sort -n |
1、为什么要禁止Root用户登录?Root用户拥有服务器的最大控制权,一旦Root用户被攻破,入侵者基本上完全掌控了整台VPS,删除数据等将是轻而易举的事情。
2、而换用非Root用户,我们可以赋予Root部分权限给它,这样在保证了VPS正常运行的前提下,又可以在一定的程度上防范因Root用户的泄露而对主机产生的致命危害。
3、新增用户方法(把freeehao123换成你自己的用户名):
1 2 3 4 5 6 7 8 9 10 11 |
#Debian/Ubuntu adduser freehao123 usermod -a -G sudo freehao123 apt-get install sudo #没有sudo 可直接安装 #CentOS/Fedora adduser freehao123 passwd freehao123 visudo freehao123 ALL=(ALL) ALL |
4、visudo执行后,输入“i”编辑,找到root那一行,给你的用户赋予权限。然后输入::wq 退出。
5、使用上面的操作后,你就可以使用你的新的用户登录VPS了,使用sudo可以临时获取到Root权限,部分程序安装时需要使用root权限。
6、接下来就是禁止Root登录了,执行:sudo nano /etc/ssh/sshd_config,然后找到PermitRootLogin这一行,把Yes改成no,保存。
7、最后重启SSH服务就成功了:
1 2 3 4 |
sudo service ssh restart #Debian/Ubuntu sudo systemctl restart sshd #Fedora/CentOS |
三、Linux VPS主机安全:使用SSH密钥授权登录,禁用密码登录
1、SSH登录方式有账号+密码和密钥两种形式,为了阻止暴力破解VPS的账号和密码,我们可以放弃密码验证的方式,改用密钥文件验证。这样除非入侵者得到你的Key,否则无法使用密码登录的方式进入你的VPS.
2、有关Linux使用密钥登录的详细操作方法,部落在增强VPS SSH账号安全:改端口,禁用Root,密钥登录,Denyhosts防暴力攻击已经分享过,有兴趣的朋友可以参考一下。
3、有了密钥登录VPS,我们就可以禁止用密码登录这种验证方式了,还是编辑配置:vim /etc/ssh/sshd_config,添加一行:PasswordAuthentication no,如果有了这一行,请把yes改成no,保存,重启SSH服务,生效。
1、合理配置Linux VPS的防火墙规则,可以在一定的程度上阻止基本攻击。首先是被动式防御—允许指定的端口被访问:22,80,21,443等。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#配置,禁止进,允许出,允许回环网卡 iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -A INPUT -i lo -j ACCEPT #允许ssh iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT #允许ftp iptables -A INPUT -p tcp -m tcp --dport 20 -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT #允许ftp被动接口范围,在ftp配置文件里可以设置 iptables -A INPUT -p tcp --dport 20000:30000 -j ACCEPT #允许DNS iptables -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT iptables -A INPUT -p udp -m udp --dport 53 -j ACCEPT #允许http和https iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT |
2、主动式防御—拒绝超过一定连接数的IP,请根据自己的访问量来决定,该方法有可能会导致正常的IP也被封掉。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
iptables -A INPUT -p tcp --dport 80 --syn -m recent --name webpool --rcheck --seconds 60 --hitcount 10 -j LOG --log-prefix 'DDOS:' --log-ip-options #60秒10个新连接,超过记录日志。 iptables -A INPUT -p tcp --dport 80 --syn -m recent --name webpool --rcheck --seconds 60 --hitcount 10 -j DROP #60秒10个新连接,超过丢弃数据包。 iptables -A INPUT -p tcp --dport 80 --syn -m recent --name webpool --set -j ACCEPT #范围内允许通过。 iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7 # 记录攻击IP iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p all -m state --state INVALID,NEW -j DROP #允许状态检测 iptables -A INPUT -j DROP iptables -A FORWARD -j DROP # 除非允许的IP和端口,否则全部拒绝 iptables -A INPUT -p icmp -j ACCEPT #允许ping,不允许删了就行 |
3、执行命令:iptables-save > /etc/iptables 或者 service iptables save 用来保存刚刚设置的iptables规则。
4、让VPS重启后iptables依然生效,使用以下命令保存:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#Debian/Ubuntu sudo nano /etc/network/if-pre-up.d/firewall #将以下文件保存在/etc/network/if-pre-up.d/firewall中 #!/bin/sh /sbin/iptables-restore < /etc/iptables.firewall.rules #按下Control-X 再输入 Y 保存以上脚本,接着给脚本赋予执行权限 sudo chmod +x /etc/network/if-pre-up.d/firewall #CentOS/Fedora /sbin/service iptables save #适用CentOS 6.2 或 6.5 #如果是CentOS 7 或者 Fedora 20,需要先安装再保存 yum install -y iptables-services systemctl enable iptables systemctl start iptables /usr/libexec/iptables/iptables.init save |
1、Fail2ban可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作(一般情况下是调用防火墙屏蔽)。
2、当有人在试探你的SSH、SMTP、FTP密码,只要达到你预设的次数,fail2ban就会调用防火墙屏蔽这个IP,而且可以发送e-mail通知系统管理员
3、安装Fail2ban方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#Debian/Ubuntu sudo apt-get install fail2ban #Fedora sudo yum install fail2ban #CentOS sudo yum install epel-release sudo yum install fail2ban #程序说明 /etc/fail2ban/action.d #动作文件夹,内含默认文件。iptables以及mail等动作配置 /etc/fail2ban/fail2ban.conf #定义了fai2ban日志级别、日志位置及sock文件位置 /etc/fail2ban/filter.d #条件文件夹,内含默认文件。过滤日志关键内容设置 /etc/fail2ban/jail.conf #主要配置文件,模块化。主要设置启用ban动作的服务及动作阀值 /etc/rc.d/init.d/fail2ban #启动脚本文件 |
4、/etc/fail2ban/fail2ban.conf 是Fail2ban的配置文件,在这里你可以修改IP白名单、屏蔽时间、最大尝试次数、是否发邮件提醒等等,说明如下图:(点击放大)
5、Fail2ban可以监视SSH、SMTP、FTP、pop、http等服务,这些你都可以在配置中开启它。
1、DDoS deflate的原理是通过netstat命令找出 发出过量连接的单个IP,并使用iptables防火墙将这些IP进行拒绝。DDoS deflate也可以设置采用APF(高级防火墙)进行IP阻止。
2、DDoS deflate安装和卸载方法:
1 2 3 4 5 6 7 8 9 10 |
#安装 wget http://www.inetbase.com/scripts/ddos/install.sh chmod +x install.sh ./install.sh #卸载 wget http://www.inetbase.com/scripts/ddos/uninstall.ddos chmod +x uninstall.ddos ./uninstall.ddos |
3、DDoS deflate的配置文件在/usr/local/ddos/ddos.conf,详细说明如下:(点击放大)
4、/usr/local/ddos/ignore.ip.list是白名单,如果安装了APF防火墙,则可以在配置中开启它。
七、Linux VPS主机安全小结
1、影响Linux VPS主机安全主要有两个因素:一是Linux系统本身的漏洞,另一个是VPS上的控制面板。后者出现的问题可能性更大,所以为保证VPS的安全请不要安装没有技术支持的Linux VPS主机面板。
2、Fail2ban和DDoS deflate也只能是在一定的程度上可以阻止攻击,本身也是一种消耗自身资源的防御行为,大家在使用防火墙规则封锁IP时一定要注意辨别正常的IP地址,尤其是百度Spider的IP,最好将其加入白名单。