أمثلة على 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 إذا كان إعدادك يتحقق منها.