דוגמאות ל-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 אם ההגדרה שלכם בודקת אותו.