Iptables jest podstawowym narzędziem typu firewall w systemach Linux. Pozwala tworzyć podstawowe jak i zaawansowane reguły i polityki bezpieczeństwa.
Domyślnie jest kilka tabel: filter, mangle, nat. W tabeli filter stnieją trzy domyślne chainy (z ang. łańcuchy): forward, input oraz output. Dziś przyjrzmy 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ć przpuszczany 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.
Dodawanie wpisu do tabeli:
iptables -t tabela -A parametry -j czynność
Usuwanie wpisu:
iptables -t tabela -D parametry -j czynność
Wstawianie reguły (w konkretne miejsce):
iptables -t tabela -I pozycja parametry -j czynność
Pokazanie reguł:
iptables -L
Wyczyszczenie konfiguracji:
iptables -F
Domyślne czynności 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:
iptables -t filter -A INPUT -p tcp --sport 8000 -j DROP - blokuje na wejśćie port źródłowy 8000/tcp
iptables -t filter -A OUTPUT -p tcp --sport 8000 -j DROP - blokuje na wyjściu port źródłowy 8000/tcp
iptables -t filter -A OUTPUT -p udp --dport 35100 -j DROP - blokuje na wyjściu port docelowy 35100/udp
iptables -t filter -A INPUT -s 188.116.0.0/16 -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 -p tcp -sport 65247 -j DROP - blokkuje ruch przychodzący na porcie źródłowym tcp 65247 z sieci 188.116.0.0/16
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.
iptables -t filter -D INPUT -s 188.116.0.0/16 -p tcp --sport 65247 -j DROP - usuwa regułę blokującą ruch wejściowy z portem źródłowym 65247/tcp z sieci 188.116.0.0/16
Reguły są domyślnie usuwnae 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