Azoknak, akiknek biztosítaniuk kell maguknak, szeretteiknek a hozzáférést a szervereikhez a világ bármely pontjáról SSH/RDP/egyéb, egy kis RTFM/spur segítségével.
A VPN-t és más csengőket és sípokat nélkülöznünk kell minden kéznél lévő eszközről.
És hogy ne kelljen túl sokat tornáznia a szerverrel.
Ehhez csak annyi kell
„Minden megtalálható az interneten” természetesen (még a tovább is
Gyakoroljuk a Fedora/CentOS használatát példaként, de ez nem számít.
A sarkantyú kezdőknek és jártasoknak is megfelelő ebben a témában, szóval lesznek kommentek, de azok rövidebbek lesznek.
1. Szerver
-
knock-szerver telepítése:
yum/dnf install knock-server
-
állítsa be (például ssh-n) - /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
A „nyitó” rész 1 óra elteltével automatikusan záródik. Sose tudhatod...
-
/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 ...
-
előre:
service iptables restart service knockd start
-
hozzáadhat RDP-t a benne pörgő virtuális Windows Serverhez (/etc/knockd.conf; cserélje ki a felület nevét ízlésének megfelelően):
[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
A paranccsal nyomon követjük a klienstől érkező összes rúgásunkat a szerveren
iptables -S
.
2. Útmutató a gereblyékhez
knockd.conf:
A mana is tartalmaz mindent (de ez pontatlan), de knockd egy barát, aki elég fukar az üzenetekkel, ezért nagyon kell vigyázni.
- változat
A Fedora/CentOS tárolókban a mai legfrissebb kopogtatás 0.63. Aki UDP-t akar, keressen 0.70-es csomagokat. - felület
Az alapértelmezett Fedora/CentOS konfigurációban ez a sor nincs. Add hozzá kézzel, különben nem fog működni. - timeout
Itt ízlése szerint választhat. Szükséges, hogy a kliensnek legyen elég ideje minden rúgásra - és a portszkenner bot elromlik (és 146% -a szkennel). - start/stop/parancs.
Ha egy parancs van, akkor parancs, ha kettő, akkor start_command+stop_command.
Ha hibázik, a knockd néma marad, de nem működik. - ezért
Elméletileg az UDP használható. Gyakorlatilag kevertem a tcp-t és az udp-t, és a bali strandról érkező kliens csak ötödik alkalommal tudta kinyitni a kaput. Mert a TCP szükség esetén érkezett, de az UDP nem tény. De ez megint ízlés dolga. - sorozat
Az implicit rake az, hogy a sorozatok nem metszhetik egymást... hogy is mondjam...
Például ezt:
open: 11111,22222,33333
close: 22222,11111,33333
11111-es rúgással nyitva 22222-nél várja a következő rúgást. Azonban ez a (22222) rúgás után elkezd működni közel és minden összetörik. Ez függ az ügyfél késésétől is. Ilyen dolgok ©.
iptables
Ha az /etc/sysconfig/iptables fájlban ez a következő:
*nat
:PREROUTING ACCEPT [0:0]
Ez minket nem igazán zavar, szóval itt van:
*filter
:INPUT ACCEPT [0:0]
...
-A INPUT -j REJECT --reject-with icmp-host-prohibited
Ez zavar.
Mivel a knockd szabályokat ad az INPUT lánc végére, elutasítást kapunk.
Ennek az elutasításnak a kikapcsolása pedig azt jelenti, hogy az autót minden szélnek kinyitjuk.
Hogy ne vesszen el az iptables-ban, hogy mit kell beszúrni mi elé (például így
- alapértelmezett a CentOS/Fedora rendszeren első a szabály („ami nem tilos, az megengedett”) helyébe az ellenkezője lép,
- és eltávolítjuk az utolsó szabályt.
Az eredmény a következő legyen:
*filter
:INPUT DROP [0:0]
...
#-A INPUT -j REJECT --reject-with icmp-host-prohibited
Természetesen megteheti a REJECT funkciót a DROP helyett, de a DROP funkcióval az élet szórakoztatóbb lesz a robotok számára.
3. Ügyfél
Ez a hely a legérdekesebb (az én szemszögemből), mivel nemcsak bármely strandról, hanem bármilyen eszközről is kell dolgoznia.
Elvileg számos ügyfél szerepel a listán
A kliens kiválasztásakor meg kell győződnie arról, hogy támogatja-e a csomagok közötti késleltetési lehetőséget. Igen, vannak különbségek a strandok között, és a 100 megabites soha nem garantálja, hogy a csomagok a megfelelő sorrendben, a megfelelő időben érkeznek egy adott helyről.
És igen, az ügyfél beállításakor magának kell kiválasztania a késleltetést. Túl sok időtúllépés – a robotok támadnak, túl kevés – az ügyfélnek nem lesz ideje. Túl sok késés – a kliens nem ér oda időben, vagy idióták konfliktusa lesz (lásd „rake”), túl kevés – a csomagok elvesznek az interneten.
Timeout=5s esetén a késleltetés=100..500ms teljesen működőképes opció
Windows
Bármilyen viccesen is hangzik, a Google számára nem triviális, hogy egy egyértelmű kopogtatóprogram ehhez a platformhoz. Olyan, hogy a CLI támogatja a késleltetést, a TCP-t - és meghajlás nélkül.
Opcióként megpróbálhatja
Linux
Itt minden egyszerű:
dnf install knock -y
knock -d <delay> <dst_ip> 11111 22222 33333
MacOS
A legegyszerűbb módja a port telepítése a homebrew-ból:
brew install knock
és rajzolja meg a szükséges kötegfájlokat az olyan parancsokhoz, mint:
#!bin/sh
knock -d <delay> <dst_ip> 11111 22222 33333
iOS
Működő opció a KnockOnD (ingyenes, a boltból).
Android
"Knock on Ports" Nem reklám, de működik. És a fejlesztők nagyon érzékenyek.
PS leárazás Habrén, persze, Isten áldja meg egyszer...
UPD1: köszönet
UPD2: Másik
Forrás: will.com