Ситуация такова:
Прочитал статью Port knocking и решил реализовать, т.к. частенько на наш старый сервак ломятся "неизвестные". Отдельно готовлю новый и хотел бы его защитить, а самому заходить по ssh и править конфиги иногда.
Поставил серверную часть (knockd). Версия ОС 8.2-RELEASE. Ядро собрано с опциями для ipfirewall по статье с lissyara.su. Единственное то, что правило в нём пока одно - разрешающее, и нет DUMMYNET.
knockd.conf
Код: Выделить всё
[options]
logfile = /var/log/knockd.log
interface = em0
[opencloseSSH]
sequence = 1000,2000,3000
seq_timeout = 5
tcpflags = syn
start_command = /sbin/pfctl -t good_hosts -T add %IP%
cmd_timeout = 10
stop_command = /sbin/pfctl -t good_hosts -T delete %IP%
[open22]
sequence = 4000,5000,6000
seq_timeout = 5
tcpflags = syn
command = /sbin/pfctl -t good_hosts -T add %IP%
[close22]
sequence = 7000,8000,9000
seq_timeout = 5
tcpflags = syn
command = /sbin/pfctl -t good_hosts -T delete %IP%
Код: Выделить всё
table <good_hosts> persist
block in on $ext_if all
pass in on $ext_if inet proto tcp from <good_hosts> \
to $ext_if port 22 keep state
Ругнулось на unknown host "IP". Думаю что надо было здесь и в knockd.conf писать реальный адрес.
Ладно, плюнул, т.к. подключаться буду с компа через ADSL а там каждый раз другой адрес.
Нашёл WinKnock чтобы подключаться с win7. Конфиг для неё такой:
Код: Выделить всё
#opencloseSSH
ip xxx.xxx.xxx.xxx
open 1000:Tcp
open 2000:Tcp
open 3000:Udp
close 1000:Tcp
close 2000:Udp
close 3000:Tcp
#open22
ip xxx.xxx.xxx.xxx
open 4000:Tcp
open 5000:Tcp
open 6000:Tcp
#close22
ip xxx.xxx.xxx.xxx
close 7000:Tcp
close 8000:Tcp
close 9000:Tcp
Вопрос: понимаю, что я не всё понял, как это должно работать, и прошу подсказать, каким же образом это всё осуществить в моём примере.