Linuxword Global
当前位置: Linux技术 > CentOS7下使用DDoS deflate+iptables防御DDoS攻击

查看攻击IP

netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

解决方法:使用DDoS deflate+iptables

ddos-protection_pak-iwan-01-1

DDoS deflate是一款免费的用来防御和减轻DDoS攻击的脚本。

安装DDoS deflate

 

wget http://www.inetbase.com/scripts/ddos/install.sh #下载
chmod 0700 install.sh #添加权限
./install.sh #执行安装

配置DDoS deflate

 

 

vim /usr/local/ddos/ddos.conf

将配置中APF_BAN=1 改为0保存。

注释:

IGNORE_IP_LIST="/usr/local/ddos/ignore.ip.list" //IP地址白名单

CRON="/etc/cron.d/ddos.cron" //定时执行程序

FREQ=1 //检查时间间隔,默认1分钟

NO_OF_CONNECTIONS=150 //最大连接数,超过就会被屏蔽,默认。

APF_BAN=1 //使用APF还是iptables,使用iptables,将APF_BAN的值改为0。

KILL=1 //是否屏蔽IP,默认。

EMAIL_TO="root" //当IP被屏蔽时给指定邮箱发送邮件,修改为自己邮箱或默认。

BAN_PERIOD=600 //禁用IP时间,默认600秒。

修改/usr/local/ddos/ddos.sh

vim /usr/local/ddos/ddos.sh
#注释掉第117行:

#netstat -ntu | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -nr > $BAD_IP_LIST

DDoS-protection

#下面新增一行,保存

netstat -ntu | awk '{print $5}' | cut -d: -f1 | sed -n '/[0-9]/p' | sort | uniq -c | sort -nr > $BAD_IP_LIST

 

注释:

awk '{print NR $0}' NR为行号 $0为打印全部

cut -d 截取字符 -f 第几段

sed -n '[0-9]/p' 打印纯数字匹配行(不包含点号)

 

sort -n数字排序正序 -nr 数字排序倒序

iptables防火墙安装与配置

15410546432282o3r0pn063

yum install iptables-services

将规则写入iptables配置文件

 

vim /etc/sysconfig/iptables
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80  -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

重启iptables防火墙和加入开机启动服务

 

systemctl restart iptables.service
systemctl enable iptables.service

 

 

 

确认iptables服务状态

 

service iptables status

 

DDos命令选项

 

/usr/local/ddos/ddos.sh -h    //查看选项 
/usr/local/ddos/ddos.sh -k n  //杀掉连接数大于n的连接。n默认为配置文件的NO_OF_CONNECTIONS
/usr/local/ddos/ddos.sh -c    //按照配置文件创建一个执行计划

 

DDoS deflate卸载(不再使用该脚本时可以通过以下方式卸载)

wget http://www.inetbase.com/scripts/ddos/uninstall.ddos
chmod 0700 uninstall.ddos
./uninstall.ddos
images

提醒:关于 DDoS Deflate 是一个轻量级的 bash shell 脚本,旨在协助阻止拒绝服务攻击。它利用以下命令创建连接到服务器的 IP 地址列表,以及它们的连接总数。它是在软件级别安装解决方案最简单和最容易的一种。

ss-Hntu | awk '{打印 $6}' | 排序 | 唯一的-c | 排序 -nr

超过预配置连接数的 IP 地址会在服务器的防火墙中被自动阻止,该防火墙可以是直接 ipfw、iptables 或高级策略防火墙 (APF)。

显着特点
IPv6 支持。
可以通过 /etc/ddos/ignore.ip.list 将 IP 地址列入白名单。
可以通过 /etc/ddos/ignore.host.list 将主机名列入白名单。
/etc/ddos/ignore.ip.list 支持 IP 范围和 CIDR 语法
简单配置文件:/etc/ddos/ddos.conf
IP 地址在预先配置的时间限制后自动解锁(默认值:600 秒)
该脚本可以通过配置文件以选定的频率作为 cron 作业运行(默认值:1 分钟)
该脚本可以通过配置文件以选定的频率作为守护进程运行(默认值:5 秒)
当 IP 地址被阻止时,您可以收到电子邮件警报。
通过连接状态控制阻塞(参见 man ss 或 man nestat)。
自动检测防火墙。
支持 APF、CSF、ipfw 和 iptables。
将事件记录到 /var/log/ddos.log
只能禁止传入连接或通过特定端口规则。
使用 iftop 和 tc 降低达到特定限制的 IP 地址的传输速度的选项。
使用 tcpkill 减少攻击者打开的进程数量。
Cloudflare 支持通过使用 tcpdump 获取真实用户 ip 并使用 iptables 字符串匹配来断开连接。
依赖项
安装脚本支持自动安装所需的依赖项,但可能无法安装部分或全部。您可能希望在继续安装之前手动安装所需的依赖项,如下面的 linux 发行版的小节中列出的。

Ubuntu/Debian
apt install dnsutils
apt-get install net-tools
apt-get install tcpdump
 apt-get install dsniff -y
apt install grepcidr
安装
以 root 用户身份执行以下命令:
wget https://github.com/jgmdev/ddos-deflate/archive/master.zip -O ddos.zip
unzip ddos.zip
cd ddos-deflate-master
./install.sh
卸载
以 root 用户身份执行以下命令:
cd ddos-deflate-master
./uninstall.sh
用法
安装程序将自动检测您的系统是否支持 init.d 脚本、systemd 服务或 cron 作业。如果找到其中之一,它将安装 apropiate 文件并启动 ddos​​ 脚本。在 init.d 和 systemd 的情况下,ddos 脚本作为守护进程启动,默认情况下监控间隔设置为 5 秒。守护进程检测攻击的速度比 cron 作业快得多,因为 cron 的间隔为 1 分钟。

安装完 (D)Dos deflate 后,继续修改配置文件以满足您的需求。

/etc/ddos/ignore.host.list

在此文件中,您可以添加要列入白名单的主机名列表,例如:

googlebot.com
my-dynamic-ip.somehost.com

/etc/ddos/ignore.ip.list

在此文件中,您可以添加要列入白名单的 IP 地址列表,例如:

12.43.63.13
165.123.34.43-165.123.34.100
192.168.1.0/24
129.134.131.2

/etc/ddos/ddos.conf

ddos 脚本的行为由该配置文件修改。有关更多详细信息,请参阅man ddos​​ ,其中包含不同配置选项的文档。

修改配置文件后,您将需要重新启动守护程序。如果在 systemd 上运行:

systemctl 重启 ddos

如果作为经典的 init.d 脚本运行:

/etc/init.d/ddos restart

service ddos​​ restart

将脚本作为 cronjob 运行时,不需要重新启动。

命令行使用
ddos [选项] [N]

N : tcp/udp 连接数(默认 150)

选项
-h | - 帮助:

显示帮助屏幕。

-c | --cron:

创建 cron 作业以定期运行脚本(默认 1 分钟)。

-i | - 忽略列表:

列出列入白名单的 IP 地址。

-b | --禁令列表:

列出当前禁止的 IP 地址。

-u | --解禁:

取消禁止给定的 IP 地址。

-d | - 开始:

初始化一个守护进程来监控连接。

-s | - 停止:

停止守护进程。

-t | - 地位:

如果当前正在运行,则显示守护程序和 pid 的状态。

-v[4|6] | --查看[4|6]:

显示与服务器的活动连接。

-y[4|6] | --view-port [4|6]:

显示与服务器的活动连接,包括端口。

-k | - 杀:

阻止所有超过 N 个连接的 IP 地址。

「梦想一旦被付诸行动,就会变得神圣,如果觉得我的文章对您有用,请帮助本站成长」

赞(0) 打赏
一分也是爱

支付宝扫一扫打赏

微信扫一扫打赏

上一篇:

下一篇:

相关推荐

博客简介

本站CDN采用VmShell免费提供离中国大陆最近的香港CMI高速网络做支撑,ToToTel打造全球最快速的边沿网络支撑服务,具体详情请见 :https://vmshell.com/ 以及 https://tototel.com/,网站所有的文件和内容禁止大陆网站搬迁复制,谢谢,VPS营销投稿邮箱: admin@linuxxword.com,我们免费帮大家发布,不收取任何费用,请提供完整测试文稿!

精彩评论

友情链接

他们同样是一群网虫,却不是每天泡在网上游走在淘宝和网游之间、刷着本来就快要透支的信用卡。他们或许没有踏出国门一步,但同学却不局限在一国一校,而是遍及全球!申请交换友链

站点统计

  • 文章总数: 2612 篇
  • 草稿数目: 23 篇
  • 分类数目: 6 个
  • 独立页面: 0 个
  • 评论总数: 2 条
  • 链接总数: 0 个
  • 标签总数: 16076 个
  • 注册用户: 139 人
  • 访问总量: 8,715,035 次
  • 最近更新: 2024年12月2日