Voor degenen die zichzelf en hun dierbaren overal ter wereld toegang moeten geven tot hun servers via SSH/RDP/anders, een kleine RTFM/spur.
We moeten het doen zonder VPN en andere toeters en bellen, vanaf elk apparaat dat voorhanden is.
En zodat je niet te veel hoeft te oefenen met de server.
Het enige wat je hiervoor nodig hebt is
“Alles staat op internet”, natuurlijk (zelfs op
We zullen oefenen met Fedora/CentOS als voorbeeld, maar dat maakt niet uit.
De uitloper is geschikt voor zowel beginners als experts op dit gebied, dus er zullen opmerkingen zijn, maar deze zullen korter zijn.
1. Serveerster
-
installeer knock-server:
yum/dnf install knock-server
-
configureer het (bijvoorbeeld 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
Het “openingsgedeelte” is ingesteld om na 1 uur automatisch te sluiten. Je weet maar nooit...
-
/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 ...
-
vooruit:
service iptables restart service knockd start
-
je kunt RDP toevoegen aan de virtuele Windows Server die binnenin draait (/etc/knockd.conf; vervang de interfacenaam naar jouw smaak):
[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
We volgen al onze kicks van de client op de server met het commando
iptables -S
.
2. Gids voor harken
knockd.conf:
De mana bevat ook alles (maar dit is onnauwkeurig), maar knockd is een vriend die nogal gierig is met berichten, dus je moet heel voorzichtig zijn.
- versie
In de Fedora/CentOS repository's is de laatste klop voor vandaag 0.63. Wie UDP wil, zoek naar pakketten van 0.70. - interface
In de standaard Fedora/CentOS-configuratie is deze regel Geen. Voeg het toe met je handen, anders werkt het niet. - time-out
Hier kunt u kiezen op basis van uw smaak. Het is noodzakelijk dat de client genoeg tijd heeft voor alle kicks - en de poortscannerbot zal kapot gaan (en 146% zal scannen). - starten/stoppen/commando.
Als er één commando is, dan commando, als er twee zijn, dan start_command+stop_command.
Als u een fout maakt, blijft knockd stil, maar werkt niet. - daarom
Theoretisch kan UDP worden gebruikt. In de praktijk heb ik tcp en udp gemengd, en de klant van het strand op Bali kon de poort pas voor de vijfde keer openen. Omdat TCP arriveerde toen het nodig was, maar UDP is geen feit. Maar dit is wederom een kwestie van smaak. - volgorde
De impliciete hark is dat de reeksen elkaar niet mogen kruisen... hoe zeg je dat...
Dit bijvoorbeeld:
open: 11111,22222,33333
close: 22222,11111,33333
Via kick 11111 open zal wachten op de volgende kick op 22222. Na deze (22222) kick zal het echter beginnen te werken dichtbij en alles zal kapot gaan. Dit is mede afhankelijk van de vertraging van de klant. Zulke dingen ©.
iptables
Als in /etc/sysconfig/iptables dit is:
*nat
:PREROUTING ACCEPT [0:0]
Het stoort ons niet echt, dus hier is het:
*filter
:INPUT ACCEPT [0:0]
...
-A INPUT -j REJECT --reject-with icmp-host-prohibited
Het interfereert.
Omdat knockd regels toevoegt aan het einde van de INPUT-keten, krijgen we een afwijzing.
En het uitschakelen van deze afwijzing betekent dat de auto voor alle winden wordt geopend.
Om niet te verdwalen in iptables, wat moet je vóór wat invoegen (zoals dit
- standaard op CentOS/Fedora eerste de regel (“wat niet verboden is, is toegestaan”) wordt vervangen door het tegenovergestelde,
- en we verwijderen de laatste regel.
Het resultaat zou moeten zijn:
*filter
:INPUT DROP [0:0]
...
#-A INPUT -j REJECT --reject-with icmp-host-prohibited
Je kunt natuurlijk REJECT doen in plaats van DROP, maar met DROP wordt het leven leuker voor bots.
3. Klant
Deze plek is het meest interessant (vanuit mijn oogpunt), omdat je niet alleen vanaf elk strand moet werken, maar ook vanaf elk apparaat.
In principe wordt een aantal opdrachtgevers genoteerd
Wanneer u een client kiest, moet u ervoor zorgen dat deze de vertragingsoptie tussen pakketten ondersteunt. Ja, er zijn verschillen tussen stranden en 100 megabit garandeert nooit dat pakketten vanaf een bepaalde locatie in de juiste volgorde op het juiste moment aankomen.
En ja, bij het aanmaken van een client moet je zelf de vertraging selecteren. Te veel time-out - bots zullen aanvallen, te weinig - de client zal geen tijd hebben. Te veel vertraging - de klant haalt het niet op tijd of er ontstaat een conflict van idioten (zie "rakes"), te weinig - de pakketten gaan verloren op internet.
Met time-out=5s is vertraging=100..500ms een volledig werkende optie
Dakramen en raamkozijnen
Hoe grappig het ook klinkt, het is nogal niet triviaal dat Google een duidelijke knock-client voor dit platform is. Zodanig dat de CLI vertraging, TCP ondersteunt - en zonder buigingen.
Als alternatief kunt u het proberen
Linux
Het is hier eenvoudig:
dnf install knock -y
knock -d <delay> <dst_ip> 11111 22222 33333
MacOS
De eenvoudigste manier is om de port vanuit homebrew te installeren:
brew install knock
en teken de benodigde batchbestanden voor opdrachten zoals:
#!bin/sh
knock -d <delay> <dst_ip> 11111 22222 33333
iOS
Een werkende optie is KnockOnD (gratis, uit de winkel).
Android
"Klop op poorten" Geen reclame, maar het werkt gewoon. En de ontwikkelaars zijn behoorlijk responsief.
PS-korting op Habré, natuurlijk, God zegene hem ooit...
UPD1: dankzij
UPD2: Nog een
Bron: www.habr.com