/ / วิธีการเคาะเข้าสู่เครือข่ายของคุณตอนที่ 2: ปกป้อง VPN ของคุณ (DD-WRT)

วิธีการเคาะเข้าสู่เครือข่ายของคุณตอนที่ 2: ปกป้อง VPN ของคุณ (DD-WRT)

เราได้แสดงวิธีเรียก 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” นี้จะย้อนกลับด้านบนและลบกฎที่อนุญาตการสื่อสาร
นั่นคือตอนนี้บริการ VPN ของคุณควรสามารถเชื่อมต่อได้หลังจาก "เคาะ" ที่ประสบความสำเร็จ

ผู้เขียนเคล็ดลับของ

ในขณะที่คุณควรจะพร้อมทั้งหมดมีจุดสองสามอย่างที่ฉันรู้สึกว่าต้องพูดถึง

  • การแก้ไขปัญหา. โปรดจำไว้ว่าหากคุณมีปัญหาส่วน "การแก้ไขปัญหา" ในตอนท้ายของบทความแรกควรเป็นจุดแรกของคุณ
  • หากคุณต้องการคุณสามารถมี "เริ่ม / หยุด"คำสั่งดำเนินการหลายคำสั่งโดยแยกพวกเขาด้วยเซมิโคลอน (;) หรือแม้แต่สคริปต์ การทำเช่นนั้นจะช่วยให้คุณสามารถทำสิ่งที่ดี ตัวอย่างเช่นฉันได้ส่งข้อความถึงฉัน * อีเมลแจ้งให้ฉันทราบว่ามีการเรียกลำดับและจากที่ใด
  • อย่าลืมว่า "มีแอพสำหรับสิ่งนั้น" และแม้ว่าจะไม่ได้กล่าวถึงในบทความนี้คุณก็ควรที่จะคว้าโปรแกรมเคาะประตู Android ของ StavFX
  • ในขณะที่ในเรื่องของ Android อย่าลืมว่ามีไคลเอนต์ PPTP VPN ที่มักจะสร้างไว้ในระบบปฏิบัติการจากผู้ผลิต
  • วิธีการบล็อกบางสิ่งบางอย่างในตอนแรกและจากนั้นดำเนินการต่อเพื่ออนุญาตการสื่อสารที่สร้างไว้แล้วสามารถใช้กับการสื่อสารบน TCP ใดก็ได้ ในความเป็นจริงใน Knockd ในภาพยนตร์ DD-WRT 1 ~ 6 ฉันได้ทำไปแล้วเมื่อฉันใช้ remote desktop protocol (RDP) ซึ่งใช้พอร์ต 3389 เป็นตัวอย่าง
บันทึก: ในการดำเนินการดังกล่าวคุณจะต้องรับฟังก์ชั่นอีเมลในเราเตอร์ซึ่งขณะนี้ไม่มีฟังก์ชั่นที่ใช้งานได้จริงเนื่องจากภาพรวม SVN ของแพคเกจ opkg ของ OpenWRT อยู่ในความไม่เป็นระเบียบ นั่นคือเหตุผลที่ฉันแนะนำให้ใช้ knockd โดยตรงบนกล่อง VPN ซึ่งช่วยให้คุณใช้ตัวเลือกทั้งหมดของการส่งอีเมลที่มีอยู่ใน Linux / GNU เช่น SSMTP และ sendEmail เพื่อพูดถึง

ใครที่รบกวนการนอนหลับของฉัน