Firewall - (z ang. ściana ogniowa) - rodzaj oprogramowania lub dedykowany sprzęt do zabezpieczenia komputera/sieci przed niepowołanym dostępem
Najpopularniejszym filtrem sieciowym dla systemu Linux jest iptables. W dalszej części pokażemy podstawową konfigurację dla systemu operacyjnego Linux z zainstalowanym systemem eDokumenty:
iptables -F INPUT iptables -F FORWARD iptables -P INPUT DROP iptables -P FORWARD DROP iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT for PORT in 22 25 80 443 6000 do iptables -A INPUT -p tcp -m state --state NEW --dport $PORT -j ACCEPT done
Przeanalizujmy wpisy.
Pierwsze dwa wpisy czyszczą łańcuchy z reguł. Łańcuch INPUT, filtruje ruch kierowany do tego komputera. Domyślnie mamy jeszcze wbudowane 2 łańcuchy OUTPUT - ruch wychodzący, FORWARD - ruch przekazywany.
iptables -P INPUT DROP iptables -P FORWARD DROP
Powyższe wpisy ustawiają domyślną politykę dla łańcuchów INPUT i FORWARD na DROP czyli odrzuć. Domyślna polityka to zachowanie firewalla dla przypadku, w którym pakiet nie został zakwalifikowany do żadnej reguły danego łańcucha.
iptables -A INPUT -i lo -j ACCEPT
Reguła zezwalająca na ruch w obrębie interfejsu loopback. Loopback to adres komputera lokalnego, interfejs z adresem 127.0.0.1, niezbędny do komunikacji wewnątrz jednego hosta.
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Reguła przedstawiona powyżej wykorzystuje rozszerzenie state do filtrowania ruch przychodzącego na podstawie stanu połączenia. Zgodnie z tą regułą akceptowane będą tylko pakiety z nawiązanym już połączeniem (ESTABLISHED) i należące do danego połączenia oraz pakiety z nawiązanym już połączeniem ale nie wiążące się już z istniejącym połączeniem (RELATED).
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
Powyższa reguła akceptuje pakiety icmp (popularny ping wysyła właśnie tego typu pakiety). Akceptowane są tylko pakiety icmp typu czyli Echo Request (żądanie echa). Jest to prośba o odpowiedź czy host jest w sieci. W odpowiedzi komputer wysyła icmp typu 0 czyli Echo Reply (zwrot echa). Brak odpowiedzi nie oznacza że hosta nie ma w sieci. Popularny komercyjny system operacyjny domyślnie blokuje żądanie echa.
for PORT in 22 25 80 443 6000 do iptables -A INPUT -p tcp -m state --state NEW --dport $PORT -j ACCEPT done
Powyższy kawałek kodu to pętla wpisująca do firewall'a kolejno dla poszczególnych usług reguły zezwalające na dostęp do nich. Te usługi to:
port 22 - SSH (ang. secure shell) - zdalny dostęp do systemu w trybie tekstowym
port 25 - smtp (ang. Simple Mail Transfer Protocol) - protokół wykorzystywany do wysyłania poczty
port 80 - http (ang. Hypertext Transfer Protocol) - popularne www, strony internetowe
port 443 - https (ang. HyperText Transfer Protocol Secure) - szyfrowane www, wykorzystywane m.in. przy połączeniach z bankami
port 6000 - X Window System - zdalny dostęp do systemu w trybie graficznym.