Linux: IPTABLES „banowanie” IP

fast800miniat_365041533IPTables to bardzo przydatny program w linuxie jeśli chodzi o zabezpieczanie systemu. Tym razem opiszę jak zablokować dany adres IP lub cały przedział IP tak, żeby nie mogło dostać się do komputera ani skorzystać z żadnej usługi na komputerze (w moim przypadku serwerze).

Wielu ludzi posiadając dostęp do internetu ze zmiennym IP myśli, że może wszystko robić bo nawet jeśli zostaną zablokowani na jednym adresie IP to reset połączenia z internetem i maja już nowe. Jednak co się stanie jeśli zostanie zbanowany cały przedział IP? Oczywiście zostaną zablokowani także niewinni użytkownicy internetu jednak często bezpieczeństwo serwera jest ważniejsze. Można oczywiście zrobić restrykcje, że dane IP nie będzie mogło się łączyć tylko z danymi portami, na których działają usługi (np. serwerem SSH). Niżej opisałem kolejno „Blokowanie jednego adresu IP” oraz „Blokowanie przedziału adresów IP”.

 

Blokowanie 1 IP

Możemy zablokować tylko wybrany adres IP (jeśli np. jest to sieć osiedlowa/osoba która ma stałe IP). W regułkach użyłem funkcji REJECT ale można ustawić DROP (ja wolę REJECT). W tym celu edytujemy plik konfiguracyjny iptables (u mnie Debian: /etc/iptables.up.rules) i dodajemy wpis (najlepiej przed wszystkimi innymi regułami):

 

Blokowanie IP na każdym porcie:

# banuje adres IP 10.0.0.123 na wszystkich portach
-A INPUT -s 10.0.0.123 -j REJECT
 

Blokowanie IP na PORT TCP 22 (SSH):

# banuje adres IP 10.0.0.123 na PORT TCP 22
-A INPUT -s 10.0.0.123 -p tcp -m tcp –dport 22 -j REJECT
 

Blokowanie zakresu adresów IP

Przy blokowaniu przedziału adresów IP sprawa wygląda inaczej. Trzeba się tutaj troszeczkę zagłębić w CIDR (wikipedia: CIDR: Classless Inter-Domain Routing). Poniżej przykłady.

 

Blokowanie zakresu IP 10.0.0.0 do 10.0.255.255 (blokowanie 65536 adresów IP)

# banuje zakres IP 10.0.0.0 do 10.0.255.255
-A INPUT -s 10.0.0.0/16 -j REJECT
 

Blokowanie zakresu IP 10.0.0.0 do 10.0.255.255 na PORT TCP 22 (blokowanie 65536 IP)


# banuje zakres IP 10.0.0.0 do 10.0.255.255 na PORT TCP 22
-A INPUT -s 10.0.0.0/16 -p tcp -m tcp –dport 22 -j REJECT
 

Podałem przykład blokowania zakresu dwóch ostatnich pól w adresie IP. Takim sposobem można zbanować całe miasto tak właściwie. CIDR /16 to maska podsieci 255.255.000.000 w tabeli. W przełożeniu na adres IP oznacza to ostatnie dwa pola w adresie IP czyli zakres 65536 adresów. Jeśli ktoś chce zbanować tylko całe ostatnie pole z danego zakresu to trzeba zastosować CIDR /24 czyli maska 255.255.255.000. W przełożeniu na adres IP oznacza to tylko ostatnie pole w adresie IP czyli 256 adresów (czyli blokowanie np. zakresu 10.10.10.0 – 10.10.10.255).

Jak tylko mówię komuś kto ma zmienne IP jakie skutki wiążą się z zablokowaniem w taki sposób to nie chce uwierzyć. Jednak kilku osobom już pokazałem, że nawet zmienne IP im nie pomoże i że da się zablokować im dostęp do serwera (jak jeszcze się okaże, że np. zbanujemy w ten sposób całe miasto z naszego serwera MMORPG i wyjdzie przez kogo jest taki ban… nie chciałbym być w skórze takiej osoby).

Dodaj komentarz