knockd - kilka słów jak zrobić rzecz szybko i nie zepsuć :)
Knockd jest niewielkim pakietem (circa 20kB), który pozwala m.in. na czasowe otwieranie i zamykanie odpowiednich portów w firewall’u. Pakiet jest bardzo prosty w instalacji i konfiguracji - nie wymaga otwierania w firewallu portów na których nasłuchuje (działa w warstwie łącza - link-layer). Dodatkowo pozwala na bardzo szczegółowe ustawienie parametrów zdarzenia na jakie będzie reagował.
Sama idea działania programu jest banalna - po otrzymaniu sekwencji pakietów TCP lub UDP, zawierających określone flagi (np. SYN, FIN, ACK…), na serwerze wykonywana jest zdefiniowana akcja. Domyślnie jest nią otwarcie portu 22 w zaporze iptables dla adresu IP z którego nadeszły stuki-puki. Podobnie, określoną sekwencją, zdefiniowane jest zamknięcie tego portu. Program ponadto dopuszcza wykonanie dwóch komend (start_command i stop_command - opcje nie ujęte w domyślnym pliku konfiguracyjnym) po zdefinowanym interwale czasowym. Pozwala to administratorom na jeszcze mocniejsze zaostrzenie polityki bezpieczeństwa i zamykanie portu po, powiedzmy, kwadransie.
Oczywiście można zdefiniować inne niż iptables programy uruchamiane zdalnie - można wymusić przeprowadzenie skanowania systemu, włączenie backupu, co adminowi przyjdzie do głowy
Należy tylko pamiętać, że dane polecenie jest wykonywane w kontekście roota i przy wpisywaniu go warto byłoby użyc sudo.
Żeby szybko i sprawnie włączyć knockd a jednocześnie nie odciąć sobie dostępu do zdalnego serwera podczas ustawień warto pamiętać, żeby:
- dobrze zdefiniować reguły otwierające i zamykające w /etc/knockd.conf - szczególnie, jeśli domyślnie nie wypuszczamy ruchu related,
- zmienić regułę -A na -I. Inaczej możemy przez przypadek nie móc otworzyć sobie dziurki…
- jeśli ustawiliśmy zasady ograniczania ilości połączeń omówione w jednym z poprzednich artykułów, to warto je wyłączyć (jest tam przypadkiem reguła DENY…),
- tak ustawić porty na które będzie reagował knockd, żeby nie generowac fałszywych alarmów, (warto przeglądać strony sans institute),
- pamiętać, że w razie problemów jest plik /var/log/knockd.log (chociaż knockd może logowac do sysloga) a także opcja -j LOG lub ULOG w iptables.