Podstawy iptables
Iptables jest podstawowym narzędziem typu firewall w systemach Linux. Pozwala tworzyć podstawowe jak i zaawansowane reguły i polityki bezpieczeństwa.
Wstępnie istnieje kilka tabel: filter, mangle, nat. W tabeli filter stnieją trzy domyślne chainy (z ang. łańcuchy): forward, input oraz output. Dziś przyjrzymy się dwóm, input oraz output. Input odpowiada za połączenia przychodzące do serwera, czyli od klient do serwera, zaś output w przeciwnym kierunku, czyli od serwera do klienta. Domyślnie każdy z łańcuchów posiada domyślną politykę, która mówi co domyślnie ma się dziać z każdym pakietem/połączeniem: ma być przepuszczany lub blokowany.
Reguły są ułożone kolejno, pakiet, który zostanie dopasowany do danej reguły nie jest poddawany interpretacji przez kolejne z wpisów.
Dodanie wpisu do tablicy:
iptables -t tabela -A parametry -j czynność
Usunięcie wpisu:
iptables -t tabela -D parametry -j czynność
Wstawianie reguły (w konkretne pozycję):
iptables -t tabela -I pozycja parametry -j czynność
Wyświetlenie istniejących reguł:
iptables -L
Wyczyszczenie konfiguracji:
iptables -F
Domyślne akcje to:
- ACCEPT - akceptuje połączenie
- DROP - odrzuca połączenie
Parametry (podstawowe):
-p
protokół tcp, udp np. -p tcp-s
adres żródłowy np. 188.116.15.1 lub cała podsieć 188.116.15.0/24 (zapis CIDR)-d
adres docelowy - analogicznie jak z adresem źródłowym--sport
port źródłowy[1-65535]
--dport
port docelowy[1-65535]
Przykładowe użycie:
- blokuje na wejściu port źródłowy 8000/tcp:
iptables -t filter -A INPUT -p tcp --sport 8000 -j DROP
- blokuje na wyjściu port źródłowy 8000/tcp:
iptables -t filter -A OUTPUT -p tcp --sport 8000 -j DROP
- blokuje na wyjściu port docelowy 35100/udp:
iptables -t filter -A OUTPUT -p udp --dport 35100 -j DROP
- blokuje cały ruch przychodzący z sieci 188.116.0.0/16:
iptables -t filter -A INPUT -s 188.116.0.0/16 -j DROP
- blokuje ruch przychodzący na porcie źródłowym tcp 65247 z sieci 188.116.0.0/16:
iptables -t filter -A INPUT -s 188.116.0.0/16 -p tcp -sport 65247 -j DROP
Wiele parametrów można ze sobą łączyć tworząc różne reguły. Usunięcie wpisu jest bardzo proste, wpis jest identyczny jak wpis przy dodawaniu, jednak przełącznik -A
zastępujemy przełącznikiem -D
.
Usunięcie reguły blokującej ruch wejściowy z portem źródłowym 65247/tcp z sieci 188.116.0.0/16:
iptables -t filter -D INPUT -s 188.116.0.0/16 -p tcp --sport 65247 -j DROP
Reguły są domyślnie usuwane wraz z restartem systemu, aby były ładowane na starcie należy dopisać je np. do pliku /etc/rc.local
Aby uzyskać gotowy skrypt do wklejenia do pliku /etc/rc.local
należy skorzystać z polecenia iptables-save
.
iptables-save