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