2025-04-01

bsd$ whereis -s knock

knock: /usr/ports/security/knock

bsd$ sudo make -C /usr/ports/security/knock/ -D BATCH install clean

bsd$ rehash


При выполнении команды telnet 217.20.XX.XXX XXXX, операционная система MS Windows делает ТРИ(!) попытки подключения на порт XXXX по адресу 217.20.XX.XXX (следует обратить внимание, что флаги все одинаковые: Flags [S], seq 361962239, win 65535, options [mss 1460,nop,nop,sackOK]). Таким образом, если сервис knockd сконфигурирован на прослушивание более двух портов, то при помощи telnet открыть целевой порт не получится, т.к. попытка соединения на каждый порт knockd будет выполнена трижды подряд и времени, отведенного для прохождения последовательности соединений (seq_timeout) будет недостаточно


bsd$ cat /usr/local/etc/knockd.conf

[options]

logfile = /var/log/knockd.log

interface = fxp0

[openSSH]

sequence = XXXX,YYYY

seq_timeout = 20

command = /sbin/ipfw -q add NNNN allow tcp from %IP% to me NNNN

tcpflags = syn

[closeSSH]

sequence = AAAA,BBBB

seq_timeout = 20

command = /sbin/ipfw -q delete NNNN

tcpflags = syn

Запуск сервиса автоматически при загрузке системы

bsd$ echo 'knockd_enable="YES"' | sudo tee -a /etc/rc.conf

bsd$ grep -i knockd /etc/rc.conf

knockd_enable="YES"

Кроме того, создать файл лога:

bsd$ sudo touch /var/log/knockd.log

bsd$ sudo chmod 0600 /var/log/knockd.log

И, определив ротацию лога в /etc/newsyslog.conf, перезапустить syslogd:

bsd$ grep -i knockd /etc/newsyslog.conf

/var/log/knockd.log 4003100*JC

bsd$ sudo /etc/rc.d/syslogd restart

Для запуска сервиса нет нужды перезагружать систему

bsd$ sudo /usr/local/etc/rc.d/knockd start


FreeBSD 9.0-RELEASE: Tue Jan 3 07:46:30 UTC 2012