ซ่อน SSH ไว้หลังการเคาะพอร์ต
พอร์ต SSH ที่เปิดอยู่จะได้รับความพยายามเข้าสู่ระบบจากทั่วอินเทอร์เน็ต การเคาะพอร์ตจะปิดพอร์ตไว้จนกว่าคุณจะแสดงว่ารู้ความลับ จากนั้นจึงเปิดให้เฉพาะที่อยู่ของคุณเป็นเวลาสองสามวินาที
ด้วย knockd และ nftables
ปฏิเสธ SSH โดยค่าเริ่มต้น และยอมรับเฉพาะจากที่อยู่ในชุดที่มีการหมดเวลา knockd จะเพิ่มที่อยู่ที่เคาะเข้าไปในชุดนั้น ส่วน nftables จะนำออกเมื่อหมดเวลา และเซสชัน SSH ที่สร้างไว้แล้วจะยังทำงานต่อไป
table inet filter {
set knocked4 {
type ipv4_addr
flags timeout
}
chain input {
type filter hook input priority 0; policy drop;
ct state established,related accept
iif "lo" accept
tcp dport 22 ip saddr @knocked4 accept
}
} ส่วนของ knockd ที่เติมข้อมูลลงในชุด:
[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 } แยกการเข้าถึงถาวรออกต่างหาก
หากคุณอนุญาตบางที่อยู่แบบถาวรด้วย ให้เก็บไว้ในชุดแยกต่างหากที่ไม่มีการหมดเวลา การเพิ่มที่อยู่ที่อยู่ในชุดแบบมีเวลาหมดอายุอยู่แล้วจะไม่รีเซ็ตเวลาหมดอายุ ดังนั้นการรวมรายการทั้งสองประเภทไว้ในชุดเดียวอาจทำให้คุณเข้าใช้งานไม่ได้เมื่อหมดเวลา
หรือใช้ fwknop
fwknop SPA แข็งแกร่งกว่าลำดับการเคาะ: แพ็กเก็ตเดียวที่เข้ารหัสและยืนยันตัวตน ซึ่งไม่สามารถนำมาใช้ซ้ำได้ ดูคู่มือ fwknop
จาก iPhone ของคุณไปยัง SSH
- 1กดค้างที่ห่วงเคาะประตูทองเหลือง Secret Knock จะตรวจสอบว่าพอร์ต 22 ตอบกลับ และแสดงระยะเวลาที่พอร์ตจะยังเปิดอยู่
- 2เปิด SSH จะเปิดแอป SSH ของคุณด้วยลิงก์ ssh:// สำหรับเซิร์ฟเวอร์
- 3ตัวเลือก “เปิดประตูค้างไว้ขณะหน้าจอของประตูเปิดอยู่” จะเคาะอีกครั้งไม่นานก่อนช่วงเวลาจะสิ้นสุด ขณะที่ประตูแสดงอยู่บนหน้าจอ
ตัวอย่างทั้งหมดบน GitHub → การกำหนดค่าทุกรายการในหน้านี้ พร้อมให้คัดลอก: github.com/mobilcomm/secretknock-examples (สาธารณสมบัติ)
คำถาม
นี่ใช้แทนคีย์ SSH ได้หรือไม่
ไม่ได้ การเคาะพอร์ตช่วยซ่อนบริการเท่านั้น คุณควรใช้คีย์ SSH ที่รัดกุมและปิดการเข้าสู่ระบบด้วยรหัสผ่านด้วย