Nasveti in triki za Linux: strežnik, odpri se

Za tiste, ki morajo sebi in svojim bližnjim zagotoviti dostop do svojih strežnikov od koderkoli na svetu preko SSH/RDP/other, majhen RTFM/spur.

Moramo delati brez VPN-ja in drugih zvončkov, iz katere koli naprave pri roki.

In da vam ne bo treba preveč telovaditi s strežnikom.

Vse kar potrebujete za to je trkal, ravne roke in 5 minut dela.

"Vse je na internetu," seveda (tudi na Habré), ko pa gre za določeno izvedbo, se tukaj začne ...

Kot primer bomo vadili Fedora/CentOS, vendar to ni pomembno.

Spur je primeren tako za začetnike kot za strokovnjake v tej zadevi, zato bodo komentarji, vendar bodo krajši.

1. Strežnik

  • namestite knock-server:
    yum/dnf install knock-server

  • konfigurirajte (na primer na 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

    Del za "odpiranje" je nastavljen na samodejno zapiranje po 1 uri. Nikoli ne veš...

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

  • naprej:

    service iptables restart
    service knockd start

  • RDP lahko dodate virtualnemu strežniku Windows Server, ki se vrti znotraj (/etc/knockd.conf; zamenjajte ime vmesnika po svojem okusu):

    [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

    Z ukazom sledimo vsem našim udarcem od stranke na strežniku iptables -S.

2. Vodnik za grablje

knockd.conf:

V mani je tudi vse (vendar je to netočno), vendar je knockd prijatelj, ki je precej skop s sporočili, zato morate biti zelo previdni.

  • različica
    V repozitorijih Fedora/CentOS je najnovejši knockd za danes 0.63. Kdor hoče UDP - išče pakete 0.70.
  • vmesnik
    V privzeti konfiguraciji Fedora/CentOS ta vrstica No. Dodajte z rokami, sicer ne bo šlo.
  • Prekinitev
    Tukaj lahko izberete po svojem okusu. Potrebno je, da ima odjemalec dovolj časa za vse brce - in bot za skeniranje vrat se bo pokvaril (in 146% bo skeniralo).
  • zagon/ustavitev/ukaz.
    Če je en ukaz, potem ukaz, če sta dva, pa start_command+stop_command.
    Če se zmotite, bo knockd ostal tih, vendar ne bo deloval.
  • proto
    Teoretično je mogoče uporabiti UDP. V praksi sem zmešal tcp in udp, klient s plaže na Baliju pa je lahko odprl vrata šele petič. Ker je TCP prišel, ko je bilo potrebno, UDP pa ni dejstvo. Ampak to je spet stvar okusa.
  • Zaporedje
    Implicitni rake je, da se zaporedja ne bi smela sekati... kako bi se reklo...

Na primer to:

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

Z udarcem 11111 odprite bo počakal na naslednji udarec pri 22222. Vendar bo po tem (22222) udarcu začel delovati Zapri in vse se bo zlomilo. To je odvisno tudi od naročnikove zamude. Takšne stvari ©.

iptables

Če je v /etc/sysconfig/iptables to:

*nat
:PREROUTING ACCEPT [0:0]

To nas pravzaprav ne moti, zato je tukaj:

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

Moti.

Ker knockd doda pravila na konec verige INPUT, bomo prejeli zavrnitev.

In izklop tega zavračanja pomeni odpiranje avtomobila na vse vetrove.

Da se ne izgubite v iptables, kaj vstaviti pred kaj (tako ljudje predlagaj) poenostavimo:

  • privzeto na CentOS/Fedora 1. pravilo (»kar ni prepovedano je dovoljeno«) bo zamenjano z nasprotnim,
  • in odstranimo zadnje pravilo.

Rezultat bi moral biti:

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

Seveda lahko naredite REJECT namesto DROP, vendar bo z DROP življenje za bote bolj zabavno.

3. Stranka

Ta kraj je najbolj zanimiv (z mojega vidika), saj morate delati ne samo s katere koli plaže, ampak tudi s katere koli naprave.

Načeloma je navedenih več strank Online projekt, vendar je to iz iste serije "vse je na internetu." Zato bom tukaj in zdaj naštel tisto, kar mi deluje na dosegu roke.

Pri izbiri odjemalca se morate prepričati, da podpira možnost zakasnitve med paketi. Da, med plažami so razlike in 100 megabitov nikoli ne zagotavlja, da bodo paketi z določene lokacije prispeli v pravem vrstnem redu ob pravem času.

In ja, pri nastavitvi odjemalca morate sami izbrati zakasnitev. Preveč časovne omejitve - boti bodo napadli, premalo - stranka ne bo imela časa. Preveč zamude - odjemalec ne bo prišel pravočasno ali pa bo prišlo do konflikta idiotov (glejte "grablje"), premalo - paketi se bodo izgubili na internetu.

S časovno omejitvijo = 5 s je zakasnitev = 100..500 ms povsem delujoča možnost

Windows

Ne glede na to, kako smešno se sliši, je za Google precej netrivialno odjemalec za to platformo. Tako, da CLI podpira zamudo, TCP - in brez lokov.

Lahko pa poskusite tudi to je to. Očitno moj Google ni torta.

Linux

Tukaj je preprosto:

dnf install knock -y
knock -d <delay> <dst_ip> 11111 22222 33333

MacOS

Najlažji način je namestitev vrat iz homebrew:
brew install knock
in narišite potrebne paketne datoteke za ukaze, kot so:

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

iOS

Delujoča možnost je KnockOnD (brezplačno, iz trgovine).

Android

"Potrkaj na vrata" Ni oglaševanje, ampak preprosto deluje. In razvijalci so precej odzivni.

PS znižanje na Habréju, seveda, Bog ga blagoslovi nekoč ...

UPD1: zahvale gredo dobri osebi našel delovna stranka pod Windows.
UPD2: Še en dober človek spomnil me je, da postavljanje novih pravil na konec iptables ni vedno uporabno. Ampak – odvisno.

Vir: www.habr.com

Dodaj komentar