Portál AbcLinuxu, 7. května 2025 05:42

Dotaz: iptables ddos ochrana

26.3.2017 04:14 newone
iptables ddos ochrana
Přečteno: 796×
Odpovědět | Admin
Ahoj, mám CentOS6, na kterém mi běží webserver (tcp80+443). Před serverem je firewall, který všechen příchozí provoz z internetu blokuje, kromě portů 80/tcp a 443/tcp (víc o firewallu nevím, neadminuju ho). Provoz z internetu jde na eth1, eth0 je management sitovka.

Pomocí iptables chci zabránit malému DDOS útoku na eth1, nepotřebuju logování, jde mi o jednoduchost, přehlednost a funkčnost. Předpokládám návštěvnost cca 30 připojení za sekundu. Ve špičce i víc.

Podle tohoto článku jsem si sepsal pravidla, výsledek vypadá takto:
[root@svweb1 ~]# iptables-save
# Generated by iptables-save v1.4.7 on Sun Mar 26 03:11:48 2017
*filter
:INPUT ACCEPT [46:3090]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [150647:109863890]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth1 -p tcp -m connlimit --connlimit-above 200 --connlimit-mask 32 -j REJECT --reject-with tcp-reset
-A INPUT -i eth1 -p tcp -m tcp --tcp-flags RST RST -m limit --limit 2/sec -j ACCEPT
-A INPUT -i eth1 -p tcp -m tcp --tcp-flags RST RST -j DROP
-A INPUT -i eth1 -p tcp -m conntrack --ctstate NEW -m limit --limit 60/sec --limit-burst 50 -j ACCEPT
-A INPUT -i eth1 -p tcp -m conntrack --ctstate NEW -j DROP
COMMIT
# Completed on Sun Mar 26 03:11:48 2017
# Generated by iptables-save v1.4.7 on Sun Mar 26 03:11:48 2017
*mangle
:PREROUTING ACCEPT [252606:111663529]
:INPUT ACCEPT [252500:111649961]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [150664:109868456]
:POSTROUTING ACCEPT [150664:109868456]
-A PREROUTING -m conntrack --ctstate INVALID -j DROP
-A PREROUTING -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j DROP
-A PREROUTING -p tcp -m conntrack --ctstate NEW -m tcpmss ! --mss 536:65535 -j DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
-A PREROUTING -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,RST FIN,RST -j DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,ACK FIN -j DROP
-A PREROUTING -p tcp -m tcp --tcp-flags ACK,URG URG -j DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,ACK FIN -j DROP
-A PREROUTING -p tcp -m tcp --tcp-flags PSH,ACK PSH -j DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,PSH,URG -j DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK,URG -j DROP
-A PREROUTING -f -j DROP
COMMIT
# Completed on Sun Mar 26 03:11:48 2017
[root@svweb1 ~]# iptables -vnL --line-numbers
Chain INPUT (policy ACCEPT 113 packets, 7696 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1    33061   14M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
2        0     0 REJECT     tcp  --  eth1   *       0.0.0.0/0            0.0.0.0/0           #conn/32 > 200 reject-with tcp-reset
3        0     0 ACCEPT     tcp  --  eth1   *       0.0.0.0/0            0.0.0.0/0           tcp flags:0x04/0x04 limit: avg 2/sec burst 5
4        0     0 DROP       tcp  --  eth1   *       0.0.0.0/0            0.0.0.0/0           tcp flags:0x04/0x04
5      195 10824 ACCEPT     tcp  --  eth1   *       0.0.0.0/0            0.0.0.0/0           ctstate NEW limit: avg 60/sec burst 50
6        0     0 DROP       tcp  --  eth1   *       0.0.0.0/0            0.0.0.0/0           ctstate NEW

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 22804 packets, 15M bytes)
num   pkts bytes target     prot opt in     out     source               destination
Co si o tomto řešení myslíte? Uvítám vaše názory, popřípadě vaše řešení z podobně dimenzované aplikace. Dík
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

26.3.2017 08:46 iptables
Rozbalit Rozbalit vše Re: iptables ddos ochrana
Odpovědět | | Sbalit | Link | Blokovat | Admin
Představ si, co to je DDOS.

Zahlcení linky za účelem znepřístupnění služeb.

Skutečně si myslíš, že pomůže omezení provozu?

Pokud vím (ostatní mě opraví), proti DDOS pomůže jen dostatečně "široká" linka.

Existuje mnoho řešení za mnoho peněz.

Žádné ale nefunguje.

Pokud se začne omezovat provoz (včetně omezení IP na země nebo rozsahy) DDOS vyhrál.
26.3.2017 10:21 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: iptables ddos ochrana
Ne, DDoS je distribuované znepřístupnění služeb. Nemusí jít o zahlcení linky, klidně se může útočník pokoušet zahltit aplikaci nebo operační systém. Mnoho aplikací nezvládne obsloužit tolik požadavků, kolik k nim pustí linka.

Nicméně nacpat do firewallu spoustu divných pravidel je právě způsob, jak omezit propustnost OS, aby ten DDoS byl snazší.
26.3.2017 09:36 NN
Rozbalit Rozbalit vše Re: iptables ddos ochrana
Odpovědět | | Sbalit | Link | Blokovat | Admin
Dve veci. Nedelej zbytecne praci za firewall, kdyz ho tam mas. Definovanim legitimniho provozu a zahozenim zbytku by jsi si usetril dost pravidel i prace.
26.3.2017 10:41 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: iptables ddos ochrana
Odpovědět | | Sbalit | Link | Blokovat | Admin
Vůbec nepíšete, čeho tím nastavením firewallu chcete dosáhnout („zabránit malému DDoS“ je příliš obecné – má vaše aplikace problém s počtem spojení, nebo s počtem nových spojení,nebo s délkou spojení, s objemem přenesených dat?). Takže těžko můžeme posoudit, zda vaše řešení vede k požadovanému výsledku a zda je efektivní. Osobně mi nepřipadá jako dobrý nápad nutit firewall sledovat všechna spojení ani nutit ho procházet spoustu pravidel.

Je vůbec nějaký důvod mít tam firewall? Máte tam nějaké aplikace, které naslouchají na IP adrese dostupné z venku, které nemají být z venku dostupné? Pokud ano, nemůžete je nakonfigurovat tak, aby naslouchaly jenom tam, kde mají?

Jaké jsou limity té vaší aplikace? Opravdu je nutné aplikaci před přetížením chránit firewallem, který nic neví ani o komunikaci ani o stavu aplikace? Nedokázala by se ta aplikace lépe ubránit sama?
26.3.2017 12:17 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: iptables ddos ochrana
Odpovědět | | Sbalit | Link | Blokovat | Admin
Můžeš se inspirovat zde: ipset: odlehčete přetíženým iptables
ipset create zakazane hash:ip timeout 86400
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m set --match-set zakazane src -j DROP
iptables -A INPUT -p tcp --dport 22 -m hashlimit --hashlimit-above 5/min --hashlimit-burst 5 --hashlimit-mode srcip --hashlimit-name SSH-bruteforce -j SET --add-set zakazane src
Ale jak psaly pokud je to fakt masivní DDOS a vytíží linku tak nic nezmůžeš.

Pokud je to DDOS pouze na nějakou službu tak by to ta služba měla ustát (měly by ty parametry být nastaveny už v té službě) ale pokud to tam nejde nastavit tak pak takové pravidlo co dočasně blokne útočící IP pomůže.

Ale pokud půjdou útoky z hromady různých IP třeba 10 dotazů z jedné IP dalších 10 dotazů z druhé + 10 dotazů z třetí tak ti to stejně nepomůže....
26.3.2017 12:23 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: iptables ddos ochrana
Pokud je to útok z jedné nebo několika málo IP adres, není to DDoS, ale „jen“ DoS. To první „D“ v DDoS znamená „distribuovaný“. Celé je to „(distributed) denial of service“.
26.3.2017 13:16 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: iptables ddos ochrana
Jasně ale je rozdíl zda to jde z stovek rozdílných IP a nebo z tisíců a více....

PS. Kdy je to DoS a kdy už DDoS?
26.3.2017 18:14 iptables
Rozbalit Rozbalit vše Re: iptables ddos ochrana
Pokud na tebe zaútočím z jedné IP na tvou službu a uměle vytvořím provoz, co tu službu znapřístupní, je to DoS a pomocí pravidel ve firewallu lze občas Dos zabránit.

Pokud si vezmu na pomoc pár desítek tisíc mých zombíků a zaútočím na tebe, jedná se o DDoS a ty se můžeš jít klouzat, pokud nesedíš na páteřní síti. :-)
27.3.2017 14:28 Elvis
Rozbalit Rozbalit vše Re: iptables ddos ochrana
Odpovědět | | Sbalit | Link | Blokovat | Admin
Lepším řešením by bylo pustit veškerý webový provoz na nějakou proxy a na té omezovat počet existujících a nových spojení. A na zbytek dávat tcp/reset.
Na firewallu můžeš blokovat provoz z nějakých exotických rozsahů, pokud takové jsou.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.