Czy będąc za routerem instalować firewall?
Takie właśnie pytanie przyniosło tu kogoś przez Google. Ponieważ temat jest jednym z tych religijnych (chociaż chyba coraz mniej), to jednak są zarówno pewne plusy jak i minusy takich rozwiązań, na temat których w własną opinię postaram się przedstawić w kontekście kilku zmiennych. Jest to ponadto decyzja biznesowa, odbijające się na domowym/firmowym budżecie - koszt licencji sensownego firewall na stację kliencką Windows to wydatek minimum 100 pln.
Oczywiście należy rozumieć fakt, iż bycie “za routerem” nie zawsze musi oznaczać bycia “niewidocznym” w sieci Internet, co dokonuje się zazwyczaj przez zastosowania jakiegoś rodzaju translacji portów (maskarada/SNAT) i (opcjonalnie) “ściany ogniowej”. Jest to oczywiste na poziomie ISP lub też sieci firmowych, niemniej nawet w usługach abonenckich, np. w jednej z opcji internetDSL dostajemy większą pulę adresową niż standardowe /30 (można dostać 5 możliwych do przypisania urządzeniom końcowym adresów IP) przez co komputery za routerem mogą używać adresów publicznych.
W tej sytuacji pomimo, że firewall i router nie są pojęciami tożsamymi, my jednak zajmijmy się sytuacją, kiedy gateway de facto jest dla nas urządzeniem:
- dokonującym translacji adresów (zamieniającym ruch wychodzący/przychodzący na jeden przyznany adres publiczny na szereg adresów prywatnych z pul 192.168.x.y(/16) 172.16.x.y(/12) 10.x.y.z(/8))
- posiadającym firewall nieprzenoszący ruchu przychodzącego z sieci zewnętrznej do sieci wewnętrznej o ile nie jest on powiązany z sesja nawiązaną z wewnątrz sieci (czyli odrzucającym wszystko przychodzące z zewnątrz o co się wyraźnie nie pytaliśmy)
Skoro ustaliliśmy już model wyjściowy, czas odpowiedzieć sobie na pytanie postawione w tytule notatki - czy instalować tego firewalla czy też nie?
Środowisko domowe a firma
Sieć domowa zazwyczaj składa się z jednego lub więcej komputerów. Użytkownicy tych komputerów często działają na kontach posiadających zbyt szerokie uprawnienia (administrator/root) i są sobie samymi sterem i okrętem. Komputery nie udostępniają żadnych usług i nie ma potrzeby dostępu do nich z zewnątrz poza ściśle wylistowanymi i zazwyczaj określonymi wstępnie na routerze przypadkami (GG, eMule, BitTorrent, soulseek, etc.) - niemniej instalowane jest na nich wiele niesprawdzonego oprogramowania, któremu warto odcinać możliwość kontaktu ze światem. Nie każdy komputerowy ET powinien móc dzwonić do domu - szczególnie, jeśli podczas komunikacji prześle także nasze poufne dane. W takiej sytuacji dodatkowa opcja zabezpieczeń - w szczególności właśnie filtrowania połączeń wychodzących, czego nie zapewnia wbudowany w Windows firewall, jest szczególnie ważna.
W firmie zazwyczaj mamy sytuację bardziej złożoną - zarówno ze względu na większą kontrolę punktu styku sieci wewnętrznej i zewnętrznej, która wykraczać powinna poza kontrolę stanu połączenia, ale bardziej wkraczać w filtrowanie na poziomie aplikacji i specyfikę protokołów komunikacyjnych. Ponadto zazwyczaj użytkownicy nie mają uprawnień administratora, zaś ich stacje robocze powinny być otwarte na dostęp administracyjny właśnie - aby pewne operacje mogły zostać przeprowadzone (zdalny pulpit, przejęcie pulpitu, kontrola aplikacji, kontrola maszyny i usług, etc.) W tej sytuacji i tak otwieramy maszynę na dostęp z zewnątrz - chociażby z “zaufanej” podsieci adminstratorskiej (tak jakby nie istniała możliwość oszukania switchy (arp poisoning), fałszowania adresów IP i innych takich), więc stawianie zapory ogniowej na każdej stacji może nie być aż tak konieczne, jak zapewnienie bezpieczeństwa serwerom albo stacjom roboczym pełniącym ich rolę oraz odpowiedniemu filtrowaniu w punkcie styku.
Sieć mała a rozległa
Czy skala sieci ma znaczenie? Moim zdaniem ma, i to odwrotnie proporcjonalne. Im większa sieć, tym mniejsza potrzeba używania firewalli na stacjach klienckich, im sieć mniejsza, tym potrzeba większa. Twierdzenie to wydaje się być dosyć niedorzeczne, przecież enterprise, ta skala, ta konieczność kontroli… Właśnie dlatego wydaje mi się, że tam można, ale nie za bardzo trzeba. W sieci o dużej skali stacje robocze powinno się dać łatwo spacyfikować a wszelkie zagrożenia wykryć ponieważ:
- W sieci powinny działać systemy analizujące/blokujące ruch na podstawie typowego zachowania - większość klientów wewnętrznych nie potrzebuje łączyć się na portach innych niż 25, 80, 110, 443. Ba, w większości przypadków także taki ruch nie zawsze jest pożądany kiedy cel jest poza adresacją wewnętrzną firmy… albo właśnie w niej, ale na maszynach, które nie pełnią danej roli. W zasadzie im firma większa, tym większa sieć, tym większa potrzeba stawiania takich maszyn w pewnych węzłach sieci.
- Zazwyczaj, chociażby z konieczności zmniejszenia domeny broadcastowej, zmniejszenia skali zniszczeń po ataku robaka, wielości oddziałów, budowy VPNów, DMZów i innych skrótowych oznaczeń, tworzy się dodatkowe, wewnętrzne firewalle, separujące odpowiednie segmenty sieci i nie pozwalające na przenoszenie nieodpowiedniego ruchu na szerszą skalę.
- Dostęp do sieci powinien być autoryzowany, chociażby 802.1x - to także zazwyczaj dzieje się przy budowie sieci większych, bo to dodatkowe maszyny czy też switche obsługujące ta technologię
- Switche mogą mieć ustawione triggery odłączające maszynę przy zbyt dużej ilości generowanych pakietów.
- Systemy antywirusowe w kluczowych miejscach sieci, wysyłają alarmy w wypadku zagrożeń pochodzących z wewnątrz.
- Istnieje możliwość szybkiego wycięcia klienta sprawiającego problemy - już w miejscu jego podłączenia do sieci, (co także wymaga odpowiedniego sprzętu).
- Stacje robocze nie pełnią funkcji repozytoriów danych, (ba, czasem to nawet tylko terminale klienckie łączące się z systemem macierzystym), więc ich partykularne bezpieczeństwo jest mniej cenne niż bezpieczeństwo sieci jako całości.
Co prawda ostatni punkt nie jest w pełni prawdą - ponieważ każdy system jest tak trwały, jak jego najsłabsze ogniwo - niemniej, jesli nałożymy pewne obostrzenia sieci korporacyjnej (integralność sprzętu) możemy to uproszczenie zastosować.
Te wszystkie rzeczy trudniej jest realizować w mniejszych sieciach, w mniejszych firmach, gdzie każdy dodatkowy czy tez przestarzały komputer jest i tak zagospodarowywany chociażby na maszynę do pisania - a nie na system bezpieczeństwa. W końcu to sprzęt który miałby chodzić 24/7, zużywać energię - i co ważne dla domowego użytkownika, czyli sieci o mikro skali - generować hałas.
Ponadto składowanie danych odbywa się właśnie na tych węzłach sieci, które generują ruch, wymiana danych odbywa się w stylu komputer-do-komputera(1), więc tam szczególnie potrzebna jest ścisła kontrola i możliwie wczesne raportowanie wszelkich możliwych nadużyć - takich jak nagła chęć komunikacji zegara systemowego ze światem. Więc im mniej rzeczy z powyższej listy zastosowane jest w Twojej sieci, tym bardziej powinieneś pomyśleć o stosowaniu zapory ogniowej.
Wielość interfejsów oraz maszyny przenośne
Nowoczesna maszyna zaczyna zawierać coraz więcej interfejsów - sieci przewodowe, bezprzewodowe (takie jak WiFi/WiMAX czy bluetooth i jego PANy) czy też komórkowe. Wszystkie z nich pozwalają dostęp do naszej maszyny i zgromadzonych na niej danych - niektóre jest łatwiej kontrolować (sieć kablowa) inne trudniej. Jeśli nie potrafimy panować nad medium, którym przesyłane są dane - a kto potrafi zapanować nad powietrzem i przenoszonymi przez nie falami EM - to powinniśmy pilnować mocno punktu końcowego.
Tu w szczególności ma zastosowanie konieczność posiadania zapory ogniowej za routerem. Przecież nagle nasza sieć wewnętrzna staje się otwarta - i wzmiankowany na wstępie router i jego firewall nie zapobiegają już atakom na nasza maszynę. Te ataki przychodzą z wewnątrz sieci! Stąd brak posiadania firewall oznacza możliwość wykorzystania naszej maszyny do celów nie do końca pożądanych. Ponadto wykorzystując sieci, które nas ‘chronią’ przed dostępem z zewnątrz same nadając nam wewnętrzną, nie przechodząca do internetu adresację, takie jak np. blueconnect, iPlus czy dowolny hotspot, otwieramy do nas dostęp z własnej sieci danego operatora - przed którego złośliwymi użytkownikami ochroni nas jedynie nasz własny firewall.
Ponadto warto zauważyć, że nawet tak banalny system jak Windows 2000 pozwala przerzucać ruch w trybie bridge albo za pomocą dzielenia łącza - wtedy w szczególności warto ograniczyć albo taką opcję w ogóle, albo móc filtrować to, co przez komputer przechodzi. Nasz zysk z użyczania dostępu do sieci może się zamienić w poważne problemy, jeśli ktoś poprzez to udostępnione połączenie narobi ambarasu…
Podsumowanie, czyli co powinna potrafić zapora ogniowa
W artykule omawiając rózne sprawy pominąłem pastwienie się szczegółowo nad DMZ czy VPN, bo to także wykracza poza (i tak straszenie rozszerzone) ramy postawionego na wstępie pytania. A jaka jest odpowiedź? Wydaje mi się, że dosyć jasna. Tak - firewall. Albo na jednej stacji, albo rozproszony, ale firewall. Filtrowanie ruchu jest potrzebne, wskazane i pożądane - w końcu to jedna z barier chroniąca nas przed wyciekiem pieniędzy: albo cennych danych, albo dla ‘pana od komputerów’ na doprowadzenie systemu do porządku.
- Na zakończenie lista cech - co taki firewall powinien umieć?
- Uruchamiać się przy starcie systemu, tak aby być gotowym już wtedy, gdy jest nadany adres i możliwa komunikacja z systemem z zewnątrz, przed uruchomieniem pozostałych usług opartych na sieci innej niż pętla wewnętrzna
- Umożliwiać filtrowanie nie tylko ruchu przychodzącego, co odcina nas od hakjeruff w Sieci, ale także ruchu wychodzącego, co pozwala w jakimś sensie zabezpieczyć się przed własnymi błędami
- Umożliwiać kontrolę jaka aplikacja może wysyłać dany rodzaj ruchu - po co np. zegar systemowy miałby łączyć się z portem innym niż ntp/daytime? Po co przeglądarce ruch na port 25?
- Tworzenie reguł w nawiązaniu do konkretnych interfejsów/typów interfejsów.
- Tworzenie reguł czasowych - np. otwórz ten port na tą sesję/na 30 minut
- Zawierać dużą ilość predefiniowanych reguł pozwalających na automagiczną konfigurację znanych (i/lub podpisanych cyfrowo) aplikacji wraz z aktualizacją tej listy.
- W miarę możliwości filtrować w warstwie aplikacji, tak aby odfiltrowywać ataki na przypadkowo uruchomionego na stacji roboczej IIS czy SQL Server (WMSDE/MSDE) czy linuxowe odpowiedniki.
- Wyświetlać jasne komunikaty, że jakieś niepokojące zdarzenie ma miejsce - i to najlepiej w ilości niepozwalającej przejść obojętnie, albo miec opcję wysyłania takich ostrzeżeń do znajomego pana od komputerów/działu IT.
- Monitorować tworzone ad-hoc interfejsy (BT, GPRS, WiFi) i w zależności od polityki albo je wyłączać albo chronić.
- Monitorować ruch przechodzący przez maszynę, jeśli prowadzi routing.
- Móc całkowicie, definitywnie odłączyć maszynę od sieci - tak, żeby była potrzebna fizyczna interwencja administratora.
- Tworzyć zapisy swoich działań i móc raportować je do systemów zewnętrznych.
(1) W Windows Vista i w Longhorn serwer został/zostanie zaimplementowany wewnętrznie protokół p2p, który pewnie pozwoli na rozproszone i szybkie składowanie danych w dużych skupiskach i pozwoli(?) wykorzystać nadmiar pamięci masowej na stacjach roboczych ![]()