הגדרת שרת fwknop
אישור חבילה יחידה של fwknop שומר את SSH סגור עד להגעתה של חבילת UDP מוצפנת ומאומתת אחת. השלבים האלה מגדירים אותו בשרת Debian או Ubuntu; בדקו תחילה ממחשב, ואז הוסיפו את אותם מפתחות ל-Secret Knock.
1. התקנה ויצירת מפתחות
התקינו את השרת ואת הלקוח, ואז צרו זוג מפתחות. שמרו את הפלט: אותם שני מפתחות נכנסים אל access.conf ואל Secret Knock.
sudo apt install fwknop-server fwknop-client
fwknop --key-gen # prints KEY_BASE64 and HMAC_KEY_BASE64 2. אפשרו SSH עבור חבילות SPA
access.conf מגדיר מה חבילה חוקית יכולה לפתוח ולמשך כמה זמן.
SOURCE ANY
OPEN_PORTS tcp/22
KEY_BASE64 <output of fwknop --key-gen>
HMAC_KEY_BASE64 <output of fwknop --key-gen>
FW_ACCESS_TIMEOUT 30 3. הגדירו ל-fwknopd היכן להאזין
fwknopd לוכד חבילות בממשק רשת; הוא אינו זקוק ליציאה פתוחה. הגדירו את הממשק שבו השרת משתמש.
# /etc/fwknop/fwknopd.conf
PCAP_INTF eth0;
PCAP_FILTER udp port 62201;
MAX_SPA_PACKET_AGE 120; 4. סגרו את SSH כברירת מחדל
השאירו הפעלת SSH פתוחה בזמן ביצוע הפעולות האלה, ובדקו מחיבור שני לפני ההתנתקות. fwknopd מוסיף שרשרת משלו בראש INPUT ומוסיף בה ACCEPT מוגבל בזמן עבור כל חבילה חוקית.
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j DROP 5. בדיקה ולאחר מכן הוספת הדלת
הפעילו מחדש את fwknop-server, שלחו חבילה ממחשב אחר והתחברו:
# from another machine: request SSH for the address the server sees (-R)
fwknop -A tcp/22 -R -D server.example.com \
--key-base64-rijndael "<KEY_BASE64>" --key-base64-hmac "<HMAC_KEY_BASE64>"
ssh [email protected] - 1ב-Secret Knock: דלת חדשה › התחלה מתבנית › fwknop, הזינו את המארח והדביקו את הפלט של fwknop --key-gen באמצעות ״הדבקת מפתחות מ-fwknop --key-gen״.
- 2בצעו דפיקה; הדלת מציגה דלת פתוחה מעט כאשר יציאה 22 עונה.
- 3הפעילו fwknopd -f -v בשרת אם לא — במדריך לפתרון בעיות מפורטות הסיבות הנפוצות.
כל הדוגמאות ב-GitHub → כל התצורות בדף זה, מוכנות להעתקה: github.com/mobilcomm/secretknock-examples (נחלת הכלל).
שאלות
האם fwknopd זקוק ליציאה פתוחה?
לא. הוא קורא חבילות מממשק הרשת, ולכן יציאת ה-SPA יכולה להישאר סגורה בחומת האש; החבילה רק צריכה להגיע לשרת.