Baza wiedzy Proste instrukcje dotyczące pracy z usługą Profitserver
Główny Baza wiedzy Konfigurowanie zapory sieciowej w systemie Linux

Konfigurowanie zapory sieciowej w systemie Linux


Zapora sieciowa w systemie Linux odgrywa kluczową rolę w zabezpieczaniu systemu komputerowego. Działa jak bariera, kontrolując i filtrując ruch sieciowy, aby chronić system przed nieautoryzowanym dostępem, atakami i innymi zagrożeniami. Bez prawidłowo skonfigurowanej zapory sieciowej serwer może być podatny na różne rodzaje cyberataków, co może mieć poważne konsekwencje dla bezpieczeństwa i poufności danych.

W tym artykule przyjrzymy się dwóm głównym narzędziom do konfiguracji zapory sieciowej Linux: firewalld i iptables. Przeprowadzimy analizę porównawczą ich funkcji, funkcjonalności i zalet. Dodatkowo, przedstawimy szczegółowe instrukcje dotyczące konfiguracji i użytkowania każdego z tych narzędzi, a także omówimy najlepsze praktyki zabezpieczania systemu za pomocą zapory sieciowej na platformie Linux. Wszystkie czynności zostaną zademonstrowane na serwerze wirtualnym z dostępem do konta root.

Konfigurowanie firewalld w systemie Linux

Firewalld (Firewall Daemon) to program do zarządzania zaporą sieciową w systemach operacyjnych Linux. Zapewnia interfejs użytkownika do konfigurowania reguł zapory sieciowej, zezwalając lub blokując połączenia aplikacji sieciowych. Jest domyślnie preinstalowany w większości dystrybucji serwerowych. Jeśli Firewalld nie jest preinstalowany, można go zainstalować niezależnie z oficjalnych repozytoriów dystrybucji.

W przypadku systemów Red Hat (takich jak RHEL, CentOS, Fedora) instalację wykonuje się za pomocą polecenia:

yum install firewalld

Dla Debiana/Ubuntu:

apt-get install firewalld

Po zainstalowaniu można go natychmiast uruchomić i aktywować za pomocą polecenia:

systemctl start firewalld

Następnie należy dodać usługę do uruchomienia:

systemctl enable firewalld
Dodawanie firewalld w autoloadzie Linuksa

W tym momencie zalecamy wyłączenie ufw, ponieważ jednoczesne używanie tego narzędzia z firewalld lub iptables nie jest zalecane. Sprawdź status:

systemctl status ufw
Sprawdzanie ufw linux

Aby zatrzymać ten proces wprowadź polecenie:

systemctl stop ufw

Aby dokonać całkowitej dezaktywacji:

ufw disable

Po wykonaniu tych czynności możesz przejść do konfiguracji firewalld.

Najpierw należy zdefiniować strefy zaufania. Firewalld używa koncepcji stref, aby określić poziom zaufania dla interfejsów sieciowych. Każdemu interfejsowi przypisana jest jedna strefa, a reguły zapory są stosowane na podstawie strefy. Listę wszystkich dostępnych stref otwiera się poleceniem:

firewall-cmd --get-zones

Zazwyczaj stosuje się 4 główne strefy:

  1. Publiczne:Ta strefa jest przeznaczona dla sieci, które uważasz za niebezpieczne;
  2. Prywatne:Dotyczy sieci domowych i innych zaufanych połączeń sieciowych;
  3. Wewnętrzne: Stosowany w sieciach wewnętrznych, np. sieciach w ramach organizacji lub sieciach korporacyjnych;
  4. DMZ:W tej strefie zazwyczaj umieszczane są serwery, do których dostęp powinien być możliwy z Internetu.

To jednak tylko jeden przykład. Możesz dodać własną strefę za pomocą polecenia:

firewall-cmd --permanent --new-zone=nameyourzone

Po dodaniu wymagane jest ponowne załadowanie:

firewall-cmd --reload

Aby usunąć strefę, stosuje się podobną metodę

firewall-cmd --permanent --delete-zone=nameyourzone

Po zdefiniowaniu stref konieczne jest zezwolenie na ruch dla potrzebnych usług i portów. Aby zezwolić na określoną usługę, użyj polecenia:

firewall-cmd --zone=public --add-service=name

Gdzie name to nazwa usługi. Na przykład, aby zezwolić na ruch dla Apache:

firewall-cmd --zone=public --add-service=http

Aby zdefiniować dozwolone porty, użyj polecenia:

firewall-cmd --zone=public --add-port=number/protocol

Na przykład standardowy port 22 dla protokołu SSH wyglądałby następująco:

firewall-cmd --zone=public --add-port=22/tcp

Na tym etapie główne reguły są już utworzone. Następnie określ sposób przetwarzania ruchu w zależności od źródła, celu, portu i innych kryteriów. Aby dodać regułę (na przykładzie strefy publicznej ):

firewall-cmd --zone=public rule

Na przykład, aby zezwolić na ruch przychodzący z dowolnego źródła na port 80 (HTTP):

firewall-cmd --zone=public --add-port=80/tcp --permanent

Aby usunąć regułę:

firewall-cmd --permanent --remove-rule=rule_specification

Gdzie rule to typ reguły (np. port, usługa, bogata reguła itd.), a rule_specification to specyfikacja samej reguły.

Po wprowadzeniu zmian w konfiguracji Firewalld konieczne jest ich zapisanie i zastosowanie. Aby zapisać zmiany, użyj polecenia:

firewall-cmd --runtime-to-permanent

Aby zastosować zmiany:

firewall-cmd --reload

Po zakończeniu konfiguracji możesz sprawdzić wybrane parametry, otwierając listę wszystkich reguł:

firewall-cmd --list-all
reguły zapory Linux

Jeśli wystąpią jakiekolwiek problemy, sprawdź logi Firewalld za pomocą polecenia:

journalctl -u firewalld

Uwaga: Omówiliśmy jedynie ogólny algorytm konfiguracji połączenia. Narzędzie oferuje rozbudowaną funkcjonalność. Aby uzyskać pełne informacje o wszystkich dostępnych opcjach, skorzystaj z oficjalnej dokumentacji lub otwartej pomocy:

firewall-cmd --help

Konfigurowanie iptables w systemie Linux

W przeciwieństwie do Firewalld, iptables jest starszym, ale wciąż szeroko stosowanym narzędziem w Linuksie do zarządzania zaporą. Zapewnia bardziej bezpośrednie i elastyczne podejście do reguł filtrowania pakietów na poziomie jądra Linuksa. Jednak iptables wymaga bardziej zaawansowanej wiedzy i doświadczenia w porównaniu do Firewalld, co czyni go mniej dostępnym dla początkujących. Sprawdź wstępnie zainstalowaną wersję narzędzia za pomocą polecenia:

iptables -V

Jeśli narzędzie nie jest zainstalowane, należy je zainstalować. Polecenie instalacji na Ubuntu, Debianie:

apt install iptables

W przypadku systemów Red Hat (np. CentOS, Fedora):

yum install iptables

Polecenie aktywacji po instalacji:

systemctl start iptables

Aby dodać do uruchamiania, wykonaj:

systemctl enable iptables

Przed rozpoczęciem konfiguracji iptables ważne jest zrozumienie, jak to działa. Pomaga w tym składnia programu. Wygląda ona następująco:

iptables -t table action chain additional_parameters

Przyjrzyjmy się bliżej każdemu elementowi.

Iptables ma cztery główne tabele: filter, nat, mangle i raw . Każda z nich jest przeznaczona do przetwarzania określonych typów pakietów i ma własne łańcuchy reguł:

  1. filtrować: To jest najczęściej używana tabela zawierająca reguły filtrowania pakietów. Służy do podejmowania decyzji, czy zezwolić na pakiety, czy je odrzucić.
  2. nat:Ta tabela jest używana do modyfikowania adresów sieciowych i portów w pakietach. Często jest używana do ustawiania maskarady (NAT).
  3. magiel: W tej tabeli możesz modyfikować nagłówki pakietów. Jest ona używana do specjalistycznych operacji pakietowych, takich jak znakowanie.
  4. surowy:Ta tabela służy do konfigurowania reguł, które mają zastosowanie przed przejściem przez system śledzenia połączeń. Zazwyczaj służy do konfigurowania reguł, które nie powinny być modyfikowane przez system śledzenia, takich jak porzucanie pakietów z określonych adresów.

Każda tabela zawiera zestaw łańcuchów. Łańcuchy to sekwencja reguł, które są sprawdzane sekwencyjnie. Istnieją trzy predefiniowane łańcuchy:

  1. WEJŚCIE (przychodzące)Reguły w tym łańcuchu określają, co zrobić z przychodzącymi pakietami.
  2. WYJŚCIE (wychodzące)Ten łańcuch dotyczy wszystkich pakietów, które Twój komputer wysyła do innych urządzeń lub komputerów w sieci.
  3. PRZEKAZANIE DO DALEJ (przekazywanie)Reguły w tym łańcuchu określają, co zrobić z przekazanymi pakietami.

Wreszcie każdy łańcuch posiada jakąś akcję (cel). W praktyce używa się 5 głównych akcji:

  1. AKCEPTUJĘ:Pozwól pakietowi przejść przez zaporę.
  2. DROP: Odrzuć pakiet i usuń go bez żadnej odpowiedzi.
  3. ODRZUCAĆ: Odrzuć pakiet i wyślij nadawcy komunikat o błędzie ICMP.
  4. LOG: Zarejestruj pakiet w dzienniku systemowym i wykonaj inną czynność (np. AKCEPTUJ lub ODRZUĆ).
  5. POWRÓT: Zatrzymaj sprawdzanie reguł w bieżącym łańcuchu i wróć do łańcucha wywołującego (jeśli dotyczy).

Aby rozpocząć instalację, otwórz listę istniejących reguł za pomocą polecenia:

iptables -L
Konfigurowanie zapory sieciowej w systemie Linux

Jako przewodnik po konfiguracji Iptables, przyjrzyjmy się praktycznym przykładom najczęściej używanych poleceń. Dla wygody podzielimy przykłady na 3 grupy, w zależności od konkretnego łańcucha.

WEJŚCIE ŁAŃCUCHA :

  1. Zezwól na ruch przychodzący za pomocą protokołu TCP na porcie 80:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

2. Zezwól na ruch przychodzący przez protokół UDP na porcie 22:

iptables -A INPUT -p udp --dport 22 -j ACCEPT

3. Zablokuj ruch przychodzący z określonego adresu IP:

iptables -A INPUT -s 192.168.1.100 -j DROP

WYJŚCIE ŁAŃCUCHA :

  1. Zezwól na ruch wychodzący poprzez protokół TCP na porcie 443:
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT

2. Zezwól na ruch wychodzący przez protokół UDP na porcie 80:

iptables -A OUTPUT -p udp --dport 80 -j ACCEPT

3. Zablokuj ruch wychodzący do określonego portu (na przykład 21):

iptables -A OUTPUT -p tcp --dport 21 -j DROP

Łańcuch DO PRZODU :

  1. Zablokuj przekazywany ruch z określonego zakresu adresów IP:
iptables -A FORWARD -s 172.16.0.0/24 -j DROP

2. Zablokuj przekazywanie pakietów z określonego interfejsu sieciowego:

iptables -A FORWARD -i eth1 -j DROP

3. Ogranicz liczbę jednoczesnych połączeń dla określonego portu (w tym przykładzie 10 połączeń na minutę na porcie 80):

iptables -A INPUT -p tcp --dport 80 -m limit --limit 10/minute -j ACCEPT

Jak widać, w każdym oddzielnym przypadku używany jest dodatkowy argument (polecenie). Aby uzyskać pełną listę możliwych argumentów i ogólne wsparcie dla funkcjonalności narzędzia, wprowadź:

iptables -h
lista poleceń instalacyjnych iptables linux

Aby mieć pewność, że ustawienia są prawidłowe, wprowadź ponownie polecenie, aby wyświetlić listę reguł:

iptables -L
Sprawdzanie reguł iptables Linux

Aby usunąć konkretną regułę, użyj polecenia:

iptables -D chain rule_number

Na przykład, jeśli chcesz usunąć regułę numer 1 z łańcucha INPUT, polecenie będzie wyglądać następująco:

iptables -D INPUT 1

Aby usunąć wszystkie reguły za pomocą jednego polecenia:

iptables -F

Ważna uwaga : reguły iptables nie są zapisywane automatycznie po ponownym uruchomieniu systemu lub usługi. Aby zapisać reguły, należy je dodać do pliku konfiguracyjnego i przywrócić po ponownym uruchomieniu. Narzędzia iptables-save i iptables-restore mogą w tym pomóc. Aby zapisać reguły, wpisz polecenie:

iptables-save > /etc/iptables/rules.v4

Zapisuje bieżące reguły iptables w pliku rules.v4. Aby przywrócić po ponownym uruchomieniu, wprowadź:

iptables-restore < /etc/iptables/rules.v4

To polecenie przywraca reguły z pliku rules.v4.

Wniosek

Konfigurowanie zapory sieciowej w systemie Linux przy użyciu firewalld lub iptables jest ważnym aspektem zapewnienia bezpieczeństwa serwera. Oba narzędzia oferują niezawodne sposoby zarządzania ruchem sieciowym i ochrony systemu przed nieautoryzowanym dostępem i cyberatakami. Wybór między firewalld a iptables zależy od konkretnych potrzeb i preferencji użytkownika, biorąc pod uwagę ich różne funkcjonalności i mocne strony.

❮ Poprzedni artykuł Diagnostyka obciążenia serwera
Następny artykuł ❯ Użytkownicy Linuksa: zarządzanie i uprawnienia

Zapytaj nas o VPS

Jesteśmy zawsze gotowi odpowiedzieć na Państwa pytania o każdej porze dnia i nocy.