דילוג לתוכן
Secret Knock

דוגמאות ל-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
/etc/knockd.conf

רצפים נפרדים לפתיחה ולסגירה

ללא קוצב זמן, היציאה נשארת פתוחה עד שתדפקו את רצף הסגירה. זה נוח, אך קל לשכוח — עדיף להשתמש בגרסה עם מגבלת זמן.

[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
/etc/knockd.conf

רצפים חד-פעמיים

במקום רצף קבוע יחיד, 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
/etc/knockd.conf וקובץ הרצפים

עם 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 }
/etc/knockd.conf

לאחר העריכה

  1. 1ב-Debian וב-Ubuntu, הגדירו את הממשק שעליו knockd מאזין ב-/etc/default/knockd ‏(KNOCKD_OPTS="-i eth0") והפעילו מחדש את knockd.
  2. 2צפו בפעולתו באמצעות journalctl -u knockd -f בזמן שאתם דופקים.
  3. 3ב-Secret Knock, ‏+ › ייבוא מקובץ הופך כל מקטע עם רצף לדלת; הזינו רשימות של רצפים חד-פעמיים ידנית.

כל הדוגמאות ב-GitHub → כל התצורות בדף זה, מוכנות להעתקה: github.com/mobilcomm/secretknock-examples (נחלת הכלל).

שאלות

האם להשתמש בשלבי TCP או UDP?

שניהם עובדים. שילוב של שניהם מקשה לנחש רצף מתוך סריקת יציאות. שלבי UDP יכולים לשאת מטען ב-Secret Knock אם ההגדרה שלכם בודקת אותו.

מדריכים להגדרה שלך