ข้ามไปยังเนื้อหา
Secret Knock

ตั้งค่าเซิร์ฟเวอร์ 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
Debian / Ubuntu

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
/etc/fwknop/access.conf

3. บอก fwknopd ว่าต้องฟังที่ใด

fwknopd ดักจับแพ็กเก็ตบนอินเทอร์เฟซ จึงไม่จำเป็นต้องมีพอร์ตที่เปิดอยู่ ตั้งค่าอินเทอร์เฟซที่เซิร์ฟเวอร์ของคุณใช้งาน

# /etc/fwknop/fwknopd.conf
PCAP_INTF               eth0;
PCAP_FILTER             udp port 62201;
MAX_SPA_PACKET_AGE      120;
/etc/fwknop/fwknopd.conf

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
iptables

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]
จากคอมพิวเตอร์ที่มี fwknop-client
  1. 1ใน Secret Knock: ประตูใหม่ › เริ่มจากเทมเพลต › fwknop ป้อนโฮสต์ แล้ววางผลลัพธ์จาก fwknop --key-gen ด้วยปุ่ม “วางคีย์จาก fwknop --key-gen”
  2. 2เคาะ; ประตูจะแสดง ประตูแง้มอยู่ เมื่อพอร์ต 22 ตอบกลับ
  3. 3เรียกใช้ fwknopd -f -v บนเซิร์ฟเวอร์หากไม่เป็นเช่นนั้น — คู่มือการแก้ไขปัญหาระบุสาเหตุที่พบบ่อยไว้

ตัวอย่างทั้งหมดบน GitHub → การกำหนดค่าทุกรายการในหน้านี้ พร้อมให้คัดลอก: github.com/mobilcomm/secretknock-examples (สาธารณสมบัติ)

คำถาม

fwknopd ต้องมีพอร์ตที่เปิดอยู่หรือไม่?

ไม่ต้อง fwknopd อ่านแพ็กเก็ตจากอินเทอร์เฟซเครือข่าย ดังนั้นพอร์ต SPA จึงปิดไว้ในไฟร์วอลล์ได้ โดยแพ็กเก็ตเพียงต้องไปถึงเซิร์ฟเวอร์

คู่มือสำหรับการตั้งค่าของคุณ