Wprowadzenie
Firewalld to rozwiązanie do zarządzania zaporą sieciową, które jest dostępne dla wielu dystrybucji Linuksa. Służy jako interfejs do systemu filtrowania pakietów iptables dostarczanego przez jądro Linuksa. W tym poradniku dowiesz się, jak skonfigurować zaporę sieciową dla swojego serwera. Pokażemy Ci również podstawy zarządzania zaporą za pomocą narzędzia administracyjnego firewall-cmd.
Podstawy Firewalld
FirewallD korzysta z pojęć stref i usług, a nie z łańcuchów i reguł iptables. W zależności od skonfigurowanych stref i usług możesz kontrolować, jaki ruch jest dozwolony lub niedozwolony do i z systemu. FirewallD można konfigurować i zarządzać nim za pomocą narzędzia wiersza poleceń firewall-cmd.
Instalacja i włączanie zapory sieciowej przy uruchamianiu systemu
W większości dystrybucji Linuksa firewallD jest już zainstalowany. Jeśli jednak musisz zainstalować go samodzielnie, wpisz poniższe polecenie:
|
1 |
sudo yum install firewalld |
Po zainstalowaniu firewalld możesz włączyć usługę i zrestartować serwer:
|
1 2 |
sudo systemctl enable firewalld sudo reboot |
Następnie zrestartuj serwer. Zapora sieciowa zostanie włączona po pomyślnym ponownym uruchomieniu serwera. Następnie użyj poniższego polecenia, aby zweryfikować, czy usługa została aktywowana:
|
1 |
sudo firewall-cmd --state |

Dane wyjściowe pokazują, że domyślne ustawienie zapory sieciowej działa.
Sprawdzanie ustawień domyślnych
Możesz sprawdzić strefę wybraną przez serwer za pomocą tego polecenia:
|
1 |
firewall-cmd --get-default-zone |

Zweryfikuj aktywną strefę, wpisując:
|
1 |
firewall-cmd --get-active-zones |

Wyświetl konfigurację domyślnej strefy, aby poznać reguły przypisane do obszaru publicznego, używając następującej składni:
|
1 |
sudo firewall-cmd --list-all |

Dane wyjściowe wskazują, że ta strefa jest zarówno strefą domyślną, jak i aktywną. Pokazują również, że interfejsy eth0 i eth1 są przypisane do tej strefy.
Sprawdzanie alternatywnych stref
Oprócz stref domyślnych i aktywnych istnieją inne strefy, które możesz zbadać. Wpisz to polecenie, aby zobaczyć wszystkie dostępne strefy:
|
1 |
firewall-cmd --get-zones |

Sprawdź konkretną konfigurację przypisaną do strefy, dodając parametr –zone= w poleceniu –list-all:
|
1 |
sudo firewall-cmd --zone=home --list-all |

Zmiana strefy interfejsu
Możesz łatwo zmienić strefę interfejsu za pomocą opcji –change-interface połączonej z opcją –change-interface. Poniższe polecenie przypisze interfejs eth1 do obszaru roboczego:
|
1 |
sudo firewall-cmd --zone=work --change-interface=eth1 |
Możesz zweryfikować zmiany, wpisując:
|
1 |
sudo firewall-cmd --get-active-zones |
Zmiana domyślnej strefy
Aby zmienić domyślną strefę, użyj opcji –set-default-zone, a następnie nazwy strefy, którą chcesz ustawić jako domyślną. Na przykład, aby zmienić domyślną strefę na start, należy uruchomić następujące polecenie:
|
1 |
sudo firewall-cmd --set-default-zone=home |
Następnie możesz zweryfikować zmiany za pomocą:
|
1 |
sudo firewall-cmd --get-default-zone |
Ustawianie reguł dla aplikacji
Przejdźmy przez podstawy wymagane do zdefiniowania wyjątków zapory sieciowej dla usług:
Dodawanie usługi do stref
Najprostszym sposobem jest dodanie potrzebnych portów lub usług do używanych stref. Podobnie, możesz użyć opcji –get-services, aby zobaczyć wszystkie dostępne usługi:
|
1 |
firewall-cmd --get-services |

Możesz aktywować usługę dla strefy za pomocą parametru –add-service =. Działanie to dotyczy strefy domyślnej lub dowolnej strefy zdefiniowanej przez parametr –zone =. Domyślnie konfigurowana jest tylko bieżąca sesja zapory sieciowej. Możesz skonfigurować stałą konfigurację zapory, aktywując flagę –permanent. Na przykład, jeśli uruchamiasz serwer WWW, który obsługuje zwykły ruch HTTP, możesz zezwolić na ten ruch dla interfejsów w naszej strefie “public” dla tej sesji, wpisując:
|
1 |
sudo firewall-cmd --zone=public --add-service=http |
Możesz pominąć –zone =, jeśli chcesz zmienić domyślną strefę. Możesz sprawdzić powodzenie operacji za pomocą operacji –list-all lub –list-services:
|
1 |
sudo firewall-cmd --zone=public --list-services |

Po zweryfikowaniu, że wszystko działa zgodnie z oczekiwaniami, najprawdopodobniej zechcesz zmienić reguły zapory na stałe, aby Twoja usługa była nadal dostępna po restarcie. Możemy wprowadzić zmianę w naszej strefie “public” na stałe, wpisując składnię:
|
1 2 3 4 |
sudo firewall-cmd --zone=public --permanent --add-service=http wynik: success |
Możesz sprawdzić, czy operacja zakończyła się sukcesem, dodając flagę –permanent do operacji –list-services. Musisz użyć sudo dla wszystkich stałych operacji:
|
1 2 3 4 |
sudo firewall-cmd --zone=public --permanent --list-services wynik: dhcpv6-client http ssh |
Twoja strefa “public” zezwala teraz na ruch HTTP na porcie 80. Możesz dodać to do bieżącej sesji i zestawu reguł trwałych za pomocą poniższego polecenia:
|
1 2 3 |
sudo firewall-cmd --zone=public --add-service=https sudo firewall-cmd --zone=public --permanent --add-service=https |
Jeśli nie ma usług odpowiadających Twoim wymaganiom, masz dwie doskonałe opcje poradzenia sobie z tą sytuacją:
- Otwieranie portu dla swoich stref
Najprostszym sposobem na dodanie obsługi konkretnej aplikacji jest otwarcie portów używanych w każdej strefie. Jest to tak proste, jak określenie portu lub zakresu portów oraz odpowiedniego protokołu dla portów, które należy otworzyć. Na przykład, jeśli Twoja aplikacja działa na porcie 5000 i korzysta z protokołu TCP, możesz dodać ją do strefy “public” dla tej sesji za pomocą parametru –add-port =. Protokołami mogą być TCP lub UDP:
|
1 2 3 4 |
sudo firewall-cmd --zone=public --add-port=5000/tcp wynik: success |
Aby sprawdzić, czy operacja zakończyła się sukcesem, użyj operacji –list-ports:
|
1 2 3 4 |
sudo firewall-cmd --zone=public --list-ports Wynik: 5000/tcp |
Możesz również określić zakres dla interfejsu szeregowego, oddzielając port początkowy i końcowy w zakresie myślnikiem. Na przykład, jeśli Twoja aplikacja korzysta z portów UDP od 4990 do 4999, możesz otworzyć je w strefie “public”, wpisując:
|
1 |
sudo firewall-cmd --zone=public --add-port=4990-4999/udp |
Po przetestowaniu prawdopodobnie zechcemy dodać je do stałej zapory sieciowej. Możesz to zrobić, wpisując następujące polecenia:
|
1 2 3 |
sudo firewall-cmd --zone=public --permanent --add-port=5000/tcp sudo firewall-cmd --zone=public --permanent --add-port=4990-4999/udp sudo firewall-cmd --zone=public --permanent --list-ports |

- Definiowanie usługi
Usługa to zbiór portów z przypisaną nazwą i opisem. Usługi są łatwiejsze w zarządzaniu niż porty, ale wymaga to trochę początkowej pracy. Najprostszym sposobem na rozpoczęcie pracy jest skopiowanie istniejącego skryptu (w / usr / lib / firewalld / services) do katalogu /etc/firewalld/services. Na przykład można skopiować definicję usługi SSH, aby użyć jej w definicji usługi “example” w następujący sposób. Nazwa pliku bez rozszerzenia XML określa nazwę usługi na liście usług zapory sieciowej:
|
1 |
sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/example.xml |
W tym momencie możesz dostosować definicję w skopiowanym pliku:
|
1 |
sudo vi /etc/firewalld/services/example.xml |
Po pierwsze, plik zawiera skopiowaną definicję SSH:
|
1 2 3 4 5 6 |
<?xml version="1.0" encoding="utf-8"?> <service> <short>SSH</short> <description>Bezpieczna Shell (SSH) to a protokół do logowania się i wykonywania poleceń na zdalnych maszynach. To zapewnia bezpieczną szyfrowaną komunikację. Jeśli planujesz uzyskać zdalny dostęp do swojej maszyny przez SSH za pośrednictwem chronionego interfejsu, włącz tę opcję. Musisz mieć zainstalowany openssh-server pakiet installed aby ta opcja była użytecznauseful.</description> <port protocol="tcp" port="22"/> </service> |
Większość tej definicji składa się z metadanych. Musisz zmienić krótką nazwę usługi w znacznikach <short>. Jest to czytelna nazwa usługi. Wyobraź sobie, że dla naszej usługi “example” musimy otworzyć port 7777 dla TCP i 8888 dla UDP. Możesz zmienić istniejącą definicję, wchodząc w tryb INSERT poprzez naciśnięcie i:
|
1 2 3 4 5 6 7 |
<xml version="1.0" encoding="utf-8"?> <service> <short>Przykładowa usługa</short> <description>To jest tylko an przykładowa usługa. Prawdopodobnie nie powinna 'być używana w rzeczywistym systemie real system.</description> <port protocol="tcp" port="7777"/> <port protocol="udp" port="8888"/> </service> |
Następnie naciśnij ESC i wpisz :x, aby zapisać i zamknąć plik. Następnie wpisz poniższe polecenie, aby zrestartować zaporę sieciową w celu uzyskania dostępu do nowej usługi;
|
1 |
sudo firewall-cmd --reload |
Następnie użyj poniższego polecenia, aby wyświetlić listę dostępnych usług:
|
1 |
firewall-cmd --get-services |

Ta usługa jest teraz dostępna w Twojej strefie.
Tworzenie własnych stref
Chociaż predefiniowane strefy prawdopodobnie będą wystarczające dla większości użytkowników, przydatne może być zdefiniowanie własnych stref, które dokładniej opisują ich funkcję.
Dodając strefę, dodaj ją do stałych ustawień zapory sieciowej. Następnie możesz przeładować zaporę, aby zastosować ustawienia w bieżącej sesji. Na przykład możesz utworzyć dwie omówione wcześniej strefy, wpisując:
|
1 2 |
sudo firewall-cmd --permanent --new-zone=publicweb sudo firewall-cmd --permanent --new-zone=privateDNS |
Możesz potwierdzić, że są one obecne w stałej konfiguracji, używając tego polecenia:
|
1 |
sudo firewall-cmd --permanent --get-zones |

Przeładuj zaporę sieciową, aby przenieść te nowe strefy do aktywnej konfiguracji:
|
1 2 3 4 5 |
sudo firewall-cmd --reload firewall-cmd --get-zones wynik: block dmz drop external home internal privateDNS public publicweb trusted work |
Teraz możesz przypisać odpowiednie usługi i porty do swoich stref. Na przykład dla strefy “publicweb” możesz chcieć dodać usługi SSH, HTTP i HTTPS:
|
1 2 3 |
sudo firewall-cmd --zone=publicweb --add-service=ssh sudo firewall-cmd --zone=publicweb --add-service=http sudo firewall-cmd --zone=publicweb --add-service=https |

Możesz również dodać usługę DNS do strefy „privateDNS” za pomocą tego polecenia:
|
1 2 |
sudo firewall-cmd --zone=privateDNS --add-service=dns sudo firewall-cmd --zone=privateDNS --list-all |

Następnie możesz zmienić swoje interfejsy na te nowe strefy, aby je przetestować:
|
1 2 3 |
sudo firewall-cmd --zone=publicweb --change-interface=eth0 sudo firewall-cmd --zone=privateDNS --change-interface=eth1 |
Przetestuj konfigurację, aby sprawdzić, czy działa. Jeśli te wartości Ci odpowiadają, musisz dodać te same reguły do konfiguracji stałej. Możesz to zrobić, ponownie stosując reguły ze wskaźnikiem —permanent:
|
1 2 3 4 5 6 7 |
sudo firewall-cmd --zone=publicweb --permanent --add-service=ssh sudo firewall-cmd --zone=publicweb --permanent --add-service=http sudo firewall-cmd --zone=publicweb --permanent --add-service=https sudo firewall-cmd --zone=privateDNS --permanent --add-service=dns |
Po stałym zastosowaniu tych reguł możesz zrestartować sieć i ponownie załadować usługę zapory sieciowej:
|
1 2 3 |
sudo systemctl restart network sudo systemctl reload firewalld |
Sprawdź, czy strefy zostały przypisane poprawnie:
|
1 |
firewall-cmd --get-active-zones |

Ponadto upewnij się, że obie strefy mają odpowiednią usługę:
|
1 2 3 4 |
sudo firewall-cmd --zone=publicweb --list-services wynik: http https ssh |
|
1 2 3 4 5 |
sudo firewall-cmd --zone=privateDNS --list-services wynik: dns |
Jeśli chcesz ustawić jedną ze swoich stref jako domyślną dla innych interfejsów, musisz skonfigurować to zachowanie za pomocą parametru –set-default-zone= przy użyciu tego polecenia:
|
1 |
sudo firewall-cmd --set-default-zone=publicweb |
Podsumowanie
W tym momencie pomyślnie utworzyłeś własne strefy. Powinieneś już posiadać podstawową wiedzę na temat administrowania usługą firewalld w systemie CentOS do codziennego użytku. Dobre zrozumienie usługi firewalld pozwala w pełni wykorzystać jej możliwości i elastyczność.
Miłego korzystania z komputera!


Komentarze
Brak komentarzy. Bądź pierwszy.