Նրանց համար, ովքեր պետք է ապահովեն իրենց, իրենց սիրելիներին, հասանելիություն իրենց սերվերներին աշխարհի ցանկացած կետից SSH/RDP/այլ՝ փոքր RTFM/spur-ի միջոցով:
Մենք պետք է անենք առանց VPN-ի և այլ զանգերի ու սուլիչների՝ ձեռքի տակ եղած ցանկացած սարքից:
Եվ այնպես, որ դուք ստիպված չեք լինի շատ մարզվել սերվերի հետ:
Դրա համար անհրաժեշտ է միայն
«Ամեն ինչ ինտերնետում է», իհարկե (նույնիսկ
Մենք կսովորենք օգտագործել Fedora/CentOS-ը որպես օրինակ, բայց դա նշանակություն չունի:
The spur-ը հարմար է ինչպես սկսնակների, այնպես էլ այս հարցում փորձագետների համար, այնպես որ կլինեն մեկնաբանություններ, բայց դրանք ավելի կարճ կլինեն:
1. Սերվեր
-
տեղադրել knock-server:
yum/dnf install knock-server
-
կարգավորել այն (օրինակ 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
«Բացման» հատվածը 1 ժամ անց ավտոմատ կերպով փակվում է: Դու երբեք չես իմանա...
-
/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 ...
-
առաջ:
service iptables restart service knockd start
-
դուք կարող եք RDP ավելացնել վիրտուալ Windows Server-ին, որը պտտվում է ներսում (/etc/knockd.conf; փոխարինեք ինտերֆեյսի անունը ձեր ճաշակին համապատասխան).
[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
Մենք հետևում ենք մեր բոլոր հարվածներին հաճախորդի կողմից սերվերի վրա հրամանով
iptables -S
.
2. Փոցխերի ուղեցույց
knockd.conf:
Մանան նույնպես պարունակում է ամեն ինչ (բայց սա սխալ է), բայց knockd-ը ընկեր է, ով բավականին ժլատ է հաղորդագրությունների հետ, այնպես որ դուք պետք է շատ զգույշ լինեք:
- տարբերակը
Fedora/CentOS-ի պահոցներում այսօրվա վերջին թակոցը 0.63 է: Ով է ուզում UDP - փնտրեք 0.70 փաթեթ: - ինտերֆեյս
Fedora/CentOS-ի լռելյայն կազմաձևում այս տողը ոչ. Ավելացրեք ձեր ձեռքերով, հակառակ դեպքում դա չի աշխատի: - timeout
Այստեղ դուք կարող եք ընտրել ըստ ձեր ճաշակի։ Անհրաժեշտ է, որ հաճախորդը բավարար ժամանակ ունենա բոլոր հարվածների համար, և պորտի սկաների բոտը կփչանա (և 146% -ը սկանավորի): - սկսել / դադարեցնել / հրաման.
Եթե կա մեկ հրաման, ապա հրաման, եթե կա երկու, ապա start_command+stop_command:
Եթե սխալ եք թույլ տալիս, թակոցը լուռ կմնա, բայց չի աշխատի: - հետևաբար
Տեսականորեն, UDP-ն կարող է օգտագործվել: Գործնականում ես խառնեցի tcp-ն ու udp-ն, և Բալիի լողափից հաճախորդը միայն հինգերորդ անգամ կարողացավ բացել դարպասը: Քանի որ TCP-ն եկավ անհրաժեշտության դեպքում, բայց UDP-ն փաստ չէ: Բայց սա էլի ճաշակի հարց է։ - հերթականություն
Անուղղակի փոցխն այն է, որ հաջորդականությունները չպետք է հատվեն... ինչպես դնել...
Օրինակ՝ սա.
open: 11111,22222,33333
close: 22222,11111,33333
11111 հարվածով բացել կսպասի հաջորդ հարվածին 22222-ին: Այնուամենայնիվ, այս (22222) հարվածից հետո այն կսկսի աշխատել: սերտ և ամեն ինչ կկոտրվի: Սա կախված է նաև հաճախորդի ուշացումից: Նման բաներ ©.
iptables
Եթե /etc/sysconfig/iptables-ում սա հետևյալն է.
*nat
:PREROUTING ACCEPT [0:0]
Դա մեզ իսկապես չի անհանգստացնում, ուստի ահա.
*filter
:INPUT ACCEPT [0:0]
...
-A INPUT -j REJECT --reject-with icmp-host-prohibited
Դա խանգարում է:
Քանի որ knockd-ը կանոններ է ավելացնում INPUT շղթայի վերջում, մենք կստանանք մերժում:
Իսկ այս մերժումն անջատելը նշանակում է բացել մեքենան բոլոր քամիների առաջ։
Որպեսզի չկորչեք iptables-ում, ինչ տեղադրել ինչից առաջ (այսպես
- լռելյայն CentOS/Fedora-ում առաջին կանոնը («այն, ինչ չի արգելվում, թույլատրվում է») կփոխարինվի հակառակով.
- և մենք հանում ենք վերջին կանոնը.
Արդյունքը պետք է լինի.
*filter
:INPUT DROP [0:0]
...
#-A INPUT -j REJECT --reject-with icmp-host-prohibited
Դուք, իհարկե, կարող եք REJECT անել DROP-ի փոխարեն, բայց DROP-ով կյանքն ավելի զվարճալի կլինի բոտերի համար:
3. Հաճախորդ
Այս վայրն ամենահետաքրքիրն է (իմ տեսանկյունից), քանի որ պետք է աշխատել ոչ միայն ցանկացած լողափից, այլև ցանկացած սարքից։
Սկզբունքորեն, մի շարք հաճախորդներ նշված են
Հաճախորդ ընտրելիս պետք է համոզվեք, որ այն աջակցում է փաթեթների միջև ուշացման տարբերակը: Այո, կան տարբերություններ լողափերի միջև, և 100 մեգաբիթը երբեք չի երաշխավորում, որ փաթեթները ճիշտ կարգով կհասնեն ճիշտ ժամանակին տվյալ վայրից:
Եվ այո, հաճախորդ ստեղծելիս պետք է ինքներդ ընտրեք ուշացումը: Չափազանց շատ ժամանակամիջոց - բոտերը կհարձակվեն, շատ քիչ - հաճախորդը ժամանակ չի ունենա: Չափազանց շատ ուշացում - հաճախորդը ժամանակին չի հասցնի, կամ ապուշների կոնֆլիկտ կլինի (տես «ռեկեր»), շատ քիչ - փաթեթները կկորչեն ինտերնետում:
Timeout=5s, delay=100..500ms-ը լիովին աշխատող տարբերակ է
Windows
Անկախ նրանից, թե որքան ծիծաղելի է դա հնչում, միանգամայն աննշան է այս հարթակի համար Google-ի հստակ թակոց հաճախորդը: Այնպիսին, որ CLI-ն աջակցում է հետաձգմանը, TCP-ին և առանց աղեղների:
Որպես այլընտրանք, կարող եք փորձել
Linux
Այստեղ պարզ է.
dnf install knock -y
knock -d <delay> <dst_ip> 11111 22222 33333
MacOS
Ամենահեշտ ձևը պորտը homebrew-ից տեղադրելն է.
brew install knock
և նկարեք անհրաժեշտ խմբաքանակային ֆայլերը այնպիսի հրամանների համար, ինչպիսիք են.
#!bin/sh
knock -d <delay> <dst_ip> 11111 22222 33333
iOS
Աշխատանքային տարբերակ է KnockOnD-ը (անվճար, խանութից):
Android
«Թակել նավահանգիստները» Ոչ թե գովազդ, այլ պարզապես աշխատում է: Իսկ մշակողները բավականին արձագանքող են:
Հ.Գ. Հաբրեի վրա, իհարկե, Աստված օրհնի նրան մի օր...
Jud1: շնորհիվ
Jud2: Ուրիշ մեկը
Source: www.habr.com