เราได้แสดงให้คุณเห็นแล้ว วิธีเรียกใช้ WOL จากระยะไกลโดยการ“ Port Knocking” บนเราเตอร์ของคุณ . ในบทความนี้เราจะแสดงวิธีใช้เพื่อปกป้องบริการ VPN
ภาพโดย Aviad Raviv & bfick .
คำนำ
หากคุณเคยใช้
DD-WRT ในตัว
สำหรับ VPN หรือมี
เซิร์ฟเวอร์ VPN อื่น
ในเครือข่ายของคุณคุณอาจชื่นชมความสามารถในการปกป้องจากการโจมตีแบบดุร้ายด้วยการซ่อนมันไว้หลังลำดับการเคาะ โดยการทำเช่นนี้คุณจะกรองตัวเล็กสคริปต์ที่พยายามเข้าถึงเครือข่ายของคุณ ตามที่กล่าวไว้ในบทความก่อนหน้านี้การเคาะพอร์ตไม่ได้เป็นการทดแทนรหัสผ่านและ / หรือนโยบายความปลอดภัยที่ดี อย่าลืมว่าด้วยความอดทนเพียงพอผู้โจมตีสามารถค้นพบลำดับและทำการโจมตีซ้ำได้
โปรดทราบว่าข้อเสียของการใช้สิ่งนี้คือเมื่อไคลเอนต์ VPN ใด ๆ ต้องการเชื่อมต่อพวกเขาจะต้องเรียกใช้ลำดับการเคาะ
ล่วงหน้า
และหากไม่สามารถทำตามลำดับให้เสร็จสิ้นไม่ว่าด้วยเหตุผลใดก็ตามพวกเขาจะไม่สามารถใช้ VPN ได้เลย
ภาพรวม
เพื่อป้องกัน * บริการ VPN ก่อนอื่นเราจะปิดการสื่อสารที่เป็นไปได้ทั้งหมดด้วยการบล็อกพอร์ตอินสแตนซ์ 1723 เพื่อให้บรรลุเป้าหมายนี้เราจะใช้ iptables นี่เป็นเพราะนั่นคือวิธีการกรองการสื่อสารบนการกระจาย Linux / GNU ที่ทันสมัยที่สุดโดยทั่วไปและโดยเฉพาะบน DD-WRT หากคุณต้องการข้อมูลเพิ่มเติมเกี่ยวกับ iptables ชำระเงิน รายการวิกิ และดูที่ บทความก่อนหน้าของเรา ในเรื่อง เมื่อบริการได้รับการป้องกันเราจะสร้างลำดับการเคาะที่จะเปิดพอร์ตการสร้างอินสแตนซ์ของ VPN ชั่วคราวและจะปิดโดยอัตโนมัติหลังจากระยะเวลาที่กำหนดไว้ในขณะที่ยังคงเชื่อมต่อเซสชัน VPN ที่สร้างไว้แล้ว
หมายเหตุ: ในคู่มือนี้เรากำลังใช้บริการ PPTP VPN เป็นตัวอย่าง ด้วยเหตุนี้จึงสามารถใช้วิธีเดียวกันนี้กับ VPN ประเภทอื่น ๆ ได้คุณเพียงแค่เปลี่ยนพอร์ตและ / หรือประเภทการสื่อสารที่ถูกบล็อก
ข้อกำหนดเบื้องต้นสมมติฐานและข้อเสนอแนะ
- ถือว่า / จำเป็นต้องมีไฟล์ เราเตอร์ DD-WRT ที่เปิดใช้งาน Opkg .
- ถือว่า / จำเป็นต้องทำตามขั้นตอนในส่วน“ วิธีการเคาะเข้าสู่เครือข่ายของคุณ (DD-WRT) ” คำแนะนำ
- มีการสันนิษฐานความรู้เกี่ยวกับระบบเครือข่ายบางอย่าง
มาแคร็กกันเถอะ
ค่าเริ่มต้น กฎ“ บล็อก VPN ใหม่” บน DD-WRT
ในขณะที่ข้อมูลโค้ดด้านล่างนี้น่าจะใช้ได้กับทุก iptables ที่เคารพตนเองโดยใช้การแจกจ่าย Linux / GNU เนื่องจากมีตัวแปรมากมายเราจะแสดงวิธีใช้บน DD-WRT เท่านั้น ไม่มีอะไรหยุดคุณได้หากต้องการจากการใช้งานโดยตรงบนกล่อง VPN อย่างไรก็ตามวิธีดำเนินการดังกล่าวอยู่นอกเหนือขอบเขตของคู่มือนี้
เนื่องจากเราต้องการเพิ่มไฟร์วอลล์ของเราเตอร์จึงเป็นเพียงตรรกะเดียวที่เราจะเพิ่มลงในสคริปต์ "ไฟร์วอลล์" การทำเช่นนั้นจะทำให้คำสั่ง iptables ถูกเรียกใช้ทุกครั้งที่มีการรีเฟรชไฟร์วอลล์และทำให้ส่วนเสริมของเราอยู่ในตำแหน่งสำหรับการเก็บรักษา
จาก DD-WRT Web-GUI:
-
ไปที่“ การดูแลระบบ” ->“ คำสั่ง”
-
ป้อน "รหัส" ด้านล่างลงในกล่องข้อความ:
อินไลน์ = "$ (iptables -L INPUT -n | grep -n" state RELATED, ESTABLISHED "| awk -F: {'print $1'})"; อินไลน์ = $ (($ inline-2 + 1)); iptables -I INPUT "$ inline" -p tcp --dport 1723 -j DROP - คลิกที่“ บันทึกไฟร์วอลล์”
- เสร็จแล้ว
คำสั่ง“ วูดู” นี้คืออะไร?
คำสั่ง "เวทวูดู" ข้างต้นทำสิ่งต่อไปนี้:
- ค้นหาว่าอยู่ที่ไหนบรรทัด iptable ที่ช่วยให้การสื่อสารที่กำหนดไว้แล้วผ่านไปได้ เราทำเช่นนี้เพราะ A. บนเราเตอร์ DD-WRT หากเปิดใช้งานบริการ VPN บริการนี้จะอยู่ด้านล่างบรรทัดนี้และ B เป็นสิ่งสำคัญสำหรับเป้าหมายของเราในการดำเนินการต่อเพื่อให้เซสชัน VPN ที่สร้างไว้แล้วสามารถใช้งานได้หลังจาก เคาะเหตุการณ์.
- หักสอง (2) ออกจากเอาต์พุตของคำสั่ง list เพื่อพิจารณาค่าชดเชยที่เกิดจากส่วนหัวคอลัมน์ข้อมูล เมื่อเสร็จแล้วให้เพิ่มหนึ่ง (1) ในตัวเลขด้านบนเพื่อให้กฎที่เราแทรกจะเกิดขึ้นหลังจากกฎที่อนุญาตให้มีการสื่อสารที่กำหนดไว้แล้ว ฉันได้ทิ้ง“ โจทย์คณิตศาสตร์” ที่เรียบง่ายไว้ที่นี่เพียงเพื่อให้ตรรกะของ“ ทำไมเราต้องลดหนึ่งออกจากที่ของกฎแทนที่จะเพิ่มหนึ่งข้อ” ให้ชัดเจน
การกำหนดค่า KnockD
เราจำเป็นต้องสร้างลำดับการทริกเกอร์ใหม่ที่จะช่วยให้สามารถสร้างการเชื่อมต่อ VPN ใหม่ได้ ในการดำเนินการนี้ให้แก้ไขไฟล์ knockd.conf โดยออกในเทอร์มินัล:
vi /opt/etc/knockd.conf
ผนวกเข้ากับการกำหนดค่าที่มีอยู่:
[enable-VPN]
ลำดับ = 02,02,02,01,01,01,2010,2010,2010
seq_timeout = 60
start_command = iptables -I INPUT 1 -s% IP% -p tcp --dport 1723 -j ยอมรับ
cmd_timeout = 20
stop_command = iptables -D INPUT -s% IP% -p tcp --dport 1723 -j ยอมรับ
การกำหนดค่านี้จะ:
- กำหนดหน้าต่างแห่งโอกาสในการทำลำดับให้เสร็จสิ้นเป็น 60 วินาที (ขอแนะนำให้ย่อให้สั้นที่สุด)
- ฟังลำดับของการเคาะสามครั้งบนพอร์ต 2, 1 และ 2010 (คำสั่งนี้มีเจตนาที่จะทำให้เครื่องสแกนพอร์ตออกนอกเส้นทาง)
- เมื่อตรวจพบลำดับแล้วให้ดำเนินการ“ start_command” คำสั่ง“ iptables” นี้จะวางคำสั่ง“ ยอมรับการรับส่งข้อมูลที่กำหนดไปยังพอร์ต 1723 จากจุดที่เกิดการน็อค” ไว้ที่ด้านบนของกฎไฟร์วอลล์ (คำสั่ง% IP% ได้รับการปฏิบัติโดย KnockD เป็นพิเศษและถูกแทนที่ด้วย IP ของต้นกำเนิดการเคาะ)
- รอ 20 วินาทีก่อนออก“ stop_command”
- ดำเนินการ“ stop_command” โดยที่คำสั่ง "iptables" นี้จะย้อนกลับของข้างต้นและลบกฎที่อนุญาตให้สื่อสาร
ผู้เขียน เคล็ดลับ
ในขณะที่คุณควรจะพร้อม แต่มีสองประเด็นที่ฉันต้องการกล่าวถึง
- การแก้ไขปัญหา. โปรดจำไว้ว่าหากคุณประสบปัญหากลุ่ม "การแก้ปัญหา" ที่ส่วนท้ายของ บทความแรก ควรเป็นจุดแรกของคุณ
- หากคุณต้องการคุณสามารถมีคำสั่ง“ start / stop” รันคำสั่งหลายคำสั่งโดยแยกคำสั่งด้วย semi-colen (;) หรือแม้แต่สคริปต์ การทำเช่นนี้จะช่วยให้คุณทำสิ่งดีๆได้ ตัวอย่างเช่นฉันได้เคาะส่ง * อีเมลแจ้งว่าลำดับถูกทริกเกอร์และจากที่ไหน
- อย่าลืมว่า“ มีแอปสำหรับสิ่งนั้น ” และแม้ว่าจะไม่ได้กล่าวถึงในบทความนี้ แต่คุณก็ควรคว้าไว้ StavFX ของ Android โปรแกรมเคาะ .
- ในเรื่องของ Android อย่าลืมว่ามีไคลเอนต์ PPTP VPN ที่มักสร้างไว้ในระบบปฏิบัติการจากผู้ผลิต
- วิธีการปิดกั้นบางสิ่งในขั้นต้นแล้วดำเนินการต่อเพื่อให้สามารถสื่อสารที่กำหนดไว้แล้วสามารถใช้กับการสื่อสารที่ใช้ TCP ได้จริง ในความเป็นจริงแล้ว เคาะ DD-WRT 1 ~ 6 ภาพยนตร์ฉันเคยย้อนกลับไปเมื่อฉันใช้โปรโตคอลเดสก์ท็อประยะไกล (RDP) ซึ่งใช้พอร์ต 3389 เป็นตัวอย่าง