Konfiguracja iptables na serwerze dedykowanym z systemem Linux
Zabezpiecz serwer dedykowany, konfigurując reguły zapory iptables w celu filtrowania ruchu sieciowego w systemie Linux
Wprowadzenie
Twój serwer dedykowany jest wyposażony w zaporę sieciową. Zapory sieciowe tworzą barierę między siecią zaufaną a siecią niezaufaną. Zapory sieciowe działają w oparciu o reguły określające zarówno dozwolony, jak i blokowany ruch. Narzędziem zapory sieciowej opracowanym dla systemów Linux jest iptables.
Dowiedz się, jak zabezpieczyć serwer dedykowany za pomocą iptables.
OVHcloud udostępnia różnorodne usługi, jednak to Ty odpowiadasz za ich konfigurację i zarządzanie nimi. Ponosisz więc odpowiedzialność za ich prawidłowe funkcjonowanie.
Niniejszy przewodnik ułatwi Ci realizację bieżących zadań. Niemniej jednak, w przypadku trudności lub wątpliwości związanych z administrowaniem serwerem, korzystaniem z niego lub jego zabezpieczaniem, zalecamy skontaktowanie się z wyspecjalizowanym dostawcą lub naszą społecznością.
Wymagania początkowe
- Serwer dedykowany na Twoim koncie OVHcloud
- Dostęp administratora (root/sudo) do serwera przez SSH
W praktyce
Ten przewodnik zawiera polecenia dla dystrybucji Ubuntu Server.
Ten przewodnik ma charakter ogólny. W zależności od używanej dystrybucji lub systemu operacyjnego może być konieczne dostosowanie niektórych poleceń. Niektóre wskazówki mogą sugerować użycie narzędzi innych firm. W przypadku pytań dotyczących korzystania z nich zapoznaj się z ich oficjalną dokumentacją.
Większość reguł opisanych w tym przewodniku zakłada, że Twoja konfiguracja iptables domyślnie odrzuca (DROP) ruch przychodzący, a Ty selektywnie zezwalasz na ruch przychodzący. Jeśli zamierzasz zastosować inny typ konfiguracji, zalecamy zapoznanie się z dodatkową dokumentacją.
Etap 1: aktualizacja systemu
Twórcy dystrybucji i systemów operacyjnych regularnie udostępniają aktualizacje pakietów oprogramowania, bardzo często ze względów bezpieczeństwa. Utrzymywanie aktualności dystrybucji lub systemu operacyjnego jest niezbędne do zabezpieczenia serwera.
Więcej informacji znajdziesz w naszym przewodniku dotyczącym zabezpieczania serwera dedykowanego.
Etap 2: instalacja zapory iptables w systemie Ubuntu
Istnieją dwie różne wersje iptables: dla IPv4 i dla IPv6. Reguły, które omawiamy w tym samouczku iptables dla systemu Linux, odnoszą się do IPv4. Aby skonfigurować iptables dla IPv6, musisz użyć narzędzia ip6tables. Te dwa różne protokoły nie współpracują ze sobą i muszą być konfigurowane niezależnie.
iptables jest domyślnie zainstalowany w większości systemów Linux. Aby upewnić się, że iptables jest zainstalowany, użyj następującego polecenia:
Zazwyczaj polecenie iptables wygląda następująco:
Oto lista niektórych popularnych opcji iptables:
- -A --append: dodaje regułę do łańcucha (na końcu).
- -C --check: wyszukuje regułę odpowiadającą wymaganiom łańcucha.
- -D --delete: usuwa określone reguły z łańcucha.
- -F --flush: usuwa wszystkie reguły.
- -I --insert: dodaje regułę do łańcucha w określonym miejscu.
- -L --list: wyświetla wszystkie reguły łańcucha.
- -N --new-chain: tworzy nowy łańcuch.
- -v --verbose: wyświetla więcej informacji podczas korzystania z opcji listy.
- -X --delete-chain: usuwa wskazany łańcuch.
Etap 3: sprawdzenie bieżącego stanu iptables
Aby wyświetlić wszystkie bieżące reguły na serwerze, wpisz w oknie terminala następujące polecenie:
System wyświetli stan Twoich łańcuchów.
Wynik będzie zawierał trzy łańcuchy:
Etap 4: zezwolenie na ruch na localhost
Aby zezwolić na ruch z Twojego własnego systemu (localhost), dodaj regułę do łańcucha INPUT, wpisując następujące polecenie:
To polecenie konfiguruje zaporę tak, aby akceptowała ruch dla interfejsu (-i) localhost (lo). Od teraz wszystko, co pochodzi z Twojego systemu, będzie przechodzić przez zaporę. Musisz ustawić tę regułę, aby umożliwić aplikacjom komunikację z interfejsem localhost.
Etap 5: zezwolenie na ruch na określonych portach
Te reguły zezwalają na ruch na różnych portach, które określasz za pomocą poleceń wymienionych poniżej. Port to punkt końcowy komunikacji przeznaczony dla określonego typu danych.
Aby zezwolić na ruch HTTP, wpisz następujące polecenie:
Aby zezwolić wyłącznie na przychodzący ruch SSH (Secure Shell), wpisz następujące polecenie (używamy domyślnego numeru portu SSH, czyli 22. Jeśli Twój numer portu jest inny, odpowiednio dostosuj polecenia):
Aby zezwolić na ruch internetowy HTTPS, wpisz następujące polecenie:
Opcje działają w następujący sposób:
- -p: sprawdza określony protokół (tcp).
- --dport: określa port docelowy.
- -j jump: wykonuje akcję.
Jeśli utracisz dostęp do serwera, zawsze możesz użyć narzędzia KVM/IPMI, aby ponownie uzyskać do niego dostęp i zmienić konfigurację lub usunąć reguły.
Więcej informacji na temat dostępu do tego narzędzia znajdziesz w naszym przewodniku Jak korzystać z konsoli IPMI na serwerze dedykowanym.
Etap 6: kontrola ruchu według adresu IP
Użyj następującego polecenia, aby akceptować ruch z określonego adresu IP.
Zastąp adres IP w poleceniu adresem IP, który chcesz autoryzować.
Możesz również zablokować ruch z adresu IP:
Zastąp adres IP w poleceniu adresem IP, który chcesz zablokować.
Możesz odrzucać ruch z zakresu adresów IP za pomocą następującego polecenia:
Opcje iptables użyte w przykładach działają w następujący sposób:
- -m: ładuje moduł dopasowania, w tym przypadku iprange.
- iprange: dopasowuje zakres adresów IP zamiast pojedynczego adresu.
- --src-range: określa zakres adresów IP.
Etap 7: odrzucenie niepożądanego ruchu
Przed zablokowaniem pozostałego ruchu zezwól na odpowiedzi na połączenia, które Twój serwer nawiązuje samodzielnie (aktualizacje pakietów, zapytania DNS itp.). Bez tej reguły te odpowiedzi również zostałyby zablokowane:
Jeśli definiujesz reguły zapory iptables, musisz zapobiec nieautoryzowanemu dostępowi, odrzucając cały ruch z innych portów:
Opcja -A dodaje nową regułę do łańcucha. Jeśli połączenie przechodzi przez porty inne niż zdefiniowane przez Ciebie, zostanie ono przerwane.
Jeśli wpiszesz to polecenie przed wykonaniem etapu 5, zablokujesz cały dostęp, w tym bieżący dostęp przez SSH. Jest to szczególnie problematyczne w przypadku maszyny, do której łączysz się zdalnie.
Etap 8: usunięcie reguły
Aby usunąć regułę, użyj numeru jej wiersza.
Najpierw wyświetl listę wszystkich reguł, wpisując następujące polecenie:
Znajdź wiersz reguły zapory, którą chcesz usunąć, i uruchom to polecenie:
Zastąp Number numerem wiersza reguły, którą chcesz usunąć.
Etap 9: zapisanie zmian
Po ponownym uruchomieniu systemu narzędzie iptables nie zachowuje utworzonych przez Ciebie reguł. Za każdym razem, gdy konfigurujesz iptables w systemie Linux, wprowadzone zmiany obowiązują tylko do następnego ponownego uruchomienia.
W systemach opartych na Ubuntu pakiet iptables-persistent odpowiada za przywracanie reguł podczas uruchamiania systemu. Zainstaluj go za pomocą polecenia:
Podczas instalacji pojawi się pytanie, czy zapisać bieżące reguły IPv4 i IPv6. Odpowiedz Yes, aby zachować właśnie utworzone reguły.
Następnie możesz w dowolnym momencie zapisać reguły za pomocą polecenia:
Reguły IPv4 są zapisywane w pliku /etc/iptables/rules.v4 (a reguły IPv6 w pliku /etc/iptables/rules.v6).
Przy następnym uruchomieniu systemu narzędzie iptables automatycznie ponownie wczyta reguły zapory.
Możesz teraz skonfigurować podstawowe reguły zapory iptables dla swojego serwera Linux. Śmiało eksperymentuj, ponieważ zawsze możesz usunąć niepotrzebne reguły lub wyczyścić wszystkie reguły i zacząć od nowa.
Sprawdź również
Aktywacja i konfiguracja Edge Network Firewall
Monitorowanie ataków DDoS za pomocą panelu Anti-DDoS
Dołącz do grona naszych użytkowników.