Wyszukiwanie w witrynie

Seria RHCSA: Podstawy zapory ogniowej i kontrola ruchu sieciowego przy użyciu FirewallD i Iptables - Część 11


Krótko mówiąc, zapora sieciowa to system bezpieczeństwa kontrolujący ruch przychodzący i wychodzący w sieci w oparciu o zestaw predefiniowanych reguł (takich jak na przykład miejsce docelowe/źródło pakietu lub typ ruchu). .

W tym artykule omówimy podstawy firewalld, domyślnego demona dynamicznej zapory sieciowej w Red Hat Enterprise Linux 7, oraz usługi iptables, starszej wersji usługa zapory ogniowej dla systemu Linux, z którą dobrze zna większość administratorów systemów i sieci i która jest również dostępna w RHEL 7.

Porównanie FirewallD i Iptables

W rzeczywistości zarówno firewalld, jak i usługa iptables komunikują się ze strukturą netfilter w jądrze za pośrednictwem tego samego interfejsu, co nie jest zaskoczeniem, polecenie iptables . Jednak w przeciwieństwie do usługi iptables, zapora ogniowa może zmieniać ustawienia podczas normalnej pracy systemu bez utraty istniejących połączeń.

Zapora sieciowa powinna być domyślnie zainstalowana w systemie RHEL, chociaż może nie być uruchomiona. Możesz to sprawdzić za pomocą następujących poleceń (firewall-config to narzędzie do konfiguracji interfejsu użytkownika):


yum info firewalld firewall-config

I,


systemctl status -l firewalld.service

Z drugiej strony usługa iptables nie jest domyślnie dołączona, ale można ją zainstalować.


yum update && yum install iptables-services

Oba demony można uruchomić i włączyć podczas uruchamiania za pomocą zwykłych poleceń systemd:


systemctl start firewalld.service | iptables-service.service
systemctl enable firewalld.service | iptables-service.service

Przeczytaj także: Przydatne polecenia do zarządzania usługami systemowymi

Jeśli chodzi o pliki konfiguracyjne, usługa iptables używa /etc/sysconfig/iptables (który nie będzie istniał, jeśli pakiet nie zostanie zainstalowany w twoim systemie). Na urządzeniu RHEL 7 używanym jako węzeł klastra plik ten wygląda następująco:

Podczas gdy firewalld przechowuje swoją konfigurację w dwóch katalogach, /usr/lib/firewalld i /etc/firewalld:


ls /usr/lib/firewalld /etc/firewalld

Przyjrzymy się tym plikom konfiguracyjnym dokładniej w dalszej części tego artykułu, po dodaniu kilku reguł tu i ówdzie. Na razie wystarczy przypomnieć, że zawsze możesz znaleźć więcej informacji o obu narzędziach.


man firewalld.conf
man firewall-cmd
man iptables

Poza tym pamiętaj o zapoznaniu się z przeglądem podstawowych poleceń i dokumentacji systemu – część 1 bieżącej serii, w której opisałem kilka źródeł, z których można uzyskać informacje o pakietach zainstalowanych w systemie RHEL 7 .

Używanie Iptables do kontrolowania ruchu sieciowego

Możesz zapoznać się z Konfigurowanie zapory Iptables — część 8 serii Certyfikowany inżynier Linux Foundation (LFCE), aby odświeżyć pamięć na temat wewnętrznych elementów iptables zanim przejdziesz dalej. W ten sposób będziemy mogli od razu przejść do przykładów.

Przykład 1: Zezwalanie na przychodzący i wychodzący ruch sieciowy

Porty TCP 80 i 443 to domyślne porty używane przez serwer WWW Apache do obsługi normalnego (HTTP) i bezpiecznego (HTTPS<) ruch sieciowy. Możesz zezwolić na przychodzący i wychodzący ruch internetowy przez oba porty w interfejsie enp0s3 w następujący sposób:


iptables -A INPUT -i enp0s3 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o enp0s3 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i enp0s3 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o enp0s3 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
Przykład 2: Blokuj wszystkie (lub niektóre) połączenia przychodzące z określonej sieci

Może się zdarzyć, że będziesz musiał zablokować cały (lub część) ruchu pochodzącego z określonej sieci, powiedz na przykład 192.168.1.0/24:


iptables -I INPUT -s 192.168.1.0/24 -j DROP

usunie wszystkie pakiety przychodzące z sieci 192.168.1.0/24, natomiast


iptables -A INPUT -s 192.168.1.0/24 --dport 22 -j ACCEPT

zezwoli tylko na ruch przychodzący przez port 22.

Przykład 3: Przekieruj ruch przychodzący do innego miejsca docelowego

Jeśli używasz swojego urządzenia RHEL 7 nie tylko jako zapory programowej, ale także jako rzeczywistej zapory sprzętowej, tak aby znajdowała się pomiędzy dwiema różnymi sieciami, przekazywanie IP musi być już włączone w Twoim systemie . Jeśli nie, musisz edytować /etc/sysctl.conf i ustawić wartość net.ipv4.ip_forward na 1 w następujący sposób:


net.ipv4.ip_forward = 1

następnie zapisz zmianę, zamknij edytor tekstu i na koniec uruchom następujące polecenie, aby zastosować zmianę:


sysctl -p /etc/sysctl.conf

Na przykład możesz mieć drukarkę zainstalowaną w skrzynce wewnętrznej z IP 192.168.0.10, z usługą CUPS nasłuchującą na porcie 631 (oba na serwerze druku i na zaporze sieciowej). Aby przekazywać dalej żądania drukowania od klientów po drugiej stronie firewalla, powinieneś dodać następującą regułę iptables:


iptables -t nat -A PREROUTING -i enp0s3 -p tcp --dport 631 -j DNAT --to 192.168.0.10:631

Pamiętaj, że iptables czyta swoje reguły sekwencyjnie, więc upewnij się, że zasady domyślne lub późniejsze reguły nie zastępują zasad opisanych w powyższych przykładach.

Pierwsze kroki z zaporą sieciowąD

Jedną ze zmian wprowadzonych w firewalldstrefy. Koncepcja ta pozwala na rozdzielenie sieci na różne strefy poziomu zaufania, jaki użytkownik zdecydował się położyć na urządzeniach i ruchu w tej sieci.

Aby wyświetlić listę aktywnych stref:


firewall-cmd --get-active-zones

W poniższym przykładzie strefa publiczna jest aktywna, a interfejs enp0s3 został do niej automatycznie przypisany. Aby wyświetlić wszystkie informacje o danej strefie:


firewall-cmd --zone=public --list-all

Ponieważ więcej o strefach możesz przeczytać w przewodniku bezpieczeństwa RHEL 7, wymienimy tutaj tylko kilka konkretnych przykładów.

Przykład 4: Zezwolenie na usługi przez zaporę

Aby uzyskać listę obsługiwanych usług, użyj.


firewall-cmd --get-services

Aby zezwolić na ruch sieciowy https i https przez zaporę sieciową, ze skutkiem natychmiastowym i przy kolejnych uruchomieniach:


firewall-cmd --zone=MyZone --add-service=http
firewall-cmd --zone=MyZone --permanent --add-service=http
firewall-cmd --zone=MyZone --add-service=https
firewall-cmd --zone=MyZone --permanent --add-service=https
firewall-cmd --reload

Jeśli kod>–zone zostanie pominięty, używana będzie strefa domyślna (możesz to sprawdzić za pomocą firewall-cmd –get-default-zone).

Aby usunąć regułę, zamień słowo dodaj na usuń w powyższych poleceniach.

Przykład 5: Przekierowanie IP/portów

Najpierw musisz dowiedzieć się, czy maskowanie jest włączone dla wybranej strefy:


firewall-cmd --zone=MyZone --query-masquerade

Na poniższym obrazku widać, że maskarada jest włączona dla strefy zewnętrznej, ale nie dla publicznej:

Możesz włączyć publiczne maskowanie:


firewall-cmd --zone=public --add-masquerade

lub użyj maskarady w zewnętrznym. Oto, co zrobilibyśmy, aby odtworzyć Przykład 3 za pomocą zapory sieciowej:


firewall-cmd --zone=external --add-forward-port=port=631:proto=tcp:toport=631:toaddr=192.168.0.10

I nie zapomnij przeładować zapory ogniowej.

Dalsze przykłady można znaleźć w części 9 serii RHCSA, gdzie wyjaśniliśmy, jak zezwolić lub wyłączyć porty zwykle używane przez serwer WWW i serwer FTP oraz jak zmienić odpowiednią regułę, gdy domyślny port dla tych usług są zmienione. Dalsze przykłady można znaleźć na wiki dotyczącej zapory ogniowej.

Przeczytaj także: Przydatne przykłady FirewallD do konfiguracji zapory w RHEL 7

Wniosek

W tym artykule wyjaśniliśmy, czym jest zapora sieciowa, jakie są dostępne usługi umożliwiające jej wdrożenie w RHEL 7 i podaliśmy kilka przykładów, które mogą pomóc w rozpoczęciu korzystania z tej usługi zadanie. Jeśli masz jakieś uwagi, sugestie lub pytania, daj nam znać, korzystając z poniższego formularza. Z góry dziękuję!