เคล็ดลับและเทคนิค Linux: เซิร์ฟเวอร์ เปิดขึ้นมา

สำหรับผู้ที่ต้องการจัดหาตนเองและคนที่พวกเขารักให้สามารถเข้าถึงเซิร์ฟเวอร์ได้จากทุกที่ในโลกผ่าน SSH/RDP/อื่นๆ ซึ่งเป็น RTFM/เดือยขนาดเล็ก

เราจำเป็นต้องดำเนินการโดยไม่ต้องใช้ VPN และการทำงานอื่นๆ จากอุปกรณ์ใดๆ ก็ตาม

และเพื่อที่คุณจะได้ไม่ต้องออกกำลังกายกับเซิร์ฟเวอร์มากเกินไป

สิ่งที่คุณต้องการสำหรับสิ่งนี้ก็คือ เคาะ, แขนตรงและการทำงาน 5 นาที

“ทุกสิ่งอยู่บนอินเทอร์เน็ต” แน่นอน (แม้กระทั่งบนอินเทอร์เน็ต) ฮาเบร) แต่เมื่อพูดถึงการใช้งานที่เฉพาะเจาะจง นี่คือจุดเริ่มต้น...

เราจะฝึกใช้ 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 - และไม่มีส่วนโค้ง

หรือคุณสามารถลอง นี่ไง. เห็นได้ชัดว่า Google ของฉันไม่ใช่เค้ก

ลินุกซ์

มันง่ายที่นี่:

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: ขอบคุณ ถึงคนดี พบ ลูกค้าที่ทำงาน ภายใต้ Windows
ยูพีดี2: อีกอัน คนดี เตือนฉันว่าการใส่กฎใหม่ไว้ที่ส่วนท้ายของ iptables นั้นไม่ได้มีประโยชน์เสมอไป แต่ - มันขึ้นอยู่กับ

ที่มา: will.com

เพิ่มความคิดเห็น