สำหรับผู้ที่ต้องการจัดหาตนเองและคนที่พวกเขารักให้สามารถเข้าถึงเซิร์ฟเวอร์ได้จากทุกที่ในโลกผ่าน SSH/RDP/อื่นๆ ซึ่งเป็น RTFM/เดือยขนาดเล็ก
เราจำเป็นต้องดำเนินการโดยไม่ต้องใช้ VPN และการทำงานอื่นๆ จากอุปกรณ์ใดๆ ก็ตาม
และเพื่อที่คุณจะได้ไม่ต้องออกกำลังกายกับเซิร์ฟเวอร์มากเกินไป
สิ่งที่คุณต้องการสำหรับสิ่งนี้ก็คือ
“ทุกสิ่งอยู่บนอินเทอร์เน็ต” แน่นอน (แม้กระทั่งบนอินเทอร์เน็ต)
เราจะฝึกใช้ Fedora/CentOS เป็นตัวอย่าง แต่นั่นไม่สำคัญ
เดือยนี้เหมาะสำหรับทั้งผู้เริ่มต้นและผู้เชี่ยวชาญในเรื่องนี้ดังนั้นจึงจะมีความคิดเห็น แต่จะสั้นกว่า
1. เซิร์ฟเวอร์
-
ติดตั้งน็อคเซิร์ฟเวอร์:
yum/dnf install knock-server
-
กำหนดค่า (เช่นบน ssh) - /etc/knockd.conf:
[options] UseSyslog interface = enp1s0f0 [SSHopen] sequence = 33333,22222,11111 seq_timeout = 5 tcpflags = syn start_command = iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT cmd_timeout = 3600 stop_command = iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT [SSHclose] sequence = 11111,22222,33333 seq_timeout = 5 tcpflags = syn command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
ส่วน “เปิด” ถูกตั้งค่าให้ปิดอัตโนมัติหลังจากผ่านไป 1 ชั่วโมง คุณไม่เคยรู้...
-
/etc/sysconfig/iptables:
... -A INPUT -p tcp -m state --state NEW -m tcp --dport 11111 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22222 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 33333 -j ACCEPT ...
-
ซึ่งไปข้างหน้า:
service iptables restart service knockd start
-
คุณสามารถเพิ่ม RDP ให้กับ Windows Server เสมือนที่หมุนอยู่ภายใน (/etc/knockd.conf; แทนที่ชื่ออินเทอร์เฟซเพื่อให้เหมาะกับรสนิยมของคุณ):
[RDPopen] sequence = 44444,33333,22222 seq_timeout = 5 tcpflags = syn start_command = iptables -t nat -A PREROUTING -s %IP% -i enp1s0f0 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.0.2 cmd_timeout = 3600 stop_command = iptables -t nat -D PREROUTING -s %IP% -i enp1s0f0 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.0.2 [RDPclose] sequence = 22222,33333,44444 seq_timeout = 5 tcpflags = syn command = iptables -t nat -D PREROUTING -s %IP% -i enp1s0f0 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.0.2
เราติดตามการเตะทั้งหมดของเราจากไคลเอนต์บนเซิร์ฟเวอร์ด้วยคำสั่ง
iptables -S
.
2. คู่มือคราด
knockd.conf:
มานาก็มีทุกอย่างเช่นกัน (แต่นี่ไม่ถูกต้อง) แต่น็อคเป็นเพื่อนที่ค่อนข้างตระหนี่กับข้อความดังนั้นคุณต้องระวังให้มาก
- รุ่น
ในที่เก็บ Fedora/CentOS การเคาะล่าสุดสำหรับวันนี้คือ 0.63 ใครต้องการ UDP - มองหาแพ็กเก็ต 0.70 - อินเตอร์เฟซ
ในการกำหนดค่าเริ่มต้นของ Fedora/CentOS บรรทัดนี้ ไม่. เพิ่มด้วยมือของคุณไม่เช่นนั้นจะไม่ทำงาน - การหยุดพักชั่วคราว
ที่นี่คุณสามารถเลือกได้ตามรสนิยมของคุณ จำเป็นที่ไคลเอนต์จะต้องมีเวลาเพียงพอสำหรับการดำเนินการทั้งหมด - และบอทเครื่องสแกนพอร์ตจะพัง (และ 146% จะสแกน) - เริ่ม/หยุด/คำสั่ง
หากมีหนึ่งคำสั่ง ให้สั่ง หากมีสองคำสั่ง ให้ start_command+stop_command
หากคุณทำผิดพลาด การเคาะจะยังคงเงียบแต่จะไม่ทำงาน - โปรโต
ตามทฤษฎีแล้ว UDP สามารถใช้ได้ ในทางปฏิบัติ ฉันผสม tcp และ udp และลูกค้าจากชายหาดในบาหลีสามารถเปิดประตูได้เพียงครั้งที่ห้าเท่านั้น เนื่องจาก TCP มาถึงเมื่อจำเป็น แต่ UDP ไม่ใช่ข้อเท็จจริง แต่นี่เป็นเรื่องของรสนิยมอีกครั้ง - ลำดับ
คราดโดยนัยคือลำดับไม่ควรตัดกัน... จะใส่อย่างไร...
ตัวอย่างเช่น:
open: 11111,22222,33333
close: 22222,11111,33333
โดยเตะ 11111 เปิด จะรอเตะครั้งต่อไปที่ 22222 อย่างไรก็ตาม หลังจากนี้ (22222) เตะก็จะเริ่มทำงาน ปิดการขาย และทุกอย่างจะพังทลาย ขึ้นอยู่กับความล่าช้าของลูกค้าด้วย สิ่งเหล่านี้©.
iptables
หากอยู่ใน /etc/sysconfig/iptables นี่คือ:
*nat
:PREROUTING ACCEPT [0:0]
มันไม่ได้รบกวนเราเลย ดังนั้นนี่คือ:
*filter
:INPUT ACCEPT [0:0]
...
-A INPUT -j REJECT --reject-with icmp-host-prohibited
มันรบกวน.
เนื่องจาก knockd เพิ่มกฎที่ส่วนท้ายของ INPUT chain เราจึงจะถูกปฏิเสธ
และการปิดระบบปฏิเสธนี้หมายถึงการเปิดรถให้เปิดรับลมทุกระดับ
เพื่อไม่ให้หลงทางใน iptables จะใส่อะไรก่อนอะไร (แบบนี้
- ค่าเริ่มต้น บน CentOS/Fedora แรก กฎ (“สิ่งที่ไม่ได้รับอนุญาตคือสิ่งต้องห้าม”) จะถูกแทนที่ด้วยกฎที่ตรงกันข้าม
- และเราลบกฎข้อสุดท้ายออก
ผลลัพธ์ควรเป็น:
*filter
:INPUT DROP [0:0]
...
#-A INPUT -j REJECT --reject-with icmp-host-prohibited
แน่นอนคุณสามารถปฏิเสธแทน DROP ได้ แต่ชีวิต DROP จะทำให้บอทสนุกมากขึ้น
3. ลูกค้า
สถานที่แห่งนี้น่าสนใจที่สุด (จากมุมมองของฉัน) เนื่องจากคุณต้องทำงานไม่เพียงแต่จากชายหาดเท่านั้น แต่ยังต้องทำงานจากอุปกรณ์ใด ๆ ด้วย
โดยหลักการแล้ว มีรายชื่อลูกค้าจำนวนหนึ่งอยู่ในรายการ
เมื่อเลือกไคลเอนต์ คุณต้องแน่ใจว่าไคลเอนต์รองรับตัวเลือกการหน่วงเวลาระหว่างแพ็กเก็ต ใช่ มีความแตกต่างระหว่างชายหาดและ 100 เมกะบิต ไม่เคยรับประกันว่าแพ็กเก็ตจะมาถึงในลำดับที่ถูกต้องในเวลาที่เหมาะสมจากตำแหน่งที่กำหนด
ใช่แล้ว เมื่อตั้งค่าไคลเอนต์ คุณต้องเลือกการหน่วงเวลาด้วยตัวเอง หมดเวลามากเกินไป - บอทจะโจมตีน้อยเกินไป - ลูกค้าจะไม่มีเวลา ความล่าช้ามากเกินไป - ลูกค้ามาไม่ทันหรือจะเกิดความขัดแย้งกับคนงี่เง่า (ดู "คราด") น้อยเกินไป - แพ็กเก็ตจะหายไปบนอินเทอร์เน็ต
ด้วยการหมดเวลา = 5 วินาที ความล่าช้า = 100..500ms เป็นตัวเลือกที่ใช้งานได้อย่างสมบูรณ์
Windows
ไม่ว่ามันจะฟังดูตลกแค่ไหน มันก็ไม่ใช่เรื่องเล็กน้อยสำหรับ Google ที่เป็นไคลเอนต์ที่ชัดเจนสำหรับแพลตฟอร์มนี้ เพื่อให้ CLI รองรับการหน่วงเวลา TCP - และไม่มีส่วนโค้ง
หรือคุณสามารถลอง
ลินุกซ์
มันง่ายที่นี่:
dnf install knock -y
knock -d <delay> <dst_ip> 11111 22222 33333
MacOS
วิธีที่ง่ายที่สุดคือการติดตั้งพอร์ตจาก homebrew:
brew install knock
และวาดไฟล์แบตช์ที่จำเป็นสำหรับคำสั่งเช่น:
#!bin/sh
knock -d <delay> <dst_ip> 11111 22222 33333
iOS
ตัวเลือกการทำงานคือ KnockOnD (ฟรีจากร้านค้า)
Android
"เคาะพอร์ต" ไม่ใช่การโฆษณา แต่มันใช้งานได้ และนักพัฒนาก็ค่อนข้างตอบสนอง
ป.ล. ลดราคาฮาเบร แน่นอน ขอให้พระเจ้าอวยพรเขาสักวันหนึ่ง...
ยูพีดี1: ขอบคุณ
ยูพีดี2: อีกอัน
ที่มา: will.com