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
"Vse je na internetu," seveda (tudi na
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
- 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
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
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
UPD2: Še en
Vir: www.habr.com