Gdy iptables jądra są całkowicie puste ( iptables -F
), zrobi to o co prosisz:
# iptables -A INPUT -p tcp --dport 22 -s 192.168.0.0/24 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -s 127.0.0.0/8 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -j DROP
Mówi to, że wszystkie adresy LAN mogą komunikować się z portem TCP 22, że host lokalny dostaje to samo (tak, 127. * nie tylko 127.0.0.1), a pakiety z każdego innego adresu niezgodnego z tymi dwiema pierwszymi regułami są bezceremonialnie upuszczane na łyżka do bitów . Możesz użyć REJECT
zamiast, DROP
jeśli chcesz aktywnego odrzucenia (TCP RST) zamiast uczynić port TCP 22 czarną dziurą dla pakietów.
Jeśli Twoja sieć LAN nie korzysta z bloku 192.168.0. *, Naturalnie będziesz musiał zmienić adres IP i maskę w pierwszym wierszu, aby dopasować schemat IP swojej sieci LAN.
Te polecenia mogą nie działać tak, jak chcesz, jeśli w zaporze są już skonfigurowane niektóre reguły. (Powiedz iptables -L
jako root, aby się dowiedzieć.) Często zdarza się, że jedna z istniejących reguł pobiera pakiety, które próbujesz filtrować, więc dołączanie nowych reguł nie ma żadnego efektu. Chociaż można używać -I
zamiast -A
z iptables
polecenia splatać nowe zasady w środku łańcucha, zamiast ich dołączania, to zwykle lepiej, aby dowiedzieć się, jak łańcuchy uzyskać zaludnionych przy starcie systemu i zmodyfikować ten proces dzięki czemu nowe zasady zawsze instalowane w poprawna kolejność.
RHEL 7+
W najnowszych systemach typu RHEL najlepszym sposobem na to jest użycie firewall-cmd
lub jego odpowiednika GUI. To mówi firewalld
demonowi systemu, czego chcesz, czyli co faktycznie zapełnia i manipuluje tym, co widzisz iptables -L
.
RHEL 6 i wcześniej
W starszych systemach typu RHEL najłatwiejszym sposobem modyfikacji łańcuchów zapory podczas zamawiania spraw jest edycja /etc/sysconfig/iptables
. GUI i narzędzia zapory TUI systemu operacyjnego są dość uproszczone, więc kiedy zaczniesz dodawać bardziej złożone reguły, takie jak to, lepiej wrócić do starych dobrych plików konfiguracyjnych. Uwaga: gdy zaczniesz to robić, ryzykujesz utratą zmian, jeśli kiedykolwiek użyjesz narzędzi zapory systemu operacyjnego do zmodyfikowania konfiguracji, ponieważ może nie wiedzieć, jak radzić sobie z takimi ręcznie stworzonymi regułami.
Dodaj coś takiego do tego pliku:
-A RH-Firewall-1-INPUT -p tcp --dport 22 -s 192.168.0.0/24 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp --dport 22 -s 127.0.0.0/8 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp --dport 22 -j DROP
To, co dodajesz, jest podchwytliwe. Jeśli znajdziesz w tym pliku linię, o której mówi --dport 22
, po prostu zastąp ją trzema liniami powyżej. W przeciwnym razie prawdopodobnie powinien przejść przed pierwszą istniejącą linią kończącą się na -j ACCEPT
. Ogólnie rzecz biorąc, musisz zapoznać się ze sposobem działania iptables , w którym momencie prawidłowy punkt wstawienia będzie oczywisty.
Zapisz ten plik, a następnie powiedz, service iptables restart
aby ponownie załadować reguły zapory. Pamiętaj, aby to zrobić, gdy jesteś zalogowany do konsoli, na wypadek, gdybyś podrobił zmiany! Nie chcesz blokować się na komputerze, gdy jesteś zalogowany przez SSH.
Podobieństwo do powyższych poleceń nie jest przypadkowe. Większość tego pliku składa się z argumentów iptables
polecenia. Różnice w stosunku do powyższego polegają na tym, że iptables
polecenie jest odrzucane, a INPUT
nazwa łańcucha staje się specjalnym RH-Firewall-1-INPUT
łańcuchem specyficznym dla RHEL . (Jeśli chcesz zbadać plik bardziej szczegółowo, zobaczysz wcześniej w pliku, w którym zasadniczo zmieniono nazwę INPUT
łańcucha. Dlaczego? Nie mogę powiedzieć.)