ตั้งค่าเซิร์ฟเวอร์ 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 จะแทรก chain ของตนเองไว้บนสุดของ 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 ต้องมีพอร์ตที่เปิดอยู่หรือไม่?
ไม่ต้อง fwknopd อ่านแพ็กเก็ตจากอินเทอร์เฟซเครือข่าย ดังนั้นพอร์ต SPA จึงปิดไว้ในไฟร์วอลล์ได้ โดยแพ็กเก็ตเพียงต้องไปถึงเซิร์ฟเวอร์