Linux ráð og brellur: netþjónn, opnaðu

Fyrir þá sem þurfa að útvega sjálfum sér, ástvinum sínum, aðgang að netþjónum sínum hvar sem er í heiminum í gegnum SSH/RDP/annað, lítið RTFM/spur.

Við þurfum að vera án VPN og annarra bjalla og flauta, úr hvaða tæki sem er við höndina.

Og svo að þú þurfir ekki að æfa of mikið með þjóninum.

Allt sem þú þarft fyrir þetta er bankað, beina handleggi og 5 mínútna vinnu.

„Allt er á netinu,“ auðvitað (jafnvel á Habré), en þegar kemur að tiltekinni útfærslu þá byrjar þetta...

Við munum æfa okkur í því að nota Fedora/CentOS sem dæmi, en það skiptir ekki máli.

Spurningin hentar bæði byrjendum og sérfræðingum í þessu efni, svo það verða athugasemdir, en þær verða styttri.

1. Þjónn

  • setja upp knock-server:
    yum/dnf install knock-server

  • stilla það (til dæmis á 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

    „Opnunarhlutinn“ er stilltur á að loka sjálfkrafa eftir 1 klst. Þú veist aldrei...

  • /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
    ...

  • áfram:

    service iptables restart
    service knockd start

  • þú getur bætt RDP við sýndar Windows Server sem snýst inni (/etc/knockd.conf; skiptu um nafn viðmótsins eftir smekk þínum):

    [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

    Við fylgjumst með öllum spyrnum okkar frá viðskiptavininum á þjóninum með skipuninni iptables -S.

2. Leiðbeiningar um hrífur

knockd.conf:

Mana inniheldur líka allt (en þetta er ónákvæmt), en knockd er frekar snjall vinur með skilaboð, svo þú þarft að vera mjög varkár.

  • útgáfa
    Í Fedora/CentOS geymslunum er nýjasta knockd í dag 0.63. Hver vill UDP - leitaðu að 0.70 pökkum.
  • tengi
    Í sjálfgefna Fedora/CentOS stillingunni er þessi lína ekki. Bættu við með höndunum, annars virkar það ekki.
  • Tímamörk
    Hér getur þú valið eftir smekk þínum. Nauðsynlegt er að viðskiptavinurinn hafi nægan tíma fyrir öll spyrnurnar - og hafnarskannabotinn mun bila (og 146% munu skanna).
  • byrja/stöðva/skipa.
    Ef það er ein skipun, þá skipun, ef það eru tvær, þá start_command+stop_command.
    Ef þú gerir mistök mun knockd þegja, en virkar ekki.
  • frumgerð
    Fræðilega séð er hægt að nota UDP. Í reynd blandaði ég saman tcp og udp og viðskiptavinurinn frá ströndinni á Balí gat aðeins opnað hliðið í fimmta skiptið. Vegna þess að TCP kom þegar þörf var á, en UDP er ekki staðreynd. En þetta er aftur smekksatriði.
  • röð
    Óbeina hrífan er sú að raðirnar ættu ekki að skerast... hvernig á að orða það...

Til dæmis, þetta:

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

Með sparki 11111 opna mun bíða eftir næsta sparki í 22222. Hins vegar, eftir þetta (22222) spark mun það byrja að virka nálægt og allt mun brotna. Þetta fer líka eftir seinkun viðskiptavinarins. Svona hlutir ©.

iptables

Ef í /etc/sysconfig/iptables er þetta:

*nat
:PREROUTING ACCEPT [0:0]

Það truflar okkur ekki, svo hér er það:

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

Það truflar.

Þar sem knockd bætir reglum við enda INPUT keðjunnar, munum við fá höfnun.

Og að slökkva á þessari höfnun þýðir að opna bílinn fyrir öllum vindum.

Til þess að villast ekki í iptables hvað á að setja inn fyrir hvað (svona fólk stinga upp á) við skulum gera það einfaldara:

  • sjálfgefið á CentOS/Fedora fyrst reglunni („það sem ekki er bannað er leyfilegt“) verður skipt út fyrir hið gagnstæða,
  • og við fjarlægjum síðustu regluna.

Niðurstaðan ætti að vera:

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

Þú getur auðvitað gert REJECT í staðinn fyrir DROP, en með DROP verður lífið skemmtilegra fyrir vélmenni.

3. Viðskiptavinur

Þessi staður er áhugaverðastur (frá mínu sjónarhorni), þar sem þú þarft að vinna ekki aðeins frá hvaða strönd sem er, heldur einnig frá hvaða tæki sem er.

Í grundvallaratriðum eru nokkrir viðskiptavinir skráðir á Online verkefni, en þetta er úr sömu seríu „allt er á netinu“. Þess vegna mun ég skrá það sem er að virka innan seilingar hér og nú.

Þegar þú velur viðskiptavin þarftu að ganga úr skugga um að hann styðji seinkun á milli pakka. Já, það er munur á ströndum og 100 megabitar tryggja aldrei að pakkar berist í réttri röð á réttum tíma frá tilteknum stað.

Og já, þegar þú setur upp viðskiptavin þarftu að velja seinkunina sjálfur. Of mikið tímabil - vélmenni ráðast á, of lítið - viðskiptavinurinn mun ekki hafa tíma. Of mikil töf - viðskiptavinurinn kemst ekki í tæka tíð eða það verða árekstrar hálfvita (sjá „hrífur“), of lítil - pakkarnir týnast á internetinu.

Með timeout=5s, delay=100..500ms er algjörlega virkur valkostur

Windows

Sama hversu fyndið það hljómar, það er alveg léttvægt að Google sé skýran bankaviðskiptavin fyrir þennan vettvang. Þannig að CLI styður seinkun, TCP - og án boga.

Sem valkostur sem þú getur prófað þetta er það. Augljóslega er Google mitt ekki kaka.

Linux

Hér er allt einfalt:

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

MacOS

Auðveldasta leiðin er að setja upp portið frá homebrew:
brew install knock
og teiknaðu nauðsynlegar lotuskrár fyrir skipanir eins og:

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

IOS

Vinnuvalkostur er KnockOnD (ókeypis, úr verslun).

Android

„Knúið á hafnir“ Ekki auglýsingar, en það virkar bara. Og verktaki er mjög móttækilegur.

PS markdown á Habré, auðvitað, Guð blessi hann einhvern tíma...

UPD1: þökk sé til góðrar manneskju Fundið vinnandi viðskiptavinur undir Windows.
UPD2: Annar góður maður minnti mig á að það að setja nýjar reglur í lok iptables er ekki alltaf gagnlegt. En - það fer eftir því.

Heimild: www.habr.com

Bæta við athugasemd