Jednym z priorytetów po zainstalowaniu systemu jest poprawne skonfigurowanie iptables do filtrowania ruchu. Domyślna polityka zezwala na wszystko, co nie jest zabronione. To nie jest najskuteczniejsza metoda pod względem bezpieczeństwa, ponieważ w tym trybie serwer jest narażony na intruzów.
Można na przykład skanować porty otwarte na serwerze. Na tej podstawie możliwe jest określenie używanych usług, ich wersji, nazwy i wersji systemu operacyjnego. Dalej - wybór do nich luk. Lub trochę icmp - wiadomości mogą dawać dodatkowe informacje.
Ogólnie rzecz biorąc, opis, dlaczego musisz skonfigurować zaporę ogniową, zasługuje na osobny artykuł, który jest niezliczony. A jeśli czytasz ten artykuł, na pewno wiesz, dlaczego go potrzebujesz. ;)
Podobnie jak wszystkie artykuły na stronie, ta instrukcja jest napisana na podstawie osobistego doświadczenia, a la "Robię to", ktoś inny jest inny.
Treść artykułu:
- Установка необходимых компонентов 1 Zainstaluj niezbędne komponenty
- Редактирование правил для ip версии 4 2 Zasady edycji dla wersji IP 4
Instalowanie niezbędnych komponentów
Tak więc system ma już główną z listy niezbędnych narzędzi - iptables. Ale to nie wystarczy. Będziesz także potrzebował filtra trwałego tarpit i iptables, aby załadować reguły podczas uruchamiania systemu.
# aptitude install iptables-persistent xtables-addons-dkms
Podczas trwałej instalacji zostaną zadane dwa pytania dotyczące zapisywania bieżących reguł. Możesz odpowiedzieć "Tak", a następnie w folderze / etc / iptables / rules / utworzysz niezbędne pliki z regułami, które edytujemy.
Edycja reguł dla wersji ip 4
Otwórz plik /etc/iptables/rules.v4 w swoim ulubionym edytorze. Zobaczysz linie ustawiające domyślną politykę dla łańcuchów. We wszystkich wartościach będzie akceptowany. Dla łańcucha FORWARD ustaw zasady DROP. Nie jesteśmy routerem ani komputerem, który przekierowuje ruch w inne miejsce. :) Nie zmieniamy reszty.
* filtr : AKCEPTACJA WEJŚCIA [0: 0] : FORWARD DROP [0: 0] : AKCEPTACJA WYJŚCIA [0: 0] COMMIT
Wszystkie pozostałe reguły zostaną dodane przed linią COMMIT. Przede wszystkim dodajemy regułę zezwalającą na ruch lokalny.
-A INPUT -i lo -j AKCEPTUJ
Ponadto reguła zezwala na wszystkie już ustanowione aktywne połączenia dla protokołów TCP i UDP. Jest to konieczne do prawidłowego działania sieci, ponieważ bez niej odpowiedzi na połączenia wychodzące zostaną odrzucone.
-A WEJŚCIE -m stan - stan POWIĄZANE, USTANOWIONO -p wszystkie -j AKCEPTUJĘ
Teraz musisz dodać regułę pozwalającą na instalację nowych połączeń przychodzących do niektórych usług. Mam serwer WWW i pocztę, a także ssh.
Ważna uwaga! Zawsze dodawaj regułę zezwalającą dla ssh, aby nie utracić dostępu do serwera po zastosowaniu reguł.
Możesz tu dodać inne porty oddzielone przecinkiem. Wieloportowe rozszerzenie pozwala określić kilka portów, aby nie tworzyć niemal identycznych reguł dla każdego z osobna. ;)
-A INPUT -m stan --stan NOWOŚĆ -p tcp -m multiport --dport 22,25,80,443 -j AKCEPTUJ
Jeśli masz tylko jedną usługę na serwerze, dla której musisz otworzyć jeden port, reguła będzie następująca:
-A INPUT -m państwo - stan NEW -p tcp --dport 22 -j AKCEPTUJ
Może być również konieczne otwarcie niektórych portów udp. Jedyną różnicą od powyższych reguł jest to, że zamiast -p tcp powinieneś podać -p udp .
A gdy dodasz następującą regułę, przydatny jest filtr tarasu, który zainstalowaliśmy z pakietem xtables-addon-dkms. W skrócie tworzy pułapkę dla połączeń przychodzących, nie wysyłając niczego z powrotem, ale utrzymując połączenie, które marnuje zasoby podłączonego klienta, ale nie serwera. Dowiedz się więcej o pulpitach na stronie OpenNET. Na razie dodaj regułę dla wszystkich innych połączeń przychodzących.
-A INPUT -p tcp -m tcp -j TARPIT
Ważne jest, aby pamiętać, że pułapka działa tylko z tcp. Podobnie, możesz zaimplementować zakaz IP na poziomie iptables zamiast standardowego dropu. Niestety nie nadaje się do udp. Dlatego zakazujemy wszystkim innym przychodzącym pakietom udp, dla których nie utworzono wcześniej wyjątku.
-A INPUT -p udp -j DROP
I bierzemy dla icmp. Tutaj, jako typ icmp, możesz podać kod lub jego odpowiednik. Mam kod. :)
Zezwalamy na przychodzące odpowiedzi echa w przypadku, gdy pingujemy inny host z serwera.
-A INPUT -p icmp --typ-0 -j AKCEPTACJA
Następnie przychodzące icmp - wiadomości o niedostępności adresata.
-A INPUT -p icmp --icmp-type 3 -j AKCEPTUJ
I przychodzące pingi, jeśli ktoś zadzwoni na nasz serwer.
-A INPUT -p icmp --icmp-type 8 -j AKCEPTUJ
Jak również wiadomość o wygaśnięciu pakietu.
-A INPUT -p icmp --icmp-type 11 -j AKCEPTUJ
Jest to niezbędne minimum wiadomości do poprawnego działania sieci. Możesz potrzebować innych kodów . Jak je rozwiązać, już wiesz. :)
Teraz stworzymy reguły dla wychodzących wiadomości ICMP. Zasady te wyglądają podobnie, ale łańcuch jest już WYJŚCIE. Dlatego nie ma sensu ich opisywać.
-A OUTPUT -p icmp --typ-0 -j AKCEPTUJ -A OUTPUT -p icmp --typ-3 -j AKCEPTUJ -A OUTPUT -p icmp --icp-type 8 -j AKCEPTUJ -A OUTPUT -p icmp --typ-11 -j AKCEPTUJ -A OUTPUT -p icmp --icp-type 12 -j AKCEPTUJ
Z wyjątkiem dwunastej. Umożliwia wysłanie komunikatu o nieprawidłowym parametrze (błąd w nagłówku IP lub brak wymaganej opcji).
Wszystkie inne wychodzące ICMP są zabronione, aby serwer nie zacierał dodatkowych.
-A OUTPUT -p icmp -j DROP
To wszystko. Zapisz plik /etc/iptables/rules.v4, aktywuj reguły komendą:
cat /etc/iptables/rules.v4 | iptables-restore -c