090901
很久没来这里写东西,乱来吹吹,大家别怪,呵呵
1。CC攻击占尽服务器的资源,启用了高数的连接进入半连接。使服务器不能处理正常的用户访问流程。
2. 当攻击开始时,我的短信网关便发短信通知网站有问题。
3.进入服务器SQUID top 发现负载已经去到5了。于是运行 sh netwc.sh
netstat -na|grep xxx.xx.xxx.xxx(外网服务地址)|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -r +0n
查得储如每个IP的连接数都200多了。
240 60.28.35.66
241 219.146.189.5
241 218.18.110.205
242 121.8.209.206
246 222.86.88.4
248 219.132.141.106
252 59.57.110.114
253 61.150.115.235
295 59.37.161.148
241 219.146.189.5
241 218.18.110.205
242 121.8.209.206
246 222.86.88.4
248 219.132.141.106
252 59.57.110.114
253 61.150.115.235
295 59.37.161.148
.。。。。。
于是进行 squid/var/logs
tail -f access.log
发现对 网站的某个页面狂xxxxxx
4.运用老的 的脚本 进行简单的过滤先,保证网站一定的正常。
#!/bin/bash
sh netwc.sh|tail -10|awk '{print $2}' >tmpfile
for i in `cat tmpfile`
do
iptables -I INPUT -s $i -p tcp --dport 80 -j REJECT
done
sh netwc.sh|tail -10|awk '{print $2}' >tmpfile
for i in `cat tmpfile`
do
iptables -I INPUT -s $i -p tcp --dport 80 -j REJECT
done
5.因为我没有启用防火墙,是用脚本启动的,所以想到在access.log上过滤IP出来,再总共运行防火墙脚本 包过滤,基本上就能去掉攻击,当然,如果用tcpdump-nxX --S 来取包过滤去掉储如MOLLIZA5等不正常的包头更好,此处利用SQUID。
#!/bin/sh
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 1 > /proc/sys/net/ipv4/ip_forward
IPTABLES=/sbin/iptables
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD DROP
modprobe ip_conntrack_ftp ports=2345 ports=6767
#tail -20000 /usr/local/squid/var/logs/access.log|grep 878888|awk '{print $1}'|sort|uniq -c|sort -n -r|head -n 200 > a
#####################access.log have a path for bbs.xxx.com or xxx.com as there not the same squid proxy
echo 1 > /proc/sys/net/ipv4/ip_forward
IPTABLES=/sbin/iptables
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD DROP
modprobe ip_conntrack_ftp ports=2345 ports=6767
#tail -20000 /usr/local/squid/var/logs/access.log|grep 878888|awk '{print $1}'|sort|uniq -c|sort -n -r|head -n 200 > a
#####################access.log have a path for bbs.xxx.com or xxx.com as there not the same squid proxy
#看攻击的程度加大tail 的行数 一般30000即够
tail -3000 access.log |awk '{print $1 $2}' |sort -nr|uniq -c >ip_s.txt
#cp /dev/null access_log
#cp /dev/null error_log
#cp /dev/null limit.sh
cp /dev/null attackip.txt
$IPTABLES -A INPUT -s 0/0 -d 0/0 -i eth1 -j ACCEPT
$IPTABLES -A INPUT -s 0/0 -d 0/0 -i lo -j ACCEPT
$IPTABLES -A INPUT -s 0/0 -p tcp --dport 58022 -j ACCEPT
$IPTABLES -A INPUT -s 0/0 -p tcp --dport 80 -j ACCEPT
$IPTABLES -A INPUT -s 0/0 -p tcp --dport 443 -j ACCEPT
$IPTABLES -A INPUT -s 0/0 -p udp --sport 53 -j ACCEPT
$IPTABLES -A INPUT -s 0/0 -p udp --dport 53 -j ACCEPT
$IPTABLES -A INPUT -s 0/0 -p tcp --sport 53 -j ACCEPT
$IPTABLES -A INPUT -s 0/0 -p tcp --dport 53 -j ACCEPT
$IPTABLES -A INPUT -s 0/0 -p tcp --sport 58022 -j ACCEPT
$IPTABLES -A INPUT -s xxx.xxx.xxx.xxx -j ACCEPT
$IPTABLES -A INPUT -s xxxx.xxx.xxx.xx -j ACCEPT
$IPTABLES -A INPUT -s xxx.xxx.xxx.xx -j ACCEPT
$IPTABLES -A INPUT -s xxx.xxxx.xxx.x.xx -j ACCEPT
$IPTABLES -A INPUT -s xxx.xxx.xxx.xx -p udp --dport 161 -j ACCEPT
$IPTABLES -A INPUT -s xx.xx.xx.xx.xx -p udp --dport 161 -j ACCEPT
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -s 0/0 -p tcp --dport 3389 -j ACCEPT
$IPTABLES -A FORWARD -s 0/0 -p tcp --dport 873 -j ACCEPT
$IPTABLES -A FORWARD -s 0/0 -p tcp --dport 50021 -j ACCEPT
$IPTABLES -A FORWARD -s 0/0 -p tcp --dport 2121 -j ACCEPT
$IPTABLES -A FORWARD -s 0/0 -p tcp --dport 2122 -j ACCEPT
$IPTABLES -A FORWARD -s 0/0 -p tcp --dport 10001 -j ACCEPT
$IPTABLES -A FORWARD -s 0/0 -p tcp --dport 10002 -j ACCEPT
$IPTABLES -A FORWARD -s 0/0 -p tcp --dport 50015 -j ACCEPT
$IPTABLES -A FORWARD -s 0/0 -p tcp --dport 50014 -j ACCEPT
$IPTABLES -A FORWARD -s 0/0 -p tcp --dport 50030 -j ACCEPT
$IPTABLES -A FORWARD -s 0/0 -p tcp --dport 80 -j ACCEPT
$IPTABLES -A FORWARD -s 0/0 -p tcp --dport 443 -j ACCEPT
$IPTABLES -A FORWARD -s 0/0 -p udp --dport 53 -j ACCEPT
$IPTABLES -A FORWARD -s 0/0 -p udp --dport 123 -j ACCEPT
$IPTABLES -A FORWARD -s 0/0 -p tcp --dport 25 -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -t nat -A PREROUTING -i eth0 -d xx.xx.x.xx -p tcp --dport 50014 -j DNAT --to 192.168.66.4:3389
$IPTABLES -t nat -A PREROUTING -i eth0 -d xx.xx.x.xx -p tcp --dport 50015 -j DNAT --to 192.168.66.5:3389
$IPTABLES -t nat -A PREROUTING -i eth0 -d xx.xx.x.xx -p tcp --dport 2121 -j DNAT --to 192.168.66.4:2121
$IPTABLES -t nat -A PREROUTING -i eth0 -d xx.xx.x.xx -p tcp --dport 2122 -j DNAT --to 192.168.66.5:2122
$IPTABLES -t nat -A PREROUTING -i eth0 -d xx.xx.x.xx -p tcp --dport 10001 -j DNAT --to 192.168.66.4:10001
$IPTABLES -t nat -A PREROUTING -i eth0 -d xx.xx.x.xx -p tcp --dport 10002 -j DNAT --to 192.168.66.5:10002
$IPTABLES -t nat -A PREROUTING -i eth0 -d xx.xx.x.xx -p tcp --dport 50030 -j DNAT --to 192.168.66.4:873
$IPTABLES -t nat -A PREROUTING -i eth0 -d xx.xx.x.xx -p tcp --dport 50021 -j DNAT --to 192.168.66.5:873
$IPTABLES -t nat -A POSTROUTING -o eth0 -j MASQUERADE
tail -3000 access.log |awk '{print $1 $2}' |sort -nr|uniq -c >ip_s.txt
#cp /dev/null access_log
#cp /dev/null error_log
#cp /dev/null limit.sh
cp /dev/null attackip.txt
$IPTABLES -A INPUT -s 0/0 -d 0/0 -i eth1 -j ACCEPT
$IPTABLES -A INPUT -s 0/0 -d 0/0 -i lo -j ACCEPT
$IPTABLES -A INPUT -s 0/0 -p tcp --dport 58022 -j ACCEPT
$IPTABLES -A INPUT -s 0/0 -p tcp --dport 80 -j ACCEPT
$IPTABLES -A INPUT -s 0/0 -p tcp --dport 443 -j ACCEPT
$IPTABLES -A INPUT -s 0/0 -p udp --sport 53 -j ACCEPT
$IPTABLES -A INPUT -s 0/0 -p udp --dport 53 -j ACCEPT
$IPTABLES -A INPUT -s 0/0 -p tcp --sport 53 -j ACCEPT
$IPTABLES -A INPUT -s 0/0 -p tcp --dport 53 -j ACCEPT
$IPTABLES -A INPUT -s 0/0 -p tcp --sport 58022 -j ACCEPT
$IPTABLES -A INPUT -s xxx.xxx.xxx.xxx -j ACCEPT
$IPTABLES -A INPUT -s xxxx.xxx.xxx.xx -j ACCEPT
$IPTABLES -A INPUT -s xxx.xxx.xxx.xx -j ACCEPT
$IPTABLES -A INPUT -s xxx.xxxx.xxx.x.xx -j ACCEPT
$IPTABLES -A INPUT -s xxx.xxx.xxx.xx -p udp --dport 161 -j ACCEPT
$IPTABLES -A INPUT -s xx.xx.xx.xx.xx -p udp --dport 161 -j ACCEPT
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -s 0/0 -p tcp --dport 3389 -j ACCEPT
$IPTABLES -A FORWARD -s 0/0 -p tcp --dport 873 -j ACCEPT
$IPTABLES -A FORWARD -s 0/0 -p tcp --dport 50021 -j ACCEPT
$IPTABLES -A FORWARD -s 0/0 -p tcp --dport 2121 -j ACCEPT
$IPTABLES -A FORWARD -s 0/0 -p tcp --dport 2122 -j ACCEPT
$IPTABLES -A FORWARD -s 0/0 -p tcp --dport 10001 -j ACCEPT
$IPTABLES -A FORWARD -s 0/0 -p tcp --dport 10002 -j ACCEPT
$IPTABLES -A FORWARD -s 0/0 -p tcp --dport 50015 -j ACCEPT
$IPTABLES -A FORWARD -s 0/0 -p tcp --dport 50014 -j ACCEPT
$IPTABLES -A FORWARD -s 0/0 -p tcp --dport 50030 -j ACCEPT
$IPTABLES -A FORWARD -s 0/0 -p tcp --dport 80 -j ACCEPT
$IPTABLES -A FORWARD -s 0/0 -p tcp --dport 443 -j ACCEPT
$IPTABLES -A FORWARD -s 0/0 -p udp --dport 53 -j ACCEPT
$IPTABLES -A FORWARD -s 0/0 -p udp --dport 123 -j ACCEPT
$IPTABLES -A FORWARD -s 0/0 -p tcp --dport 25 -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -t nat -A PREROUTING -i eth0 -d xx.xx.x.xx -p tcp --dport 50014 -j DNAT --to 192.168.66.4:3389
$IPTABLES -t nat -A PREROUTING -i eth0 -d xx.xx.x.xx -p tcp --dport 50015 -j DNAT --to 192.168.66.5:3389
$IPTABLES -t nat -A PREROUTING -i eth0 -d xx.xx.x.xx -p tcp --dport 2121 -j DNAT --to 192.168.66.4:2121
$IPTABLES -t nat -A PREROUTING -i eth0 -d xx.xx.x.xx -p tcp --dport 2122 -j DNAT --to 192.168.66.5:2122
$IPTABLES -t nat -A PREROUTING -i eth0 -d xx.xx.x.xx -p tcp --dport 10001 -j DNAT --to 192.168.66.4:10001
$IPTABLES -t nat -A PREROUTING -i eth0 -d xx.xx.x.xx -p tcp --dport 10002 -j DNAT --to 192.168.66.5:10002
$IPTABLES -t nat -A PREROUTING -i eth0 -d xx.xx.x.xx -p tcp --dport 50030 -j DNAT --to 192.168.66.4:873
$IPTABLES -t nat -A PREROUTING -i eth0 -d xx.xx.x.xx -p tcp --dport 50021 -j DNAT --to 192.168.66.5:873
$IPTABLES -t nat -A POSTROUTING -o eth0 -j MASQUERADE
cat ip_s.txt|while read num ip
do
do
#如果连接大于100个的话REJECT
if [ "$num" -gt "100" ]
then
echo $ip > attackip.txt
$IPTABLES -I INPUT -s $ip -p tcp --dport 80 -j REJECT
fi
done
if [ "$num" -gt "100" ]
then
echo $ip > attackip.txt
$IPTABLES -I INPUT -s $ip -p tcp --dport 80 -j REJECT
fi
done
#$IPTABLES -A INPUT -p icmp --icmp-type 8 -j DROP
$IPTABLES -A INPUT -p icmp -j ACCEPT
$IPTABLES -A INPUT -p icmp -j ACCEPT