Wyszukiwanie w witrynie

Shorewall — zapora ogniowa wysokiego poziomu dla serwerów Linux


Konfigurowanie zapory sieciowej w systemie Linux może być bardzo trudne dla nowicjusza lub osoby niezaznajomionej z iptables. Na szczęście w Shorewall istnieje bardzo łatwe w użyciu rozwiązanie.

W tym wieloczęściowym samouczku przedstawię Ci pierwsze kroki z Shorewall i przeprowadzę Cię przez bardziej zaawansowane tematy dotyczące tej niesamowitej zapory sieciowej.

Co to jest Shorewall?

Shorewall to zasadniczo nakładka na iptables, ale jest to nakładka w środowisku wiersza poleceń, która do konfiguracji wykorzystuje kilka plików tekstowych. Chociaż Shorewall to solidny system firewall, który można skalować w bardzo dużych sieciach obsługujących wiele komputerów, zaczniemy od podstawowej konfiguracji z dwoma interfejsami i ustalimy podstawy.

Konfiguracja z dwoma interfejsami składa się z komputera wyposażonego w dwa porty Ethernet, jeden wejściowy, a drugi wychodzący do sieci lokalnej.

Zainstaluj zaporę Shorewall w systemie Linux

Shorewall można zainstalować za pomocą narzędzi do zarządzania pakietami apt i yum.

sudo apt install shorewall    [On Debian-based Sysems]
sudo yum install shorewall    [On RHEL-based Sysems]

Po instalacji musimy skopiować przykładową konfigurację z katalogu „/usr/share/doc/shorewall” do domyślnego katalogu Shorewall „/etc/shorewall”.

sudo cp /usr/share/doc/shorewall/example/two-interfaces/* /etc/shorewall
cd /etc/shorewall

Jeśli zajrzymy do tego katalogu, zobaczymy kilka plików i plik shorewall.conf.

Shorewall postrzega sieć jako grupę różnych stref, więc pierwszym plikiem, któremu chcemy się przyjrzeć, jest plik „/etc/shorewall/zones”.

sudo nano /etc/shorewall/zones

Widzimy tutaj, że domyślnie zdefiniowane są trzy strefy: fw, net i loc. Należy pamiętać, że Shorewall traktuje samą zaporę sieciową jako własną strefę i przechowuje ją w zmiennej o nazwie $fw.

Plik „/etc/shorewall/zones” jest dość oczywisty. Masz strefę sieciową (interfejs skierowany do Internetu), strefę lokalną strefę (interfejs skierowany do sieci LAN) i fw, czyli wszystko.

Ta konfiguracja eliminuje następujące elementy:

  • Zezwala na wszystkie żądania połączeń ze strefy lokalnej (LAN) do strefy sieciowej (Internet).
  • Usuwa wszystkie żądania połączeń (ignoruje) ze strefy sieciowej do zapory sieciowej i LAN.
  • Odrzuca i rejestruje wszystkie inne żądania.

Bit POZIOM LOGOWANIA powinien być znany każdemu, kto administrował Apache, MySQL lub dowolną inną liczbą innych programów FOSS. W tym przypadku mówimy firmie Shorewall, aby korzystała z poziomu informacyjnego logowania.

Teraz, gdy nasze strefy i zasady są już ustawione, musimy skonfigurować nasze interfejsy. Robisz to edytując plik „/etc/shorewall/interfaces”.

sudo nano /etc/shorewall/interfaces

Tutaj ustawiliśmy nasz interfejs internetowy jako eth0 na strefę sieciową. Po naszej stronie LAN drugi interfejs, eth1, ustawiliśmy na strefę lokalną. Dostosuj ten plik, aby poprawnie pasował do Twojej konfiguracji.

Różne opcje, które możesz umieścić dla każdego z tych interfejsów są obszerne i najlepiej je szczegółowo wyjaśnić na stronie podręcznika.

man shorewall-interfaces

Krótki przegląd niektórych z nich jest następujący:

  • nosmurfs – filtruje pakiety z adresem rozgłoszeniowym jako źródłem.
  • logmartianie – logują pakiety z niemożliwym adresem źródłowym.
  • routefilter – filtrowanie tras jądra w celu zapobiegania fałszowaniu.

Oczywiście teraz, gdy nasz system jest chroniony zaporą ogniową, będziemy potrzebować zezwolenia na pewne połączenia, aby móc wykonać to, co musimy zrobić. Definiujesz je w pliku reguł pod adresem „/etc/shorewall/rules”.

sudo nano /etc/shorewall/rules

Plik ten na pierwszy rzut oka wygląda na zagmatwany, głównie dlatego, że kolumny nakładają się na siebie, ale nagłówki są dość oczywiste. Najpierw masz kolumnę AKCJA, która opisuje, co chcesz wykonać.

Następnie masz nagłówek SOURCE, w którym definiujesz strefę, z której pochodzi pakiet. Następnie masz DEST, czyli miejsce docelowe, czyli strefę lub adres IP miejsca docelowego. Skorzystajmy z przykładu.

Załóżmy, że chcesz uruchomić serwer SSH za zaporą ogniową na komputerze o adresie IP 192.168.1.25. Nie tylko będziesz musiał otworzyć port w swojej zaporze, ale będziesz musiał powiedzieć zaporze, że cały ruch przychodzący na porcie 22 musi zostać przekierowany do komputera w 192.168.1.25.

Nazywa się to przekierowaniem portów. Jest to powszechna funkcja większości zapór sieciowych/routerów. W „/etc/shorewall/rules” można to osiągnąć, dodając taką linię:

SSH(DNAT)	net		loc:192.168.1.25

Powyżej zdefiniowaliśmy, że wszelkie pakiety przeznaczone przez SSH przychodzące ze strefy sieciowej do zapory sieciowej muszą być trasowane (DNAT) do portu 22 na maszynie o adresie 192.168.1.25.

Nazywa się to translacją adresów sieciowych lub NAT. „D” po prostu informuje Shorewall, że jest to NAT dla adresu docelowego.

Aby to zadziałało, musisz mieć włączoną obsługę NAT w swoim jądrze. Jeśli potrzebujesz NAT, a go nie masz, zapoznaj się z moim tutorialem na temat rekompilacji jądra Debiana.

W następnym artykule przyjrzymy się różnym konfiguracjom i opcjom Shorewall. Jednak na razie powinno być tu wystarczająco dużo informacji, które pomogą Ci zacząć. Jak zawsze, proszę zapoznać się ze stronami podręcznika, aby uzyskać bardziej szczegółowe zrozumienie.