前言

之所以这次觉得写这一篇文章,是因为最近频繁面临他人的暴力破解尝试,看着服务器的数以十几万的暴力破解尝试感到非常不愉快。本次接着自己更换SSH端口以及开启DDos-Deflate的机会,给大家介绍下成本最低的自我保护方式。

修改默认SSH端口

  1. 首先通过修改sshd_config文件配置新的sshd端口
vi /etc/ssh/sshd_config #编辑sshd_config文件
  1. 找到#Port 22字段,将其前面的#去掉,并在下方添加需要新增的端口,例如Port 23456。这样的高位端口有助于降低被扫描端口的可能性。
#先移动光标到下面需要修改的地方,然后按Insert键进入修改模式

#Port 22 #删除前面的'#'号注释
Port 23456 #添加新增端口
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
  1. 保存修改并退出
#按ESC键退出修改模式
#输入:wq,回车保存并推出修改
:wq
  1. 重启sshd服务
/etc/init.d/sshd restart 
#如果报错,使用下面一条命令
service sshd restart
  1. 如果该端口不通,修改iptables或者firewall的端口设置,取决与你目前系统使用的是iptables或者是firewall。
#iptables里面打开23456端口
iptables -A INPUT -p tcp --dport 23456 -j ACCEPT

#保存并重启iptables
/etc/rc.d/init.d/iptables save
/etc/init.d/iptables restart
#firewall里面永久打开23456端口
firewall-cmd --zone=public --add-port=23456/tcp --permanent

#重新载入firewall,使得规则生效
firewall-cmd --reload
  1. 接着通过更换终端设置中主机端口port 为刚刚设置的新端口23456,看下能否通过ssh连接主机
  2. 再次进入sshd_config文件删除22端口
vi /etc/ssh/sshd_config #编辑sshd_config文件

找到Port 22并删除,按ESC键后:wq保存退出修改。

#接着再次重启sshd服务
/etc/init.d/sshd restart 
#如果报错,使用下面一条命令
service sshd restart
  1. 接下来在防火墙里关闭22端口
#在iptables里关闭22端口
iptables -A INPUT -p tcp --dport 22 -j DROP

#保存并重启iptables
/etc/rc.d/init.d/iptables save
/etc/init.d/iptables restart
#在firewall里关闭22端口
firewall-cmd --remove-port=22/tcp --permanent

#重新载入firewall,使得规则生效
firewall-cmd --reload

(可选)禁止ping

Linux默认允许Ping响应,因此使得攻击者可以使用拒绝服务网络攻击DOS。

服务器面对集中的Ping响应请求会迅速消耗网络资源,可以考虑设置服务器禁止Ping。当然与此同时,服务器也会面临无法依靠Ping来判断路由线路以及服务器连通性情况。

系统是否允许Ping由2个因素决定的:A、内核参数,B、防火墙,需要2个因素同时允许才能允许Ping,2个因素有任意一个禁Ping就无法Ping。

​ ——参考自Linux禁止ping以及开启ping的方法

  1. 通过防火墙设置
# 禁止ping 丢弃ICMP包
iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP
# 允许ping 
iptables -D INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP
#保存并重启iptables
/etc/rc.d/init.d/iptables save
/etc/init.d/iptables restart
  1. 透过内核设置
  • 临时开启或关闭ping:
# 临时禁用ping
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
# 临时允许ping
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
  • 永久开启或关闭ping:
#修改配置文件
vi /etc/sysctl.conf

#在配置文件中修改 'net.ipv4.icmp_echo_ignore_all = 1'最后的数字,0表示: 允许, 1: 表示不允许
net.ipv4.icmp_echo_ignore_all = 1

#使其生效
sysctl -p

开启DDos-Deflate防护

DDoS Deflate 是个轻量级的 Bash Shell 脚本设计的来帮助阻止/拒绝服务攻击的程序,它利用 netstat 命令来获取连接到服务器的IP地址列表,以及它们的连接总数。这是个软件级最简单、最容易安装的防DDos的解决方案之一。

​ ——引用自知乎专栏DDoS Deflate 的安装和使用

透过该脚本,我们可以非常方便的预防攻击。

#下载DDoS Deflate并安装

#进入根目录
cd ~

#wget下载安装脚本
wget http://www.inetbase.com/scripts/ddos/install.sh
chmod 0700 install.sh

#执行脚本
./install.sh

当脚本执行完毕,按Q键退出。接下来我们修改配置文件

#修改ddos的配置文件
vi /usr/local/ddos/ddos.conf

#推荐的修改如下
NO_OF_CONNECTIONS = 100
APF_BAN = 0
BAN_PERIOD = 36000

按ESC,接着输入:wq保存并退出。这样我们就完成了DDoS-Deflate的安装。

结语

经过上述办法,我的主机在最近几天被尝试破解的次数显著下降。如果有兴趣的朋友,可以尝试下该方案。