Iptables - tymczasowe zablokowanie portu 80 dla klienta

Masz problemy z siecią bądź internetem? Zapytaj tu
grzesiekp
Posty: 15
Rejestracja: 06 listopada 2009, 22:07

Iptables - tymczasowe zablokowanie portu 80 dla klienta

Post autor: grzesiekp »

Witam serdecznie,
mam taki oto testowy firewall:

Kod: Zaznacz cały

# ustawienie domyslnej polityki
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT


# utrzymanie połączeń nawiązanych
iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED
iptables -A FORWARD -j ACCEPT -m state --state ESTABLISHED,RELATED
iptables -A OUTPUT -j ACCEPT -m state --state ESTABLISHED,RELATED


# localhost
iptables -A INPUT -i lo -j ACCEPT
iptables -A FORWARD -o lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT


# stary zakres pracowniczy
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source XXX.XXX.XXX.XXX
Sieć działa bez zarzutu. Teraz chcę na chwilę zablokować ruch na porcie 80 dla jednego klienta, więc w Bashu wpisuję z palca regułkę:

Kod: Zaznacz cały

sudo iptables -A FORWARD -p tcp -s 192.168.0.197 --dport 80 -j DROP -m state --state ESTABLISHED,RELATED,NEW
Regułka przechodzi, iptables nie wyrzuca błędu.
Ale na kliencie 192.168.0.197 nadal ładują się strony. Dlaczego?

W jaki sposób z palca wpisać regułkę, która zadziała "natychmiast"? Chodzi o kolejność reguł?

Pozdrawiam,
Grzegorz.
Awatar użytkownika
Unit
Beginner
Posty: 356
Rejestracja: 27 marca 2007, 09:39

Post autor: Unit »

Zobacz sobie w iptables-save, gdzie ta regułka się znajduje i czy inna jej nie nadpisuje.
grzesiekp
Posty: 15
Rejestracja: 06 listopada 2009, 22:07

Post autor: grzesiekp »

Lekko zmodyfikowałem skrypt, ale nadal to samo.

Wynik iptables -L -nv

Kod: Zaznacz cały

Chain INPUT (policy DROP 24 packets, 1725 bytes)
 pkts bytes target     prot opt in     out     source               destination
   59  3654 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0


Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
 1436  950K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  *      lo      0.0.0.0/0            0.0.0.0/0
   32  1825 ACCEPT     all  --  eth2   eth0    0.0.0.0/0            0.0.0.0/0
    0     0 DROP       tcp  --  *      *       192.168.0.197        0.0.0.0/0            tcp dpt:80 state NEW,RELATED,ESTABLISHED


Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
   48 12536 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  *      lo      0.0.0.0/0            0.0.0.0/0



Próba z taką regułką (wynik powyżej):

Kod: Zaznacz cały

# czyszczenie starych reguł
iptables -F
iptables -X
iptables -t nat -X
iptables -t nat -F
iptables -t mangle -F
iptables -t mangle -X


# ustawienie domyslnej polityki
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT


# utrzymanie połączeń nawiązanych
iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED
iptables -A FORWARD -j ACCEPT -m state --state ESTABLISHED,RELATED
iptables -A OUTPUT -j ACCEPT -m state --state ESTABLISHED,RELATED


# localhost
iptables -A INPUT -i lo -j ACCEPT
iptables -A FORWARD -o lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT


iptables -A FORWARD -i eth2 -o eth0 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to XXX.XXX.XXX.XXX
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -p tcp -s 192.168.0.197 --dport 80 -j DROP -m state --state ESTABLISHED,RELATED,NEW
piroaa
Beginner
Posty: 324
Rejestracja: 11 kwietnia 2008, 14:46

Post autor: piroaa »

Kod: Zaznacz cały

iptables -I FORWARD -p tcp -s 192.168.0.197 --dport 80 -j DROP
Pozdrawiam.
sethiel
Junior Member
Posty: 762
Rejestracja: 28 stycznia 2008, 11:50
Lokalizacja: Wrocław

Post autor: sethiel »

Iptables używałem dawno temu, ale na 99% można wywołać:

Kod: Zaznacz cały

iptables -L -jeszcze_jakiś_parametr
aby zobaczyć numery linii.

Potem w odpowiedni łańcuch wrzucasz sobie regułkę o określonym numerze linii.
Cyphermen
Beginner
Posty: 426
Rejestracja: 24 maja 2009, 10:56
Lokalizacja: cze-wa

Post autor: Cyphermen »

Piroaa dał ci odpowiedź, przełącznik -A daje twoją regułę na sam koniec a wcześniej masz ACCEPT na wszystko wiec jest nadpisywane
Awatar użytkownika
Yampress
Administrator
Posty: 6400
Rejestracja: 09 sierpnia 2007, 21:41
Lokalizacja: PL

Post autor: Yampress »

Ja bym ten cały firewall przebudował
i na początku wywalił to:
iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED
iptables -A FORWARD -j ACCEPT -m state --state ESTABLISHED,RELATED
iptables -A FORWARD -o lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
Masz sprzeczne reguły w nim. Wciskasz coś co nie rozumiesz co do czego jest.
ODPOWIEDZ