Firewall w Linux - prosty i łatwy w obsłudze Gufw w akcji
Systemy operacyjne

Firewall w Linux - prosty i łatwy w obsłudze Gufw w akcji

przeczytasz w 8 min.

Konfiguracja zapory ogniowej w systemie Linux nie zawsze musi się kojarzyć z wpisywaniem długich łańcuchów danych z linii poleceń w terminalu .

  • Co to jest Gufw Firewall dla Linuxa
  • Czy warto używać Gufw Firewall, co to daje i kto powinien jej używać?
  • Jak zainstalować Gufw w Linux i jak skonfigurować zaporę Firewall
  • Czym różnią się łańcuchy “wejście, wyjście i oba”, oraz komendy “pozwól, odmów, odrzuć, ogranicz”.
  • Jak blokować porty lub aplikacje, które zablokować, jak czytać zawartość sekcji Raporty

Co to jest Gufw Firewall dla Linuxa

Mowa o bardzo przejrzystej i prostej w obsłudze aplikacji Gufw Firewall.

zapora sieciowa

Charakteryzuje się przejrzystością  i bardzo intuicyjnym interfejsem graficznym z którym poradzi sobie każdy, nawet mniej zaawansowany użytkownik Ubuntu / Minta.

Czy warto używać Gufw Firewall, co to daje i kto powinien jej używać?

Według mnie zdecydowanie tak . Program upraszcza proces zabezpieczenia systemu operacyjnego, bez konieczności wpisywania długich łańcuchów tekstowych w konsoli Linuxa . Z uwagi na dostępność kilku poziomów konfiguracji oprogramowanie będzie przystępne zarówno dla początkujących jak i bardziej zaawansowanych użytkowników systemu.

Jak zainstalować Gufw Linux

Naszą przygodę trzeba rozpocząć od instalacji pakietu o nazwie Gufw - ewentualnie sprawdzenia, czy w danej dystrybucji jest już zainstalowany. 

  • Sprawdź czy pakiet jest już zainstalowany - w głównym menu wpisz Gufw, a jeśli zobaczysz pozycję “zapora sieciowa” lub “Konfiguracja zapory sieciowej”, możesz pominąć instalowanie.

gufw

Pakiet można zainstalować przez interfejs graficzny “Menedżer oprogramowania” lub przez ręczne polecenie z terminala. Znajduje się on w gałęzi stable w oficjalnym repozytorium (bazie danych pakietów) więc nie będzie problemu z jego instalacją. 

  • W Menedżerze oprogramowania wpisz “gufw” i zainstaluj pakiet,

lub

  • w terminalu wpisz komendę: sudo apt-get install gufw  

virtualbox

Do instalacji wymagane są uprawnienia administrator (su - superuser) zostaniemy poproszeni o podanie dodatkowego hasła. Po kilku chwilach oprogramowanie będzie już dostępne z poziomu naszego interfejsu graficznego. 

Podczas uruchamiania aplikacji również będziemy musli podać hasło administratora z uwagi na to, że będziemy pracowali tak naprawdę na IPTABLES, tylko w wersji graficznej. 

Jak skonfigurować Gufw Firewall

Ekran startowy oferuje cztery podstawowe funkcje:

Menu “Profil” daje do wyboru trzy różne konfiguracje - Dom, Biuro lub Publiczny. Zależnie od tego gdzie używamy komputera, możemy ustawić odpowiedni profil np: “Dom”. Jest to opcja szczególnie przydatna w przypadku używania komputera przenośnego . Możemy skonfigurować osobne reguły zabezpieczeń dla programów w pracy i np. gier w domu . Jest to tylko nazwa profilu i możemy stworzyć swój własny o dowolnej nazwie. 

zapora sieciowa dom

Druga funkcja to “Stan”, decyduje o tym czy firewall jest uruchomiony. 

Opcja “Przychodzące” decyduje o zachowaniu zapory w przypadku ruchu przychodzącego do naszego komputera. Z kolei “Wychodzące” o tym co z niego wychodzi. W obydwu przypadkach mamy do wyboru opcję “pozwól”, “odmów” lub “odrzuć”.

stan

  • Pozwól - Zezwala na ruch przychodzący lub wychodzący 
  • Odmów - Blokuje  ruch przychodzący lub wychodzący 
  • Odrzuć - Blokuje  ruch przychodzący lub wychodzący, ale informuje o tym fakcie hosta (adres IP), który pyta nasz komputer o dostęp

Z mojego punktu widzenia najbezpieczniejsze będzie przyjęcie polityki Przychodzące: Odmów, oraz Wychodzące: Pozwól. Możemy , także skorzystać z bardziej restrykcyjnej opcji i ustawić oba łańcuchy na Odmów i dopuszczać tylko konkretnego usługi/programy do komunikacji ze światem filtrując ruch wychodzący np. raportowanie błędów w Ubuntu/Mint. Jest to szczególnie przydatne w sytuacjach kiedy do naszego komputera przez przypadek dostanie się złośliwe oprogramowanie np. poprzez podłączenie do niego pendrive na którym były pliki nieznanego pochodzenia. Nasz komputer może np. stać się wtedy jedną z jednostek “Zombie” wykorzystywanych do masowych ataków DDOS. Gdy zajdzie potrzeba odblokowania konkretnej aplikacji/portu/usługi z pomocą przyjdą nam mechanizmy, które opiszę niżej . 

przychodzące/wychodzące

Teraz przechodzimy do bardziej zaawansowanych opcji programu. Klikamy na przycisk Reguły (Zasady), jest to miejsce w którym będziemy widzieli wszystkie zdefiniowane przez nas reguły. W dolnym lewym rogu poprzedniego ekranu przycisk “+”, klikamy go i pojawi nam się okno.

prekonfigurowana

Widzimy tutaj trzy zakładki:

  • Prekonfigurowana - znajdziemy tutaj zbiór zdefiniowanych zasad. Lista jest predefiniowana przez twórców GuFW . Znajdziemy tutaj praktycznie wszystkie najpopularniejsze usługi/programy. Np. Wybierając Podkategorie (Submenu)  zobaczymy takie programy jak TeamViewer, RDP, VNC. Każdy użytkownik powinien znaleźć tutaj coś dla siebie , jeżeli jednak czegoś zabraknie wystarczy kliknąć ikonkę ">" i własnoręcznie zdefiniować profil, który jest nam potrzebny. 

Po wybraniu odpowiedniego profilu i zatwierdzeniu na liście reguł pojawią się nowe wpisy.

  • Prosta - pozwala nam na globalne odblokowanie lub zablokowanie zestawu portów lub usług. Listę najpopularniejszych usług sieciowych widać w tabeli poniżej : 

Lista niektórych standardowych usług i portów z których korzystają:

20    FTP przesyłanie oraz pobieranie
21    FTP – przesyłanie poleceń
22    SSH - szyfrowane połączenie ze zdalnymi komputerami
80    HTTP - czyli protokół do sieci WWW
110    POP3 - odbiór poczty elektronicznej
143    IMAP - odbiór poczty elektronicznej
443    HTTPS (HTTP na SSL)
3306  MYSQL (serwer baz danych)
5432  POSTGRES (serwer baz danych)

Po wpisaniu w polu Port / Usługa  nazwy podanej po numerze portu (tabela) reguła utworzy się automatycznie na wybranym przez nas łańcuchu bez konieczności wiedzy na temat numeru portu i protokołu na którym pracuje. 

Mamy także opcję sprawdzenia jakie programy “nasłuchują” na naszym komputerze. Z pomocą przyjdzie nam tutaj komenda:

sudo lsof -i -P -n | grep LISTEN 

Potrzebne tutaj będzie hasło administratora. 

W moim przypadku widać np. że serwer www Apache2 nasłuchuje na porcie 80 przy użyciu protokołu TCP , a program do zdalnego zarządzania komputerem TeamViewer na porcie 5939, także przy użyciu wyżej podanego protokołu. Świadczy o tym słowo “LISTEN” (ang. słuchać)  podświetlone na czerwono. Opcja ta przyda nam się jednak bardziej przy konfigurowaniu reguły bez podawa nazwy usługi, ale także podczas konfiguracji prostej i zaawansowanej już bez użycia kreatora.     

thinkpad

  • Zaawansowana - możemy bardziej szczegółowo określać reguły filtrowania pakietów na naszym urządzeniu, ale wymaga to już od nas większej wiedzy np. na temat portu oraz protokołu  którym chcemy zarządzać.

Z możliwości jakie oferuje Gufw będą zadowoleni zarówno zwolennicy gier typu CS, czy programiści Mysql, PostGres i wielu innych. 

Dla przykładu przy użyciu tego prostego kreatora otworzę port 80, dla zainstalowanego na moim komputerze Apache2, który jest najbardziej popularnym i najczęściej wybieranym serwerem www, zarówno w zastosowaniach domowych jak i serwerowych. Aby serwer mógł wyświetlać zainstalowane na nim treści musimy skorzystać z udostępnienia światu protokołu HTTP, który działa na wcześniej wspomnianym porcie.

prekonfigurowana

Na liście zasad pojawiły się cztery reguły dwie dla protokołu IPv4, oraz druga para dla IPv6. Od tego momentu pomimo całkowitej blokady na łańcuchu Przychodzącym port 80 będzie otwarty dla połączeń dostępnych w obu kierunkach.

zapora sieciowa

Przejdźmy do zakładki konfiguracji Prostej

Efekt działania zabiegów przeprowadzanych w zakładce Prosta jest dokładnie taki sam jak w Prekonfigurowana z tą różnicą, że musimy zrobić to ręcznie. Opiszę poszczególne pola dostępne w tej zakładce, aby dać ogólny pogląd na zasadę jej działania

  • Nazwa - tutaj możemy własnoręcznie zdefiniować nazwę naszej reguły - wcześniej nie mieliśmy takiej opcji
  • Metoda - pozwól, odmów, odrzuć, ogranicz . Tutaj widać jeszcze jedną dodatkową opcję Ogranicz, która różni się od Odrzuć tym , że w przypadku tej pierwszej pierwszej komputer “pytający” o możliwość wejście do naszej jednostki wie , że jest odrzucanych przez Firewall. Ustawienie Odrzuć powoduje całkowite “odcięcie” połączenia.
  • Kierunek - Wejście, Wyjście, Oba
  • Protokół - Oba, TCP, UDP
  • Port - liczby w zakresie od 1 do 65.535

Jak napisałem w artykule Bezpieczeństwo w systemie Linux, w modelu sieciowym TCP/IP mamy dostępnych dokładnie do 65 535 portów przy użyciu, których jesteśmy w stanie dostać się do komputera. Porty mogą pracować przy użyciu dwóch protokołów sieciowych *TCP lub **UDP, aby skorzystać z opcji Prostej konfiguracji musimy np. wiedzieć, że aby odblokować dostęp do HTTP (Serwer WWW) musimy odblokować port 80 dla protokołu *TCP.  To jak sprawdzić na jakim porcie i przy użyciu jakiego protokołu pracuje dana aplikacja opisałem wyżej. Ja dla przykładu zainstaluje aplikację Steam - bardzo popularny system gry wieloosobowej wykorzystywany między innymi w wielu grach FPS ( tzw. strzelankach) m.in. w Far Cry, Doom, Battlefield. Zaraz po instalacji zablokujemy jej dostęp do łańcucha Wychodzącego

Steam nie jest domyślnie instalowany wraz z systemem operacyjnym więc musimy to zrobić we własnym zakresie poprzez ponowne użycie Menedżera Pakietów , lub poprzez wydanie komendy w terminalu: 

sudo apt-get install steam

Cytutuje tutaj wpis dostępny bezpośrednio na stronie wydawcy steampowered.com, odnośnie portów, które są potrzebne do prawidłowej pracy aplikacji:

“Aby zalogować się do Steam i móc pobierać treści:

  • HTTP (zdalny port TCP 80) i HTTPS (443)
  • Zdalny port UDP 27015 – 27030    
  • Zdalny port TCP 27015 – 27030       

Klient Steam

  • Zdalny port UDP 27000 – 27100: ruch sieciowy gier            
  • Lokalny port UDP 27031 – 27036: Remote Play            
  • Lokalny port TCP 27036: Remote Play            
  • Zdalny port UDP 4380    

Dedykowane lub nasłuchujące serwery

  • Lokalny port TCP 27015 (domyślny): port rcon dla SRCDS            
  • Lokalny port UDP 27015 (domyślny): ruch sieciowy rozgrywki            

Połączenia P2P Steamworks oraz czat głosowy Steam

  • Zdalny port UDP 3478            
  • Zdalny port UDP 4379            
  • Zdalny port UDP 4380        

“Nas najbardziej interesuje zestaw portów który wykorzystywany jest do wysyłania informacji m.in. danych statystycznych do producentów gier. Z uwagi na fakt , że ja na przykład bardzo cenię sobie swoją prywatność i  nie chcę udostępniać tych danych pokażę Wam jak to zrobić przy użyciu GuFW.

Według wydawcy Steam zakres portów jaki jest potrzebny do wysyłki statystyk to 27000-27100 dla protokołu UDP . Może on zostać przydzielony losowo, w zależności od np. obciążenia serwerów i być różny dla każdej sesji połączenia z internetem . Musimy to sprawdzić już bardzo dobrze znaną nam komendą: 

My zablokujemy cały zestaw portów od 27000 do 271000 , ponieważ może on być przydzielany losowo w zależności np. od obciążenia serwerów pracujących na danych porcie. 

Czy można dać jakiś przykład ustawienia pod konkretne aplikacje? (np: nie chcemy aby jakieś gry zainstalowane w Steam, łączyły się i wysyłały jakieś dane (np: telemetryczne do producenta gry).

Skąd dowiedzieć się jakie TCP i porty używa dana usługa, jak lub gdzie to sprawdzić?

Najpopularniejsze porty, które powinniśmy zablokować przy użyciu GuFW to :

  • FTP 21
  • SSH 22
  • TELNET 23
  • i jeżeli korzystamy : 
  • MYSQL 2206
  • PGSQL 5432
  • HTTP 80 
  • TEAMVIEWER  5939
  • RDP 3389

Opcja Zaawansowane daje nam możliwość konfiguracji dostępu z określonego adresu IP , co może być pomocne w momencie kiedy chcemy mieć dostęp do naszego komputer np. w pracy . Każda reguła musi zostać stworzona dla łańcucha Przychodzącego.

Jako ciekawostka: czy aplikacje w linux wysyłają jakieś dane statystyczne podobnie jak robi to Windows? Czy można to zablokować? (np: przez blokadę wychodzących na konkretne połączenie IP?)

Ostatnią zakładką jest zakładka Advanced, tutaj mamy największe pole do popisu jeżeli chodzi o definiowanie reguł filtrowania.

dodaj regułę

  • NAZWA (ang. NAME) - tutaj możemy własnoręcznie zdefiniować nazwę naszej reguły 
  • WPROWADŹ (ang. INSERT) - Ilość regół do dodania 
  • METODA (ang.POLICY) - Polityka (Allow, Denny, Reject, Limit)
  • KIERUNEK (ang. DIRECTION) - WEJSCIE , WYJSCIE, OBA KIERUNKI
  • INTERFEJS - Tutaj bardzo ciekawa opcja, ponieważ mamy możliwość zdefiniowania interfejsu. Czasami ruch przychodzący nie wchodzi poprzez port ethernet lub kartę WIFI, ale np. przez autoryzację PPPoE, PPTP lub inne. W tym przypadku ta opcja będzie dla nas bardzo pomocna. 
  • Dziennik - Nie zapisujdzinnka (Nie loguj), Dziennik (Zbieraj Logi w wersji ograniczonej), Zapisuj wszystko (Zbieraj wszystkie logi). Wszystkie logi dostępne są w zakładce głównej - Przycisk DZIENNIK. Uruchomienie tej opcji spowoduje prezentację wszystkiego co dzieje się odnośnie reguły którą właśnie tworzymy  
  • PROTOKÓŁ - TCP, UDP, OBA
  • PORT - 1 - 65 535
  • OD - Kolejna intersującą rzecz. Możemy tutaj zezwolić na ruch tylko z określonego adres IP i portu 
  • DO - W połączniu z OD zezwala tylko na ruch z określonego adresu IP do konkretnego host 

W górnej części okna programu dostępne mamy opcje Plik, Edytuj, oraz Pomoc. 

zapora sieciowa plik

  • Plik - Importuj profil  - umożliwia import wcześniej zapisanej konfiguracji 
  • Plik - Exportuj profil - umożliwia export aktualnej konfiguracji do pliku. Polecam jej zapis. Bardzo przydatne przy migracji na inny komputer, lub konieczności reinstalacji / odzyskania systemu. 
  • EdycjaEdit - Resetuj bierzący profijReset Current Profile - Usuwa wszystkie reguły i konfigurację profilu z którego aktualnie korzystamy. 
  • EdycjaEdit - PreferencjePreferences 

Widzimy tutaj możliwość ustawienia poziomu logowania - Logging. Dostępne opcje to:

  • Off - Logowanie wyłączone 
  • Low - Podstawowy poziom logowanie
  • Medium - Rozszerzony poziom logowania
  • High - Wysoki poziom logowania 
  • Full - Widzimy wszystkie logi 

Włączenie wysokiego poziomu logowania przy dużej ilości reguł filtrowania może mieć wpływ na ilość dostępnego miejsca na naszym dysku twardym  

  • Checkbox Logging GuFw Activity - logi aktywności akcji wykonywanych w samym systemie 
  • Show confirm dialog for deleting rules - Czy wyświetlać okno potwierdzenia przed usunięciem reguły 
  • W polu Profiles możemy stworzyć własną nazwę profilu np. DOM 

Mam nadzieję, że udało mi się pokazać Wam, że przy użyciu odpowiednich narzędzi możemy dodatkowo zabezpieczyć nasz komputer w prosty i przystępny dla użytkownika sposób. Miałem na celu pokazać, że konfiguracja firewall w Ubuntu/Mint, może by nawet prostsza niż w przypadku Windows Firewall. Na koniec dodam, że wszystkie zasady filtrowania zapisują się automatycznie i po restarcie komputera pozostają w nienaruszonym stanie, co możemy sprawdzić z poziomu konsoli, ale o tym może później :) 

Dodatkowe objaśnienia

TCP - protokół kontroli transmisji (protokół działający w trybie klient–serwer) 
UDP - protokół pakietów użytkownika (jeden z protokołów internetowych)

Komentarze

15
Zaloguj się, aby skomentować
avatar
Komentowanie dostępne jest tylko dla zarejestrowanych użytkowników serwisu.
  • avatar
    digitmaster
    3
    Objaśnienia dotyczące TCP i UDP są totalnie od czapy.
    Najistotniejszą różnicą między TCP a UDP to to, że w UDP nie mamy flag, sum kontrolnych i ponownego wysyłania pakietów w przypadku błędów. Dlatego po UDP realizuje się większość streamingów i innych metod wysyłania danych gdzie utrata iluś procent pakietów jest bez znaczenia, a TCP jest wykorzystywane tam gdzie ważna jest jakość połączenia oraz gwarancja poprawności i synchronizacji wysyłanych/otrzymywanych danych.
    Dla zdecydowanej większości użytkowników to wystarczające informacje dotyczące różnic.
    • avatar
      Edyward
      2
      Tyle lat bez firewalla ale aż zainstalowałem, będem testował ;)
      • avatar
        Damian Szymański
        2
        Cześć. Nie lubię pisać takich postów, ale jako osoba zaangażowana (po godzinach) w rozwój jednej z dystrybucji Linuksa muszę odradzić gufw. Dlaczego?
        Po pierwsze wyjaśnijmy - gufw to nic innego jak nakładka graficzna na ufw (gui wykonane w gtk). O ile w linuksie cenimy bezpieczeństwo i aktualny kod to tutaj z tym może być problem.
        Bowiem sam ufw czyli z angielskiego "Uncomplicated Firewall" jest rozwiązaniem praktycznie już nie rozwijanym. Mówię praktycznie bo ostatnie wnoszące coś do jego rozwoju commit'y były dodane w 2018 roku. Czyli 4 lata temu. Od tej pory nad projektem "pracuje" już tylko jedna osoba, a w zasadzie dodaje jedynie drobne kosmetyczne zmiany jak drobne korekty w licencji, literówki w readme czy drobne fixy aby kod kompilował się na nowych maszynach. Sam ufw ma raczej w linuksowej społeczności status przeżytku i czegoś co należy już unikać. To taki prawie deprecated projekt. Sama nakładka gufw też nie jest jakoś specjalnie rozwijana. Jej kod tak naprawdę ostatni raz był tknięty 5 lat temu. Z czego w ostatnich miesiącach pojawiło się kilka kosmetycznych zmian - jak tłumaczenia czy nowe profile. Praktycznie nic więcej. Dlatego ja osobiście nie rekomenduję używania ufw tudzież gufw - gdyż w tej materii powinno nam zależeć aby stosowane przez nas zabezpieczenia były w miarę nowoczesne i aktywnie rozwijane, w tym również aktywnie łatały błędy i potencjalne luki.
        Ze swojej strony dodam, że kilka lat temu (kiedy ufw był jeszcze dosyć dobrze rozwijany) do dystrybucji, w której się udzielam wdrożyłem ufw w połączeniu z nakładką nx-firewall, która bardzo dobrze komponuje się z bibliotekami Qt oraz środowiskiem i panelem sterownia Plasma5. Jednak porzuciliśmy je ze względu na wyżej wymienione kwestie.
        Jako zamiennik, który osobiście rekomenduję do domowego użytku to - firewalld - czyli coś co jest nowoczesne, aktywnie rozwijane, nieskompilowane i komponuje się dobrze praktycznie z każdym systemem Linux, baa jego nową wersję znajdziemy praktycznie w każdej aktualnej dystrybucji Linuksa.
        Pozdrawiam.
        • avatar
          slawp1224
          1
          prawdziwy firewall to nie jest taki ze wy dajecie sobie powiedzmy block na incoming a acces na out tylko dajecie block na oba kierunki i sprawdzacie potem co sie gdzie laczy i ewentualnie dajecie accept na te ip czy domene
          • avatar
            biuro74
            0
            Kolejny autor bez pojęcia o poprawnej odmianie Linuksa, czyli wymianie "-x" do "-ks" w języku polskim.
            • avatar
              Marti99
              0
              To jest w Linuxie "obrzydliwe" Gufw. I inne podobne nazwy. Nie mozna nazwac czegos po ludzku tylko Afasdfas Ejujujuj itd.
              • avatar
                40rozbojnik
                -1
                Gufw jest tylko zbędną graficzną nakładką na ufw (Uncomplicated Firewall), który sam w sobie jest banalnie prostą nakładką na iptables. Podstawowa konfiguracja ufw?
                sudo ufw default deny incoming && sudo ufw default allow outgoing && sudo ufw enable

                Zezwalanie/blokowanie połączenia SSH, FTP czy cokowiek? Składnia taka sama: sudo ufw allow (deny) nr_portu (adres IP albo nazwa usługi). Widok reguł za pomocą sudo ufw status verbose. A jak się nabroi to można zresetować ustawienia za pomocą sudo ufw reset. Tutaj posiłkowanie się graficzną nakładką jest naprawdę niepotrzebne.
                • avatar
                  slawp1224
                  -2
                  Przychodzace odmow wychodzace odmow tylko sie odblokjowuje porty dns https i to jest najbezpieczniejsze ustawienie firewalla
                  • avatar
                    slawp1224
                    -2
                    zreszta jak ja konfigurowalem FW na systemach klasy mainframe to dużo mi możecie o tym powiedzieć
                    • avatar
                      que_pasa
                      0
                      GuFW blokuj tylko porty a nie aplikacje. Nie ma to nic wspólnego z działaniem zapory w sposób jaki jest oczekiwany na desktopie. Jeśli chcemy blokować aplikacje to najprościej chyba użyć firejail. Poza tym jest kilka błędów technicznych w artykule.