Linux គន្លឹះ និងល្បិច៖ ម៉ាស៊ីនបម្រើ បើក

សម្រាប់​អ្នក​ដែល​ត្រូវ​ការ​ផ្តល់​ឱ្យ​ខ្លួន​គេ មនុស្ស​ជា​ទី​ស្រឡាញ់​របស់​ពួក​គេ​ដោយ​មាន​ការ​ចូល​ដំណើរ​ការ​ទៅ​កាន់​ម៉ាស៊ីន​បម្រើ​របស់​ពួក​គេ​ពី​គ្រប់​ទី​កន្លែង​ក្នុង​ពិភពលោក​តាម​រយៈ SSH / RDP / ផ្សេង​ទៀត RTFM / spur តូច។

យើងត្រូវធ្វើដោយគ្មាន VPN និងកណ្តឹង និងហួចផ្សេងទៀតពីឧបករណ៍ណាមួយនៅនឹងដៃ។

ហើយដូច្នេះអ្នកមិនចាំបាច់ធ្វើលំហាត់ប្រាណច្រើនពេកជាមួយម៉ាស៊ីនមេទេ។

អ្វីដែលអ្នកត្រូវការសម្រាប់នេះគឺ គោះដៃត្រង់និង 5 នាទីនៃការងារ។

"អ្វីគ្រប់យ៉ាងគឺនៅលើអ៊ីនធឺណិត" ជាការពិតណាស់ (សូម្បីតែនៅលើ ហាប្រេ) ប៉ុន្តែនៅពេលដែលវាមកដល់ការអនុវត្តជាក់លាក់មួយ នេះគឺជាកន្លែងដែលវាចាប់ផ្តើម ...

ចូរយើងអនុវត្តដោយប្រើ Fedora ជាឧទាហរណ៍។CentOSប៉ុន្តែវាមិនសំខាន់ទេ។

spur គឺសមរម្យសម្រាប់អ្នកចាប់ផ្តើមដំបូងនិងអ្នកជំនាញក្នុងបញ្ហានេះដូច្នេះនឹងមានមតិយោបល់ប៉ុន្តែពួកគេនឹងខ្លីជាង។

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

វាជ្រៀតជ្រែក។

ចាប់តាំងពីគោះបន្ថែមច្បាប់ដល់ចុងបញ្ចប់នៃខ្សែសង្វាក់ INPUT យើងនឹងទទួលបានការបដិសេធ។

ហើយការបិទការបដិសេធនេះមានន័យថាបើកឡានទៅគ្រប់ខ្យល់។

ដើម្បីកុំឱ្យបាត់បង់នៅក្នុង iptables អ្វីដែលត្រូវបញ្ចូលមុនអ្វី (ដូចនេះ មនុស្ស ណែនាំ) ចូរធ្វើឱ្យវាកាន់តែសាមញ្ញ៖

  • លំនាំដើម в CentOS/ហ្វេដូរ៉ា ដំបូង ច្បាប់ ("អ្វីដែលមិនត្រូវបានហាមឃាត់ត្រូវបានអនុញ្ញាត") នឹងត្រូវបានជំនួសដោយផ្ទុយ,
  • ហើយយើងដកច្បាប់ចុងក្រោយចេញ។

លទ្ធផលគួរតែជា៖

*filter
:INPUT DROP [0:0]
...
#-A INPUT -j REJECT --reject-with icmp-host-prohibited

ជាការពិតណាស់ អ្នកអាចធ្វើ REJECT ជំនួសឱ្យ DROP ប៉ុន្តែជាមួយនឹងជីវិត DROP នឹងកាន់តែរីករាយសម្រាប់ bots ។

3. អតិថិជន

កន្លែងនេះគឺគួរឱ្យចាប់អារម្មណ៍បំផុត (តាមទស្សនៈរបស់ខ្ញុំ) ដោយសារតែអ្នកត្រូវការធ្វើការមិនត្រឹមតែពីឆ្នេរណាមួយប៉ុណ្ណោះទេប៉ុន្តែថែមទាំងពីឧបករណ៍ណាមួយផងដែរ។

ជាគោលការណ៍អតិថិជនមួយចំនួនត្រូវបានចុះបញ្ជីនៅលើ តំបន់បណ្តាញ គម្រោង ប៉ុន្តែនេះគឺមកពីស៊េរីដូចគ្នា "អ្វីគ្រប់យ៉ាងគឺនៅលើអ៊ីនធឺណិត" ។ ដូច្នេះហើយ ខ្ញុំនឹងរាយបញ្ជីអ្វីដែលកំពុងដំណើរការនៅចុងម្រាមដៃរបស់ខ្ញុំនៅទីនេះ និងឥឡូវនេះ។

នៅពេលជ្រើសរើសអតិថិជន អ្នកត្រូវប្រាកដថាវាគាំទ្រជម្រើសពន្យាពេលរវាងកញ្ចប់ព័ត៌មាន។ បាទ/ចាស មានភាពខុសគ្នារវាងឆ្នេរ និង 100 មេហ្គាហឺត មិនដែលធានាថាកញ្ចប់ព័ត៌មាននឹងមកដល់តាមលំដាប់ត្រឹមត្រូវនៅពេលត្រឹមត្រូវពីទីតាំងដែលបានផ្តល់ឱ្យនោះទេ។

ហើយបាទ ពេលរៀបចំអតិថិជន អ្នកត្រូវជ្រើសរើសការពន្យារពេលដោយខ្លួនឯង។ អស់ពេលច្រើនពេក - bots នឹងវាយប្រហារ តិចតួចពេក - អតិថិជននឹងមិនមានពេលទេ។ ការពន្យារពេលច្រើនពេក - អតិថិជននឹងមិនធ្វើវាទាន់ពេលទេ ឬវានឹងមានជម្លោះរវាងមនុស្សល្ងង់ (សូមមើល "តុងរួច") តិចតួចពេក - កញ្ចប់ព័ត៌មាននឹងបាត់បង់នៅលើអ៊ីនធឺណិត។

ជាមួយនឹង timeout=5s ការពន្យាពេល=100..500ms គឺជាជម្រើសដំណើរការទាំងស្រុង

Windows

មិនថាវាស្តាប់ទៅគួរឱ្យអស់សំណើចប៉ុណ្ណានោះទេ វាពិតជាមិនសំខាន់សម្រាប់ Google ដែលជាអតិថិជនគោះច្បាស់លាស់សម្រាប់វេទិកានេះ។ ដូច្នេះ CLI គាំទ្រការពន្យារពេល TCP - និងដោយគ្មានធ្នូ។

ជាជម្រើសអ្នកអាចសាកល្បង នេះគឺជាវា។. ជាក់ស្តែង Google របស់ខ្ញុំមិនមែនជានំខេកទេ។

Linux

អ្វីគ្រប់យ៉ាងគឺសាមញ្ញនៅទីនេះ៖

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

"គោះលើច្រក" មិនមែនផ្សាយពាណិជ្ជកម្មទេ ប៉ុន្តែវាដំណើរការ។ ហើយអ្នកអភិវឌ្ឍន៍គឺឆ្លើយតបណាស់។

PS markdown on Habre ពិតណាស់ព្រះប្រទានពរគាត់នៅថ្ងៃណាមួយ ...

UPD១៤: អរគុណ​ចំពោះ ទៅមនុស្សល្អ។ បានរកឃើញ អតិថិជនធ្វើការ ក្រោម Windows.
UPD១៤: មួយ​ផ្សេង​ទៀត បុរស​ល្អ បានរំលឹកខ្ញុំថាការដាក់ច្បាប់ថ្មីនៅចុងបញ្ចប់នៃ iptables គឺមិនតែងតែមានប្រយោជន៍នោះទេ។ ប៉ុន្តែ - វាអាស្រ័យ។

ប្រភព: www.habr.com

ទិញការបង្ហោះដែលអាចទុកចិត្តបានសម្រាប់គេហទំព័រដែលមានការការពារ DDoS, ម៉ាស៊ីនមេ VPS VDS 🔥 ទិញសេវាបង្ហោះគេហទំព័រដែលអាចទុកចិត្តបានជាមួយនឹងការការពារ DDoS និងម៉ាស៊ីនមេ VPS VDS | ProHoster