Ata që kërkojnë të sigurojnë qasje në serverët e tyre nga çdo pikë e botës përmes SSH/RDP ose mënyra të tjera - një RTFM i vogël/udhëzues.
Na nevojitet të kalojmë pa VPN dhe truqe të tjera, nga çdo pajisje që kemi në duar.
Dhe që të mos kemi shumë vështirësi me serverin.
Gjithçka që na nevojitet është - , duar të drejta dhe 5 minuta punë.
"NĂ« internet ka gjithçka", sigurisht (madje edhe nĂ« ), por kur vjen puna te realizimi konkret - kĂ«tu nisâŠ
Do të ushtrojmë në shembullin e Fedora/CentOS, por kjo nuk ka rëndësi.
Udhëzuesi është i dobishëm si për fillestarët ashtu dhe për profesionistët e këtij fushe, prandaj do të ketë komente, por më të shkurtra.
1. Serveri
instaloni knock-server:
yum/dnf install knock-serverkonfiguroni atë (për shembull pë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"Pjesa e "hapjes" Ă«shtĂ« e vendosur pĂ«r auto-mbyllje pas 1 ore. NdoshtaâŠ
/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 ...përpara:
service iptables restart service knockd startmund të shtoni RDP në një Windows Server virtual që qarkullon ( /etc/knockd.conf; emri i ndërfaqes të vendoset sipas preferencës):
[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.2Të gjithë goditjet tona nga klienti i ndjekim në server me komandën
iptables -S.
2. Udhëzuesi për pengesat
knockd.conf:
Edhe në manual ka gjithçka (por kjo nuk është e saktë), megjithatë knockd - është një shok mjaft i kursyer me mesazhe, prandaj duhet të jeni shumë të kujdesshëm.
- i
Në depozat Fedora/CentOS, knockd më i fundit deri tani është 0.63. Ata që duan UDP - kërkoni paketat 0.70. - interface
Në konfigurimin default të Fedora/CentOS, kjo rresht nuk ka. Shtoni manualisht, përndryshe nuk do të funksionojë. - timeout
Këtu mund ta zgjidhni sipas preferencës. Duhet që dhe klienti të ketë kohë të mjaftueshme për të dërguar të gjitha goditjet - dhe skaneri i portave të bllokohet (sepse do të skanojnë 146%). - start/stop/command.
NĂ«se ekipi Ă«shtĂ« njĂ« â atĂ«herĂ« command, nĂ«se dy â atĂ«herĂ« start_command+stop_command.
NĂ«se gaboni â knockd do tĂ« hesht, por nuk do tĂ« punojĂ«. - proto
Teoretikisht Ă«shtĂ« e mundur tĂ« pĂ«rdoret UDP. NĂ« praktikĂ«, unĂ« kam pĂ«rzierĂ« tcp dhe udp, dhe klienti nga plazhi nĂ« Bali arriti tĂ« hapĂ« derĂ«n vetĂ«m me herĂ«n e pestĂ«. Sepse TCP arriti kur duhej, ndĂ«rsa pĂ«r UDP â nuk Ă«shtĂ« e sigurt. Por ky Ă«shtĂ« njĂ« çështje shijeje, pĂ«rsĂ«ri. - sequence
Gropat e padukshme janë se sekuencat nuk duhet të përputhen... si ta themi...
Për shembull, kjo:
open: 11111,22222,33333
close: 22222,11111,33333Për goditjen 11111 open do të presë goditjen tjetër në 22222. Sidoqoftë, me këtë (22222) goditje do të fillojë të punojë close dhe gjithçka do të prishet. Kjo varet edhe nga vonesa e klientit. Këto janë gjëra ©.
iptables
Në /etc/sysconfig/iptables nëse kjo këtu:
*nat
:PREROUTING ACCEPT [0:0]nuk na pengon shumë, atëherë kjo këtu:
*filter
:INPUT ACCEPT [0:0]
...
-A INPUT -j REJECT --reject-with icmp-host-prohibitedvërtet na pengon.
Meqenëse knockd shton rregulla në fund të zinxhirit INPUT, ne do të marrim një refuzim.
Dhe çaktivizimi i kĂ«tij refuzimi â do tĂ« thotĂ« tĂ« hapĂ«sh makinĂ«n pĂ«r çdo erĂ«.
Për të mos u përpjekur me iptables se çfarë vendosim para se çfarë (siç default
- nĂ« CentOS/Fedora rregulli i parĂ« («çfarĂ« nuk ndalohet â lejohet») do ta zĂ«vendĂ«sojmĂ« me tĂ« kundĂ«rtĂ«n, dhe rregulli pĂ«rfundimtar e heqim.
- Si rezultat, duhet të duket kështu:
*filter :INPUT DROP [0:0] ... #-A INPUT -j REJECT --reject-with icmp-host-prohibited
Mund të bëni, sigurisht, në vend të DROP të bëni REJECT, por me DROP bots do të ketë jetë më të lehtë.3. Klienti
Në këtë vend është më interesante (sipër mendjes time), sepse duhet të punosh jo vetëm nga çdo plazh, por edhe nga çdo pajisje.
Në parim, një sërë klientësh janë përmendur në
projekt, por kjo është nga ajo seri «në internet gjithçka është». Pra, unë do të përmend atë që funksionon për mua këtu dhe tani. Kur zgjidhni një klient, është e nevojshme të siguroheni që ai mbështet opsionin e vonesës midis paketeve. Po, plazhi në plazh ndryshon dhe 100 megabit nuk garantojnë aspak arritjen e paketeve në rendin e duhur në kohën e duhur nga ky vend.
Dhe po â kur konfiguroni klientin, vonesĂ«n duhet ta pĂ«rshtatni vetĂ«. ShumĂ« timeout â bots do tĂ« sulmojnĂ«, pak â klienti nuk do tĂ« arrijĂ«. ShumĂ« vonesĂ« â klienti nuk do tĂ« arrijĂ« ose do tĂ« ketĂ« konflikt tĂ« goditjeve (shih «gropat»), pak â paketat do tĂ« humbasin nĂ« internet.
Me timeout=5s një variant mjaft funksional është delay=100..500ms
Siç tingĂ«llon qesharake, por gjetja e njĂ« knock-klienti tĂ« qartĂ« pĂ«r kĂ«tĂ« platformĂ« Ă«shtĂ« mjaft e vĂ«shtirĂ«. NjĂ«, qĂ« tĂ« ketĂ« CLI, mbĂ«shtetje pĂ«r vonesĂ«, TCP â dhe pa shiritat.
Windows
Si e çuditshme, por Ă«shtĂ« mjaft e vĂ«shtirĂ« tĂ« gjesh njĂ« klient knock tĂ« kuptueshĂ«m pĂ«r kĂ«tĂ« platformĂ«. NjĂ« qĂ« tĂ« ketĂ« CLI, tĂ« mbĂ«shtesĂ« vonesat, TCP â dhe pa zbukurime.
Si e mundësi për ta provuar . Duket se Gugl-i im nuk funksionon mirë.
Linux
Këtu është e thjeshtë:
dnf install knock -y
knock -d 11111 22222 33333MacOS
Më lehtë është të instalohet porti nga homebrew:
brew install knock
dhe të krijosh vetë skedarë komandash si:
#!bin/sh
knock -d <delay> <dst_ip> 11111 22222 33333iOS
Varianti funksional â KnockOnD (falas, nga dyqani).
Android
«Knock on Ports». Nuk është reklamë, thjesht funksionon. Dhe zhvilluesit janë mjaft të përgjegjshëm.
P.S. markdown nĂ« Habr, sigurisht, ia uroj shĂ«ndet derisa tĂ« bĂ«het ndonjĂ«herĂ«âŠ
UPD1: falë u gjet për Windows.
PĂRDITĂSIMI 2: njĂ« tjetĂ«r mĂ« kujtoi se vendosja e rregullave tĂ« reja nĂ« fund tĂ« iptables nuk Ă«shtĂ« gjithmonĂ« e dobishme. Por â varet.
Burimi: habr.com
