Narzędzie iptables służy przede wszystkim do filtracji pakietów IPv4 i można je wykorzystać do konfiguracji zapory ogniowej (firewall). Iptables wymaga uprawnień root'a do uruchomienia.

Uwaga! Jeśli podczas konfiguracji iptables przez pomyłkę zablokujemy sobie dostęp do serwera przez SSH to odpowiednie poprawki można wykonać logując się do konsoli serwera z poziomu panelu zarządzającego.

Iptables dla Debian i Ubuntu

Iptables dla CentOS

Przykład użycia iptables


 

Iptables dla Debian i Ubuntu

Narzędzie iptables-persistent jest dostępne w repozytoriach Debiana, zatem aby je zainstalować wydajemy poniższe polecenie. Podczas instalacji pojawi się okienko z zapytaniem czy chcemy zapisać aktualne reguły iptables do plików /etc/iptables/rules.v4 i /etc/iptables/rules.v6.  Potwierdzamy wybierając "Yes" i reguły zostaną zapisane.

apt-get  install iptables-persistent

Jeśli nie były dodane wcześniej żadne reguły to należy edytować ulubionym edytorem plik /etc/iptables/rules.v4 i dodać odpowiednie reguły:

vim /etc/iptables/rules.v4

Przeładowanie iptables po zmianach w pliku z regułami wykonujemy za pomocą polecenia:

/etc/init.d/iptables-persistent restart

 

Iptables dla CentOS

W serwerze CentOS należy sprawdzić czy usługa iptables jest włączona:

chkconfig --list | grep iptables

Wynik powyższego polecenia wskazujący, że usługa jest włączona:

iptables      0:off    1:off    2:on    3:on    4:on    5:on    6:off

Włączanie usługi iptables jeśli jest wyłączona:

chkconfig iptables on

Reguły dla IPv4 są zapisane w pliku:

/etc/sysconfig/iptables

Przeładowanie iptables po zmianach w pliku z regułami wykonujemy za pomocą polecenia:

service iptables restart

 

Przykład użycia iptables

Domyślnie po instalacji iptables ustawiona jest akceptacja połączeń dla tabeli INPUT, FORWARD, i OUTPUT. Jeżeli chcemy zablokować cały ruch przychodzący do serwera oprócz wybranych adresów IP oraz portów, to dla tabeli (table) INPUT powinna być regułka DROP:

:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

Następnie edytujemy plik /etc/iptables/rules.v4 (dla Debian i Ubuntu) lub /etc/sysconfig/iptables (dla CentOS) i dodajemy  regułki zezwalające na połączenia z dowolnego adresu IP na port 80/tcp (http) oraz z jednego adresu IP na port 22/tcp (ssh):

-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s <adres_ip> -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Zapisanie dodanych reguł do pliku /etc/sysconfig/iptables w systemie CentOS wykonujemy za pomocą:

service iptables restart

Zapisanie dodanych reguł do pliku /etc/iptables/rules.v4 w systemie Debian i Ubuntu wykonujemy za pomocą:

/etc/init.d/iptables-persistent restart

Wyświetlanie aktualnych reguł i status iptables:

iptables -L -n -v

Po restarcie serwera reguły powinny być automatycznie załadowane, jednak zalecamy  sprawdzenie czy  reguły są załadowane po pierwszym restarcie serwera.