Iptables to najprościej filtr pakietów w systemach Linux. Szybka konfiguracja wygląda jak poniżej. W przykładowym pliku otworzone pozostają porty SSH, HTTP oraz HTTPS. Taka konfiguracja wystarcza do zdalnego zarządzania serwerem na którym znajduje się apache wraz z php, gdzie jest hostowana strona internetowa np na WordPressie.
Tworzymy plik konfiguracyjny firewalla:
touch /etc/init.d/firewall
#!/bin/bash
### BEGIN INIT INFO
# Provides: firewall
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO
# Czyszczenie reguł
iptables -F
iptables -X
# Polityka bezpieczeństwa
iptables -P INPUT DROP
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
# Reguły dla loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A FORWARD -o lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# Reguły dla łańcucha wejściowego
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Reguły dla łańcucha wyjściowego
iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
Teraz musimy nadać uprawnienia uruchamiania do naszego pliku
chmod +x /etc/init.d/firewall
Tworzymy dowiązanie do uruchomienia w trybach pracy 2345 oraz zatrzymania w trybach 016
update-rc.d firewall defaults 90
Następnie restart komputera i możemy sprawdzić czy prawidłowo wszystko działa przy pomocy polecenia
iptables -L
W tej konfiguracji mamy odblokowane potrzebne nam porty i nic poza tym. Są jednak robaki oraz osoby, które pomimo tego będą próbowały się zalogować na nasze konto aby przejąć dostęp do naszej maszyny dlatego warto wprowadzić kilka dodatkowych zabezpieczeń jak np.: zastosowanie odpowiednio trudnego hasła (z pomocą przychodzi nam KeePass), zablokowanie możliwości zalogowania się na konto roota poprzez SSH czy też ograniczenie możliwości logowania do serwera tylko z puli określonych adresów IP.