För dem som vill ge sig sjĂ€lva, det Ă€lskade, tillgĂ„ng till sina servrar frĂ„n vilken plats som helst i vĂ€rlden via SSH/RDP/annat â en liten RTFM/guide.
Vi behöver klara oss utan VPN och andra avancerade lösningar, med vilken apparat som helst i handen.
Och sÄ att man inte behöver krÄngla för mycket med servern.
Allt som behövs för detta Ă€r â , skickliga hĂ€nder och 5 minuters arbete.
"Det finns allt pĂ„ internet", visst (Ă€ven pĂ„ ), men nĂ€r det kommer till den konkreta implementeringen â dĂ„ börjar problemen...
Vi kommer att öva med exempel frÄn Fedora/CentOS, men det spelar ingen roll.
Guiden passar bÄde nybörjare och experter, sÄ det kommer att finnas kommentarer, men kortare.
1. Server
installera knock-server:
yum/dnf install knock-serverkonfigurera den (till exempel för 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"Ăppning"-delen Ă€r instĂ€lld pĂ„ automatisk stĂ€ngning efter 1 timme. Man 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Ät:
service iptables restart service knockd startman kan lÀgga till RDP pÄ en roterande virtuell Windows Server (/etc/knockd.conf; sÀtt in grÀnssnittets namn efter eget val):
[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.2Alla vÄra klagomÄl frÄn kunden övervakas pÄ servern med kommandot
iptables -S.
2. Resa genom fÀllorna
knockd.conf:
Det finns ocksÄ allt i manualerna (men det Àr inte sÀkert), men knockd Àr en person som Àr ganska snÄl med meddelanden, sÄ man mÄste vara vÀldigt försiktig.
- version
I Fedora/CentOS-repositorierna Ă€r den senaste knockd versionen idag â 0.63. Den som vill ha UDP â leta efter paket 0.70. - interface
I den standardkonfigurationen Fedora/CentOS finns den hÀr raden inte. LÀgga till för hand, annars kommer det inte att fungera. - timeout
HĂ€r kan man vĂ€lja efter smak. Det mĂ„ste finnas tid för klienten att göra alla pings â och botportscannern ska förhindras (och de kommer att scanna 146%). - start/stop/command.
Om det Àr ett kommando sÄ Àr det command, om det Àr tvÄ sÄ Àr det start_command+stop_command.
Om du gör ett misstag kommer knockd att vara tyst, men det kommer inte att fungera. - proto
Teoretiskt sett kan man anvÀnda UDP. I praktiken blandade jag tcp och udp, och klienten pÄ stranden i Bali kunde öppna sin grind först efter femte försöket. Eftersom TCP kom fram nÀr det behövdes, men UDP Àr osÀkert. Men det Àr en smaksak ocksÄ. - sekvens
Det finns dolda hinder, i och med att sekvenserna inte fÄr överlappa... hur ska man sÀga...
Till exempel sÄ hÀr:
öppen: 11111,22222,33333
stÀng: 22222,11111,33333För spark 11111 open kommer det att vÀnta pÄ nÀsta spark pÄ 22222. Men med denna (22222) spark börjar det att fungera stÀng och allt kommer att gÄ sönder. Det beror Àven pÄ klientens fördröjning. SÄ hÀr Àr det ©.
iptables
Om i /etc/sysconfig/iptables detta Àr:
*nat
:PREROUTING ACCEPT [0:0]stör oss inte speciellt, sÄ Àr detta:
*filter
:INPUT ACCEPT [0:0]
...
-A INPUT -j REJECT --reject-with icmp-host-prohibitedStör det verkligen.
Eftersom knockd lÀgger till regler i slutet av INPUT-kedjan, kommer vi att fÄ reject.
Att stÀnga av detta reject Àr som att öppna maskinen för alla vindar.
För att inte komplicera iptables med vad som ska sÀttas före vad (som föreslÄr) gör vi det enklare:
- standard i CentOS/Fedora den första regeln ("vad som inte Àr förbjudet Àr tillÄtet") byter vi mot det motsatta,
- och den sista regeln tar vi bort.
I slutÀndan bör det se ut sÄ hÀr:
*filter
:INPUT DROP [0:0]
...
#-A INPUT -j REJECT --reject-with icmp-host-prohibitedMan kan förstÄs göra REJECT istÀllet för DROP, men med DROP fÄr botarna det enklare.
3. Klient
HÀr blir det riktigt intressant (enligt min Äsikt), eftersom man mÄste kunna arbeta frÄn vilken strand som helst, och frÄn vilken enhet som helst.
I allmÀnhet finns en rad kunder nÀmnda pÄ projektet, men det Àr samma gamla historia "det finns allt pÄ internet". DÀrför nÀmner jag det som fungerar hÀr och nu.
NÀr man vÀljer klient mÄste man se till att den stöder fördröjningsalternativet mellan paketen. Ja, strand Àr inte alltid strand och 100 megabit garanterar inget nÀr det kommer till att paketen anlÀnder i rÀtt ordning vid rÀtt tidpunkt frÄn den hÀr platsen.
Och ja â nĂ€r man konfigurerar klienten mĂ„ste man justera fördröjningen sjĂ€lv. För mycket timeout â botarna kommer att attackera, för lite â klienten hinner inte. För mycket fördröjning â klienten hinner inte eller det blir konflikt vid knackanden (se "hinder"), för lite â paketen gĂ„r vilse pĂ„ nĂ€tet.
Med timeout=5s Àr delay=100..500ms en helt fungerande lösning.
Windows
Hur konstigt det Ă€n lĂ„ter sĂ„ Ă€r det ganska komplicerat att hitta en begriplig knock-klient för denna plattform. En som har CLI, stöder fördröjning, TCP â och utan krusiduller.
Ett alternativ kan vara att prova . Tydligen Àr min Google inte bra.
Linux
HÀr Àr det enkelt:
dnf install knock -y
knock -d 11111 22222 33333MacOS
Det enklaste sÀttet Àr att installera porten frÄn homebrew:
brew install knock
och rita upp de nödvÀndiga batchfilkommandona:
#!bin/sh
knock -d <delay> <dst_ip> 11111 22222 33333iOS
En fungerande variant â KnockOnD (gratis, frĂ„n butiken).
Android
«Knock on Ports». Ingen reklam, det fungerar bara. Och utvecklarna Àr tillrÀckligt responsiva.
P.S. Markdown pÄ Habré, naturligtvis, mÄ Gud bevara det nÄgon gÄng...
UPD1: tack vare finns det för Windows.
UPD2: ytterligare en pĂ„minde om att det inte alltid Ă€r bra att sĂ€tta nya regler lĂ€ngst ner i iptables. Men â det beror pĂ„.
KĂ€lla: habr.com
