老男人百科 > 百科 > 正文

linux工具软件(ddos攻击ip软件)

2023-05-14 18:51:08 阅读( 5948)

互联网如同现实社会一样充满钩心斗角,网站被DDOS也成为站长最头疼的事。

互联网和现实社会一样充满勾心斗角,DDOS成为站长们最头疼的问题。在没有硬防御的情况下,找软件替代是最直接的办法,比如用iptables,但是iptables不能自动屏蔽,只能手动屏蔽。

一、什么是DDOS攻击?

攻击者在主机中安装软件的一种服务或过程。这些代理保持休眠状态,直到它们从主终端得到指令,对指定目标发起拒绝服务攻击。

二。如何确认自己受到DDOS攻击?

在系统上执行:

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

执行之后,它将显示每个IP在服务器上有多少个连接。

以下是我自己的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.312311 67.215.242.196

每个IP几个、十几个、几十个连接都是比较正常的,如果有几百个,那肯定是不正常的。

三、防范DDOS攻击的方法:

防止DDOS攻击的一些常用方法如下:

1.增加硬件防火墙和硬件设备来承载和抵御DDOS攻击是最基本的方法,但是成本比较高。

2.修改SYN设置以抵御SYN攻击:

SYN攻击利用TCP/IP协议三次握手的原理,发送大量网络数据包建立连接,但实际上并没有建立连接,最终导致被攻击服务器的网络队列满,正常用户无法访问。

Linux内核使用以下命令提供了几个与SYN相关的设置:

sysctl -a | grep syn

参见:

net.ipv4.tcp_max_syn_backlog=1024

net.ipv4.tcp_syncookies=0

net.ipv4.tcp_synack_retries=5

net.ipv4.tcp_syn_retries=5

Tcp_max_SYN_backlog是SYN队列的长度,tcp_syncookies是交换机。要打开syn cookies吗?

函数,可以防止一些SYN攻击。Tcp_SYNack_retries和tcp_syn_retries定义syn。

重试次数。

增加SYN队列的长度可以容纳更多等待连接的网络连接,开启SYN Cookie功能可以屏蔽一部分。

SYN攻击,减少重试次数也有一定效果。

调整上述设置的方法是:

增加SYN队列长度到2048:

sysctl -w net.ipv4.tcp_max_syn_backlog=2048

打开SYN COOKIE功能:

sysctl -w net.ipv4.tcp_syncookies=1

降低重试次数:

sysctl -w net.ipv4.tcp_synack_retries=3

sysctl -w net.ipv4.tcp_syn_retries=3

为了系统重启动时保持上述配置,可将上述命令加入到/etc/rc.d/rc.local文件中。

3.安装iptables对特定ip进行屏蔽。

A.安装iptables和系统内核版本对应的内核模块kernel-smp-modules-connlimit

B. 配置相应的iptables规则

示例如下:

(1)控制单个IP的最大并发连接数

iptables -I INPUT -p tcp dport 80 -m connlimit connlimit-above 50 -j REJECT

#允许单个IP的最大连接数为30

(2)控制单个IP在一定的时间(比如60秒)内允许新建立的连接数

iptables -A INPUT -p tcp dport 80 -m recent name BAD_HTTP_access update seconds 60 \

hitcount 30 -j REJECT

iptables -A INPUT -p tcp dport 80 -m recent name BAD_HTTP_ACCESS set -j ACCEPT

#单个IP在60秒内只允许最多新建30个连接

(3)用iptables屏蔽IP

iptables -I RH-Lokkit-0-50-INPUT 1 -p tcp -m tcp -s 213.8.166.227 --dport 80 --syn -j REJECT

指定端口的参数是--dport 80;多了--syn参数,可以自动检测sync攻击

(4)使用iptables禁止ping:

iptables -A INPUT -p icmp -m icmp --icmp-type 8 -m limit --limit 6/min --limit-burst 2 -j ACCEPT-A INPUT -p icmp -m icmp --icmp-type 8 -j REJECT --reject-with icmp-port-unreachable

(5)允许某ip连接

iptables -I RH-Firewall-1-INPUT 1 -p tcp -m tcp -s 192.168.0.51 --syn -j ACCEPT

C. 验证

(1)工具:flood_connect.c(用来模拟攻击)

(2)查看效果:

使用

watch ‘netstat -an | grep:21 | \ grep 模拟攻击客户机的IP| wc -l’

实时查看模拟攻击客户机建立起来的连接数,

使用

watch ‘iptables -L -n -v | \grep 模拟攻击客户机的IP’

查看模拟攻击客户机被DROP 的数据包数。

D注意

为了增强iptables防止CC攻击的能力,最好调整一下ipt_recent的参数如下:

#cat/etc/modprobe.conf

options ipt_recent ip_list_tot=1000 ip_pkt_list_tot=60

#记录1000个IP地址,每个地址记录60个数据包

#modprobe ipt_recent

E.可编写脚本自动提娶攻击ip然后自动屏蔽:

*/2 * * * * /usr/local/nginx/var/log/drop.sh

#!/bin/sh

cd /usr/local/nginx/var/log

tail access.log -n 1000 |grep vote.php | |sort |uniq -c |sort -nr |awk '{if ($2!=null $150)}' drop_ip.txt

for i in `cat drop_ip.txt`

do

/sbin/iptables -I INPUT -s $i -j DROP;

done

这shell 每几分钟执行一次,就可自动屏蔽那些不正常IP,相信大家都看的懂,下面是针对连接数屏蔽代码

#!/bin/sh

/bin/netstat -ant |grep 80 |awk '{print $5}' |awk -F : '{print $1}' |sort |uniq -c |sort -rn |grep -v -E '192.168|127.0' |awk '{if ($2!=null $150)}' drop_ip.txt

for i in `cat drop_ip.txt`

do

/sbin/iptables -I INPUT -s $i -j DROP;

done

说下,grep -v -E '192.168|127.0' 也就是排除内网IP,免得把自己给屏蔽了,当然还可以加些自己的IP。

4.安装DDoSdeflate自动抵御DDOS攻击

DDoSdeflate是一款免费的用来防御和减轻DDoS攻击的脚本。它通过netstat监测跟踪创建大量网络连接的IP地址,在检测到某个结点超过预设的限制时,

该程序会通过APF或IPTABLES禁止或阻挡这些IP.

DDoSdeflate官方网站:

(1)安装DDoSdeflate

wget

chmod 0700 install.sh //添加权限

./install.sh //执行

(2)配置DDoSdeflate

下面是DDoSdeflate的默认配置位于/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

##### 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秒,可根据情况调整

用户可根据给默认配置文件加上的注释提示内容,修岗?置文件。

喜欢折腾的可以用Web压力测试软件( 《web服务器性能/压力测试工具http_load、webbench、ab、Siege使用教程》 )测试一下效果,这东西只能防御小流量的攻击了,聊胜于无吧。

5.APACHE上安装mod_evasive 组件增强抵御力

mod_evasive是一个预防Apache 遭受DDos攻击的模块,可以防止同一个IP 对相同URI 发

专题页