För de som behöver förse sig själva, sina nära och kära, med tillgång till sina servrar från var som helst i världen via SSH/RDP/annan, en liten RTFM/spur.
Vi måste klara oss utan VPN och andra bells and whistles, från vilken enhet som helst.
Och så att du inte behöver träna för mycket med servern.
Allt du behöver för detta är
"Allt finns på Internet," naturligtvis (även på
Vi kommer att träna på att använda Fedora/CentOS som exempel, men det spelar ingen roll.
Sporen passar både nybörjare och experter i denna fråga, så det kommer kommentarer, men de blir kortare.
1. Server
-
installera knock-server:
yum/dnf install knock-server
-
konfigurera det (till exempel på 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
"Öppningsdelen" är inställd på att stängas automatiskt efter 1 timme. Du vet aldrig...
-
/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 ...
-
fram:
service iptables restart service knockd start
-
du kan lägga till RDP till den virtuella Windows-servern som snurrar inuti (/etc/knockd.conf; ersätt gränssnittsnamnet för att passa din smak):
[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
Vi spårar alla våra kickar från klienten på servern med kommandot
iptables -S
.
2. Guide till krattor
knockd.conf:
Manan innehåller också allt (men detta är felaktigt), men knockd är en vän som är ganska snål med meddelanden, så du måste vara mycket försiktig.
- version
I Fedora/CentOS-förvaren är den senaste knockd för idag 0.63. Vem vill ha UDP - leta efter 0.70 paket. - gränssnitt
I standard Fedora/CentOS-konfigurationen denna rad ingen. Lägg till med händerna, annars fungerar det inte. - timeout
Här kan du välja efter din smak. Det är nödvändigt att klienten har tillräckligt med tid för alla kickar - och portscannerboten kommer att gå sönder (och 146% kommer att skanna). - start/stopp/kommando.
Om det finns ett kommando, kommando, om det finns två, start_command+stop_command.
Om du gör ett misstag kommer knockd att förbli tyst, men kommer inte att fungera. - därför
Teoretiskt kan UDP användas. I praktiken blandade jag tcp och udp, och klienten från stranden på Bali kunde öppna porten bara femte gången. Eftersom TCP kom när det behövdes, men UDP är inte ett faktum. Men det här är en smaksak, igen. - sekvens
Den implicita raken är att sekvenserna inte ska skära varandra... hur ska man uttrycka det...
Till exempel detta:
open: 11111,22222,33333
close: 22222,11111,33333
Med spark 11111 öppet väntar på nästa kick vid 22222. Men efter denna (22222) kick kommer den att börja fungera stäng och allt kommer att gå sönder. Detta beror också på kundens försening. Sådana saker ©.
iptables
Om i /etc/sysconfig/iptables är detta:
*nat
:PREROUTING ACCEPT [0:0]
Det stör oss inte riktigt, så här är det:
*filter
:INPUT ACCEPT [0:0]
...
-A INPUT -j REJECT --reject-with icmp-host-prohibited
Det stör.
Eftersom knockd lägger till regler i slutet av INPUT-kedjan kommer vi att få avslag.
Och att stänga av detta avvisande innebär att bilen öppnas för alla vindar.
För att inte gå vilse i iptables vad ska man infoga före vad (så här
- standard på CentOS/Fedora först regeln ("det som inte är förbjudet är tillåtet") kommer att ersättas med det motsatta,
- och vi tar bort den sista regeln.
Resultatet bör bli:
*filter
:INPUT DROP [0:0]
...
#-A INPUT -j REJECT --reject-with icmp-host-prohibited
Du kan naturligtvis göra REJECT istället för DROP, men med DROP blir livet roligare för bots.
3. Klient
Denna plats är den mest intressanta (ur min synvinkel), eftersom du behöver arbeta inte bara från vilken strand som helst, utan också från vilken enhet som helst.
I princip finns ett antal kunder listade på
När du väljer en klient måste du se till att den stöder fördröjningsalternativet mellan paket. Ja, det finns skillnader mellan stränder och 100 megabit garanterar aldrig att paket kommer fram i rätt ordning vid rätt tidpunkt från en given plats.
Och ja, när du skapar en klient måste du välja fördröjningen själv. För mycket timeout - bots kommer att attackera, för lite - klienten kommer inte att ha tid. För mycket fördröjning - klienten kommer inte fram i tid eller det kommer att uppstå en konflikt mellan idioter (se "rakes"), för lite - paketen kommer att gå vilse på Internet.
Med timeout=5s är delay=100..500ms ett helt fungerande alternativ
Windows
Oavsett hur roligt det låter är det ganska otrivialt att Google en tydlig knock-klient för den här plattformen. Sådan att CLI stöder fördröjning, TCP - och utan bågar.
Som ett alternativ kan du prova
Linux
Det är enkelt här:
dnf install knock -y
knock -d <delay> <dst_ip> 11111 22222 33333
MacOS
Det enklaste sättet är att installera porten från homebrew:
brew install knock
och rita de nödvändiga batchfilerna för kommandon som:
#!bin/sh
knock -d <delay> <dst_ip> 11111 22222 33333
iOS
Ett fungerande alternativ är KnockOnD (gratis, från butiken).
Android
"Knacka på hamnar" Inte reklam, men det fungerar bara. Och utvecklarna är ganska lyhörda.
PS nedgång på Habré, naturligtvis, Gud välsigne honom en dag...
UPD1: tack vare
UPD2: En till
Källa: will.com