Tomasz Wendlandt

Avatar

Tech blog

port knocking

Bardzo ciekawą rzeczą, nieznaną jeszcze przez wiele osób jest technika port knockingu. Umożliwia ona, za sprawą wysłanej sekwencji pakietów (puknięć) do hosta, zdalne wykonanie wcześniej zdefiniowanego polecenia na wspomnianym hoscie, bez logowania się na niego. Niby nic nadzwyczajnego, ale ciekawą sprawą jest możliwość zdefiniowania sekwencji puknięć, które np. uruchamiają jakąś usługę, bez konieczności otwierania portów, na które przychodzi puknięcie.

Klasycznym zastosowaniem tego rozwiązania jest udostępnianie ssh na serwerze, wyłącznie gdy zachodzi taka potrzeba. Istnieje przynajmniej kilka implementacji tej techniki. Ja proponuję na początek projekt knock. Po zainstalowaniu demona knockd, w Ubuntu robimy to przez zwykłe

# apt-get install knockd

przechodzimy do jego konfiguracji.

logfile = syslog

logfile, chyba nie wymaga komentarza, ustawienie tego parametru na syslog spowoduje, że demon będzie pisać do sysloga.

sequence = 7000,8000,9000

sequence, to sekwencja, określająca porty, na które mają zostać wysłane puknięcia. Można też podać typ pakietów TCP i/lub UDP.

seq_timeout = 5

seq_timeout, czas w sekundach, w jakim musi zmieścić się sekwencja pukania.

command = /sbin/iptables -A INPUT -s %IP% -p tcp –dport 22 -j ACCEPT

command, polecenie systemowe jakie ma zostać wykonane

tcpflags = syn

tcpflags, knockd ma zwracać uwagę tylko na pakiety, z flagą podaną w tym parametrze.

Ostatecznie plik konfiguracyjny wygląda następująco

# cat /etc/knockd.conf
[options]
logfile = /var/log/knockd.log
[openSSH]
sequence = 7000,8000,9000
seq_timeout = 5
command = /sbin/iptables -A INPUT -s %IP% -p tcp –dport 22 -j ACCEPT
tcpflags = syn
[closeSSH]
sequence = 9000,8000,7000
seq_timeout = 5
command = /sbin/iptables -D INPUT -s %IP% -p tcp –dport 22 -j ACCEPT
tcpflags = syn

gdzie %IP% to IP maszyny, która wykonuje pukanie. W ten sposób wysyłając sekwencję pakietów tcp z ustawiona flagą syn na porty 7000,8000,9000 otworzymy dla siebie furtkę w firewallu na port 22, a zamkniemy ją wysyłając sekwencję pakietów na porty 9000,8000,7000. Do wysyłania sekwencji puknięć możemy wykorzystać np. SendIP, klienta knock lub dla Windowsa knockknock.

Polecam też stronę o port knockingu http://portknocking.org/. Nie twierdzę, że port knocking wpływa rewelacyjnie na poprawę bezpieczeństwa, jest jednak interesującą techniką, której warto się przyjrzeć.

No Comments, Comment or Ping

Reply to “port knocking”

Poznań

  • Cloud and Visibility OK
  • Temperature: 12°C
  • Visibility: 10km
  • Clouds: Cloud and Visibility OK
  • Wind: E at 9 km/h
  • Barometer: 1014 hPa
  • Humidity: 76.5%
  • Sunrise: 8:53 GMT+2
  • Sunset: 21:00 GMT+2