Neile, kes peavad pakkuma endale, oma lähedastele juurdepääsu oma serveritele kõikjal maailmas SSH/RDP/muu kaudu, väike RTFM/spur.
Peame hakkama saama ilma VPN-i ja muude kellade ja viledeta mis tahes käepärast olevast seadmest.
Ja et te ei peaks serveriga liiga palju treenima.
Kõik, mida selleks vaja on, on
"Kõik on Internetis" muidugi (isegi
Harjutame Fedora/CentOS-i kasutamist näitena, kuid see ei oma tähtsust.
Spur sobib nii algajatele kui ka asjatundjatele, seega kommentaare tuleb, aga need on lühemad.
1. Server
-
installi knock-server:
yum/dnf install knock-server
-
seadistage see (näiteks ssh-s) - /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
"Avamise" osa on seatud 1 tunni pärast automaatselt sulguma. Ei või iial teada...
-
/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
-
saate lisada RDP-d sees pöörlevale virtuaalsele Windows Serverile (/etc/knockd.conf; asendage liidese nimi vastavalt oma maitsele):
[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
Jälgime kõiki oma kliendilt saadud lööke serveris käsuga
iptables -S
.
2. Rehade juhend
knockd.conf:
Mana sisaldab ka kõike (aga see on ebatäpne), kuid knockd on sõber, kes on sõnumitega üsna ihne, seega peate olema väga ettevaatlik.
- versioon
Fedora/CentOS-i hoidlates on tänane viimane koputus 0.63. Kes tahab UDP-d - otsige 0.70 pakette. - liides
Fedora/CentOS-i vaikekonfiguratsioonis see rida ei. Lisage oma kätega, muidu see ei tööta. - timeout
Siin saate valida vastavalt oma maitsele. Vajalik on, et kliendil oleks piisavalt aega kõikideks löökideks – ja portskanneri bot läheb katki (ja 146% skannib). - start/stopp/käsk.
Kui on üks käsk, siis käsk, kui on kaks, siis start_command+stop_command.
Kui teete vea, jääb knockd vaikima, kuid ei tööta. - proto
Teoreetiliselt saab UDP-d kasutada. Praktikas segasin tcp ja udp ning Bali rannast pärit klient sai värava avada alles viiendal korral. Sest TCP saabus siis, kui vaja, aga UDP pole fakt. Aga see on jällegi maitse asi. - jada
Kaudne reha on see, et jadad ei tohiks ristuda... kuidas seda öelda...
Näiteks see:
open: 11111,22222,33333
close: 22222,11111,33333
Löögiga 11111 avatud ootab järgmist lööki kell 22222. Kuid peale seda (22222) lööki hakkab see tööle lähedal ja kõik läheb katki. See sõltub ka kliendi hilinemisest. Sellised asjad ©.
iptables
Kui failis /etc/sysconfig/iptables on see:
*nat
:PREROUTING ACCEPT [0:0]
See meid tegelikult ei häiri, nii et siin see on:
*filter
:INPUT ACCEPT [0:0]
...
-A INPUT -j REJECT --reject-with icmp-host-prohibited
See segab.
Kuna knockd lisab reeglid INPUT-ahela lõppu, saame reject.
Ja selle tagasilükkamise väljalülitamine tähendab auto avamist kõikidele tuultele.
Et mitte iptablesis ära eksida, mida enne mida sisestada (nagu see
- vaikimisi CentOS/Fedoras esimene reegel ("mis pole keelatud, see on lubatud") asendatakse vastupidisega,
- ja eemaldame viimase reegli.
Tulemus peaks olema:
*filter
:INPUT DROP [0:0]
...
#-A INPUT -j REJECT --reject-with icmp-host-prohibited
Muidugi saate DROP-i asemel teha REJECT-i, kuid DROP-iga on robotite jaoks elu lõbusam.
3. Klient
See koht on kõige huvitavam (minu vaatenurgast), kuna peate töötama mitte ainult mis tahes rannast, vaid ka mis tahes seadmest.
Põhimõtteliselt on loetletud mitu klienti
Kliendi valimisel peate veenduma, et see toetab pakettide vahelist viivitust. Jah, randade vahel on erinevusi ja 100 megabitti ei garanteeri kunagi, et paketid jõuavad antud asukohast õiges järjekorras õigel ajal kohale.
Ja jah, kliendi seadistamisel tuleb viivitus ise valida. Liiga palju aegumist – robotid ründavad, liiga vähe – kliendil pole aega. Liiga palju viivitust - klient ei jõua õigeks ajaks või tekib idiootide konflikt (vt "rehad"), liiga vähe - paketid lähevad internetti kaduma.
Timeout=5s korral on viivitus=100...500ms täiesti töötav valik
Windows
Ükskõik kui naljakalt see ka ei kõlaks, pole Google'i jaoks selle platvormi jaoks üsna triviaalne. Selline, et CLI toetab viivitust, TCP-d ja ilma vibudeta.
Teise võimalusena võite proovida
Linux
Siin on kõik lihtne:
dnf install knock -y
knock -d <delay> <dst_ip> 11111 22222 33333
MacOS
Lihtsaim viis on installida port Homebrewist:
brew install knock
ja joonistage vajalikud pakkfailid selliste käskude jaoks nagu:
#!bin/sh
knock -d <delay> <dst_ip> 11111 22222 33333
iOS
Töötav variant on KnockOnD (tasuta, poest).
Android
"Knock on Ports" Mitte reklaam, aga see lihtsalt töötab. Ja arendajad on üsna vastutulelikud.
PS allahindlus Habré kohta muidugi, jumal õnnistagu teda kunagi...
UPD1: tänu
UPD2: Veel üks
Allikas: www.habr.com