UFW to uproszczony interfejs zarządzania zaporą ogniową, który ukrywa złożoność technologii filtrowania pakietów niższego poziomu, takich jak iptablesi nftables. Jeśli chcesz zacząć zabezpieczać swoją sieć i nie masz pewności, którego narzędzia użyć, UFW może być dla Ciebie właściwym wyborem.
UFW jest domyślnie instalowany w Ubuntu. Jeśli z jakiegoś powodu został odinstalowany, możesz go zainstalować za pomocą
sudo apt install ufw
Krok 1 — Używanie IPv6 z UFW (opcjonalnie)
Ten samouczek został napisany z myślą o IPv4, ale będzie działał dla IPv6 tak długo, jak go włączysz. Jeśli twój serwer Ubuntu ma włączoną obsługę IPv6, upewnij się, że UFW jest skonfigurowany do obsługi IPv6, aby zarządzał regułami zapory dla IPv6 oprócz IPv4. Aby to zrobić, otwórz konfigurację UFW za pomocą nano lub swojego ulubionego edytora.
sudo nano /etc/default/ufw
Następnie upewnij się, że wartość IPV6 to yes. To powinno wyglądać tak:
/etc/default/ufw excerpt IPV6=yes
Zapisz i zamknij plik. Teraz, gdy UFW jest włączony, zostanie skonfigurowany do zapisywania reguł zapory IPv4 i IPv6. Jednak przed włączeniem UFW będziemy chcieli upewnić się, że zapora jest skonfigurowana tak, aby umożliwić łączenie się przez SSH. Zacznijmy od ustawienia domyślnych zasad.
Krok 2 — Konfiguracja domyślnych zasad
Jeśli dopiero zaczynasz pracę z zaporą, pierwszymi regułami, które należy zdefiniować, są zasady domyślne. Reguły te kontrolują sposób obsługi ruchu, który nie jest jawnie zgodny z żadnymi innymi regułami. Domyślnie UFW jest ustawione na odrzucanie wszystkich połączeń przychodzących i zezwalanie na wszystkie połączenia wychodzące. Oznacza to, że każda osoba próbująca połączyć się z serwerem nie byłaby w stanie się połączyć, podczas gdy każda aplikacja na serwerze byłaby w stanie dotrzeć do świata zewnętrznego.
Aby ustawić wartości domyślne używane przez UFW, użyj tych poleceń:
sudo ufw default deny incoming sudo ufw default allow outgoing
Te polecenia ustawiają domyślne ustawienia blokowania połączeń przychodzących i zezwalania na połączenia wychodzące. Same te domyślne ustawienia zapory mogą wystarczyć dla komputera osobistego, ale serwery zazwyczaj muszą odpowiadać na żądania przychodzące od użytkowników zewnętrznych. Przyjrzymy się temu dalej.
Krok 3 — Zezwalanie na połączenia SSH
Gdybyśmy teraz włączyli naszą zaporę sieciową UFW, odmówiłaby wszystkich połączeń przychodzących. Oznacza to, że będziemy musieli stworzyć reguły, które wyraźnie zezwalają na legalne połączenia przychodzące — na przykład połączenia SSH lub HTTP — jeśli chcemy, aby nasz serwer odpowiadał na tego typu żądania. Jeśli korzystasz z serwera w chmurze, prawdopodobnie zechcesz zezwolić na przychodzące połączenia SSH, aby móc łączyć się z serwerem i nim zarządzać.
Aby skonfigurować serwer tak, aby zezwalał na przychodzące połączenia SSH, możesz użyć tego polecenia:
sudo ufw allow ssh
Spowoduje to utworzenie reguł zapory, które pozwolą na wszystkie połączenia na porcie 22, czyli porcie, na którym demon SSH domyślnie nasłuchuje. Możemy jednak w rzeczywistości napisać równoważną regułę, określając port zamiast nazwy usługi.
sudo ufw allow 22
Jeśli skonfigurowałeś swojego demona SSH tak, aby używał innego portu, będziesz musiał określić odpowiedni port. Na przykład, jeśli Twój serwer SSH nasłuchuje na porcie 2222, możesz użyć tego polecenia, aby zezwolić na połączenia na tym porcie:
sudo ufw allow 2222
Teraz, gdy zapora jest skonfigurowana tak, aby zezwalać na przychodzące połączenia SSH, możemy ją włączyć.
Krok 4 — Włączenie UFW
Aby włączyć UFW, użyj tego polecenia:
sudo ufw enable
Otrzymasz ostrzeżenie z informacją, że polecenie może zakłócić istniejące połączenia SSH. Skonfigurowaliśmy już regułę zapory, która zezwala na połączenia SSH, więc kontynuowanie powinno być w porządku. Odpowiedz na monit klawiszem y i naciśnij ENTER.
Zapora jest teraz aktywna. Uruchom
sudo ufw status verbose
aby zobaczyć ustawione reguły.
Krok 5 — Zezwalanie na inne połączenia
W tym momencie powinieneś zezwolić na wszystkie inne połączenia, na które serwer musi odpowiedzieć. Połączenia, na które powinieneś zezwolić, zależą od Twoich konkretnych potrzeb. Na szczęście wiesz już, jak pisać reguły zezwalające na połączenia na podstawie nazwy usługi lub portu; zrobiliśmy to już dla SSH na porcie 22. Możesz to również zrobić dla:
HTTP na porcie 80, którego używają nieszyfrowane serwery internetowe, używając
sudo ufw allow 80
HTTPS na porcie 443, którego używają zaszyfrowane serwery internetowe, używając
sudo ufw allow 443
Istnieje kilka innych sposobów zezwalania na inne połączenia, poza określeniem portu lub znanej usługi.
Określone zakresy portów
Możesz określić zakresy portów za pomocą UFW. Niektóre aplikacje używają wielu portów zamiast jednego.
Na przykład, aby zezwolić na połączenia X11, które używają portów 6000- 6009, użyj następujących poleceń:
sudo ufw allow 6000:6009/tcp sudo ufw allow 6000:6009/udp
Określając zakresy portów za pomocą UFW, musisz określić protokół ( tcp lub udp), do którego powinny mieć zastosowanie reguły. Nie wspomnieliśmy o tym wcześniej, ponieważ brak określenia protokołu automatycznie zezwala na oba protokoły, co w większości przypadków jest OK.
Określone adresy IP
Podczas pracy z UFW możesz również określić adresy IP. Na przykład, jeśli chcesz zezwolić na połączenia z określonego adresu IP do wszystkich portów, takiego jak służbowy lub domowy adres IP 201.11.115.4, musisz określić from, a następnie adres IP:
sudo ufw allow from 201.11.115.4
Możesz również określić konkretny port, z którym może się łączyć adres IP, dodając, to any port po którym następuje numer portu. Na przykład, jeśli chcesz zezwolić 201.11.115.4 na połączenie z portem 22(SSH), użyj tego polecenia:
sudo ufw allow from 201.11.115.4 to any port 22
Podsieci
Jeśli chcesz zezwolić na podsieć adresów IP, możesz to zrobić za pomocą notacji CIDR, aby określić maskę sieci. Na przykład, jeśli chcesz zezwolić na wszystkie adresy IP od 201.11.115.1 do, 201.11.115.254 możesz użyć tego polecenia:
sudo ufw allow from 201.11.115.0/24
Podobnie można również określić port docelowy, z którym 201.11.115.0/24 może się łączyć podsieć . Ponownie użyjemy portu 22(SSH) jako przykładu:
sudo ufw allow from 201.11.115.0/24 to any port 22
Profile aplikacji
Podczas instalowania pakietu za pomocą polecenia apt, do katalogu /etc/ufw/applications.d zostanie dodany profil aplikacji. Profil opisuje usługę i zawiera ustawienia UFW. Możesz wyświetlić listę wszystkich profili aplikacji dostępnych na serwerze za pomocą polecenia:
$ sudo ufw app list
W zależności od pakietów zainstalowanych w systemie, dane wyjściowe będą wyglądać podobnie do następujących:
ubuntu@linux:~$ sudo ufw app list [sudo] password for ubuntu: Available applications: CUPS OpenSSH ubuntu@linux:~$
Aby znaleźć więcej informacji na temat określonego profilu i zawartych reguł, użyj następującego polecenia:
$ sudo ufw app info ‘name’
ubuntu@linux:~$ sudo ufw app info 'OpenSSH' Profile: OpenSSH Title: Secure shell server, an rshd replacement Description: OpenSSH is a free implementation of the Secure Shell protocol. Port: 22/tcp
Jak widać z danych wyjściowych zamieszczonych powyżej, profil OpenSSH otwiera port 22 przez TCP.
Krok 6 — Odmawianie połączeń
Jeśli nie zmieniłeś domyślnych zasad dla połączeń przychodzących, UFW jest skonfigurowany tak, aby odrzucać wszystkie połączenia przychodzące. Ogólnie rzecz biorąc, upraszcza to proces tworzenia bezpiecznych zasad zapory, wymagając utworzenia reguł, które jawnie przepuszczają określone porty i adresy IP.
Czasami jednak będziesz chciał odmówić określonych połączeń na podstawie źródłowego adresu IP lub podsieci, być może dlatego, że wiesz, że Twój serwer jest stamtąd atakowany. Ponadto, jeśli chcesz zmienić domyślną politykę połączeń przychodzących, aby zezwalać (co nie jest zalecane), musisz utworzyć reguły odmowy dla wszystkich usług lub adresów IP, dla których nie chcesz zezwalać na połączenia.
Na przykład, aby odmówić połączeń HTTP, możesz użyć tego polecenia:
sudo ufw deny http
Lub jeśli chcesz odrzucić wszystkie połączenia, 201.11.115.4 możesz użyć tego polecenia:
sudo ufw deny from 201.11.115.4
Przyjrzyjmy się teraz, jak usunąć reguły.
Krok 7 — Usuwanie reguł
Umiejętność usuwania reguł zapory jest tak samo ważna, jak umiejętność ich tworzenia. Istnieją dwa różne sposoby określenia, które reguły należy usunąć: według numeru reguły lub według rzeczywistej reguły (podobnie jak reguły zostały określone podczas ich tworzenia).
Według rzeczywistej reguły
Na przykład, jeśli chcesz usunąć allow http, możesz napisać to tak:
sudo ufw delete allow http
Możesz również określić regułę za pomocą allow 80 zamiast nazwy usługi:
sudo ufw delete allow 80
Ta metoda usunie zarówno reguły IPv4, jak i IPv6, jeśli istnieją.
Krok 8 — Sprawdzanie statusu i zasad UFW
W dowolnym momencie możesz sprawdzić status UFW za pomocą tego polecenia:
sudo ufw status verbose
Jeśli UFW jest wyłączone, co jest domyślnie, zobaczysz coś takiego:
Output Status: inactive
Jeśli UFW jest aktywny, co powinno być, jeśli wykonałeś krok 3, dane wyjściowe poinformują, że jest aktywny i wyświetli listę wszystkich ustawionych reguł. Na przykład, jeśli zapora jest ustawiona na zezwalanie na połączenia SSH (port 22) z dowolnego miejsca, dane wyjściowe mogą wyglądać mniej więcej tak:
Output Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip To Action From -- ------ ---- 22/tcp ALLOW IN Anywhere
Krok 9 — Wyłączanie lub resetowanie UFW (opcjonalnie)
Jeśli zdecydujesz, że nie chcesz używać UFW, możesz go wyłączyć za pomocą tego polecenia:
sudo ufw disable
Wszelkie reguły utworzone za pomocą UFW nie będą już aktywne.
Jeśli masz już skonfigurowane reguły UFW, ale zdecydujesz, że chcesz zacząć od nowa, możesz użyć polecenia resetowania:
sudo ufw reset
Spowoduje to wyłączenie UFW i usunięcie wszelkich wcześniej zdefiniowanych reguł. Pamiętaj, że domyślne zasady nie zmienią się na ich oryginalne ustawienia, jeśli w dowolnym momencie je zmodyfikujesz. To powinno dać ci nowy początek z UFW.
Krok 10 – Dziennik zapory sieciowej
Dzienniki zapory są niezbędne do rozpoznawania ataków, rozwiązywania problemów z regułami zapory i zauważania nietypowej aktywności w sieci. Musisz jednak uwzględnić reguły rejestrowania w swojej zaporze, aby dzienniki mogły zostać wygenerowane, a reguły rejestrowania muszą znajdować się przed wszelkimi obowiązującymi regułami kończącymi.
$ sudo ufw logging on
Dziennik będzie również znajdować się w /var/log/messages, /var/log/syslog i /var/log/kern.log.