Letmein เป็นตัวเคาะพอร์ตแบบธรรมดาพร้อมกลไกการตรวจสอบสิทธิ์ที่ง่ายและปลอดภัย สามารถใช้เพื่อป้องกันการโจมตีการตรวจสอบสิทธิ์ล่วงหน้าในบริการต่างๆ เช่น SSH, VPN, IMAP และอื่นๆ อีกมากมาย
Letmein ซ่อนบริการบนเซิร์ฟเวอร์ไว้เบื้องหลังอุปสรรคในการตรวจสอบสิทธิ์แบบน็อค เพื่อลดพื้นที่การโจมตีของบริการ บริการนี้จะไม่สามารถเข้าถึงได้เว้นแต่การรับรองความถูกต้องด้วยการเคาะจะสำเร็จ ในกรณีที่เคาะสำเร็จ เซิร์ฟเวอร์ Letmeind จะเปิดเฉพาะพอร์ตที่เคาะสำหรับที่อยู่ IP ไคลเอ็นต์ที่ทำการเคาะเท่านั้น เครื่องที่มีที่อยู่ IP ต่างกันจะยังไม่สามารถเข้าถึงบริการที่ได้รับการป้องกันได้
เครื่องที่ไม่สามารถตรวจสอบลำดับการเคาะได้สำเร็จจะไม่สามารถเข้าถึงบริการที่ได้รับการป้องกันได้ พวกเขาจะได้รับ reject ICMP บนพอร์ตบริการที่ได้รับการป้องกันพร้อมกับตัวอย่าง nftables.conf ที่ให้มา (คุณสามารถเลือกที่จะ drop แพ็กเก็ตลงใน nftables.conf ของคุณแทนได้)
Letmein ต้องการไฟร์วอลล์ที่ใช้ nftables มันจะ ไม่ ทำงานกับ iptables หากคุณใช้ไฟร์วอลล์ที่ใช้ iptables โปรดแปลงเป็น nftables ก่อนที่จะติดตั้ง Letmein มีคำอธิบายเกี่ยวกับวิธีการทำเช่นนั้นบนอินเทอร์เน็ต มันไม่ยากและทำงานมากเท่าที่ฟัง -
การสื่อสารควบคุม Letmein นั้นมีค่าเริ่มต้นเป็นพอร์ต TCP 5800 แต่สามารถกำหนดค่าเป็นพอร์ต TCP หรือ UDP ใดก็ได้ หากคุณเลือกพอร์ต UDP เป็นพอร์ตควบคุมและกำหนดค่า control-error-policy=basic-auth บริการ Letmein เองจะทำงานในโหมดซ่อนตัวและไม่ตอบสนองต่อข้อความขาเข้าที่ไม่ผ่านการรับรองความถูกต้อง

หน้าแรก
พื้นที่เก็บข้อมูล Git
พื้นที่เก็บข้อมูล Github
บนเซิร์ฟเวอร์ให้ติดตั้งซอฟต์แวร์เซิร์ฟเวอร์ Letmein (ดูหัวข้อด้านล่าง)
บนไคลเอนต์ให้ติดตั้งซอฟต์แวร์ไคลเอนต์ Letmein (ดูหัวข้อด้านล่าง)
โปรดอ่านไฟล์การกำหนดค่าตัวอย่าง nftables.conf ที่มาพร้อมกับโปรเจ็กต์นี้ จำเป็นต้องเพิ่มห่วงโซ่อินพุตเฉพาะ Letmein ให้กับการกำหนดค่า nftables ที่มีอยู่ของคุณ แก้ไข nftables.conf ของคุณตามลำดับ
สร้างคีย์ลับที่ใช้ร่วมกันและตัวระบุผู้ใช้ที่จะติดตั้งบนเซิร์ฟเวอร์และไคลเอ็นต์ด้วยคำสั่งไคลเอ็นต์ต่อไปนี้:
letmein gen-key -u 00000000 คำสั่ง gen-key จะพิมพ์สตริงคีย์ที่สร้างขึ้นไปยังคอนโซล ตามค่าเริ่มต้น สิ่งนี้จะสร้างคีย์สุ่มที่ปลอดภัยสำหรับตัวระบุผู้ใช้ 00000000 คุณสามารถแก้ไขตัวระบุผู้ใช้ด้วยตนเองได้หากต้องการ หรือจะปล่อยไว้เหมือนเดิมก็ได้
เพิ่มสตริงที่สร้างขึ้น (ตัวระบุผู้ใช้และความลับที่ใช้ร่วมกัน) ไปยังการกำหนดค่าเซิร์ฟเวอร์ใน /opt/letmein/etc/letmeind.conf ใส่สตริงคีย์ที่สร้างขึ้นพร้อมกับตัวระบุผู้ใช้ลงในส่วน [KEYS] ของไฟล์การกำหนดค่า
เพิ่มสตริงที่สร้างขึ้นเดียวกัน (ตัวระบุผู้ใช้และความลับที่ใช้ร่วมกัน) ให้กับการกำหนดค่าไคลเอนต์ใน /opt/letmein/etc/letmein.conf ใส่สตริงคีย์ที่สร้างขึ้นพร้อมกับตัวระบุผู้ใช้ลงในส่วน [KEYS] ของไฟล์การกำหนดค่า
สร้าง resource ในเซิร์ฟเวอร์ที่อธิบายพอร์ต sshd ที่สามารถเปิดได้ ในส่วน [RESOURCES] ของไฟล์การกำหนดค่าเซิร์ฟเวอร์ /opt/letmein/etc/letmeind.conf ต้องระบุพอร์ตทั้งหมดที่อาจเปิดได้ ทรัพยากรประกอบด้วยตัวระบุทรัพยากรตามด้วยตัวระบุพอร์ตดังนี้:
[RESOURCES]
00000022 = port: 22
ตัวระบุทรัพยากรเป็นเลขฐานสิบหก 8 หลัก ในตัวอย่างนี้ คือ 22(hex) แต่อาจเป็นตัวเลขใดๆ ก็ได้ เพียงแต่ต้องเป็นหมายเลขเดียวกันบนเซิร์ฟเวอร์และไคลเอนต์ หลังจาก port: ระบุหมายเลขพอร์ต (เป็นทศนิยม) ที่สามารถเปิดได้
เพิ่มทรัพยากรเดียวกันด้วยตัวระบุทรัพยากรเดียวกันและหมายเลขพอร์ตเดียวกันในการกำหนดค่าไคลเอ็นต์ใน /opt/letmein/etc/letmein.conf
รีสตาร์ทเซิร์ฟเวอร์ Letmein:
systemctl restart letmeind.service ตอนนี้ลบพอร์ต sshd แบบคงที่ (22) accept จากการกำหนดค่าไฟร์วอลล์ nftables.conf ของคุณ Letmein จะติดตั้งกฎดังกล่าวแบบไดนามิกในห่วงโซ่อินพุต Letmein หลังจากตรวจสอบสิทธิ์ Knock สำเร็จ จากนั้นรีสตาร์ท nftables:
systemctl restart nftables.service เสร็จแล้ว! ตอนนี้คุณควรจะสามารถเปิดพอร์ต sshd บนเซิร์ฟเวอร์ของคุณได้:
# This must fail! No successful knock authentication, yet.
# If this does not fail, check if you have removed the sshd accept rule from nftables.conf.
ssh your-server.com
# Knock-open port 22 (sshd) on the server using user-id/key 00000000:
# (You do not have to specify -u 00000000 if that is your default user (see config).)
letmein knock -u 00000000 your-server.com 22
# Now you should be able to ssh into your server successfully:
ssh your-server.com หากต้องการเคาะพอร์ตโดยอัตโนมัติก่อนที่จะเชื่อมต่อกับ ssh คุณสามารถเพิ่มกฎ Match exec ลงในไฟล์ ~/.ssh/config ของคุณได้:
Match host your-server.com exec "letmein knock -u 00000000 your-server.com 22"
ดูคำแนะนำในการติดตั้งสำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการสร้างและติดตั้ง Letmein
หากคุณต้องการลบ Letmein ออกจากระบบของคุณโดยสิ้นเชิง โปรดดูคำแนะนำในการถอนการติดตั้ง
แอปพลิเคชันไคลเอนต์ letmein สามารถพกพาได้และควรทำงานบนแพลตฟอร์มหลักทั้งหมด แพลตฟอร์มที่ทดสอบคือ:
แอปพลิเคชันเซิร์ฟเวอร์ letmeind เป็น Linux เท่านั้น เนื่องจากรองรับเฉพาะ nftables เป็นแบ็กเอนด์ไฟร์วอลล์
ดูเอกสารประกอบการกำหนดค่าสำหรับข้อมูลโดยละเอียดเกี่ยวกับวิธีการกำหนดค่าเซิร์ฟเวอร์และไคลเอนต์ Letmein
โปรดทราบว่าตัวระบุผู้ใช้และตัวระบุทรัพยากรจากไฟล์การกำหนดค่าจะถูกส่งผ่านเครือข่ายโดยไม่มีการเข้ารหัสในรูปแบบข้อความที่ชัดเจน
ตรวจสอบให้แน่ใจว่าตัวระบุผู้ใช้และตัวระบุทรัพยากร ไม่มี ข้อมูลส่วนตัวใดๆ
ตัวระบุเหล่านี้มีไว้เพื่อเป็นการระบุตัวตนเชิงนามธรรมสำหรับการจัดการ letmein การติดตั้ง และการตั้งค่าต่างๆ
เป้าหมายการออกแบบหลักของเลทมีนคือ:
-4 และ -6สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการรักษาความปลอดภัยและการรายงานช่องโหว่ โปรดดูเอกสารความปลอดภัยของ Letmein
ลิขสิทธิ์ (c) 2024 Michael Büsch [email protected]
ได้รับอนุญาตภายใต้ Apache License เวอร์ชัน 2.0 หรือใบอนุญาต MIT ตามตัวเลือกของคุณ