Linux aholkuak eta trikimailuak: zerbitzaria, ireki

Beraiek, beren maiteei, munduko edozein lekutatik zerbitzarietarako sarbidea eman behar dietenei SSH/RDP/besteren bidez, RTFM/spur txiki bat.

VPN eta beste txistu eta txisturik gabe egin behar dugu esku artean dagoen edozein gailutatik.

Eta zerbitzariarekin gehiegi ariketa egin behar ez izateko.

Horretarako behar duzun guztia da kolpatu, besoak zuzen eta 5 minutuko lana.

"Dena Interneten dago", noski (baita HabrΓ©), baina ezarpen zehatz bati dagokionean, hemen hasten da...

Fedora/CentOS adibide gisa erabiltzen praktikatuko dugu, baina horrek ez du axola.

Espoloia egokia da gai honetan hasiberrientzat zein adituentzat, beraz, iruzkinak egongo dira, baina laburragoak izango dira.

1. Zerbitzaria

  • instalatu knock-server:
    yum/dnf install knock-server

  • konfiguratu (adibidez ssh-n) - /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

    "Irekitzea" zatia ordubete igaro ondoren automatikoki ixteko ezartzen da. Ez dakizu inoiz...

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

  • aurrera:

    service iptables restart
    service knockd start

  • RDP gehi dezakezu Windows Server zerbitzari birtualera barruan biraka (/etc/knockd.conf; ordezkatu interfazearen izena zure gustura):

    [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

    Bezerotik zerbitzarian gure jaurtiketa guztiak jarraitzen ditugu komandoarekin iptables -S.

2. Rastriluen gida

knockd.conf:

Manak ere dena dauka (baina hau zehazgabea da), baina knockd mezuekin nahiko zikorrak diren laguna da, beraz, kontu handiz ibili behar duzu.

  • Bertsio
    Fedora/CentOS biltegietan, gaurko azken kolpea 0.63 da. Nork nahi du UDP - bilatu 0.70 pakete.
  • interfaze
    Fedora/CentOS konfigurazio lehenetsian lerro hau no. Gehitu eskuekin, bestela ez du funtzionatuko.
  • timeout
    Hemen zure gustuaren arabera aukeratu dezakezu. Beharrezkoa da bezeroak jaurtiketa guztietarako denbora nahikoa izatea, eta portuko eskaner bot-a hautsi egingo da (eta % 146k eskaneatu egingo du).
  • hasi/gelditu/agindu.
    Komando bat badago, orduan komandoa, bi badira, hasi_agindua+gelditu_agindua.
    Akatsen bat egiten baduzu, knockd isilik geratuko da, baina ez du funtzionatuko.
  • hortaz
    Teorian, UDP erabil daiteke. Praktikan, tcp eta udp nahastu nituen, eta Baliko hondartzako bezeroak bosgarren aldiz bakarrik ireki ahal izan zuen atea. TCP behar zenean iritsi zelako, baina UDP ez da egia. Baina hau gustu kontua da, berriro.
  • sekuentzia
    Rake inplizitua da sekuentziak ez direla gurutzatu behar... nola jarri...

Adibidez, hau:

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

11111 ostikoz ireki hurrengo jaurtiketa 22222an itxarongo du. Hala ere, (22222) jaurtiketa honen ondoren lanean hasiko da itxi eta dena hautsiko da. Hau bezeroaren atzerapenaren araberakoa da ere. Horrelako gauzak Β©.

iptables

/etc/sysconfig/iptables-en bada hau:

*nat
:PREROUTING ACCEPT [0:0]

Ez gaitu benetan molestatzen, beraz, hona hemen:

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

Oztopatzen du.

Knockd-ek INPUT katearen amaieran arauak gehitzen dituenez, ezetza jasoko dugu.

Eta errefus hori itzaltzeak autoa haize guztietara irekitzea esan nahi du.

iptables-en ez galtzeko zer txertatu aurretik (hau pertsonak iradoki) egin dezagun errazago:

  • lehenetsia CentOS/Fedora-n lehen araua (β€œdebekatuta ez dagoena baimenduta dago”) kontrakoa jarriko da,
  • eta azken araua kentzen dugu.

Emaitza izan beharko litzateke:

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

Noski, DROP egin beharrean ERREJECT egin dezakezu, baina DROP-ekin bizitza dibertigarriagoa izango da botentzat.

3. Bezeroa

Leku hau interesgarriena da (nire ikuspuntutik), edozein hondartzatik ez ezik, edozein gailutatik ere lan egin behar duzulako.

Printzipioz, bezero batzuk zerrendatzen dira Online proiektua, baina hau serie berekoa da "dena Interneten dago". Horregatik, nire esku dagoena zerrendatuko dut hemen eta orain.

Bezero bat aukeratzerakoan, paketeen arteko atzerapen aukera onartzen duela ziurtatu behar duzu. Bai, ezberdintasunak daude hondartzen artean eta 100 megabit-ek inoiz ez dute bermatzen paketeak ordena egokian iritsiko direnik kokapen jakin batetik une egokian.

Eta bai, bezero bat konfiguratzerakoan, atzerapena zuk zeuk hautatu behar duzu. Denbora-muga gehiegi - bot-ek eraso egingo dute, gutxiegi - bezeroak ez du denborarik izango. Atzerapen handiegia - bezeroak ez du garaiz iritsiko edo ergelen gatazka egongo da (ikus "rastreak"), gutxiegi - paketeak Interneten galduko dira.

Timeout=5s-ekin, atzerapena=100..500ms guztiz funtzionatzen duen aukera da

Windows

Dibertigarria den arren, ez da hutsala Google-k plataforma honetarako kolpe-bezero argia izatea. Hala nola, CLI-k atzerapena, TCP eta arkurik gabe onartzen ditu.

Bestela, saiatu dezakezu hau da. Antza denez, nire Google ez da tarta bat.

Linux

Hemen dena erraza da:

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

MacOS

Modurik errazena ataka homebrewtik instalatzea da:
brew install knock
eta marraztu beharrezko batch fitxategiak honelako komandoetarako:

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

IOS

Lan egiteko aukera bat KnockOnD da (doan, dendatik).

Android

"Jokatu Portuak" Ez da publizitatea, baina funtzionatzen du. Eta garatzaileek nahiko erantzuten dute.

PS-ren deskontua HabrΓ©-ri, noski, Jainkoak bedeinka dezala noizbait...

UPD1: eskerrak pertsona on bati aurkituta laneko bezeroa Windows azpian.
UPD2: Beste bat gizon ona gogorarazi dit iptables-en amaieran arau berriak jartzea ez dela beti erabilgarria. Baina - araberakoa da.

Iturria: www.habr.com

Gehitu iruzkin berria