Foar dyjingen dy't moatte foarsjen harsels, harren leafsten, mei tagong ta harren tsjinners fan oeral yn 'e wrâld fia SSH / RDP / oar, in lytse RTFM / spur.
Wy moatte dwaan sûnder VPN en oare toeters en bellen, fan elk apparaat by de hân.
En sadat jo net te folle mei de tsjinner hoege te oefenjen.
Alles wat jo nedich hawwe foar dit is
"Alles is op it ynternet," fansels (sels op
Wy sille oefenje mei it brûken fan Fedora/CentOS as foarbyld, mar dat makket neat út.
De spur is geskikt foar sawol begjinners as saakkundigen yn dizze saak, dus der sille opmerkingen wêze, mar se sille koarter wêze.
1. Tsjinner
-
knock-server ynstallearje:
yum/dnf install knock-server
-
konfigurearje it (bygelyks op 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
It diel "iepening" is ynsteld om nei 1 oere automatysk te sluten. Do wist it mar noait...
-
/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 ...
-
foarút:
service iptables restart service knockd start
-
jo kinne RDP tafoegje oan 'e firtuele Windows-tsjinner dy't binnen draait (/etc/knockd.conf; ferfange de ynterface-namme om jo smaak te passen):
[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
Wy folgje al ús kicks fan 'e kliïnt op' e tsjinner mei it kommando
iptables -S
.
2. Gids foar rakes
knockd.conf:
De mana befettet ek alles (mar dit is net krekt), mar knockd is in freon dy't nochal sûch is mei berjochten, dus jo moatte heul foarsichtich wêze.
- ferzje
Yn 'e Fedora / CentOS-repositories is de lêste knockd foar hjoed 0.63. Wa wol UDP - sykje 0.70 pakketten. - ynterface
Yn de standert Fedora/CentOS-konfiguraasje dizze line ôfwêzich. Foegje mei jo hannen ta, oars wurket it net. - skoft
Hjir kinne jo kieze neffens jo smaak. It is needsaaklik dat de kliïnt hat genôch tiid foar alle kicks - en de haven scanner bot sil ôfbrekke (en 146% sil scan). - start / stop / kommando.
As der ien kommando is, dan kommando, as d'r twa binne, dan start_command+stop_command.
As jo in flater meitsje, sil knockd stil bliuwe, mar sil net wurkje. - prototype
Teoretysk kin UDP brûkt wurde. Yn 'e praktyk mingde ik tcp en udp, en de kliïnt fan it strân yn Bali koe de poarte allinich de fyfde kear iepenje. Omdat TCP oankaam as it nedich is, mar UDP is gjin feit. Mar dit is wer in kwestje fan smaak. - folchoarder
De ymplisite rake is dat de sekwinsjes net krúsje moatte ... hoe te sizzen ...
Bygelyks dit:
open: 11111,22222,33333
close: 22222,11111,33333
Troch kick 11111 iepen sil wachtsje op de folgjende kick op 22222. Nei dizze (22222) kick sil it lykwols begjinne te wurkjen slute en alles sil brekke. Dit hinget ek ôf fan de fertraging fan de kliïnt. Sokke dingen ©.
iptables
As yn /etc/sysconfig/iptables dit is:
*nat
:PREROUTING ACCEPT [0:0]
It makket ús net echt lestich, dus hjir is it:
*filter
:INPUT ACCEPT [0:0]
...
-A INPUT -j REJECT --reject-with icmp-host-prohibited
It hinderet wol.
Sûnt knockd foeget regels ta oan 'e ein fan' e INPUT-ketting, sille wy ôfwize krije.
En it útskeakeljen fan dizze ôfwizing betsjut dat de auto iepenet foar alle wynen.
Om net te ferdwalen yn iptables wat te ynfoegje foar wat (lykas dit
- standert op CentOS / Fedora de earste de regel ("wat net ferbean is is tastien") sil wurde ferfongen troch it tsjinoerstelde,
- en wy fuortsmite de lêste regel.
It resultaat moat wêze:
*filter
:INPUT DROP [0:0]
...
#-A INPUT -j REJECT --reject-with icmp-host-prohibited
Jo kinne fansels REJECT dwaan ynstee fan DROP, mar mei DROP sil it libben leuker wêze foar bots.
3. Kliïnt
Dit plak is it meast nijsgjirrich (fanút myn eachpunt), om't jo net allinich moatte wurkje fan elk strân, mar ek fan elk apparaat.
Yn prinsipe, in oantal kliïnten wurde fermeld op
As jo in kliïnt kieze, moatte jo derfoar soargje dat it de opsje foar fertraging tusken pakketten stipet. Ja, d'r binne ferskillen tusken strannen en 100 megabits garandearje noait dat pakketten yn 'e juste folchoarder op' e krekte tiid komme fan in bepaalde lokaasje.
En ja, by it ynstellen fan in klant, moatte jo sels de fertraging selektearje. Tefolle time-out - bots sille oanfalle, te min - de kliïnt sil gjin tiid hawwe. Tefolle fertraging - de kliïnt sil it net op 'e tiid meitsje of d'r sil in konflikt wêze fan idioaten (sjoch "raken"), te min - de pakketten sille ferlern gean op it ynternet.
Mei timeout = 5s, fertraging = 100..500ms is in folslein wurkjende opsje
Windows
Hoe grappich it ek klinkt, it is frij net-triviaal foar Google in dúdlike knock-kliïnt foar dit platfoarm. Sa dat de CLI stipet fertraging, TCP - en sûnder bôgen.
Alternatyf kinne jo besykje
linux
It is hjir ienfâldich:
dnf install knock -y
knock -d <delay> <dst_ip> 11111 22222 33333
MacOS
De maklikste manier is om de haven fan homebrew te ynstallearjen:
brew install knock
en tekenje de nedige batchbestannen foar kommando's lykas:
#!bin/sh
knock -d <delay> <dst_ip> 11111 22222 33333
iOS
In wurkopsje is KnockOnD (fergees, fan 'e winkel).
Android
"Klop op havens" Net reklame, mar it wurket gewoan. En de ûntwikkelders binne frij responsyf.
PS markdown op Habré, fansels, God segenje him ienris ...
UPD 1: tank oan
UPD 2: Noch ien
Boarne: www.habr.com