DoS атака с ip spoofing

12 3
[Удален]
5410

Всем привет.

Имеется cloud server. centos 5

Суть проблемы: долбят 80-й порт, syn flood с ip spoofing на 70к pps (DoS идет скорее всего с VDS с 100мбит каналом)

в iptables

iptables -I INPUT -m conntrack --ctstate NEW,INVALID -p tcp --tcp-flags SYN,ACK SYN,ACK -j REJECT --reject-with tcp-reset

в sysctl

net.ipv4.conf.default.rp_filter = 1

Как можно защититься от подобной атаки?

Какие бы лимиты в iptables не прокатывают, я как понимаю поможет только аппаратный фильтр?

zexis
На сайте с 09.08.2005
Offline
388
#1

Поставьте

echo '1'>/proc/sys/net/ipv4/tcp_syncookies # включить синкуки

echo '1'>/proc/sys/net/ipv4/tcp_synack_retries # Слать только один овет synack

Лучше в правилах iptables ставить -j DROP, а не -j REJECT

Покажите кусок

tcpdump -n -c 50

[Удален]
#2

Это всё у меня стояло, куки отправлять смысла нет, ip каждый раз - разный.

sysctl


# Kernel sysctl configuration file for Red Hat Linux
#
# For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and
# sysctl.conf(5) for more details.

# Controls IP packet forwarding
net.ipv4.ip_forward = 0

# Controls source route verification
net.ipv4.conf.default.rp_filter = 1

# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0

# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0

# Controls whether core dumps will append the PID to the core filename
# Useful for debugging multi-threaded applications
kernel.core_uses_pid = 1

# Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 1

# Controls the maximum size of a message, in bytes
kernel.msgmnb = 65536

# Controls the default maxmimum size of a mesage queue
kernel.msgmax = 65536

# Controls the maximum shared segment size, in bytes
kernel.shmmax = 68719476736

# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296
xen.independent_wallclock=1

net.ipv4.tcp_synack_retries=1
net.ipv4.tcp_fin_timeout=10
net.ipv4.tcp_keepalive_time=1
net.ipv4.tcp_keepalive_probes=1


---------- Добавлено 22.04.2012 в 22:04 ----------

tcpdump

tcpdump -n -c 50
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
18:03:52.602472 IP 62.76.186.149.http > 195.235.3.141.35725: S 1973575804:1973575804(0) ack 1383508637 win 5840 <mss 1460>
18:03:52.602558 IP 76.68.168.195.35761 > 62.76.186.149.http: S 370280209:370280209(0) win 512
18:03:52.602577 IP 62.76.186.149.http > 76.68.168.195.35761: S 1706020114:1706020114(0) ack 370280210 win 5840 <mss 1460>
18:03:52.602596 IP 69.157.55.232.35776 > 62.76.186.149.http: S 507265192:507265192(0) win 512
18:03:52.602614 IP 62.76.186.149.http > 69.157.55.232.35776: S 761181149:761181149(0) ack 507265193 win 5840 <mss 1460>
18:03:52.602624 IP 240.80.94.97.35775 > 62.76.186.149.http: S 669587743:669587743(0) win 512
18:03:52.602642 IP 118.221.171.212.60139 > 62.76.186.149.http: R 2089884487:2089884487(0) win 0
18:03:52.602660 IP 172.225.91.253.35798 > 62.76.186.149.http: S 1828160024:1828160024(0) win 512
18:03:52.602678 IP 62.76.186.149.http > 172.225.91.253.35798: S 2548091780:2548091780(0) ack 1828160025 win 5840 <mss 1460>
18:03:52.602688 IP 87.110.74.127.35758 > 62.76.186.149.http: S 4991762:4991762(0) win 512
18:03:52.602718 IP 62.76.186.149.http > 87.110.74.127.35758: S 2773058894:2773058894(0) ack 4991763 win 5840 <mss 1460>
18:03:52.602729 IP 22.100.16.248.35762 > 62.76.186.149.http: S 788310395:788310395(0) win 512
18:03:52.602739 IP 62.76.186.149.http > 22.100.16.248.35762: S 701898696:701898696(0) ack 788310396 win 5840 <mss 1460>
18:03:52.602749 IP 162.155.136.244.35692 > 62.76.186.149.http: S 731630025:731630025(0) win 512
18:03:52.602759 IP 62.76.186.149.http > 162.155.136.244.35692: S 919251792:919251792(0) ack 731630026 win 5840 <mss 1460>
18:03:52.602769 IP 87.179.134.16.35786 > 62.76.186.149.http: S 1906847146:1906847146(0) win 512
18:03:52.602786 IP 62.76.186.149.http > 87.179.134.16.35786: S 3834188208:3834188208(0) ack 1906847147 win 5840 <mss 1460>
18:03:52.602796 IP 173.215.173.215.35704 > 62.76.186.149.http: S 543327449:543327449(0) win 512
18:03:52.602814 IP 62.76.186.149.http > 173.215.173.215.35704: S 3797773892:3797773892(0) ack 543327450 win 5840 <mss 1460>
18:03:52.602824 IP 79.233.195.20.35772 > 62.76.186.149.http: S 1567438495:1567438495(0) win 512
18:03:52.602841 IP 62.76.186.149.http > 79.233.195.20.35772: S 3442164468:3442164468(0) ack 1567438496 win 5840 <mss 1460>
18:03:52.602851 IP 208.133.1.37.35789 > 62.76.186.149.http: S 1781157127:1781157127(0) win 512
18:03:52.602868 IP 62.76.186.149.http > 208.133.1.37.35789: S 2431882337:2431882337(0) ack 1781157128 win 5840 <mss 1460>
18:03:52.602878 IP 35.29.240.110.35783 > 62.76.186.149.http: S 28004230:28004230(0) win 512
18:03:52.602888 IP 62.76.186.149.http > 35.29.240.110.35783: S 2062825511:2062825511(0) ack 28004231 win 5840 <mss 1460>
18:03:52.602897 IP 213.40.110.81.35818 > 62.76.186.149.http: S 1134181760:1134181760(0) win 512
18:03:52.602914 IP 62.76.186.149.http > 213.40.110.81.35818: S 1314151052:1314151052(0) ack 1134181761 win 5840 <mss 1460>
18:03:52.602924 IP 215.133.114.166.35773 > 62.76.186.149.http: S 567153035:567153035(0) win 512
18:03:52.602939 IP 62.76.186.149.http > 215.133.114.166.35773: S 3926003411:3926003411(0) ack 567153036 win 5840 <mss 1460>
18:03:52.602949 IP 175.30.162.212.7433 > 62.76.186.149.http: R 812614503:812614503(0) win 0
18:03:52.602967 IP 87.38.92.215.35780 > 62.76.186.149.http: S 1024889822:1024889822(0) win 512
18:03:52.602984 IP 62.76.186.149.http > 87.38.92.215.35780: S 2318430141:2318430141(0) ack 1024889823 win 5840 <mss 1460>
18:03:52.602994 IP 73.235.167.127.35814 > 62.76.186.149.http: S 201534690:201534690(0) win 512
18:03:52.603011 IP 62.76.186.149.http > 73.235.167.127.35814: S 2570886987:2570886987(0) ack 201534691 win 5840 <mss 1460>
18:03:52.603021 IP 133.146.206.14.35802 > 62.76.186.149.http: S 1720714179:1720714179(0) win 512
18:03:52.603038 IP 62.76.186.149.http > 133.146.206.14.35802: S 454392278:454392278(0) ack 1720714180 win 5840 <mss 1460>
18:03:52.603048 IP 204.225.247.240.35790 > 62.76.186.149.http: S 1456733612:1456733612(0) win 512
18:03:52.603058 IP 62.76.186.149.http > 204.225.247.240.35790: S 295244598:295244598(0) ack 1456733613 win 5840 <mss 1460>
18:03:52.603067 IP 6.2.140.247.35763 > 62.76.186.149.http: S 911993552:911993552(0) win 512
18:03:52.603076 IP 62.76.186.149.http > 6.2.140.247.35763: S 2680943293:2680943293(0) ack 911993553 win 5840 <mss 1460>
18:03:52.603086 IP 131.117.114.211.35759 > 62.76.186.149.http: S 1277852544:1277852544(0) win 512
18:03:52.602472 IP 62.76.186.149.http > 131.117.114.211.35759: S 3538956279:3538956279(0) ack 1277852545 win 5840 <mss 1460>
18:03:52.602475 IP 96.215.14.69.35740 > 62.76.186.149.http: S 1079390891:1079390891(0) win 512
18:03:52.602490 IP 62.76.186.149.http > 96.215.14.69.35740: S 2808683292:2808683292(0) ack 1079390892 win 5840 <mss 1460>
18:03:52.602493 IP 87.154.51.10.35792 > 62.76.186.149.http: S 1996888832:1996888832(0) win 512
18:03:52.602512 IP 62.76.186.149.http > 87.154.51.10.35792: S 915746069:915746069(0) ack 1996888833 win 5840 <mss 1460>
18:03:52.602515 IP 199.171.97.252.35785 > 62.76.186.149.http: S 547325922:547325922(0) win 512
18:03:52.602534 IP 62.76.186.149.http > 199.171.97.252.35785: S 3511111405:3511111405(0) ack 547325923 win 5840 <mss 1460>
18:03:52.602537 IP 74.73.205.76.35767 > 62.76.186.149.http: S 1465110191:1465110191(0) win 512
18:03:52.602555 IP 62.76.186.149.http > 74.73.205.76.35767: S 3775417156:3775417156(0) ack 1465110192 win 5840 <mss 1460>

pps летит жестко 😡


while true; do VAR=`cat /proc/net/dev | grep eth0 | awk '{print $2+$10}'`; sleep 1; VAR2=`cat /proc/net/dev | grep eth0 | awk '{print $2+$10}'`; echo -ne "$(($VAR2-$VAR))\r"; done
61529
Den73
На сайте с 26.06.2010
Offline
523
#3

покажите лучше

vnstat -i ethХ --live

60к не смертельно, как вариант рассмотрите переезд на дедик если текущий сервер не справляется.

[Удален]
#4

Думаю вообще отказаться от цепочек правил в iptables, ибо от них толку - 0 когда спуфят ip

iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
iptables -I INPUT 1 -p tcp -m tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 15 --connlimit-mask 32 -j DROP

эти 2 правила создают дикую нагрузку)

Переехать конечно же я всегда успею, разобраться бы как с этим бороться ;)


vnstat -i eth0 --live
Monitoring eth0... (press CTRL-C to stop)

rx: 31.90 Mbit/s 75603 p/s tx: 17.27 Mbit/s 38136 p/s


eth0 / traffic statistics

rx | tx
--------------------------------------+------------------
bytes 83.35 MiB | 45.49 MiB
--------------------------------------+------------------
max 34.02 Mbit/s | 18.82 Mbit/s
average 31.04 Mbit/s | 16.94 Mbit/s
min 29.24 Mbit/s | 16.02 Mbit/s
--------------------------------------+------------------
packets 1618562 | 823052
--------------------------------------+------------------
max 80648 p/s | 41563 p/s
average 73571 p/s | 37411 p/s
min 69296 p/s | 35374 p/s
--------------------------------------+------------------
time 22 seconds
M
На сайте с 16.09.2009
Offline
278
#5
bestq:
Думаю вообще отказаться от цепочек правил в iptables, ибо от них толку - 0 когда спуфят ip

Вам это волшебная фея рассказала? Никакого спуффинга IP в упор не видно. Обычный HTTP-флуд, только и всего.

Фильтруйте IP ботов по логам вебсервера, заносите на файервол iptables/ipset. Ничего необычного.

PS: И зачем вам -j REJECT --reject-with tcp-reset, интересно узнать?

Абонементное сопровождение серверов (Debian) Отправить личное сообщение (), написать письмо ().
[Удален]
#6
myhand:
Вам это волшебная фея рассказала? Никакого спуффинга IP в упор не видно. Обычный HTTP-флуд, только и всего.

Фильтруйте IP ботов по логам вебсервера, заносите на файервол iptables/ipset. Ничего необычного.

PS: И зачем вам -j REJECT --reject-with tcp-reset, интересно узнать?

На грубости не надо переходить ;)

Как вы можете судить о спуффинге судя по 50 записям tcpdump?

hping3 --flood --rand-source -S -p 80 dest_ip

и сервак лежит. никаких правил и sysctl не поможет. можете проверить на своих серверах на досуге ;)

Судя по логам IP там бесконечно, и если бы реально шел HTTP флуд то уж точно не на 31.04 Mbit/s и 73571 p/s


[root@142591-10003 ~]# netstat -ntu | awk '{print $5}'| cut -d: -f1 | sort | uniq -c | sort -nr | more
2 ******
1 servers)
1 Address
1 97.64.6.191
1 97.62.141.213
1 97.58.58.143
1 97.41.53.36
1 97.38.128.253
1 97.36.142.39
1 97.245.140.161
1 97.240.112.21
1 97.219.67.51
1 97.196.135.205
1 97.177.67.172
1 97.156.221.255
1 97.149.167.21
1 97.142.242.30
1 94.3.147.61
1 94.236.97.80
1 94.227.143.230
1 94.155.52.167
1 94.148.112.185
1 94.14.64.167
1 93.24.86.110
1 93.191.48.85
1 93.136.193.166
1 93.131.61.112
1 91.86.177.217
1 91.21.55.254
1 87.28.122.157
1 87.248.161.44
1 87.242.122.217
1 87.219.27.80
1 87.191.86.135
1 87.167.205.228
1 87.148.33.156
1 87.148.248.48
1 87.136.240.86
1 86.63.0.167
1 86.58.233.151
1 86.52.180.180
1 86.51.205.86
1 8.62.6.185
1 86.242.2.227
1 86.195.12.82
1 86.191.55.184
1 86.188.248.117
1 86.185.201.180
1 86.16.61.147
1 86.135.112.74
1 86.124.3.14
1 86.110.227.12
1 86.102.127.28
1 85.94.34.118
1 85.53.245.202
1 85.53.224.118
1 85.174.222.135
1 85.166.110.149
1 85.110.245.6
1 84.67.6.217
1 84.252.120.64
1 84.196.39.63
1 84.196.211.24
1 84.185.195.6
1 84.14.217.41
1 84.123.123.142
1 82.93.93.117
1 82.61.16.13
1 82.233.227.34
1 82.198.97.191
1 82.16.219.94
1 82.16.108.128
1 82.150.148.68
1 82.120.148.112
1 82.110.216.97
1 82.109.248.176
1 8.164.141.220
1 80.79.86.24
1 80.78.24.80
1 80.62.198.230
1 80.6.219.190
1 80.6.198.78
1 80.40.203.240
1 80.30.135.63
1 80.23.171.13
1 80.21.67.184
1 80.210.243.180
1 80.196.0.102
1 80.157.245.61
1 80.14.206.243
1 80.107.185.2
1 79.78.36.172
1 79.22.69.233
1 79.22.41.210
1 79.195.62.0
1 78.45.44.156
1 78.28.248.142
1 78.213.205.191
1 78.190.101.208
1 78.16.123.221
1 78.161.220.16
1 78.118.61.167
1 77.24.1.201
1 77.214.202.190
1 77.211.171.34
1 76.5.41.68
1 76.28.240.1
1 76.233.160.61
1 76.205.87.230
1 76.185.67.150
1 76.171.86.255
1 76.141.78.189
1 75.8.56.53
1 75.8.118.86
1 75.62.191.195
1 75.38.185.190
1 75.25.149.30
1 75.203.222.240
1 75.195.112.237
1 75.180.112.142
1 75.14.151.111
1 75.131.33.80
1 75.107.224.203
1 74.82.62.130
1 74.78.21.216
1 74.233.136.205
1 72.52.245.213
1 72.211.205.131
1 72.175.252.142
1 72.172.232.188
1 72.16.44.167
1 72.155.69.79
1 72.118.106.84
1 72.111.85.137
1 72.110.248.172
1 69.48.172.36
1 69.44.41.151
1 69.41.149.39
1 69.38.193.208
1 6.87.118.156
1 68.35.67.21
1 68.149.62.135
1 68.120.132.171
1 68.118.39.202
1 67.79.61.193
1 67.63.176.184
1 67.5.190.43
--More--
M
На сайте с 01.12.2009
Offline
235
#7

Вас спасут люди которые могут настроить такое ПО при котором проблем не будет с атаками

;)

Администратор Linux,Freebsd. построения крупных проектов.
Andreyka
На сайте с 19.02.2005
Offline
822
#8

А что, хостер не может помочь и отрубить аплингк по которому флудят?

Не стоит плодить сущности без необходимости
I8
На сайте с 17.05.2010
Offline
99
#9
Den73:
покажите лучше

vnstat -i ethХ --live

60к не смертельно, как вариант рассмотрите переезд на дедик если текущий сервер не справляется.

Хороший способ защиты от спуфингово син флуда.

Я хочу прикупить у вас парочку таких волшебных дедиков.

p.s. Ты хоть сам понял что ерунду сморозил?

Для ТС. Вообще такую хрень надо фильтровать на вышестоящем узле, так как в лоб сервер такую атаку не переварит. И причин может быть

несколько.

K
На сайте с 24.03.2004
Offline
223
#10
iluxa85:
Хороший способ защиты от спуфингово син флуда.
Я хочу прикупить у вас парочку таких волшебных дедиков.

мы синфлуд спуфленый для клиентов вычищаем.

проверенная ддос защита (http://ddos-protection.ru) -> http://ddos-protection.ru (http://ddos-protection.ru), бесплатный тест, цена от размера атаки не зависит.
12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий