Приклади knockd.conf
knockd читає /etc/knockd.conf: розділ [options] і по одному розділу для кожних дверей. Кожен розділ містить послідовність, обмеження часу та команду для адреси, з якої виконується стукіт, %IP%. Вибирайте власні порти — ніколи не використовуйте повторно порти з прикладів.
Відкрити SSH на кілька секунд
Найпоширеніше налаштування: один стукіт відкриває SSH, а knockd знову закриває його після cmd_timeout. Уже відкриті сеанси продовжать працювати, якщо брандмауер приймає встановлені з’єднання.
[options]
UseSyslog
[openSSH]
sequence = 7311:tcp,8822:tcp,9133:udp
seq_timeout = 10
tcpflags = syn
start_command = /usr/sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
cmd_timeout = 10
stop_command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT Окремі послідовності для відкриття та закриття
Без таймера порт залишається відкритим, доки ви не виконаєте стукіт із послідовністю закриття. Це зручно, але легко забути — краще використовувати варіант із таймером.
[options]
UseSyslog
[openSSH]
sequence = 7311:tcp,8822:tcp,9133:udp
seq_timeout = 10
tcpflags = syn
command = /usr/sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
[closeSSH]
sequence = 9133:udp,8822:tcp,7311:tcp
seq_timeout = 10
tcpflags = syn
command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT Одноразові послідовності
Замість однієї фіксованої послідовності knockd може читати файл послідовностей і приймати кожну з них лише один раз, тож записаний стукіт неможливо повторити. Secret Knock зберігає той самий список і переходить до наступної послідовності після стукоту, який відчинив двері.
[openSSH]
one_time_sequences = /etc/knockd/ssh_sequences
seq_timeout = 10
tcpflags = syn
start_command = /usr/sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
cmd_timeout = 10
stop_command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
# /etc/knockd/ssh_sequences — one sequence per line, each used once
2222:udp,3333:tcp,4444:udp
5555:tcp,6666:udp,7777:tcp
8888:udp,9999:tcp,1111:tcp З nftables
У системах із nftables дозвольте knockd додавати адресу до набору з тайм-аутом; у посібнику з приховування SSH показано відповідну таблицю nftables.
[openSSH]
sequence = 7311:tcp,8822:tcp,9133:udp
seq_timeout = 10
tcpflags = syn
start_command = /usr/sbin/nft add element inet filter knocked4 { %IP% timeout 30s } Після редагування
- 1У Debian і Ubuntu задайте інтерфейс, який прослуховує knockd, у /etc/default/knockd (KNOCKD_OPTS="-i eth0") і перезапустіть knockd.
- 2Спостерігайте за його роботою за допомогою journalctl -u knockd -f, виконуючи стукіт.
- 3У Secret Knock: + › Імпортувати з файлу перетворює кожен розділ із послідовністю на двері; списки одноразових послідовностей вводьте вручну.
Усі приклади на GitHub → Усі конфігурації з цієї сторінки, готові до копіювання: github.com/mobilcomm/secretknock-examples (суспільне надбання).
Запитання
Чи варто використовувати кроки TCP або UDP?
Підійде будь-який варіант. Поєднання обох ускладнює вгадування послідовності за скануванням портів. Кроки UDP можуть передавати корисне навантаження в Secret Knock, якщо ваше налаштування його перевіряє.
Посібники для вашого налаштування
- Port knocking: пояснення →
- knockd на iPhone, iPad і Mac →
- fwknop SPA на iPhone, Mac і Apple Watch →
- Стукіт портами MikroTik →
- Стукіт портів DrayTek Vigor →
- Сховайте SSH за порт-нокінгом →
- Порт-нокінг на Apple Watch →
- Чому стукіт не відкриває порт →
- налаштування сервера fwknop →
- Порт-нокінг, VPN чи fail2ban? →