DDoS(分布式拒绝服务)攻击是无解的吗?
关注者
1,603被浏览
368,166登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏
转载自自己的Wordpress,欢迎大家前往:
目前通过修改ssh端口,更换强密码,禁止ping,打开iptables,以及DDoS-Deflare有了些好转。
前言
之所以这次觉得写这一篇文章,是因为最近频繁面临他人的暴力破解尝试,看着服务器的数以十几万的暴力破解尝试感到非常不愉快。本次接着自己更换SSH端口以及开启DDos-Deflate的机会,给大家介绍下成本最低的自我保护方式。
修改默认SSH端口
- 首先通过修改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。
- 通过防火墙设置
# 禁止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的安装。
结语
经过上述办法,我的主机在最近几天被尝试破解的次数显著下降。如果有兴趣的朋友,可以尝试下该方案。