ලිනක්ස් ඉඟි සහ උපක්‍රම: සේවාදායකය, විවෘත කරන්න

SSH/RDP/වෙනත් හරහා ලොව ඕනෑම තැනක සිට තම සේවාදායකයන් වෙත ප්‍රවේශ වීමත් සමග තමන්, තම ආදරණීයයන් සැපයීමට අවශ්‍ය අය සඳහා, කුඩා RTFM/spur.

අතේ ඇති ඕනෑම උපාංගයකින් VPN සහ අනෙකුත් සීනු සහ විස්ල් නොමැතිව අපට කළ යුතුය.

තවද ඔබට සේවාදායකය සමඟ වැඩිපුර ව්‍යායාම කිරීමට අවශ්‍ය නොවන පරිදි.

මේ සඳහා ඔබට අවශ්ය වන්නේ තට්ටු කළා, සෘජු අත් සහ විනාඩි 5 වැඩ.

“සියල්ල අන්තර්ජාලයේ ඇත,” ඇත්තෙන්ම (පවා මත හබ්රේ), නමුත් එය නිශ්චිත ක්‍රියාත්මක කිරීමකට පැමිණෙන විට, එය ආරම්භ වන්නේ මෙතැනින්...

අපි උදාහරණයක් ලෙස Fedora/CentOS භාවිතා කිරීමට පුරුදු වෙමු, නමුත් එය කමක් නැත.

මෙම කාරණය සම්බන්ධයෙන් ආරම්භකයින් සහ ප්‍රවීණයන් සඳහා ස්පර් සුදුසු වේ, එබැවින් අදහස් දැක්වීම් ඇත, නමුත් ඒවා කෙටි වනු ඇත.

1. සේවාදායකය

  • knock-server ස්ථාපනය කරන්න:
    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 එක් කළ හැකිය (/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:

Mana හි සෑම දෙයක්ම අඩංගු වේ (නමුත් මෙය සාවද්‍ය ය), නමුත් knockd යනු පණිවිඩ සමඟ තරමක් මසුරු වන මිතුරෙකි, එබැවින් ඔබ ඉතා ප්‍රවේශම් විය යුතුය.

  • අනුවාදය
    Fedora/CentOS ගබඩාවල, අද සඳහා නවතම knockd එක 0.63 වේ. UDP අවශ්‍ය කාටද - පැකට් 0.70ක් සොයන්න.
  • අතුරුමුහුණත
    පෙරනිමි Fedora/CentOS වින්‍යාසය තුළ මෙම රේඛාව නොපැමිණෙයි. ඔබේ දෑතින් එකතු කරන්න, එසේ නොමැතිනම් එය ක්රියා නොකරනු ඇත.
  • කාලය හමාරයි
    මෙහිදී ඔබට ඔබේ රසය අනුව තෝරා ගත හැකිය. සියලුම කික් සඳහා සේවාදායකයාට ප්‍රමාණවත් කාලයක් තිබීම අවශ්‍ය වේ - සහ වරාය ස්කෑනර් බොට් බිඳ වැටෙනු ඇත (සහ 146% ස්කෑන් කරනු ඇත).
  • ආරම්භය/නැවතුම්/විධානය.
    එක් විධානයක් තිබේ නම්, පසුව විධානය, දෙකක් තිබේ නම්, පසුව start_command+stop_command.
    ඔබ වැරැද්දක් කළහොත්, knockd නිශ්ශබ්ද වනු ඇත, නමුත් වැඩ කරන්නේ නැත.
  • ප්‍රෝටෝ
    න්‍යායාත්මකව, 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 දාමයේ අවසානයට නීති එකතු කරන බැවින්, අපට ප්‍රතික්ෂේප වනු ඇත.

මෙම ප්‍රතික්ෂේප කිරීම ක්‍රියා විරහිත කිරීම යනු මෝටර් රථය සියලු සුළං වලට විවෘත කිරීමයි.

iptables වල අතරමං නොවීමට පෙර ඇතුල් කළ යුතු දේ (මේ වගේ මිනිස්සු යෝජනා කරන්න) අපි එය සරල කරමු:

  • පෙරනිමිය CentOS/Fedora මත පළමුව රීතිය ("තහනම් නොකළ දේට අවසර ඇත") ප්‍රතිවිරුද්ධ දෙය මගින් ප්‍රතිස්ථාපනය වේ.
  • අපි අවසාන රීතිය ඉවත් කරමු.

ප්රතිඵලය විය යුත්තේ:

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

ඔබට, ඇත්ත වශයෙන්ම, DROP වෙනුවට ප්‍රතික්ෂේප කළ හැක, නමුත් DROP සමඟ ජීවිතය බොට් සඳහා වඩාත් විනෝදජනක වනු ඇත.

3. සේවාදායකයා

මෙම ස්ථානය වඩාත් සිත්ගන්නා සුළුය (මගේ දෘෂ්ටි කෝණයෙන්), ඔබ ඕනෑම වෙරළකින් පමණක් නොව, ඕනෑම උපාංගයකින් වැඩ කිරීමට අවශ්ය බැවින්.

ප්‍රතිපත්තිමය වශයෙන්, සේවාදායකයින් ගණනාවක් ලැයිස්තුගත කර ඇත වෙබ් අඩවිය ව්‍යාපෘතිය, නමුත් මෙය “සියල්ල අන්තර්ජාලයේ ඇත” යන ලිපි මාලාවේම එකකි. එමනිසා, මම මෙහි සහ දැන් මගේ ඇඟිලි තුඩුවල වැඩ කරන දේ ලැයිස්තුගත කරමි.

සේවාලාභියෙකු තෝරාගැනීමේදී, එය පැකට් අතර ප්‍රමාද විකල්පයට සහය දක්වන බවට ඔබ සහතික විය යුතුය. ඔව්, වෙරළ තීරයන් සහ මෙගාබිට් 100 අතර වෙනස්කම් ඇති අතර, ලබා දී ඇති ස්ථානයක සිට පැකට් නියම වේලාවට නියම අනුපිළිවෙලට පැමිණෙන බවට සහතික නොවේ.

ඔව්, සේවාලාභියෙකු පිහිටුවීමේදී, ඔබ විසින්ම ප්රමාදය තෝරාගත යුතුය. බොහෝ කල් ඉකුත්වීම - බොට්ස් පහර දෙනු ඇත, ඉතා කුඩා - සේවාදායකයාට කාලය නැත. වැඩි ප්‍රමාදයක් - සේවාදායකයා නියමිත වේලාවට එය සිදු නොකරනු ඇත, නැතහොත් මෝඩයන්ගේ ගැටුමක් ඇති වනු ඇත ("රේක්" බලන්න), ඉතා අල්පය - පැකට් අන්තර්ජාලයේ නැති වී යයි.

timeout=5s සමඟ, delay=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 (නොමිලේ, ගබඩාවෙන්).

ඇන්ඩ්රොයිඩ්

"වරායවලට තට්ටු කරන්න" වෙළඳ දැන්වීම් නොවේ, නමුත් එය ක්රියා කරයි. සහ සංවර්ධකයින් තරමක් ප්‍රතිචාර දක්වයි.

හබ්රේට PS ලකුණු කිරීම, ඇත්ත වශයෙන්ම, දෙවියන් වහන්සේ ඔහුට යම් දිනක ආශීර්වාද කරයි ...

UPD1: ස්තුති වන්නට හොඳ කෙනෙකුට සොයාගත්තා වැඩ කරන සේවාදායකයා වින්ඩෝස් යටතේ.
UPD2: තවත් එකක් හොඳ මිනිසා iptables අවසානයේ නව නීති දැමීම සැමවිටම ප්‍රයෝජනවත් නොවන බව මට මතක් කර දුන්නේය. නමුත් - එය රඳා පවතී.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න