Zapora sieciowa zainstalowana w systemie operacyjnym służy do zapobiegania nieautoryzowanemu ruchowi przechodzącemu przez sieci komputerowe. Ręcznie lub automatycznie utwórz specjalne reguły dla zapory, które są odpowiedzialne za kontrolę dostępu. W systemie operacyjnym opracowanym na jądrze Linuksa CentOS 7 ma wbudowaną zaporę ogniową i jest zarządzany za pomocą zapory. FirewallD jest domyślnie włączony i chcielibyśmy dziś porozmawiać o jego konfiguracji.
Jak wspomniano powyżej, standardowa zapora ogniowa w CentOS 7 jest przypisana do narzędzia FirewallD. Dlatego konfiguracja zapory zostanie rozważona na przykładzie tego narzędzia. Możesz ustawić reguły filtrowania przy użyciu tych samych iptables, ale odbywa się to w nieco inny sposób. Zalecamy zapoznanie się z konfiguracją wspomnianego narzędzia, klikając poniższy link, a rozpoczniemy analizowanie FirewallD.
Zobacz także: Konfigurowanie iptables w CentOS 7
Istnieje kilka stref - zestawy reguł zarządzania ruchem w oparciu o zaufanie do sieci. Wszystkie mają własne zasady, których całość tworzy konfigurację zapory. Każda strefa ma przypisany jeden lub więcej interfejsów sieciowych, co pozwala również dostosować filtrowanie. Obowiązujące zasady zależą bezpośrednio od używanego interfejsu. Na przykład, po połączeniu z publicznie dostępnym Wi-Fi, zapora zwiększy poziom kontroli, aw sieci domowej otworzy dodatkowy dostęp dla uczestników łańcucha. W tej zaporze znajdują się takie strefy:
trusted
- maksymalny poziom zaufania do wszystkich urządzeń w sieci; home
to lokalna grupa sieci. Istnieje zaufanie do środowiska, ale w ten sposób połączenia przychodzące są dostępne tylko dla niektórych maszyn; work
- obszar roboczy. Istnieje zaufanie do większości urządzeń, a także dodatkowe usługi są aktywowane; dmz
- strefa dla izolowanych komputerów. Takie urządzenia są odłączone od reszty sieci i zezwalają tylko na określony ruch przychodzący; internal
strefa sieci wewnętrznych. Zaufanie dotyczy wszystkich maszyn, otwierane są dodatkowe usługi; external
- powrót do poprzedniej strefy. W sieciach zewnętrznych aktywne jest maskowanie NAT, zamykające sieć wewnętrzną, ale nie blokujące możliwości uzyskania dostępu; public
- strefa sieci publicznych z brakiem zaufania do wszystkich urządzeń i indywidualnego odbioru ruchu przychodzącego; block
- wszystkie przychodzące żądania są resetowane za pomocą błędu icmp-host lub icmp6-adm-zabronione ; drop
- minimalny poziom zaufania. Połączenia przychodzące są odrzucane bez powiadomienia. Sami politycy są tymczasowi i permanentni. Gdy parametry pojawiają się lub są edytowane, działanie zapory natychmiast zmienia się bez konieczności ponownego uruchamiania. Jeśli zastosowano tymczasowe reguły, po ponownym uruchomieniu FirewallD zostaną zresetowane. Stała reguła nazywa się tak - będzie utrzymywana na stałe podczas stosowania argumentu - stała.
Najpierw musisz uruchomić FirewallD lub upewnić się, że jest w stanie aktywnym. Tylko działający demon (program działający w tle) zastosuje reguły zapory. Aktywacja odbywa się za pomocą kilku kliknięć:
sudo systemctl start firewalld.service
i naciśnij klawisz Enter . firewall-cmd --state
. Jeśli kiedyś musisz tymczasowo lub na stałe wyłączyć zaporę, zalecamy skorzystanie z instrukcji zawartych w naszym innym artykule pod następującym linkiem.
Więcej szczegółów: Wyłącz zaporę w CentOS 7
Nawet pracując w trybie zwykłym, zapora sieciowa ma swoje własne reguły i dostępne strefy. Przed rozpoczęciem edycji zasad zalecamy zapoznanie się z bieżącą konfiguracją. Odbywa się to za pomocą prostych poleceń:
firewall-cmd --get-default-zone
pomoże firewall-cmd --get-default-zone
. firewall-cmd --get-active-zones
te informacje przez firewall-cmd --get-active-zones
. firewall-cmd --list-all
wyświetli reguły zdefiniowane dla strefy domyślnej. Zobacz zrzut ekranu poniżej. Widać, że reguła „domyślna” jest przypisana do strefy aktywnej „publicznie” - domyślna operacja, interfejs „enp0s3” i dwie usługi są dodawane. firewall-cmd --get-zones
. firewall-cmd --zone=name --list-all
, gdzie nazwa jest nazwą strefy. Po określeniu niezbędnych parametrów można przystąpić do ich modyfikacji i dodania. Przyjrzyjmy się bliżej niektórym z najpopularniejszych konfiguracji.
Jak wiadomo z powyższych informacji, każdy interfejs ma własną strefę domyślną. Pozostanie w nim, dopóki ustawienia nie zostaną zmienione przez użytkownika lub programowo. Możliwe jest ręczne przeniesienie interfejsu do strefy na jedną sesję, a odbywa się to poprzez aktywację polecenia sudo firewall-cmd --zone=home --change-interface=eth0
. Wynik „sukcesu” wskazuje, że transfer się powiódł. Przypomnij sobie, że takie ustawienia są resetowane natychmiast po ponownym uruchomieniu zapory.
Przy takiej zmianie parametrów należy pamiętać, że praca usług może zostać zresetowana. Niektóre z nich nie obsługują operacji w niektórych strefach, na przykład SSH, chociaż są one dostępne w „domu” , ale usługa odmówi pracy w usługach użytkownika lub usługach specjalnych. Możesz firewall-cmd --get-active-zones
, firewall-cmd --get-active-zones
interfejs został pomyślnie powiązany z nową gałęzią, wpisując firewall-cmd --get-active-zones
.
Jeśli chcesz zresetować poprzednie ustawienia, uruchom ponownie zaporę: sudo systemctl restart firewalld.service
.
Czasami zmiana strefy interfejsu przez jedną sesję nie zawsze jest wygodna. W takim przypadku należy edytować plik konfiguracyjny, aby wszystkie ustawienia były wprowadzane na stałe. W tym celu zalecamy użycie edytora tekstu nano , który jest instalowany z oficjalnego sudo yum install nano
repozytorium sudo yum install nano
. Pozostaje wykonać następujące czynności:
sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
, gdzie eth0 jest nazwą wymaganego interfejsu. public
lub home
. Teraz strefa interfejsu będzie taka, jak ją określiłeś, aż do następnej edycji pliku konfiguracyjnego. Aby zaktualizowane ustawienia zaczęły obowiązywać, uruchom sudo systemctl restart network.service
i sudo systemctl restart firewalld.service
.
Powyżej pokazaliśmy już polecenie, które pozwoliło nam znaleźć domyślną strefę. Można to również zmienić, ustawiając wybraną opcję. Aby to zrobić, wystarczy zarejestrować sudo firewall-cmd --set-default-zone=name
w konsoli, gdzie name jest nazwą wymaganej strefy.
Sukces polecenia zostanie wskazany przez napis „sukces” w osobnej linii. Następnie wszystkie bieżące interfejsy zostaną powiązane z określoną strefą, chyba że w plikach konfiguracyjnych określono inaczej.
Na samym początku artykułu rozmawialiśmy o działaniu każdej strefy. Zdefiniowanie usług, narzędzi i programów w takich gałęziach pozwoli każdemu z nich zastosować indywidualne parametry dla każdego żądania użytkownika. Na początek radzimy zapoznać się z pełną listą aktualnie dostępnych usług: firewall-cmd --get-services
.
Wynik jest wyświetlany bezpośrednio w konsoli. Każdy serwer jest oddzielony spacją, a na liście można łatwo znaleźć interesujące Cię narzędzie. Jeśli brakuje wymaganej usługi, należy ją dodatkowo zainstalować. O regułach instalacji przeczytaj oficjalną dokumentację oprogramowania.
Powyższe polecenie pokazuje tylko nazwy usług. Szczegółowe informacje na temat każdego z nich są uzyskiwane poprzez pojedynczy plik znajdujący się wzdłuż ścieżki /usr/lib/firewalld/services
. Takie dokumenty są w formacie XML, na przykład ścieżka do SSH wygląda następująco: /usr/lib/firewalld/services/ssh.xml
, a dokument ma następującą zawartość:
SSH
Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.
Aktywowana jest ręczna obsługa usługi w określonej strefie. W „Terminalu” powinieneś ustawić polecenie sudo firewall-cmd --zone=public --add-service=http
, gdzie --zone = public to strefa aktywacji, a --add-service = http to nazwa usługi. Zauważ, że ta zmiana wejdzie w życie tylko w ciągu jednej sesji.
Trwałe dodawanie jest wykonywane przez sudo firewall-cmd --zone=public --permanent --add-service=http
, a wynik „sukcesu” wskazuje na pomyślne zakończenie operacji.
Możesz wyświetlić pełną listę stałych reguł dla określonej strefy, wyświetlając listę w osobnej linii konsoli: sudo firewall-cmd --zone=public --permanent --list-services
.
Standardowo najbardziej popularne i bezpieczne usługi są wymienione w regułach zapory jako dozwolone, ale blokują niektóre aplikacje standardowe lub innych firm. W takim przypadku użytkownik będzie musiał ręcznie zmienić ustawienia, aby rozwiązać problem z dostępem. Można to zrobić na dwa różne sposoby.
Przekierowanie portów
Jak wiadomo, wszystkie usługi sieciowe korzystają z określonego portu. Jest łatwo wykrywany przez zaporę i może blokować blokady. Aby uniknąć takich działań przez zaporę, musisz otworzyć wymagany port za pomocą sudo firewall-cmd --zone=public --add-port=0000/tcp
, gdzie --zone = public to strefa dla portu, --add-port = 0000 / tcp - numer portu i protokół. Opcja firewall-cmd --list-ports
wyświetli listę otwartych portów.
Jeśli chcesz otworzyć porty znajdujące się w tym zakresie, użyj linii sudo firewall-cmd --zone=public --add-port=0000-9999/udp
, gdzie --add-port = 0000-9999 / udp to zakres portów i ich protokół.
Powyższe polecenia pozwolą jedynie przetestować użycie takich parametrów. Jeśli się powiodło, powinieneś dodać te same porty do stałych ustawień, a robi się to wpisując sudo firewall-cmd --zone=public --permanent --add-port=0000/tcp
lub sudo firewall-cmd --zone=public --permanent --add-port=0000-9999/udp
. Lista otwartych trwałych portów jest wyświetlana jako: sudo firewall-cmd --zone=public --permanent --list-ports
.
Jak widać, dodawanie portów nie powoduje żadnych trudności, ale procedura jest skomplikowana, gdy używana jest duża liczba aplikacji. Trudno jest śledzić wszystkie używane porty, co oznacza, że definicja usługi będzie bardziej poprawna:
sudo cp /usr/lib/firewalld/services/service.xml /etc/firewalld/services/example.xml
, gdzie service.xml to nazwa pliku usługi, a example.xml to nazwa jego kopii. sudo nano /etc/firewalld/services/example.xml
. sudo firewall-cmd --reload
. Następnie usługa pojawi się na liście dostępnych, które można przeglądać za pośrednictwem firewall-cmd --get-services
. Wystarczy wybrać najbardziej odpowiednią metodę rozwiązania problemu z dostępem do usługi i postępować zgodnie z podanymi instrukcjami. Jak widzisz, wszystkie działania są wykonywane dość łatwo i nie powinny pojawić się żadne trudności.
Już wiesz, że początkowo w FirewallD utworzono dużą liczbę różnych stref z pewnymi regułami. Istnieją jednak sytuacje, w których administrator systemu musi utworzyć strefę użytkownika, taką jak „publicweb” dla zainstalowanego serwera WWW lub „privateDNS” dla serwera DNS. W tych dwóch przykładach analizujemy dodanie gałęzi:
sudo firewall-cmd --permanent --new-zone=publicweb
i sudo firewall-cmd --permanent --new-zone=privateDNS
. sudo firewall-cmd --reload
. Aby wyświetlić strefy stałe, wprowadź sudo firewall-cmd --permanent --get-zones
. sudo firewall-cmd --zone=publicweb --add-service=ssh
, sudo firewall-cmd --zone=publicweb --add-service=http
i sudo firewall-cmd --zone=publicweb --add-service=https
, gdzie --zone = publicweb to nazwa strefy do dodania. Możesz zobaczyć aktywność usług, firewall-cmd --zone=publicweb --list-all
. W tym artykule dowiedziałeś się, jak tworzyć własne strefy i dodawać do nich usługi. Opisaliśmy już wcześniej ustawienie ich domyślnie i przypisywanie interfejsów, wystarczy tylko podać poprawne nazwy. Nie zapomnij zrestartować zapory po dokonaniu jakichkolwiek trwałych zmian.
Jak widać, zapora FirewallD jest dość dużym narzędziem, które pozwala na najbardziej elastyczną konfigurację zapory. Pozostaje tylko upewnić się, że narzędzie zostanie uruchomione wraz z systemem, a określone reguły natychmiast rozpoczną pracę. Zrób to za pomocą sudo systemctl enable firewalld
.