–limit 1/s 限制syn并发数每秒1次,可以根据自己的需要修改防止各种端口扫描
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
Ping洪水攻击(Ping of Death)
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
## 二、用DDoS deflate自动屏蔽攻击
DDoS deflate是一款免费的用来防御和减轻DDoS攻击的脚本。它通过netstat监测跟踪创建大量网络连接的IP地址,
在检测到某个结点超过预设的限 制时,该程序会通过APF或IPTABLES禁止或阻挡这些IP.
DDoS deflate官方网站:http://deflate.medialayer.com/
如何确认是否受到DDOS攻击?
**执行:**
netstat -ntu | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -n
以下是用VPS测试的结果:
li88-99:~# netstat -ntu | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -n
1 114.226.9.132
1 174.129.237.157
1 58.60.118.142
1 Address
1 servers)
2 118.26.131.78
3 123.125.1.202
3 220.248.43.119
4 117.36.231.253
4 119.162.46.124
6 219.140.232.128
8 220.181.61.31 VPS侦探 http://www.vpser.net/
2311 67.215.242.196 #(这个看起来像攻击)
每个IP几个、十几个或几十个连接数都还算比较正常,如果像上面成百上千肯定就不正常了。
**1、安装DDoS deflate**
http://www.inetbase.com/scripts/ddos/install.sh //下载DDoS deflate
chmod 0700 install.sh //添加权限
./install.sh //执行
**2、配置DDoS deflate**
下面是DDoS deflate的默认配置位于/usr/local/ddos/ddos.conf ,内容如下:
Paths of the script and other files
PROGDIR=“/usr/local/ddos”
PROG=“/usr/local/ddos/ddos.sh”
IGNORE_IP_LIST=“/usr/local/ddos/ignore.ip.list” //IP地址白名单
CRON=“/etc/cron.d/ddos.cron” //定时执行程序
APF=“/etc/apf/apf”
IPT=“/sbin/iptables”
frequency in minutes for running the script
Caution: Every time this setting is changed, run the script with --cron
option so that the new frequency takes effect
FREQ=1 //检查时间间隔,默认1分钟
How many connections define a bad IP? Indicate that below.
NO_OF_CONNECTIONS=150 //最大连接数,超过这个数IP就会被屏蔽,一般默认即可
APF_BAN=1 (Make sure your APF version is atleast 0.96)
APF_BAN=0 (Uses iptables for banning ips instead of APF)
APF_BAN=1 //使用APF还是iptables。推荐使用iptables,将APF_BAN的值改为0即可。
KILL=0 (Bad IPs are’nt banned, good for interactive execution of script)
KILL=1 (Recommended setting)
KILL=1 //是否屏蔽IP,默认即可
An email is sent to the following address when an IP is banned.
Blank would suppress sending of mails
EMAIL_TO=“root” //当IP被屏蔽时给指定邮箱发送邮件,推荐使用,换成自己的邮箱即可
Number of seconds the banned ip should remain in blacklist.
BAN_PERIOD=600 //禁用IP时间,默认600秒,可根据情况调整
**3、选项**
/usr/local/ddos/ddos.sh -h //查看选项
/usr/local/ddos/ddos.sh -k n //杀掉连接数大于n的连接。n默认为配置文件的NO_OF_CONNECTIONS
/usr/local/ddos/ddos.sh -c //按照配置文件创建一个执行计划
**4、卸载**
http://www.inetbase.com/scripts/ddos/uninstall.ddos
chmod 0700 uninstall.ddos
./uninstall.ddos
使用以上方法可以缓解一些攻击。
## 如果服务器是nginx的话可以按照
**1、打开nginx访问日志**
log_format access '$remote_addr - r e m o t e _ u s e r [ remote\_user [ remote_user[time_local] “$request” ’
'$status b o d y _ b y t e s _ s e n t " body\_bytes\_sent " body_bytes_sent"http_referer" ’
‘“$http_user_agent” $http_x_forwarded_for’; #设置日志格式
#access_log /dev/null;
access_log /usr/local/nginx/logs/access.log access;
**2、观察nginx日志**
more /usr/local/nginx/logs/access.log
查看哪些ip重复很严重。
(1)agent的特征
比如:MSIE 5.01
配置nginx
location /{
if ( $http_user_agent ~* “MSIE 5.01” ) {
#proxy_pass http://www.google.com;
return 500
#access_log /home/logs/1.log main;
}
}
将ip加入iptable内
iptables -A INPUT -s 202.195.62.113 -j DROP
如何查看user\_agent
在地址栏输入:
javascript:alert(navigator.userAgent)
回车就会弹出当前使用的浏览器的useragent.
ps:ie和firefox的user—agent
“Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)” ( ie6.0)
Mozilla/4.0 (compatible; MSIE 8.0; ; Trident/4.0; .NET CLR 2.0.50727; CIBA) (ie8.0)
Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12
注意:都含有Windows NT 5.1。
“Mozilla/4.0 (compatible; MSIE 6.0; Windows 5.1)”(这个应该就是攻击者使用user_agent)
## 2、linux抵御DDOS攻击 通过iptables限制TCP连接和频率
#单个IP在60秒内只允许新建20个连接,这里假设web端口就是80,
iptables -I INPUT -i eth1 -p tcp -m tcp –dport 80 -m state –state NEW -m recent –update –seconds 60 –hitcount 20 –name DEFAULT –rsource -j DROP
iptables -I INPUT -i eth1 -p tcp -m tcp –dport 80 -m state –state NEW -m recent –set –name DEFAULT –rsource
#控制单个IP的最大并发连接数为20
iptables -I INPUT -p tcp –dport 80 -m connlimit –connlimit-above 20 -j REJECT
#每个IP最多20个初始连接
iptables -I INPUT -p tcp –syn -m connlimit –connlimit-above 20 -j DROP
**参数解释:**
-p协议
-m module\_name:
-m tcp 的意思是使用 tcp 扩展模块的功能 (tcp扩展模块提供了 –dport, –tcp-flags, –sync等功能)
recent模块:
–name #设定列表名称,默认DEFAULT。
–rsource #源地址,此为默认。
–rdest #目的地址
–seconds #指定时间内
–hitcount #命中次数
–set #将地址添加进列表,并更新信息,包含地址加入的时间戳。
–rcheck #检查地址是否在列表,以第一个匹配开始计算时间。
–update #和rcheck类似,以最后一个匹配计算时间。
–remove #在列表里删除相应地址,后跟列表名称及地址
connlimit功能:
connlimit模块允许你限制每个客户端IP的并发连接数,即每个IP同时连接到一个服务器个数。
connlimit模块主要可以限制内网用户的网络使用,对服务器而言则可以限制每个IP发起的连接数。
–connlimit-above n #限制为多少个
–connlimit-mask n #这组主机的掩码,默认是connlimit-mask 32 ,即每个IP.
参考链接 :
https://mp.weixin.qq.com/s/uNqoL6XXZyfHEtpH8TXhVQ?
![img](https://img-blog.csdnimg.cn/img_convert/3de8445c863d81c9e7dcb96b4d525275.png)
![img](https://img-blog.csdnimg.cn/img_convert/7076d4fb08cdf6b6a86ef20396fc7b74.png)
![img](https://img-blog.csdnimg.cn/img_convert/5d0d4a42d3544065bcb0c9e8a512817c.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!**
详情docs.qq.com/doc/DSmdCdUNwcEJDTXFK
参考链接 :
https://mp.weixin.qq.com/s/uNqoL6XXZyfHEtpH8TXhVQ?
[外链图片转存中...(img-KEA2wLrv-1724312028784)]
[外链图片转存中...(img-TuxfFes5-1724312028785)]
[外链图片转存中...(img-Np010BFN-1724312028785)]
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!**
详情docs.qq.com/doc/DSmdCdUNwcEJDTXFK