Dla przeciętnego użytkownika komputera firewall jest to program, który ma nie pozwolić by „coś” wpełzło do jego komputera przez łącze internetowe. Dla admina określenie firewall jest tylko umownym sloganem stosowanym, by wyjaśnić coś laikom. W przypadku serwerów trudno mówić o jakimś firewallu, chodzi raczej o pewien zestaw reguł dostępu do serwera. Na dodatek same reguły to często za mało. O ile zwykły komputer można chronić jakimś programem zawierającym w sobie antywirusa i firewall, a najczęściej jeszcze jakimś routerem, który jest lokalną bramą do internetu, a w najgorszym wypadku wyłączyć go, o tyle funkcją serwera jest udostępnianie jakichś usług wszystkim i w razie problemów wyłączyć go nie można.
Skoro serwer udostępnia jakąś usługę, to znaczy, że jest do niej dostęp. A w takim przypadku można się liczyć z tym, że znajdą się tacy, którzy zechcą skorzystać z danej usługi niezgodnie z jej przeznaczeniem. Mogą się znaleźć tacy, którzy będą chcieli się włamać do serwera, lub usługę po prostu zablokować lub uszkodzić jej działanie. Czasami mogą używać do swych celów całej sieci komputerów zombie, czyli takich, których właściciele nie wiedzą, że stracili nad nimi panowanie. Trudno uwierzyć jak wiele jest takich komputerów, nawet wśród czytających ten felieton znaleźlibyśmy przynajmniej kilka komputerów zainfekowanych trojanami lub backdoorami.
Gdyby administrator miał bez przerwy sprawdzać, co dzieje się z jego serwerem, nie jadłby i nie spał, a na pewno nie miałby chwili wolnego. Rzecz jasna naprawdę duże firmy zatrudniają pracowników odpowiedzialnych za bieżące doglądanie pracy serwerów, zwykle mają ich wiele. Jednak przeważnie trzeba zabezpieczać się w inny sposób.
Nieocenioną pomocą są wszelkie programy umiejące przeglądać logi programów i prezentować administratorowi ich wyniki. Ale lepsze jest wrogiem dobrego. Lepsze są programy, które potrafią analizować logi i na ich podstawie wyciągać wnioski i podejmować działania.
Jednym z bardzo znanych jest program portsentry, który monitoruje wszelkie próby „macania” różnych portów serwera. Jeśli dotyczy to portów nieużywanych, znaczy to zwykle, że ktoś sprawdza, jakie mamy usługi i w jaki sposób realizowane, a także czy można liczyć na ich słabości. Program potrafi wówczas odciąć dostęp do serwera potencjalnemu szkodnikowi.
Innym trudnym do przecenienia programem jest fail2ban, konieczne narzędzie w niezbędniku admina. Ten z kolei monitoruje logi działających usług i sprawdza, czy nie dochodzi do niedozwolonych wywołań. W razie zaobserwowania trzech kolejnych niedozwolonych zachowań blokuje dostęp.
Oczywiście wszystkie programy chroniące serwer trzeba skonfigurować, czasami wymagają trochę czasu by dostosować je do naszych konkretnych warunków, ale praca ta owocuje potem spokojnym snem bez koszmarów.

Widok skutecznie działającego zabezpieczenia to najpiękniejsza rzecz dla admina, pomimo tego, że są to białe literki i cyferki na czarnym tle. 😉
2 komentarze “Firewalle”
Fail2ban jest świetnym programem, jednak nie należy go przeceniać.
Przykładowo mając serwer oferujący tylko www i logowanie do maszyny po ssh wolałbym przenieś ssh na port niestandardowy i blokować upierdliwych chinoli modułem recent w iptables. Efekt ten sam i nawet możesz logować sobie delikwentów do pliku jeśli masz taką fantazję. Zaleta taka, że nie działa ci w tle żaden dodatkowy skrypt skanujący logi. Skrypt nie zadziała w sytuacji gdy dziwnym trafem wywróci się syslog. Zdarza się to rzadko ale zdarza.
Przykładowo na słabej maszynie jest szansa, że w sytuacji braku pamięci zostanie ubity syslog np w wyniku ddos. (oom killer) Zresztą w tej sytuacji sam fail2ban też zostanei ubity.
@tanaka:
Niczego nie należy przeceniać. 😉
Zawsze trzeba trzymać rękę na pulsie. Każdy admin ma swoje sposoby. Ja na przykład nie znoszę przerzucania usług na niestandardowe porty. Kiedyś próbowałem, ale mając sporą grupkę serwerów zapominałem, co gdzie i na którym porcie. Oczywiście tak naprawdę to można zmieniać porty tylko wtedy, gdy służą jedynie do komunikacji adminowi.
Wbrew pozorom – być może – nie należę do adminów typu Atylla, a raczej typu Ghandi. Wyjaśniając to inaczej – wolę udawać, że mojego serwera nie ma, niż podejmować pojedynki.
No i jeszcze muszę dodać, że pisząc felieton starałem się, aby nie-admin też mógł coś zrozumieć. No i nigdy nie piszę wszystkiego. 😉