防止ddos攻击

# Make sure NEW tcp connections are SYN packets
 
iptables -N syn-flood
iptables -A INPUT -p tcp --syn -j syn-flood
iptables -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN
iptables -A syn-flood -j DROP
iptables -A INPUT -i eth0 -p tcp ! --syn -m state --state NEW -j DROP
 
 
#SYN_RECV
echo "1" > /proc/sys/net/ipv4/tcp_syncookies 0
echo "10" > /proc/sys/net/ipv4/tcp_fin_timeout 60
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all 0
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts 0
echo "5000" > /proc/sys/net/ipv4/tcp_max_syn_backlog 1024
 
#TIME_WAIT
echo "180000" > /proc/sys/net/ipv4/tcp_max_tw_buckets  180000
echo "1" > /proc/sys/net/ipv4/tcp_rfc1337 0
echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle 0
echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse 0
echo "5" > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_time_wait 120
echo "10" > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_syn_recv 60
echo "10" > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_syn_sent 120
 
 
 
防止同步包洪水(Sync Flood)
# iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
也有人写作
#iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
--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是一款Linux/centos减轻/防止ddos攻击的一个小程序,相当于软件防火墙。注意,此程序仅仅能抵御较低流量的攻击,大流量攻击连用了上百台高档服务器做了负载均衡的新浪都扛不住,何况一个小小的普通服务器或vps。对此程序不要期望过高。这里仅仅介绍一下,对于一些简单的软件攻击可能还有点作用。 

CTOHOM制作的DDoS deflate一键安装脚本: 

wget http://www.ctohome.com/linux-vps-pack/soft/ddos/ddos.sh; 
sh ddos.sh; 

netstat -ntu | awk '{print }' | cut -d: -f1 | sort | uniq -c | sort -n 
ddosdeflate提供了以上查看当前连接数的shell 

脚本做了什么? 

默认将iptables防火墙作为拦截工具,并将并发数改成了60/秒就触发屏蔽IP 
将本机IP都加入了IP白名单,然后强行不允许自动更新白名单列表。如果你需要修改IP白名单列表,请先执行 chattr -i /usr/local/ddos/ignore.ip.list   然后再vi进行修改 
卸载:wget http://www.ctohome.com/linux-vps-pack/soft/ddos/uninstall.ddos;sh uninstall.ddos; 
安装后,可以手工运行脚本 

/usr/local/ddos/ddos.sh -k 30 强行屏蔽连接数大于30的IP 
更多使用说明,请直接 more /usr/local/ddos/ddos.sh 查看 

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 
执行后,将会显示服务器上所有的每个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.31    VPS侦探 http://www.vpser.net/ 
2311 67.215.242.196 (这个看起来像攻击) 
每个IP几个、十几个或几十个连接数都还算比较正常,如果像上面成百上千肯定就不正常了。 

1、安装DDoS deflate 

wget 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秒,可根据情况调整 
用户可根据给默认配置文件加上的注释提示内容,修改配置文件。 



卸载 

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


白名单设置: 

有时候默认的白名单经常有失误,为了避免这个情况,我们可以手工设置白名单的ip,然后强制不允许修改 

vi /usr/local/ddos/ignore.ip.list 

手工设置白名单IP 


chattr +i /usr/local/ddos/ignore.ip.list 

强制不允许修改 



chattr -i /usr/local/ddos/ignore.ip.list 

解除不允许修改 


手工用iptables屏蔽IP: 


单个IP的命令是 
iptables -I INPUT -s 124.115.0.199 -j DROP 

恢复单个IP: 

iptables -D INPUT -s 124.115.0.199 -j DROP 


封IP段的命令是 
iptables -I INPUT -s 124.115.0.0/16 -j DROP 
iptables -I INPUT -s 124.115.3.0/16 -j DROP 
iptables -I INPUT -s 124.115.4.0/16 -j DROP 

封整个段的命令是 
iptables -I INPUT -s 124.115.0.0/8 -j DROP 

封几个段的命令是 
iptables -I INPUT -s 61.37.80.0/24 -j DROP 
iptables -I INPUT -s 61.37.81.0/24 -j DROP 

原文地址:http://www.ctohome.com/FuWuQi/df/318.html 

或许可以试试其它的呢。 

1.wget http://blogimg.chinaunix.net/blog/upfile2/071213142033.gz 

tar zxvf mod_evasive_1.10.1.tar.gz 

2.安装 

cd mod_evasive 

/usr/local/apache2/bin/apxs -i -a -c mod_dosevasive20.c 

3.配置 
vi /usr/local/apache2/conf/httpd.conf 

添加下面内容 

LoadModule dosevasive20_module libexec/apache22/mod_dosevasive20.so 

<IfModule> 
DOSHashTableSize 3097 
DOSPageCount 5 
DOSSiteCount 100 
DOSPageInterval 2 
DOSSiteInterval 2 
DOSBlockingPeriod 600 
DOSEmailNotify [email protected] 
DOSLogDir "/var/log/mod_evasive" 
</IfModule> 

有时候,得配置成以下,可能和apache的版本有关系吧 
<IfModule mod_evasive20.c> 
DOSHashTableSize 3097 
DOSPageCount 5 
DOSSiteCount 50 
DOSPageInterval 2 
DOSSiteInterval 2 
DOSBlockingPeriod 600 
DOSEmailNotify [email protected] 
DOSLogDir "/var/log/mod_evasive" 
</IfModule> 
以上配置为每两秒一个ip只能刷新一个页面5次,每两秒一个ip只能打开一个网站总页面为50 
4.重新启动apache2,配置完毕。 
DOSEmailNotify [email protected] 
#设置受到攻击时接收攻击信息提示的邮箱地址。 
DOSLogDir "/var/log/mod_evasive"#攻击日志存放目录,注意这个目录的权限,是运行apache程序的用户。 
5.测试 

打开IE ,访问网站http://test.com 不断快速刷新网页就会出现错误提示,说明防泛有效,查看/tmp目录会dow.ip 日志文件。 

说明: 

DOSHashTableSize 3097 记录和存放黑名单的哈西表大小,如果服务器访问量很大,可以加大该值 
DOSPageCount 5 同一个页面在同一时间内可以被统一个用户访问的次数,超过该数字就会被列为攻击,同一时间的数值可以在DosPageInterval参数中设置。 
DOSSiteCount 50 同一个用户在同一个网站内可以同时打开的访问数,同一个时间的数值在DOSSiteInterval中设置。 
DOSPageInterval 2 设置DOSPageCount中时间长度标准,默认值为1。 
DOSSiteInterval 2 设置DOSSiteCount中时间长度标准。 
DOSBlockingPeriod 10 被封时间间隔秒,这中间会收到 403 (Forbidden) 的返回。










你可能感兴趣的:(apache,tcp,服务器,脚本,input,script#)