16 kwi

Jak skonfigurować zaporę UFW w Ubuntu 18.04

Ubuntu 18 Firewall UFW

Poprawnie skonfigurowana zapora sieciowa (Firewall) jest jednym z najważniejszych aspektów ogólnego bezpieczeństwa systemu serwera. Domyślnie Ubuntu jest wyposażone w narzędzie do konfiguracji zapory o nazwie UFW (Uncomplicated Firewall – zapora nieskomplikowana).

UFW to przyjazny dla użytkownika interfejs do zarządzania regułami zapory bazującej na iptables, a jego głównym celem jest ułatwienie zarządzania iptables. Zapora Ubuntu została zaprojektowana jako łatwy sposób do wykonywania podstawowych zadań zapory bez uczenia się iptables. Nie oferuje wszystkich standardowych poleceń iptables, ale za to jest mniej skomplikowana.

W tym artykule pokażemy:

  • czym jest UFW,
  • jak zainstalować UFW i przeprowadzić kontrolę statusu,
  • jak używać IPv6 z UFW,
  • domyślne reguły UFW,
  • profili aplikacji,
  • jak zezwalać i odmawiać połączeń,
  • włączać dzienniki zapory,
  • jak usuwać reguły UFW,
  • jak wyłączyć i resetować UFW.

Czym jest UFW?

Jądro Linuxa zawiera podsystem Netfilter, który służy do manipulowania lub wybierania celu ruchu sieciowego kierowanego do lub przez serwer. Wszystkie nowoczesne rozwiązania zapory Linux wykorzystują ten system do filtrowania pakietów.

System filtrowania pakietów byłby mało przydatny dla administratorów bez interfejsu przestrzeni użytkownika do zarządzania nim. Takie jest przeznaczenie iptables: gdy pakiet dotrze do twojego serwera, zostanie przekazany do podsystemu Netfilter w celu akceptacji, modyfikacji lub odrzucenia na podstawie reguł dostarczonych mu z przestrzeni użytkownika przez iptables. Iptables to wszystko, czego potrzebujesz do zarządzania zaporą, jeśli ją znasz, ale dostępnych jest wiele interfejsów pozwalających uprościć to zadanie.

UFW, czyli nieskomplikowana zapora, jest „nakładką” na iptables. Jej głównym celem jest uproszczenie zarządzania zaporą i zapewnienie łatwego w użyciu interfejsu. Jest dobrze obsługiwana i popularna w społeczności Linuksa – a nawet domyślnie instalowana w wielu dystrybucjach Linuksa. W związku z tym jest to świetny sposób, aby zabezpieczyć swój serwer.

Instalacja UFW i statusy usługi

Nieskomplikowana zapora sieciowa być domyślnie zainstalowana w Ubuntu 18.04, ale jeśli nie jest zainstalowana w twoim systemie, możesz zainstalować pakiet za pomocą polecenia:

$ sudo apt-get install ufw

Po zakończeniu instalacji możesz sprawdzić status UFW za pomocą następującego polecenia:

$ sudo ufw status verbose
ubuntu1@linux:~$ sudo ufw status verbose
[sudo] password for ubuntu1: 
Status: inactive
ubuntu1@linux:~$
ubuntu1@linux:~$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
ubuntu1@linux:~$
ubuntu1@linux:~$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
ubuntu1@linux:~$

IPv6 w UFW

Jeśli twój serwer jest skonfigurowany do korzystania z IPv6, upewnij się, że UFW jest skonfigurowany do obsługi IPv6, aby skonfigurować zarówno reguły zapory IPv4, jak i IPv6. Aby to zrobić, otwórz konfigurację UFW za pomocą tego polecenia:

$ sudo vim /etc/default/ufw

Następnie upewnij się, że IPV6 jest ustawiony na „yes„:

IPV6=yes

Zapisz i wyjdź. Następnie uruchom ponownie zaporę za pomocą następujących poleceń:

$ sudo ufw disable
$ sudo ufw enable

Teraz UFW skonfiguruje zaporę zarówno dla IPv4, jak i IPv6 (w razie potrzeby).

Domyślne reguły UFW

Domyślnie UFW blokuje wszystkie połączenia przychodzące i zezwala na wszystkie połączenia wychodzące. Oznacza to, że każdy, kto spróbuje uzyskać dostęp do twojego serwera, nie będzie mógł się połączyć, chyba że specjalnie otworzysz port, podczas gdy wszystkie aplikacje i usługi działające na twoim serwerze będą mogły uzyskać dostęp do świata zewnętrznego. Domyślne zasady są zdefiniowane w pliku /etc/default/ufw i można je zmienić za pomocą komendy sudo ufw default <policy> <chain>.

$ sudo ufw default deny outgoing

Reguły zapory są podstawą do budowania bardziej szczegółowych i zdefiniowanych przez użytkownika reguł. W większości przypadków początkowe reguły domyślne UFW są dobrym punktem wyjścia.

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:

ubuntu1@linux:~$ sudo ufw app list
[sudo] password for ubuntu1: 
Available applications:
  CUPS
  OpenSSH
ubuntu1@linux:~$

Aby znaleźć więcej informacji na temat określonego profilu i zawartych reguł, użyj następującego polecenia:

$ sudo ufw app info ‘<app_name>’
ubuntu1@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.

Blokowanie i odblokowanie połączeń

Gdybyśmy włączali zaporę, domyślnie odmawiałaby wszystkim przychodzącym połączeniom. Dlatego musisz zezwolić/włączyć połączenia w zależności od potrzeb. Połączenie można otworzyć, określając port, nazwę usługi lub profil aplikacji.

$ sudo ufw allow ssh
$ sudo ufw allow http
$ sudo ufw allow 80/tcp
$ sudo ufw allow 'HTTP'

Zamiast zezwalać na dostęp do pojedynczych portów, UFW pozwala nam również na dostęp do zakresów portów.

$ sudo ufw allow 1000:2000/tcp
$ sudo ufw allow 3000:4000/udp

Aby zezwolić na dostęp do wszystkich portów z komputera z adresem IP lub umożliwić dostęp do określonego portu, możesz wykonać następujące polecenia:

$ sudo ufw allow from 77.83.100.229
$ sudo ufw allow from 77.83.100.229 to any port 22

Polecenie umożliwiające połączenie z podsiecią adresów IP:

$ sudo ufw allow from 77.83.100.0/24 to any port 3306

Aby umożliwić dostęp do określonego portu i tylko do określonego interfejsu sieciowego, musisz użyć następującego polecenia:

$ sudo ufw allow in on eth1 to any port 9992

Domyślna zasada dla wszystkich połączeń przychodzących jest ustawiona na odmowę, a jeśli go nie zmieniłeś, UFW zablokuje wszystkie połączenia przychodzące, chyba że celowo je otworzysz. Aby odmówić wszystkich połączeń z podsieci i portu:

$ sudo ufw deny from 77.83.100.0/24
$ sudo ufw deny from 77.83.100.0/24 to any port 80

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.

Usuwanie reguł UFW

Istnieją dwa różne sposoby usuwania reguł UFW: według numeru reguły i poprzez podanie rzeczywistej reguły. Usuwanie reguł UFW według numeru reguły jest łatwiejsze, w szczególności jeśli dopiero zaczynasz korzystać z UFW. Aby najpierw usunąć regułę według numeru reguły, musisz znaleźć numer reguły, którą chcesz usunąć. Możesz to zrobić za pomocą następującego polecenia:

$ sudo ufw status numbered
ubuntu1@linux:~$ sudo ufw status numbered
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22/tcp                     ALLOW IN    Anywhere                  
[ 2] Anywhere                   ALLOW IN    77.83.100.229             
[ 3] 22/tcp (v6)                ALLOW IN    Anywhere (v6)

Aby usunąć regułę numer 2 (zezwalającą na połączenia z dowolnym portem z adresu IP 77.83.100.229) użyj następującego polecenia:

$ sudo ufw delete 2
ubuntu1@linux:~$ sudo ufw delete 2
Deleting:
 allow from 77.83.100.229
Proceed with operation (y|n)? y
Rule deleted
ubuntu1@linux:~$

Druga metoda polega na usunięciu reguły poprzez określenie rzeczywistej reguły.

$ sudo ufw delete allow 22/tcp

Wyłączanie i resetowanie UFW

Jeśli z jakiegokolwiek powodu chcesz zatrzymać UFW i dezaktywować wszystkie reguły, możesz użyć polecenia:

$ sudo ufw disable
ubuntu1@linux:~$ sudo ufw disable
Firewall stopped and disabled on system startup
ubuntu1@linux:~$

Zresetowanie UFW spowoduje wyłączenie UFW i usunięcie wszystkich aktywnych reguł. Jest to pomocne, jeśli chcesz cofnąć wszystkie zmiany i zacząć od nowa. Aby zresetować UFW, użyj następującego polecenia:

$ sudo ufw reset
ubuntu1@linux:~$ sudo ufw reset
Resetting all rules to installed defaults. This may disrupt existing ssh
connections. Proceed with operation (y|n)? y
Backing up 'user.rules' to '/etc/ufw/user.rules.20181213_084801'
Backing up 'before.rules' to '/etc/ufw/before.rules.20181213_084801'
Backing up 'after.rules' to '/etc/ufw/after.rules.20181213_084801'
Backing up 'user6.rules' to '/etc/ufw/user6.rules.20181213_084801'
Backing up 'before6.rules' to '/etc/ufw/before6.rules.20181213_084801'
Backing up 'after6.rules' to '/etc/ufw/after6.rules.20181213_084801'
ubuntu1@linux:~$

Podsumowanie

UFW został opracowany w celu ułatwienia konfiguracji zapory iptables – zapewnia przyjazny dla użytkownika sposób tworzenia zapory opartej o IPv4 lub IPv6. Istnieje wiele innych narzędzi przeznaczonych do tworzenia zapory i zarządzania nią – niektóre z nich mogą być łatwiejsze, ale UFW jest dobrym narzędziem edukacyjnym, choćby dlatego, że ujawnia część podstawowej struktury filtru sieciowego i dlatego, że jest domyślnie zainstalowany w wielu systemach.