Serişte û hîleyên Linux: server, vekin

Ji bo kesên ku hewce ne ku xwe, hezkiriyên xwe, bi gihandina serverên xwe ji her deverê cîhanê bi SSH/RDP/yên din, RTFM/spurek piçûk peyda bikin.

Pêdivî ye ku em bêyî VPN û zengil û bilbilên din, ji her amûrek di dest de bikin.

Û da ku hûn ne hewce ne ku pir bi serverê re tevbigerin.

Ya ku hûn ji bo vê yekê hewce ne ev e xistin, milên rast û 5 deqîqe kar.

"Her tişt li ser Înternetê ye," bê guman (heta li ser Habré), lê gava ku ew tê ser pêkanînek taybetî, li vir dest pê dike ...

Em ê wekî mînakek Fedora/CentOS bikar bînin, lê ew ne girîng e.

Spur di vê mijarê de hem ji bo destpêk û hem jî ji pisporan re maqûl e, ji ber vê yekê dê şîrove hebin, lê ew ê kurttir bin.

1. Server

  • knock-server saz bike:
    yum/dnf install knock-server

  • wê mîheng bike (mînakek li ser 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

    Beşa "vekirinê" piştî 1 saetê ji bo girtina bixweber tê danîn. Tu qet nizanî...

  • /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êşve:

    service iptables restart
    service knockd start

  • hûn dikarin RDP-ê li Servera Windows-ê ya virtual ku di hundurê de dizivire zêde bikin (/etc/knockd.conf; navê navrûyê li şûna tama xwe biguhezînin):

    [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

    Em bi fermanê hemî lêdanên xwe yên ji xerîdar li ser serverê dişopînin iptables -S.

2. Rêbera raketan

knockd.conf:

Mana jî her tiştî dihewîne (lê ev nerast e), lê knockd hevalek e ku bi peyaman re pir gêj e, ji ber vê yekê hûn hewce ne ku pir baldar bin.

  • versiyon
    Di depoyên Fedora/CentOS de, lêdana herî dawî ya îro 0.63 e. Kî UDP dixwaze - li pakêtên 0.70 bigerin.
  • virtual
    Di veavakirina xwerû ya Fedora/CentOS de ev rêz winda ye. Bi destên xwe zêde bikin, wekî din ew ê nexebite.
  • başim
    Li vir hûn dikarin li gorî tama xwe hilbijêrin. Pêdivî ye ku xerîdar ji bo hemî lêdanan dem têra xwe hebe - û bota skanera portê dê hilweşe (û 146% dê bişoxilîne).
  • destpêk / rawestandin / ferman.
    Ger yek ferman hebe, wê hingê ferman, heke du hebin, wê hingê start_command+stop_command.
    Ger hûn xeletiyek bikin, knockd dê bêdeng bimîne, lê dê nexebite.
  • prototîp
    Teorîk, UDP dikare were bikar anîn. Di pratîkê de, min tcp û udp tevlihev kir, û xerîdar ji peravê li Bali karîbû tenê cara pêncemîn derî veke. Ji ber ku TCP dema ku hewce bû gihîşt, lê UDP ne rastiyek e. Lê belê ev meseleyeke tama ye, dîsa.
  • dor
    Rakêşiya nehênî ev e ku rêzik neyên hevberdan... meriv çawa bilêv dike...

Ji bo nimûne, ev:

open: 11111,22222,33333
close: 22222,11111,33333

Bi kick 11111 vekirî dê li benda lêdana paşîn li 22222 bisekine. Lêbelê, piştî vê (22222) lêdanê ew ê dest bi xebatê bike. nêzîkî û her tişt wê bişkê. Ev jî bi derengiya xerîdar ve girêdayî ye. Tiştên weha ©.

iptables

Ger di /etc/sysconfig/iptables de ev e:

*nat
:PREROUTING ACCEPT [0:0]

Ew bi rastî me aciz nake, ji ber vê yekê ev e:

*filter
:INPUT ACCEPT [0:0]
...
-A INPUT -j REJECT --reject-with icmp-host-prohibited

Ew mudaxele dike.

Ji ber ku knockd qaîdeyan li dawiya zincîra INPUT zêde dike, em ê red bikin.

Û qutkirina vê redkirinê tê wateya vekirina otomobîlê ji hemî bayan re.

Ji bo ku di iptables de winda nebin berî çi têxin çi (wek vê gel pêşniyar bikin) em wê hêsan bikin:

  • destçûnî li ser CentOS / Fedora yekem qaîdeya ("tiştê ku ne qedexe ye destûr e") dê bi berevajî were guhertin,
  • û em qaîdeya dawî radikin.

Divê encam ev be:

*filter
:INPUT DROP [0:0]
...
#-A INPUT -j REJECT --reject-with icmp-host-prohibited

Bê guman, hûn dikarin li şûna DROP REJECT bikin, lê bi DROP-ê re jiyan dê ji bo botan bêtir xweş be.

3. Xerîdar

Ev cîhê herî balkêş e (ji nêrîna min), ji ber ku hûn hewce ne ku ne tenê ji her deryayê, lê di heman demê de ji her amûrekê jî bixebitin.

Di prensîbê de, hejmarek xerîdar li ser têne navnîş kirin malperê proje, lê ev ji heman rêzê ye "her tişt li ser Înternetê ye." Ji ber vê yekê, ez ê tiştê ku li vir û nuha li ber destên min dixebite navnîş bikim.

Dema ku xerîdar hilbijêrin, hûn hewce ne ku pê ewle bin ku ew vebijarka dereng di navbera pakêtan de piştgirî dike. Erê, di navbera peravê de cûdahî hene û 100 megabit qet garantî nakin ku pakêt dê di wextê rast de ji cîhek diyarkirî bi rêza rast bigihîjin.

Û erê, dema ku xerîdarek saz dike, hûn hewce ne ku derengiyê bixwe hilbijêrin. Demjimêra pir zêde - bot dê êrîş bikin, pir hindik - dê xerîdar wext nemîne. Pir dereng - dê xerîdar di wextê xwe de biser nekeve an dê pevçûnek ehmeqan çêbibe (binihêrin "rakes"), pir hindik - dê pakêt li ser Înternetê winda bibin.

Bi wextê = 5s, dereng = 100..500ms vebijarkek bi tevahî xebitîn e

Windows

Her çiqas ew çiqas xweş xuya dike jî, ji Google re ji bo vê platformê xerîdarek bişkojka zelal a Google-ê pir ne-tahf e. Wusa ku CLI dereng, TCP - û bê kevan piştgirî dike.

Wekî din, hûn dikarin biceribînin ev ew e. Xuyaye Googlea min ne kek e.

Linux

Li vir her tişt hêsan e:

dnf install knock -y
knock -d <delay> <dst_ip> 11111 22222 33333

MacOS

Rêya herî hêsan sazkirina portê ji homebrew e:
brew install knock
û pelên komê yên pêwîst ji bo emrên mîna:

#!bin/sh
knock -d <delay> <dst_ip> 11111 22222 33333

iOS

Vebijarkek xebatê KnockOnD (belaş, ji firotgehê) ye.

Android

"Li benderan bixin" Ne reklam, lê ew tenê dixebite. Û pêşdebiran pir bersivdar in.

Nîşana PS li ser Habré, bê guman, Xwedê rojek jê razî be...

UPD1: bi xêra ji mirovekî baş re dîtin muwekîlê kar di bin Windows.
UPD2: Yeka din mirovê baş anî bîra min ku danîna qaîdeyên nû li dawiya iptables ne her gav bikêr e. Lê - ew girêdayî ye.

Source: www.habr.com

Add a comment