Linux-ի խորհուրդներ և հնարքներ. սերվեր, բացել

Նրանց համար, ովքեր պետք է ապահովեն իրենց, իրենց սիրելիներին, հասանելիություն իրենց սերվերներին աշխարհի ցանկացած կետից SSH/RDP/այլ՝ փոքր RTFM/spur-ի միջոցով:

Մենք պետք է անենք առանց VPN-ի և այլ զանգերի ու սուլիչների՝ ձեռքի տակ եղած ցանկացած սարքից:

Եվ այնպես, որ դուք ստիպված չեք լինի շատ մարզվել սերվերի հետ:

Դրա համար անհրաժեշտ է միայն թակել, ուղիղ թեւեր եւ 5 րոպե աշխատանք։

«Ամեն ինչ ինտերնետում է», իհարկե (նույնիսկ Հաբրե), բայց երբ խոսքը գնում է կոնկրետ իրականացման մասին, այստեղից է սկսվում...

Մենք կսովորենք օգտագործել 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-ին և առանց աղեղների:

Որպես այլընտրանք, կարող եք փորձել սա է. Ըստ երևույթին, իմ Google-ը տորթ չէ:

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: շնորհիվ լավ մարդուն հայտնաբերվել է աշխատող հաճախորդ Windows-ի տակ:
Jud2: Ուրիշ մեկը լավ մարդ հիշեցրեց ինձ, որ iptables-ի վերջում նոր կանոններ դնելը միշտ չէ, որ օգտակար է: Բայց - դա կախված է:

Source: www.habr.com

Добавить комментарий