Ata qĂ« duan tĂ« sigurojnĂ« aksesin ndaj serverĂ«ve tĂ« tyre nga çdo pikĂ« nĂ« botĂ« pĂ«rmes SSH/RDP ose ndonjĂ« metode tjetĂ«r â njĂ« RTFM e vogĂ«l/shĂ«nim.
Na nevojitet të bëjmë pa VPN dhe trillime të tjera, nga çdo pajisje në duar.
Dhe që të mos ushtrojmë shumë me serverin.
Gjithçka qĂ« na nevojitet Ă«shtĂ« â , duar tĂ« drejta dhe 5 minuta punĂ«.
«NĂ« internet gjendet gjithçka», sigurisht (madje dhe nĂ« ), por kur vjen puna pĂ«r zbatimin konkret â kĂ«tu fillonâŠ
Do të ushtrojmë me shembujt Fedora/CentOS, por kjo nuk ka rëndësi.
Shënimi do të përgjigjet si për fillestarët, ashtu edhe për ekspertët e kësaj fushe, prandaj do të ketë komentet, por më të shkurtra.
1. Serveri
instaloni knock-server:
yum/dnf install knock-serverkonfiguroni atĂ« (pĂ«r shembull pĂ«r ssh) â /etc/knockd.conf:
[opcionet] 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 ACCEPTPjesa "hapĂ«se" Ă«shtĂ« e vendosur pĂ«r auto-mbyllje pas 1 ore. Mos dihetâŠ
/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:
shërbimi iptables restart shërbimi knockd fillonmund të shtoni RDP në një Server Windows që rrotullohet brenda virtuale (/etc/knockd.conf; emri i interfesës mund të vendoset sipas dëshirës):
[RDPopen] sekuenca = 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] sekuenca = 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ë gjitha goditjet tona nga klienti i monitorojmë në server me komandën
iptables -S.
2. Udhëzuesi për gabime
knockd.conf:
Në manalë gjithashtu ka informacion (por kjo nuk është e saktë), megjithatë knockd është një shok mjaft i kurthuar në mesazhe, kështu që duhet të jeni shumë vigjilent.
- versioni
NĂ« repo-t e Fedora/CentOS, versi i fundit i knockd sot Ă«shtĂ« 0.63. Kushdo qĂ« dĂ«shiron UDP â kĂ«rkoni paketat 0.70. - interface
Në konfigurimin default të Fedora/CentOS, kjo rresht mungon. Shtoni me dorë, përndryshe nuk do të funksionojë. - koha e skadimit
KĂ«tu mund tĂ« zgjidhni sipas shijes. Duhet qĂ« klienti tĂ« ketĂ« kohĂ« pĂ«r tĂ« gjitha shtytjet â dhe boti skanues i porteve dĂ«shtoi (dhe do tĂ« skanojĂ« 146%). - start/stop/command.
NĂ«se komanda Ă«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Ă« funksionojĂ«. - proto
Teoretikisht, mund tĂ« pĂ«rdoret UDP. NĂ« praktikĂ«, unĂ« kam pĂ«rzier tcp dhe udp, dhe klienti nga plazhi nĂ« Bali mundi ta hapte portĂ«n vetĂ«m pas herĂ«s sĂ« pestĂ«. Sepse TCP arriti kur duhej, ndĂ«rsa UDP â nuk Ă«shtĂ« e sigurt. Por kjo Ă«shtĂ« çështje shijesh, pĂ«rsĂ«ri. - sequence
Grapat e padukshme janĂ« qĂ« sekuencat nuk duhet tĂ« pĂ«rzihen⊠si ta themâŠ
Për shembull, diçka e tillë:
open: 11111,22222,33333
close: 22222,11111,33333Për shtytjen 11111 open do të pret shtytjen tjetër në 22222. Megjithatë, për këtë (22222) shtytje do të fillojë të funksionojë close dhe gjithçka do të prishet. Kjo varet edhe nga vonesa e klientit. Këto janë punë ©.
iptables
Në /etc/sysconfig/iptables 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-prohibitedPërfundimisht pengon.
Duke qenë se knockd shton rregulla në fund të zinxhirit INPUT, ne do të marrim reject.
Dhe ç'arĂ« tĂ« çaktivizosh kĂ«tĂ« reject â do tĂ« hapĂ«sh makinĂ«n pĂ«r çdo erĂ«.
Për të mos u përpjekur me iptables dhe të kuptojmë se ku duhet të fusim çfarë (siç sugjerojnë njerëzit), lehtësimin e bëmë më të thjeshtë: duke e bërë më të thjeshtë:
- default nĂ« CentOS/Fedora rregulli i parĂ« ('çfarĂ« nuk Ă«shtĂ« e ndaluar â Ă«shtĂ« e lejuar') do ta ndryshojmĂ« nĂ« tĂ« kundĂ«rtin, ndĂ«rsa rregulli i fundit e heqim.
- Në fund duhet të rezultojë:
*filter :INPUT DROP [0:0] ... #-A INPUT -j REJECT --reject-with icmp-host-prohibited
Sigurisht, mund të përdorim REJECT në vend të DROP, por me DROP botët do të kenë një jetë më të lehtë.3. Klienti
Këtu është pjesa më interesante (sipër mendjes sime), pasi duhet të punojmë jo vetëm nga çdo plazh, por edhe nga çdo pajisje.
Në thelb, disa klientë janë përmendur në
projekt, por kjo është në të njëjtën seri 'në internet ka gjithçka'. Prandaj do të listoj atë që funksionon këtu dhe tani në duar. Kur zgjidhni klientin, është e nevojshme të siguroheni që ai mbështet opsionin delay midis paketave. Po, plazhi i plazhit ndryshon dhe 100 megabitet nuk garantojnë asnjëherë që paketat do të arrijnë në rendin e duhur në kohën e duhur nga ky vend.
Dhe po â gjatĂ« konfigurimit tĂ« klientit, delay duhet tĂ« jetĂ« i pĂ«rshtatur vetĂ«. ShumĂ« timeout â botĂ«t do tĂ« sulmojnĂ«, pak â klienti nuk do tĂ« arrijĂ«. ShumĂ« delay â klienti nuk do tĂ« arrijĂ« apo do tĂ« ketĂ« konflikte pĂ«r kryqĂ«zimin (shiko 'gyrbjne'), pak â paketat do tĂ« humbasin nĂ« internet.
Po, kur konfiguroni klientin, ecret duhet tĂ« pĂ«rshtaten vetĂ«. ShumĂ« kohĂ« shkĂ«putjeje â botĂ«t do tĂ« sulmojnĂ«, pak â klienti nuk do tĂ« arrijĂ« nĂ« kohĂ«. ShumĂ« ecret â klienti nuk do tĂ« arrijĂ« nĂ« kohĂ« ose do tĂ« ketĂ« konflikte tĂ« dhĂ«nash (shih "gjĂ«ra e zakonshme"), pak â paketat do tĂ« humbasin nĂ« internet.
Me timeout=5s është një variant plotësisht funksional delay=100..500ms
Windows
Sa qesharake qĂ« tingĂ«llon, por tĂ« gjesh njĂ« klient knock tĂ« qartĂ« pĂ«r kĂ«tĂ« platformĂ« Ă«shtĂ« mjaft problematike. NjĂ« qĂ« mbĂ«shtet delay, TCP â dhe pa zbukurime.
Si variant, mund të provosh . Duket se Google im nuk është shumë i aftë.
Linux
Këtu gjithçka është e thjeshtë:
dnf install knock -y
knock -d 11111 22222 33333MacOS
Më e lehtë është të instalosh portin nga homebrew:
brew install knock
dhe të krijosh vetë skriptet e nevojshme të komandave si:
#!bin/sh
knock -d <delay> <dst_ip> 11111 22222 33333iOS
NjĂ« variant 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ë Habra, padyshim, e shpresoj të ketë ndonjëherë një shëndet të mirë...
UPD1: falë u gjet për Windows.
UPD2: 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
