DDoS(分布式拒绝服务)攻击是无解的吗?

本题已收入知乎圆桌 » 白帽黑客与安全 ,欢迎关注讨论。
关注者
1,603
被浏览
368,166
登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏

转载自自己的Wordpress,欢迎大家前往:

目前通过修改ssh端口,更换强密码,禁止ping,打开iptables,以及DDoS-Deflare有了些好转。


前言

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


修改默认SSH端口

  1. 首先通过修改sshd_config文件配置新的sshd端口
vi /etc/ssh/sshd_config                                            #编辑sshd_config文件

2. 找到#Port 22字段,将其前面的#去掉,并在下方添加需要新增的端口,例如Port 23456。这样的高位端口有助于降低被扫描端口的可能性。

#先移动光标到下面需要修改的地方,然后按Insert键进入修改模式  
#Port 22                                                        #删除前面的'#'号注释 
Port 23456                                                      #添加新增端口 
#AddressFamily any 
#ListenAddress 0.0.0.0 
#ListenAddress ::

3. 保存修改并退出

#按ESC键退出修改模式 
#输入:wq,回车保存并推出修改 
:wq

4. 重启sshd服务

/etc/init.d/sshd restart  
#如果报错,使用下面一条命令 
service sshd restart

5. 如果该端口不通,修改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

6. 接着通过更换终端设置中主机端口port 为刚刚设置的新端口23456,看下能否通过ssh连接主机

7. 再次进入sshd_config文件删除22端口

vi /etc/ssh/sshd_config                                    #编辑sshd_config文件


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

#接着再次重启sshd服务 
/etc/init.d/sshd restart  
#如果报错,使用下面一条命令 
service sshd restart

8. 接下来在防火墙里关闭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


2. 透过内核设置

  • 临时开启或关闭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的安装。


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