Firewall – konfiguracja dla localhost-a i serwera

wpis w: ARTYKUŁY | 0

#1  Wstęp

 
Przygodę ze sprawnym zabezpieczeniem serwera warto zacząć od generacji kluczy RSA a skończyć na ustaleniu odpowiednich reguł zapory sieciowej. Zbaczając jednak lekko z tematu bezpieczeństwa serwera, warto uściślić pewną kwestię. Spora część użytkowników linuxa pyta się, czy warto mieć aktywowany firewall na stacji roboczej, nie posiadając żadnych zewnętrznych usług np.: serwera poczty, VPS, serwera dedykowanego. Prawdą jest, że linux jest bezpieczny nawet bez uruchomienia takiej zapory. Domyślnie większość dystrybucji linuxa ma pozamykane wszystkie porty. Niemniej warto podjąć decyzję o włączeniu firewalla, ponieważ niedoświadczony użytkownik może nieświadomie uwolnić ruch przychodzący na porcie 22 i 80, instalując openssh, putty albo apache. Tyczy się to również innych aplikacji korzystających z protokołów komunikacyjnych. Nie pochłania on wiele zasobów, ale za to nasz system operacyjny poszerza się o dodatkową warstwę bezpieczeństwa. Dzięki takiemu rozwiązaniu można zablokować również ruch wychodzący na określony adres IP. Sprawdza się, gdy chcemy ograniczyć dostęp dzieciom do niektórych stron internetowych :).

 

Wracając jednak do bezpieczeństwa naszego serwera, musimy określić jakie będzie jego przeznaczenie. Czy posłuży nam do nauki? Może chcemy na nim postawić serwer (www, głosowy, VPN, do gier)? Wybór rozwiązania będzie się wiązał z określeniem odpowiednich reguł przychodzących, lub całkowitej blokadzie ruchu na wszystkich portach. Każda z wyżej wymienionych usług wykorzystuje inne porty. Jeśli jednak postawimy serwer VPN to raczej wykorzystamy go do użytku osobistego i nie będziemy go udostępniać innym. Wtedy bezcelowe staje się odblokowywanie jakichkolwiek portów lub adresów IP.

 

My za przykład weźmy jednak jedną z najprostszych opcji, czyli stronę WWW. Zakładając taką, stronę zależy nam na tym, aby generowała ona jakikolwiek ruch i odwiedzali ją inni użytkownicy. Korzystając z hostingu współdzielonego adres IP, kwestię konfiguracji firewall-a normuje za nas hostingodawca, ponieważ nie mamy dostępu do terminala. Zatem korzystanie z takiego hostingu jest korzystne dla początkującego adepta – stawiającego pierwszą stronę internetową. Wszystkie formalności związane z jej bezpieczeństwem spadają na podmiot oferujący. My jednak jesteśmy w posiadaniu VPS lub serwera dedykowanego. Wtedy zapewnienie wystarczającego bezpieczeństwa serwera zależy od nas samych.

 

#1 Konfiguracja

 

Przejdźmy zatem do praktyki. Na wstępie pisałem o zastosowaniu firewall-a naszego routera. Wprowadźmy pewne funkcjonalne zmiany.

 

netstat -ntpul
sudo systemctl disable cups-browsed
sudo systemctl disable avahi-daemon

 

Pierwsza komenda pokazuje wszystkie otwarte usługi i przypisane do nich porty. Warto się nią zainteresować z punktu widzenia ich konfiguracji. Druga komenda odnosi się do drukarki korzystającej z sieci. Jeśli jej nie mamy to nie ma powodu ciągłego nasłuchiwania w celu pozyskania informacji o komputerze (jeśli porty są skanowane w celu wyszukania tejże drukarki). Demon Avahi natomiast pozwala odkrywać zasoby sieciowe komputera, działając jako serwer DNS. Proces ten ułatwia udostępnianie plików i wykorzystuje zasoby systemowe – zmniejsząjąc przy tym wydajność sieci. Warto go po prostu wyłączyć.

 

sudo ufw enable
sudo ufw default deny incoming
sudo ufw default deny outgoing

 

Włączmy zatem naszego firewall-a i przejdźmy do konkretów. Pierwsza komenda zagwarantuje, że przy każdym ponownym uruchomieniu komputera, zapora wraz z bieżącymi regułami będzie aktywna. UFW jest prostą w użyciu nakładką na Iptables. Dwie kolejne komendy są domyślnymi ustawieniami zapory ogniowej. Będą one odpowiednio blokować cały ruch przychodzący do nas i wychodzący od nas. Jeśli cały ruch wychodzący będzie zablokowany to również w obrębie portów 80 i 443, które odpowiadają za dostęp do stron internetowych, które odwiedzamy. Zatem ważne jest, aby po opracowaniu reguł, ponownie uwolnić ten ruch.

 

ifconfig -a
sudo ufw allow out on wlo1 to 1.1.1.1 proto udp port 53 comment 'allow DNS on wlo1'
sudo ufw allow out on wlo1 to any tcp port 80 comment 'allow HTTP on wlo1'
sudo ufw allow out on wlo1 to any tcp port 443 comment 'allow HTTPS on wlo1'
sudo ufw default allow outgoing

 

Regułą ifconfig -a wskażemy na aktywne interfejsy sieciowe (ethernet, wifi, itp), które są w obsłudze. W tym przypadku, moim główmym połączeniem, na którym będę bazować (pracować) jest wlo1. Tak więc, aby wdrożyć kolejne polecenia, musimy znać nazwę naszej karty sieciowej. Dobrym rozwiązaniem wydaje się zmiana domyślnego DNS routera, ponieważ dyskusyjne jest, że ISP oferuje największe zabezpieczenia. Ponadto, przy wykorzystaniu komendy dig możemy przetestować poszczególne serwery pod względem ich szybkości. Wyniki takich testów mogą być różnie, choć sam stawiam na DNS CouldFlare. Po ustawieniu reguły DNS dla wlo1, należy w następnej kolejności skonfigurować połączenie WIFI w desktopie. W IPv4 wpisujemy adres dns, który odblokowaliśmy, czyli 1.1.1.1. Ostatnia komenda odblokowuje ruch wychodzący w obrębie powyższych reguł (protokołu http, https) dla konkretnego interfejsu sieciowego. Jest to wersja dla hosta lokalnego – NIE DLA SERWERA OBSŁUGUJĄCEGO STRONĘ WWW!

 

Konfigurując zaporę sieciową serwera WWW zależy nam tym, aby stronę odwiedzali inni odbiorcy. Należy zatem odblokować ruch przychodzący a nie wychodzący jak w przypadku localhosta. Gdy na stronie mamy aktywny certyfikat SSL (szyfrowanie HTTPS), wystarczy tylko druga reguła. W innym przypadku zezwalamy na ruch przychodzący na protokole HTTP.

 

sudo ufw allow in on wlo1 to any tcp port 80 'allow HTTP on wlo1'
sudo ufw allow in on wlo1 to any tcp port 443 'allow HTTPS on wlo1'

 

(1)  G. Michał, Polecane serwery DNS – które z nich są najszybsze i najlepiej chronią użytkownika?, www,avlab.pl, (12.06.2020).

Subscribe
Powiadom o
guest
0 komentarzy
Inline Feedbacks
View all comments