Niille, joiden on tarjottava itselleen, läheisilleen pääsy palvelimiinsa mistä päin maailmaa tahansa SSH/RDP/muu kautta, pieni RTFM/spur.
Meidän on pärjättävä ilman VPN:ää ja muita kelloja ja pillejä miltä tahansa laitteelta.
Ja jotta sinun ei tarvitse harjoitella liikaa palvelimen kanssa.
Kaikki mitä tarvitset tähän on , suorat kädet ja 5 minuuttia työtä.
"Kaikki on Internetissä" tietysti (myös ), mutta kun on kyse tietystä toteutuksesta, se alkaa tästä...
Harjoitellaan Fedoran käyttöä esimerkkinä.CentOS, mutta sillä ei ole väliä.
Spur sopii sekä aloittelijoille että asiantuntijoille tässä asiassa, joten kommentteja tulee, mutta ne ovat lyhyempiä.
1. Palvelin
asenna knock-server:
yum/dnf install knock-servermääritä se (esimerkiksi ssh:ssa) - /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 ACCEPTAvausosa on asetettu sulkeutumaan automaattisesti 1 tunnin kuluttua. Ei sitä koskaan tiedä...
/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 ...eteenpäin:
service iptables restart service knockd startVoit lisätä RDP:n sisällä käynnissä olevaan virtuaalikoneeseen Windows Server (/etc/knockd.conf; korvaa rajapinnan nimi maun mukaan):
[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.2Seuraamme kaikkia potkujamme asiakkaalta palvelimella komennolla
iptables -S.
2. Opas haravoihin
knockd.conf:
Mana sisältää myös kaiken (mutta tämä on epätarkka), mutta knockd on ystävä, joka on melko niukka viesteissä, joten sinun on oltava erittäin varovainen.
- versio
Fedoran arkistoissa/CentOS Viimeisin pudotus tälle päivälle on 0.63. UDP:tä haluavien kannattaa etsiä 0.70 paketteja. - liitäntä
Fedoran oletusasetuksissa/CentOS tämä rivi ei. Lisää käsin, muuten se ei toimi. - aikakatkaisu
Täällä voit valita makusi mukaan. On välttämätöntä, että asiakkaalla on tarpeeksi aikaa kaikkiin potkuihin - ja porttiskanneribotti hajoaa (ja 146% skannaa). - käynnistys/pysäytys/komento.
Jos komentoja on yksi, niin komento, jos niitä on kaksi, niin start_command+stop_command.
Jos teet virheen, knockd pysyy hiljaa, mutta ei toimi. - siksi
Teoriassa UDP:tä voidaan käyttää. Käytännössä sekoitin tcp:n ja udp:n, ja asiakas Balin rannalta pystyi avaamaan portin vasta viidennen kerran. Koska TCP saapui tarvittaessa, mutta UDP ei ole tosiasia. Mutta tämä on taas makuasia. - järjestys
Implisiittinen rake on se, että sekvenssit eivät saa leikkiä... kuinka sen sanoisin...
Esimerkiksi tämä:
open: 11111,22222,33333
close: 22222,11111,33333Potkulla 11111 avata odottaa seuraavaa potkua klo 22222. Kuitenkin tämän (22222) potkun jälkeen se alkaa toimia lähellä ja kaikki menee rikki. Tämä riippuu myös asiakkaan viiveestä. Sellaiset asiat ©.
iptables
Jos tiedostossa /etc/sysconfig/iptables tämä on:
*nat
:PREROUTING ACCEPT [0:0]Se ei todellakaan haittaa meitä, joten tässä se on:
*filter
:INPUT ACCEPT [0:0]
...
-A INPUT -j REJECT --reject-with icmp-host-prohibitedSe häiritsee.
Koska knockd lisää säännöt INPUT-ketjun loppuun, saamme hylkäämisen.
Ja tämän hylkäyksen kytkeminen pois päältä tarkoittaa auton avaamista kaikille tuulille.
Jotta et eksy iptablesiin, mitä ennen mitä tulee lisätä (kuten tämä ehdota) tehdään siitä yksinkertaisempi:
- oletuksena в CentOS/Fedora ensimmäinen sääntö ("mikä ei ole kiellettyä on sallittua") korvataan päinvastoin,
- ja poistamme viimeisen säännön.
Tuloksena pitäisi olla:
*filter
:INPUT DROP [0:0]
...
#-A INPUT -j REJECT --reject-with icmp-host-prohibitedVoit tietysti tehdä hylkäämisen DROP:n sijaan, mutta DROP-toiminnolla elämä on hauskempaa boteille.
3. Asiakas
Tämä paikka on mielenkiintoisin (minun näkökulmastani), koska sinun ei tarvitse työskennellä vain miltä tahansa rannalta, vaan myös mistä tahansa laitteesta.
Periaatteessa listattuna on useita asiakkaita projekti, mutta tämä on samasta sarjasta "kaikki on Internetissä". Siksi luettelen, mikä toimii käden ulottuvillani tässä ja nyt.
Asiakasta valittaessa on varmistettava, että se tukee pakettien välistä viivevaihtoehtoa. Kyllä, rantojen välillä on eroja, ja 100 megabittiä ei koskaan taata, että paketit saapuvat oikeassa järjestyksessä oikeaan aikaan tietystä paikasta.
Ja kyllä, asiakasta perustaessasi sinun on valittava viive itse. Liian paljon aikakatkaisua - botit hyökkäävät, liian vähän - asiakkaalla ei ole aikaa. Liian paljon viivettä - asiakas ei ehdi ajoissa tai syntyy idioottien konflikti (katso "haravat"), liian vähän - paketit katoavat Internetiin.
Kun aikakatkaisu = 5 s, viive = 100...500 ms on täysin toimiva vaihtoehto
Windows
Huolimatta siitä, kuinka hauskalta se kuulostaa, Googlelle ei ole aivan triviaalia selkeä koputusasiakas tälle alustalle. Sellainen, että CLI tukee viivettä, TCP:tä - ja ilman jousia.
Vaihtoehtona voit kokeilla . Ilmeisesti Googleni ei ole kakku.
Linux
Täällä se on yksinkertaista:
dnf install knock -y
knock -d <delay> <dst_ip> 11111 22222 33333MacOS
Helpoin tapa on asentaa portti Homebrew'sta:
brew install knock
ja piirrä tarvittavat erätiedostot komennoille, kuten:
#!bin/sh
knock -d <delay> <dst_ip> 11111 22222 33333iOS
Toimiva vaihtoehto on KnockOnD (ilmainen, kaupasta).
Android
"Knock on Ports" Ei mainontaa, mutta se vain toimii. Ja kehittäjät ovat melko reagoivia.
PS-merkintä Habrelle, tietysti, Jumala siunatkoon häntä jonain päivänä...
UPD1: kiitokset löytyi alle Windows.
UPD2: Toinen muistutti minua siitä, että uusien sääntöjen asettaminen iptablesin loppuun ei ole aina hyödyllistä. Mutta - riippuu.
Lähde: will.com
