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.
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
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
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.