Strona 1 z 1

Iptables - nie rozumiem tej regułki

: 21 maja 2012, 13:18
autor: papajas
Znajomy kiedyś podał mi taką regułę:

Kod: Zaznacz cały

-A INPUT -p tcp -m tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 8 --connlimit-mask 32 -j REJECT --reject-with icmp-port-unreachable
Technicy jednego z operatorów twierdzą że to ta regułka jest przyczyną że jeden z ich klientów nie może połączyć się z serwerem. Dziwna sprawa bo cały świat się łączy, a jeden adres IP nie może.

Czy ktoś może podać mi wskazówkę odnośnie tej reguły lub jakiś kierunek poszukiwań. Z góry serdecznie dziękuję i pozdrawiam.

: 21 maja 2012, 18:13
autor: snejk
Ustawia limit równoczesnych połączeń przychodzących na port 80 z ustawioną flagą SYN (czyli połączenia nowe) dla całej podsieci klasy C.
Czyli możesz mieć 8 połączeń z żądanej klasy. Reszta jest odrzucana do czasu zamknięcia się któregoś z pozostałych.

: 21 maja 2012, 18:36
autor: papajas
Czyli jakbym pozbył się:

Kod: Zaznacz cały

--connlimit-mask 32
to rozumiem, że to 8 obowiązywałoby jeden host/ip? To jakoś mi nie pasuje, bo mam jeszcze tam taką regułkę:

Kod: Zaznacz cały

-I INPUT -p tcp --dport 80 --syn -m connlimit --connlimit-above 20 -j REJECT
Czy one się jakoś nie wykluczają, albo sobie nie przeszkadzają? Mnie wystarczy reguła prosta, która ewentualnie ograniczy ruch z jednego numeru IP do jakiejś wartości (takie zabezpieczenie przed domorosłymi znawcami sztuki obciążania serwerów).

Snejk - serdecznie dziękuję za poświęcony czas i wyjaśnienie mi tematu!

Używaj znaczników code.
fnmirk

: 21 maja 2012, 18:46
autor: snejk
Jak usuniesz:

Kod: Zaznacz cały

 --connlimit-mask 24
to już nie musisz dopisywać 32 bo taka wartość jest domyślna (wtedy dopasowywany jest jeden host).
&quot pisze:To jakoś mi nie pasuje, bo mam jeszcze tam taką regułkę:

Kod: Zaznacz cały

-I INPUT -p tcp --dport 80 --syn -m connlimit --connlimit-above 20 -j REJECT
Czy one się jakoś nie wykluczają, albo sobie nie przeszkadzają?
Sprawdź, która z nich występuje jako pierwsza, i do której z nich faktycznie wpadają jakieś pakiety.

Kod: Zaznacz cały

iptables -L -vn

: 21 maja 2012, 19:05
autor: papajas

Kod: Zaznacz cały

www://# iptables -L -vn
Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 REJECT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           #conn/32 > 20 tcp dpt:80 flags:0x17/0x02 reject-with icmp-port-unreachable
    0     0 REJECT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:80 flags:0x17/0x02 #conn/32 > 8 reject-with icmp-port-unreachable
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            172.16.0.0/16
    0     0 ACCEPT     tcp  --  *      *       172.16.0.2           172.16.0.1          tcp spt:3306 dpts:1024:65535 state ESTABLISHED
    0     0 ACCEPT     all  --  lo     *       127.0.0.1            0.0.0.0/0
    0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
   91  8115 ACCEPT     all  --  eth0   *       0.0.0.0/0            0.0.0.0/0
    0     0 ACCEPT     all  --  eth0   *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
    0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0           tcp dpt:80
    0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0           tcp dpt:443
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
    0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0           tcp dpt:222
     0     0 ACCEPT     tcp  --  eth0   *       xx.xx.xx.xx      0.0.0.0/0           tcp dpt:10000
    0     0 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0           LOG flags 6 level 4 prefix `ATAK: '

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

Chain OUTPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     all  --  *      *       172.16.0.0/16        0.0.0.0/0
    0     0 ACCEPT     tcp  --  *      *       172.16.0.1           172.16.0.2          tcp spts:1024:65535 dpt:3306 state NEW,ESTABLISHED
    0     0 ACCEPT     all  --  *      *       127.0.0.1            0.0.0.0/0
   86  169K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0 

: 22 maja 2012, 14:10
autor: Bastian
papajas, przeczytaj artykuł o iptables dostępny na tym portalu, wszystkie Twoje wątpliwości same się rozwiążą.

http://debian.linux.pl/threads/5676-Prz ... -napiszesz

: 23 maja 2012, 12:04
autor: papajas
Dziękuję za podpowiedź. Poczytałem trochę o iptables i napisałem taką regułkę, zamiast tamtych dwóch:

Kod: Zaznacz cały

-A INPUT -p tcp -m tcp -m state -m connlimit --dport 80 --state NEW -j REJECT --reject-with tcp-reset --syn --connlimit-above 500