Per quelli chì anu bisognu di furnisce elli stessi, i so amati, cù accessu à i so servitori da ogni locu in u mondu via SSH / RDP / altri, un picculu RTFM / spur.
Avemu bisognu di fà senza VPN è altre campane è fischi, da ogni dispusitivu in manu.
È cusì chì ùn avete micca eserciziu troppu cù u servitore.
Tuttu ciò chì avete bisognu per questu hè
"Tuttu hè in Internet", di sicuru (ancu nantu
Praticaremu cù Fedora / CentOS cum'è un esempiu, ma ùn importa micca.
U spur hè adattatu per i principianti è l'esperti in questa materia, cusì ci saranu cumenti, ma seranu più brevi.
1. Servitore
-
stallà knock-server:
yum/dnf install knock-server
-
cunfigurallu (per esempiu in 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
A parte "apertura" hè stallata per chjude automaticamente dopu à 1 ora. Ùn sapete mai...
-
/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 ...
-
avanti :
service iptables restart service knockd start
-
pudete aghjunghje RDP à u servitore virtuale di Windows chì giranu in l'internu (/etc/knockd.conf; sustituisce u nome di l'interfaccia per adattà à u vostru gustu):
[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
Seguimu tutti i nostri calci da u cliente nantu à u servitore cù u cumandimu
iptables -S
.
2. Guida à i razzi
knockd.conf:
U mana cuntene ancu tuttu (ma questu hè imprecisu), ma knockd hè un amicu piuttostu stingy cù missaghji, cusì avete bisognu à esse assai attenti.
- versione
In i repositori Fedora / CentOS, l'ultimu knockd per oghje hè 0.63. Quale vole UDP - cercate 0.70 pacchetti. - interfaccia
In a cunfigurazione predeterminata Fedora / CentOS sta linea assenza. Aghjunghjite cù e vostre mani, altri ùn viaghja micca. - pausa
Quì pudete sceglie secondu u vostru gustu. Hè necessariu chì u cliente hà abbastanza tempu per tutti i calci - è u bot scanner di u portu si romperà (è 146% scanserà). - start / stop / cumanda.
Se ci hè un cumandamentu, allora cumanda, se ci sò dui, allora start_command + stop_command.
Se fate un sbagliu, Knockd resta in silenziu, ma ùn funziona micca. - prototipu
In teoria, UDP pò esse usatu. In pratica, aghju mischju tcp è udp, è u cliente da a spiaggia in Bali hà sappiutu apre a porta solu a quinta volta. Perchè TCP hè ghjuntu quandu hè necessariu, ma UDP ùn hè micca un fattu. Ma questu hè una questione di gustu, di novu. - secunnu
U rake implicitu hè chì e sequenze ùn deve micca intersece ... cumu si mette ...
Per esempiu, questu:
open: 11111,22222,33333
close: 22222,11111,33333
À u colpu 11111 apartu aspittàrà u prossimu calciu à 22222. Tuttavia, dopu à questu (22222) calciu hà da cumincià à travaglià chiudi è tuttu si romperà. Questu dipende ancu da u ritardu di u cliente. Tali cose ©.
iptables
Se in /etc/sysconfig/iptables questu hè:
*nat
:PREROUTING ACCEPT [0:0]
Ùn ci preoccupa micca veramente, dunque quì hè quì:
*filter
:INPUT ACCEPT [0:0]
...
-A INPUT -j REJECT --reject-with icmp-host-prohibited
Si interferisce.
Siccomu knockd aghjunghje regule à a fine di a catena INPUT, avemu da ricusà.
È spegne stu rifiutu significa apre a vittura à tutti i venti.
Per ùn perde micca in iptables ciò chì inserisce prima di ciò chì (cum'è questu
- predeterminatu nantu à CentOS/Fedora u primu a regula ("ciò chì ùn hè micca pruibitu hè permessu") serà rimpiazzata da u cuntrariu,
- è sguassate l'ultima regula.
U risultatu deve esse:
*filter
:INPUT DROP [0:0]
...
#-A INPUT -j REJECT --reject-with icmp-host-prohibited
Pudete, sicuru, fà REJECT invece di DROP, ma cù DROP a vita serà più divertente per i bots.
3. Cliente
Stu locu hè u più interessante (da u mo puntu di vista), postu chì avete bisognu di travaglià micca solu da ogni spiaggia, ma ancu da ogni dispusitivu.
In principiu, una quantità di clienti sò listati
Quandu sceglite un cliente, avete bisognu di assicurà chì sustene l'opzione di ritardu trà i pacchetti. Iè, ci sò diffirenzii trà e spiagge è 100 megabits ùn guarantisci mai chì i pacchetti ghjunghjeranu in l'ordine ghjustu à u mumentu propiu da un locu determinatu.
È iè, quandu crea un cliente, avete bisognu di selezziunate u ritardu stessu. Troppu timeout - i bots attaccheranu, troppu pocu - u cliente ùn hà micca tempu. Troppu ritardu - u cliente ùn farà micca in tempu o ci sarà un cunflittu di idioti (vede "rakes"), troppu pocu - i pacchetti si perderanu in Internet.
Cù timeout = 5s, ritardu = 100..500ms hè una opzione cumpletamente di travagliu
Windows
Ùn importa micca quantu sona divertente, hè abbastanza micca triviale per Google un cliente chjaru per questa piattaforma. Tali chì u CLI sustene ritardu, TCP - è senza arcu.
In alternativa, pudete pruvà
Linux
Hè simplice quì:
dnf install knock -y
knock -d <delay> <dst_ip> 11111 22222 33333
MacOS
A manera più faciule hè di stallà u portu da homebrew:
brew install knock
è tracciate i schedari batch necessarii per i cumandamenti cum'è:
#!bin/sh
knock -d <delay> <dst_ip> 11111 22222 33333
iOS
Una opzione di travagliu hè KnockOnD (gratuitu, da a tenda).
Android
"Knock on Ports" Ùn hè micca publicità, ma funziona solu. È i sviluppatori sò abbastanza responsive.
PS markdown nantu à Habré, sicuru, Diu u benedica un ghjornu...
UPD1: grazie à
UPD2: Un altru
Source: www.habr.com