Iptables podstawowa konfiguracja
Przykład konfiguracji IPTABLES krok po kroku testowałem na Debianie.
Jest to konfiguracja która zapewnia podstawowy poziom bezpieczeństwa dla serwera HTTP, FTP, POSTFIX, SSH.
Po konfiguracji serwer będzie blokował wszystkie porty dla ruchu przychodzącego z internetu z wyjątkiem portów zadanych (dozwolonych).
Pierwszy krok sprawdzamy czy IPTABLES jest zainstalowany wpisujemy komendę
#iptables
odpowiedź (DEBIAN) to
iptables v1.4.8: no command specified
Try 'iptables -h' or 'iptables --help' for more information.
Oznacza to że IPTABLES jest zainstalowane na serwerze więcej komend uzyskamy wpisując polecenie
#iptables -h
jeżeli nie ma zainstalowanego IPTABLES instalujemy go
#apt-get install iptables
można też użyć komendy #apt-get install iptable* by znaleźć poprawny pakiet
Konfigurujemy IPTABLES
Usuwamy bieżące ustawienia (czyścimy całą konfigurację)
wpisujemy komendy
#iptables -F - kasuje całą konfigurację
#iptables -X
Sprawdzamy czy baza IPTABLES jest faktycznie czysta komendą
#iptables -L - komenda ta wylistuje konfigurację IPTABLES
Wynikiem tego polecenia jest:
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Następnym krokiem jest skonfigurowanie listy dozwolonych portów:
SSH iptables -A INPUT -p tcp --dport 22 -j ACCEPT
HTTP iptables -A INPUT -p tcp --dport 80 -j ACCEPT
HTTPS iptables -A INPUT -p tcp --dport 443 -j ACCEPT
POP iptables -A INPUT -p tcp --dport 25 -j ACCEPT
POPS iptables -A INPUT -p tcp --dport 465 -j ACCEPT
IMAP iptables -A INPUT -p tcp --dport 143 -j ACCEPT
IMAPS iptables -A INPUT -p tcp --dport 993 -j ACCEPT
SMTP (submission) iptables -A INPUT -p tcp --dport 587 -j ACCEPT
SMTP iptables -A INPUT -p tcp --dport 110 -j ACCEPT
POP3S iptables -A INPUT -p tcp --dport 995 -j ACCEPT
Zezwalamy również na użycie pinga (ICMP)
iptables -A INPUT -p icmp -j ACCEPT
Cały lokalny ruch będzie dozwolony
iptables -A INPUT -s 127.0.0.1 -j ACCEPT
Zezwalamy na połączenia nawiązane
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
Akceptacja ruchu na loopback, nasze usługi muszą mieć możliwość wzajemnie się komunikować.
iptables -A INPUT -i lo -j ACCEPT
iptables -A FORWARD -o lo -j ACCEPT
I teraz najważniejsza sprawa blokujemy cały ruch z zewnątrz który nie został powyżej uwzględniony
iptables -A INPUT -j REJECT - odrzucenie ruchu wchodzącego
iptables -A FORWARD -j REJECT - odrzucenie ruchu przekazującego
iptables -A OUTPUT -j ACCEPT - zezwalamy na ruchu przekazującego
Ponownie sprawdzamy wpisaną konfigurację komendą
#iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:www
ACCEPT tcp -- anywhere anywhere tcp dpt:https
ACCEPT tcp -- anywhere anywhere tcp dpt:smtp
ACCEPT tcp -- anywhere anywhere tcp dpt:ssmtp
ACCEPT tcp -- anywhere anywhere tcp dpt:imap2
ACCEPT tcp -- anywhere anywhere tcp dpt:imaps
ACCEPT tcp -- anywhere anywhere tcp dpt:submission
ACCEPT tcp -- anywhere anywhere tcp dpt:pop3
ACCEPT tcp -- anywhere anywhere tcp dpt:pop3s
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- localhost anywhere
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state NEW,RELATED,ESTABLIS
Po restarcie usługi IPTABLES lub po restarcie serwera wpisana konfiguracja zacznie chronić nasz serwer.
Korekta błędów
Usuwamy czwartą regułę z INPUT
#iptables -D INPUT 4
Wpisujemy tegułę na 5 pozycję łańcucha
#iptables -I OUTPUT 5 -j SPAM
Dodaje rolę do łańcucha iptables na piątej pozycji
Zatrzymywanie serwisu IPTABLES na RED HAT, CentOS, FEDORA
/etc/init.d/iptables stop
lub
service iptables stop
Jeżeli używasz Debiana, Ubuntu
Zapisywanie konfiguracji i jej odtwarzanie
iptables-save > /root/firewall.rules
oraziptables-restore < /root/firewall.rules
komanda dla Centos 6.4
iptables-save > /etc/sysconfig/iptables
Nie ma serwisu do zatrzymania używasz poniższych komend
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT