firewall

Mechanizm filtrujący ruch sieciowy według ustalonych reguł, blokujący niepożądane lub niebezpieczne połączenia.

Firewall (po polsku zapora sieciowa) to mechanizm, który stoi na granicy między Twoją siecią a resztą świata i decyduje, który ruch przepuścić, a który zablokować. Robi to na podstawie zestawu reguł, które opisują skąd pochodzi pakiet, dokąd zmierza, na jakim porcie i w jakim protokole. Mówiąc prościej: to bramkarz, który ma listę gości i wpuszcza tylko tych, którzy są na niej zapisani.

Firewall analizuje pakiety sieciowe i porównuje je z regułami w określonej kolejności. Każda reguła mówi, co zrobić z pasującym pakietem: ACCEPT (przepuść), DROP (wyrzuć po cichu) albo REJECT (odrzuć i odeślij informację). Najprostsze zapory patrzą tylko na adres IP i port, ale współczesne są stateful — śledzą stan połączeń, więc wiedzą, że pakiet jest odpowiedzią na ruch, który sam zainicjowałeś, i nie traktują go jak intruza. Dzięki temu możesz wyjść na zewnątrz po stronę WWW, a niezamówione połączenia z internetu do Ciebie się odbiją.

Po co Ci to? Żeby nie wystawiać na świat usług, które mają być prywatne. Baza danych na porcie 3306, panel administracyjny czy SSH nie muszą być dostępne dla całego internetu — firewall pozwala otworzyć tylko to, co naprawdę potrzebne.

Przykład z praktyki

Na typowym serwerze z Linuksem najczęściej spotkasz iptables albo nakładkę ufw (Uncomplicated Firewall), która jest dużo przyjemniejsza dla człowieka. Załóżmy, że stawiasz serwer WWW i chcesz wpuścić tylko HTTP, HTTPS i SSH:

  • sudo ufw default deny incoming — domyślnie blokuj wszystko, co przychodzi
  • sudo ufw default allow outgoing — pozwól na ruch wychodzący
  • sudo ufw allow 22/tcp — wpuść SSH
  • sudo ufw allow 80,443/tcp — wpuść WWW
  • sudo ufw enable — włącz zaporę

Reszta świata puka, ale dostaje cisza. Dokładnie o to chodzi.

Częste błędy i mity

Najboleśniejszy klasyk: włączasz firewall na zdalnym serwerze, zapominasz dodać reguły dla portu 22 i wylatujesz z własnego SSH. Zawsze najpierw otwórz port, którym jesteś połączony, dopiero potem enable.

Drugi mit: mam firewall, jestem bezpieczny. Zapora kontroluje połączenia, ale nie zajrzy do środka zaszyfrowanego ruchu na porcie, który sam otworzyłeś. Jeśli Twoja aplikacja na porcie 443 ma dziurę, firewall grzecznie przepuści atak, bo to przecież dozwolony ruch. To jedna warstwa obrony, nie cała twierdza.

Pamiętaj też o kolejności reguł — w iptables liczy się pierwsza pasująca, więc reguła DROP all na górze zablokuje wszystko, co jest pod nią.

Pojęcia powiązane

Warto kojarzyć: NAT, port i protokół (TCP/UDP), WAF (Web Application Firewall, filtruje ruch HTTP na poziomie aplikacji), NGFW (Next-Generation Firewall), VPN oraz DMZ.