Zapora sieciowa jest jednym z kluczowych komponentów zabezpieczania systemu. Odpowiada za zarządzanie połączeniami przychodzącymi i wychodzącymi w sieci. To podstawowa linia obrony Twoich serwerów i danych. Dlatego tak ważne jest posiadanie dobrze skonfigurowanej zapory sieciowej. W tym poradniku przeprowadzimy Cię przez kroki konfiguracji zapory sieciowej za pomocą UFW na Ubuntu 18.04.
UFW na Ubuntu
Termin UFW oznacza „Uncomplicated Firewall” (Nieskomplikowana zapora sieciowa). Jest to domyślny program zapory sieciowej, który jest fabrycznie zainstalowany w systemie Ubuntu. UFW jest w rzeczywistości interfejsem dla iptables. Celem UFW jest ułatwienie konfiguracji i zarządzania zaporą sieciową. Choć samo iptables jest solidnym i elastycznym rozwiązaniem, nie jest przyjazne dla początkujących. UFW ułatwia to zadanie zarówno początkującym, jak i doświadczonym użytkownikom.
Najpierw zapoznaj się z naszym wszechstronnym poradnikiem, który pomoże Ci zapoznać się z podstawowymi funkcjami UFW. Możesz również skorzystać z tego poradnika, aby zainstalować swój serwer Ubuntu. A teraz zaczynajmy!
Na początek, jeśli z jakiegoś powodu Twój UFW nie jest zainstalowany, zainstaluj go od razu:
|
1 |
$ sudo apt install ufw |
Configuring UFW
-
Używanie IPv6
Obecnie IPv4 wciąż dominuje. Mając to na uwadze, większość tego poradnika dotyczy również IPv4. Na szczęście UFW oferuje także wsparcie dla IPv6. Wszystko, co musisz zrobić, to włączyć tę funkcję w pliku konfiguracyjnym UFW.
Najpierw otwórz plik konfiguracyjny UFW w edytorze tekstu. Aby zapisać zmiany, edytor tekstu musi być uruchomiony z uprawnieniami sudo:
|
1 |
$ sudo vim /etc/default/ufw |
Znajdź wpis „IPV6” i upewnij się, że jest ustawiony na „yes”.
-
Domyślna polityka
Jeśli po raz pierwszy konfigurujesz zaporę sieciową, zaleca się najpierw zdefiniowanie domyślnych polityk. Reguły te określają, jak kontrolowany jest ruch, który nie pasuje do żadnej jawnej reguły. Domyślnie UFW jest skonfigurowany tak, aby odrzucać wszystkie połączenia przychodzące, ale zezwalać na wszystkie połączenia wychodzące. Oznacza to, że nikt nie może połączyć się z serwerem, podczas gdy aplikacja działająca na serwerze może łączyć się ze światem zewnętrznym.
Poniższe polecenia po prostu na nowo zdefiniują domyślne zachowanie UFW. Pamiętaj, że zmieni to zachowanie UFW, jeśli było ono wcześniej modyfikowane:
|
1 2 |
$ sudo ufw default deny incoming $ sudo ufw default allow outgoing |
W przypadku komputera osobistego same te reguły zapory byłyby wystarczające. Jednak serwery wymagają więcej, aby odpowiednio wzmocnić ich bezpieczeństwo.
Zezwalanie na połączenia SSH
Przy obecnej konfiguracji UFW odrzuci wszystkie połączenia przychodzące. W przypadku serwera zdalnego jest to niedopuszczalne. Bez dostępu do serwera nic nie da się zrobić. Aby uniknąć tego problemu, można skonfigurować UFW tak, aby zezwalał na połączenia przychodzące SSH lub HTTP.
Aby zezwolić na połączenia SSH do serwera, uruchom poniższe polecenie. W zasadzie nakaże ono UFW zezwolenie na wszystkie połączenia na porcie 22. Jest to port, na którym domyślnie nasłuchuje demon SSH:
|
1 |
$ sudo ufw allow ssh |
Zamiast tego polecenia można bezpośrednio skonfigurować zezwalanie na połączenia na porcie 22. Port ten jest zdefiniowany w pliku /etc/services:
|
1 |
$ sudo ufw allow 22 |
Ponieważ port 22 jest domyślnym portem dla demona SSH, może być również podatny na ataki. Co jeśli serwer SSH jest skonfigurowany do nasłuchiwania na innym porcie? W takiej sytuacji UFW musi zezwolić na połączenie z tym portem. Zakładając, że serwer SSH nasłuchuje na porcie 1234, użyj następującego polecenia:
|
1 |
$ sudo ufw allow 1234 |
Włączanie UFW
Choć reguły UFW zostały ustalone, nie przyniosą żadnego skutku, dopóki UFW nie zostanie aktywowany. Domyślnie UFW jest wyłączony, co oznacza, że mimo zadeklarowania reguł, nie będą one egzekwowane. Aby włączyć UFW, uruchom następujące polecenie:
|
1 |
$ sudo ufw enable |
UFW może wyświetlić ostrzeżenie o zakłóceniu istniejących połączeń SSH. Ponieważ połączenia SSH zostały skonfigurowane jako dozwolone, włączenie UFW nie spowoduje żadnych zakłóceń. Aby zobaczyć, jakie reguły są ustawione, uruchom następujące polecenie:
|
1 |
$ sudo ufw status verbose |
Zezwalanie na różne połączenia
W tym momencie UFW powinien być wyposażony w inne reguły, aby zapewnić stabilne działanie. Połączenia, które mają być dozwolone, zależą od Twoich konkretnych potrzeb. Pokazano już, jak nakazać UFW zezwalanie na połączenia na podstawie nazwy usługi lub numeru portu.
Oto kilka innych portów, które bardzo często są otwarte:
- SSH (
port 22): Jest to domyślny port skonfigurowany dla połączeń SSH. - HTTP (
port 80): Jest to domyślny port używany przez nieszyfrowane serwery WWW. - HTTPS (
port 443): Jest to domyślny port używany przez szyfrowane serwery WWW.
Aby włączyć połączenia SSH, uruchom jedno z następujących poleceń:
|
1 2 |
$ sudo ufw allow ssh $ sudo ufw allow 22 |
Następnie, aby włączyć połączenia HTTP, uruchom jedno z następujących poleceń:
|
1 2 |
$ sudo ufw allow http $ sudo ufw allow 80 |
Aby włączyć połączenia HTTPS, uruchom jedno z następujących poleceń:
|
1 2 |
$ sudo ufw allow https $ sudo ufw allow 443 |
Zakres portów
Do tej pory pokazaliśmy, jak zezwolić na określony port. Co jeśli istnieje potrzeba zezwolenia na zakres portów? Deklarowanie każdego portu w UFW jest dość nieefektywne. Niektóre aplikacje korzystają z wielu portów. Na szczęście UFW umożliwia zadeklarowanie zakresu portów. Aby to zrobić, użyj następującej struktury polecenia:
|
1 |
$ sudo ufw allow <początek>:<koniec>/<protokół> |
Poniższy przykład włącza połączenia X11, które używają portów 6000 do 6007:
|
1 2 |
$ sudo ufw allow 6000:6007/tcp $ sudo ufw allow 6000:6007/udp |
Zaleca się deklarowanie protokołów, gdy tylko jest to możliwe. Jednak w większości przypadków nie jest to konieczne i wszystko będzie działać poprawnie.
Określone adresy IP
Podczas korzystania z UFW możliwe jest również filtrowanie połączeń według określonych adresów IP. Domyślnie UFW blokuje połączenia z dowolnego adresu IP. Możliwe jest zadeklarowanie zezwolenia na połączenie z określonych adresów IP. Aby zezwolić na połączenie z adresu IP, użyj następującej struktury polecenia:
|
1 |
$ sudo ufw allow from <adres_ip> |
Możesz również zadeklarować określone porty, z którymi dany adres IP może się łączyć. Aby to zrobić, dodaj to any port a następnie numer portu do polecenia:
|
1 |
$ sudo ufw allow from <adres_ip> to any port <port> |
Podsieci
Jeśli zachodzi potrzeba zezwolenia na podsieć adresów IP, można to zrobić za pomocą notacji CIDR. W tym przykładzie UFW zezwoli na połączenia z adresów IP z zakresu od 203.0.113.1 do 203.0.113.254:
|
1 |
$ sudo ufw allow from 203.0.113.0/24 |
Podobnie jak w poprzednim kroku, możliwe jest również określenie portu, z którym te adresy IP mogą się łączyć:
|
1 |
$ sudo ufw allow from 203.0.113.0/24 to any port <port> |
Łączenie z określonym interfejsem sieciowym
W środowisku serwerowym do systemu może być podłączonych wiele interfejsów sieciowych. Korzystając z UFW, można określić, że dana reguła ma zastosowanie tylko do określonego interfejsu sieciowego. Najpierw sprawdź wszystkie interfejsy sieciowe podłączone do serwera. Głównym punktem uwagi jest nazwa docelowego interfejsu sieciowego:
|
1 |
$ ip addr |
W naszym przypadku istnieje tylko jeden interfejs sieciowy ens3, który łączy się z publicznym Internetem. Aby zezwolić na połączenia przychodzące z tego interfejsu sieciowego, użyj następującej struktury polecenia:
|
1 |
$ sudo ufw allow in on <interfejs_sieciowy> |
Możliwe jest również zdefiniowanie portu, do którego może trafiać ruch pochodzący z interfejsu sieciowego:
|
1 |
$ sudo ufw allow in on <interfejs_sieciowy> to any port <port> |
Odrzucanie połączenia
Zgodnie z domyślną konfiguracją, UFW odrzuci połączenie z dowolnego źródła (z wyjątkiem zadeklarowanych wyjątków). Jest to zalecany sposób korzystania z UFW. Może być jednak wymagane zablokowanie określonych połączeń z określonego źródłowego adresu IP lub podsieci. Być może domyślne zachowanie UFW jest ustawione na zezwalanie na wszystkie połączenia (niezalecane).
Aby odrzucić połączenie z określonych adresów IP, UFW wymaga reguł odrzucania. Pisanie reguł odrzucania jest dość proste. Weź dowolną regułę zezwalania, zamień słowo „allow” na „deny” i voila! Staje się ona regułą odrzucania.
Spójrz na poniższy przykład. Aby odrzucić dowolne połączenie HTTP, użyj następującej reguły odrzucania:
|
1 2 |
$ sudo ufw deny http $ sudo ufw deny 80 |
Aby odrzucić połączenie z 203.0.113.1, użyj następującej reguły odrzucania:
|
1 |
$ sudo ufw deny from 203.0.113.1 |
Usuwanie reguł
Wszystko, czego do tej pory się nauczyliśmy, to jak tworzyć reguły. Tak samo jak reguły są tworzone, mogą być również usuwane. W przypadku UFW istnieją dwa konkretne sposoby na usunięcie reguły.
-
Usuwanie reguły według numeru reguły
To najprostszy sposób na usunięcie reguły UFW. Każda reguła w UFW ma swój numer. Poniższe polecenie wyświetli wszystkie reguły UFW wraz z ich numerami:
|
1 |
$ sudo ufw status numbered |
Poniższe polecenie usunie regułę określoną przez numer reguły:
|
1 |
$ sudo ufw delete <numer_reguły> |
-
Usuwanie reguły według rzeczywistej reguły
To trudniejsza metoda usuwania reguły. Wymaga ręcznego określenia rzeczywistej reguły w celu jej usunięcia. W poniższym przykładzie UFW usunie regułę określoną przez allow http:
|
1 |
$ sudo ufw delete allow http |
Reguła mogła również zostać określona przez allow 80. W takim przypadku poniższe polecenie ją usunie:
|
1 |
$ sudo ufw delete allow 80 |
Usunięcie reguły spowoduje jej usunięcie zarówno dla IPv4, jak i IPv6.
Sprawdzanie statusu i reguł UFW
Niezbędne jest upewnienie się, czy UFW jest aktywny, czy nie. Aby określić status UFW, uruchom następujące polecenie:
|
1 |
$ sudo ufw status verbose |
Jeśli status to „inactive” (nieaktywny), aktywuj go, wykonując krok Włączanie UFW powyżej. Jeśli jest aktywny, UFW zgłosi status „active” (aktywny) i wyświetli listę wszystkich aktywnych reguł.
Wyłączanie UFW
Jeśli z jakiegoś powodu nie będziesz używać UFW, wyłącz go za pomocą następującego polecenia:
|
1 |
$ sudo ufw disable |
Jeśli UFW jest wyłączony, wszystkie utworzone reguły nie są już aktywne. Reguły nie zostają jednak usunięte. Po ponownym włączeniu UFW wszystkie reguły staną się ponownie aktywne. Co jeśli obecna konfiguracja UFW jest chaotyczna? Zamiast usuwać reguły pojedynczo, można usunąć je wszystkie za pomocą jednego polecenia. Aby zresetować UFW, uruchom następujące polecenie:
|
1 |
$ sudo ufw reset |
Pamiętaj, że nie zmieni to domyślnego zachowania UFW, które zostało skonfigurowane na początku.
Podsumowanie
Właściwa konfiguracja zapory sieciowej jest niezbędna do zapewnienia bezpieczeństwa i funkcjonalności. Powinna być skonfigurowana tak, aby zezwalać tylko na niezbędne połączenia przychodzące, jednocześnie ograniczając te niepotrzebne.
Jeśli chcesz zapoznać się z innymi rozwiązaniami zapór sieciowych, zajrzyj na nasz blog po dalsze materiały:
- Konfiguracja zapory sieciowej za pomocą FirewallD w systemie CentOS 7
- Wyświetlanie i usuwanie reguł zapory sieciowej Iptables
- Jak zbudować solidne środki bezpieczeństwa, aby chronić swoje serwery
Miłego korzystania!











Komentarze
Brak komentarzy. Bądź pierwszy.