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.
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.
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,
- w terminalu wpisz komendę: sudo apt-get install gufw
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.
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ć”.
- 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 .
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.
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.
- 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.
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.
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.
- 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.
- 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
15Najistotniejszą 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.
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.
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.