Linuxi nÀpunÀited ja nipid: server, ava end

Neile, kes soovivad endale, armsamale, tagada juurdepÀÀsu oma serveritele igast maailma nurgast SSH/RDP/ja muu kaudu — vĂ€ike RTFM/vihik.

Peame hakkama saama ilma VPN-i ja muude trikkideta, kÀepÀrast on kÔik seadmed.

Ja nii, et serveriga ei peaks eriti vaeva nÀgema.

KĂ”ik, mis selleks vajalik on — knockd, osavad kĂ€ed ja 5 minutit tööd.

„Internetis on kĂ”ik,” loomulikult (isegi ) and similar ones ended up tied to centralized agents. The situation now is different and), kuid kui asi jĂ”uab konkreetse rakenduse juurde — siis seal see algab...

Treening toimub Fedora/CentOS nÀitel, kuid see pole oluline.

Vihik sobib nii algajatele kui ka valdkonna veteranidele, seega tulevad kommentaarid, kuid lĂŒhemalt.

1. Server

  • paigaldame knock-serveri:
    yum/dnf install knock-server

  • seame selle ĂŒles (nĂ€iteks ssh jaoks) — /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

    „Avamisel” osa on seadistatud autolukkuma tunni pĂ€rast. Who knows


  • /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
    ...

  • edasi:

    service iptables restart
    service knockd start

  • vĂ”ib lisada RDP pöörlevasse virtuaalsesse Windows Serverisse (/etc/knockd.conf; interfeisi nimi vastavalt soovile):

    [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

    KÔik meie kliendi puhnud jÀlgime serveris kÀsuga iptables -S.

2. Kivide teejuht

knockd.conf:

Manuaalides on ka kĂ”ik olemas (aga see pole tĂ€pne), kuid knockd — on ĂŒsna kĂ€rsitu teatiste osas, seega tuleb olla vĂ€ga tĂ€helepanelik.

  • ICQ.com veebilehest dateeritud 1997. aasta aprilli, ja siis kuulus domeen hoopis teisele organisatsioonile — mingi mÔÔteseadmete tootjate ja kasutajate ĂŒhingule. Aasta
    Fedora/CentOS repositooriumites on tĂ€nane uusim knockd versioon — 0.63. Kes soovib UDP-d — otsige pakette 0.70.
  • interface
    Fedora/CentOS vaikimisi konfiguratsioonis on see rida puudub. Lisada kÀsitsi, muidu ei hakka töötama.
  • aegumine
    Siit saab valida vastavalt soovile. Peab olema aega, et kliendil piisavalt pinde oleks — ja bot-koodiskanner lĂŒkkaks (ja skaneerimist on 146%).
  • start/stop/command.
    Kui meeskond on ĂŒks, siis command, kui kaks, siis start_command+stop_command.
    Kui te eksite, siis knockd jÀÀb vait, kuid ei tööta.
  • proto
    Teoreetiliselt on vĂ”imalik kasutada UDP-d. Praktikas olen ma seganud tcp ja udp, ja klient Bali rannalt suutis oma vĂ€rava avada alles viiendat korda. Sest TCP jĂ”udis kohale, kui oli vajalik, kuid UDP — ei pruugi. Kuid see on jĂ€lle maitse asi.
  • sequence
    Kahtlased probleemid peituvad selles, et jĂ€rjestused ei tohiks kattuda... kuidas nĂŒĂŒd öelda...

NĂ€iteks midagi sellist:

open: 11111,22222,33333
close: 22222,11111,33333

Kuna 11111 peale löömine open ootab jÀrgmise löögi peale 22222. Siiski, sel 22222 löögil hakkab see tööle sulgeda ja kÔik lÀheb katki. See sÔltub ka kliendi viivitusest. Nii need lood on ©.

iptables

Kui /etc/sysconfig/iptables on niimoodi:

*nat
:PREROUTING ACCEPT [0:0]

ei sega meid eriti, siis see:

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

segab ikka.

Kuna knockd lisab reeglid INPUT ahela lÔppu, saame me reject.

Ja selle rejecti keelamine — tĂ€hendab avada masinat tuuledele.

Et mitte iptables'is liialt keerutada (nagu inimesed soovitavad), teeme lihtsamalt: vaikimisi

  • CentOS/Fedora esimese reegli („mis ei ole keelatud — on lubatud”) vahetame vastupidiseks, ja eemaldame viimase reegli.
  • Tulemusena peaks saama:

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

VÔib muidugi DROP'i asemel teha REJECT, aga DROP'iga on botidel lihtsam elu.

3. Klient

See koht on minu arvates kÔige huvitavam, kuna tuleb töötada mitte ainult igalt rannalt, vaid ka igasugustelt seadmetelt.

PÔhimÔtteliselt on mitmed kliendid loetletud

projekti, kuid see on samast sarjast „internetis on kĂ”ik olemas”. SeetĂ”ttu loetlen, mis mul siin ja praegu kĂ€epĂ€rast on. veebisaidil Kliendi valimisel tuleb jĂ€lgida, et see toetaks pakettide vahel viivituse valikut. Jah, rand on erinev ja 100 megabitti ei garanteeri pakettide jĂ”udmist Ă”iges jĂ€rjekorras Ă”igeaegselt antud kohast.

Ja jah — kliendi seadistamisel tuleb viivitust iseseisvalt kohandada. Liigne timeout — botid rĂŒndavad, liiga vĂ€he — klient ei jĂ”ua. Liigne viivitus — klient ei jĂ”ua vĂ”i tuleb konflikte (vt „probleemid”), liiga vĂ€he — paketid eksivad internetis.

Timeout=5s puhul on tÀiesti töövÔimeline variant viivitus=100..500ms

Kuidas see ka ei kĂ”laks, on mĂ”ne arusaadava knock-kliendi leidmine sellele platvormile ĂŒsna keeruline. Selline, mis toetaks CLI, viivitust, TCP-d — ja ilma lisanditeta.

Windows

Ja selline, mis toetaks CLI, viivitust, TCP-d — ja ilma igasuguste Ă”rnade lisanditeta.

VÔimalik, et tasub proovida see on see. Ilmselt ei ole minu Google just parim.

Linux

Siin on kÔik lihtne:

dnf install knock -y
knock -d   11111 22222 33333

MacOS

Lihtsam on port paigaldada homebrew'st:
brew install knock
ja joonistada endale vajalikud kÀskude skriptid:

#!bin/sh
knock -d <delay> <dst_ip> 11111 22222 33333

iOS

Töötav variant — KnockOnD (tasuta, poest).

Android

„Knock on Ports“. See ei ole reklaam, aga see töötab. Ja arendajad on piisavalt vastutulelikud.

P.S. Markdown Hubis, loomulikult, andku talle jumal tervist kunagi


UPD1: tÀnu heale inimesele leiti töötav klient Windowsile.
UPD2: veel ĂŒks hea inimene tuletas meelde, et uute reeglite lisamine iptables'i lĂ”ppu ei ole alati kasulik. Aga — see sĂ”ltub.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster