Këshilla & truket për Linux: server, hapu d

Ata që kërkojnë të sigurojnë qasje në serverët e tyre nga çdo pikë e botës përmes SSH/RDP ose mënyra të tjera - një RTFM i vogël/udhëzues.

Na nevojitet të kalojmë pa VPN dhe truqe të tjera, nga çdo pajisje që kemi në duar.

Dhe që të mos kemi shumë vështirësi me serverin.

Gjithçka që na nevojitet është - knockd, duar të drejta dhe 5 minuta punë.

"NĂ« internet ka gjithçka", sigurisht (madje edhe nĂ« HabrĂ«.), por kur vjen puna te realizimi konkret - kĂ«tu nis


Do të ushtrojmë në shembullin e Fedora/CentOS, por kjo nuk ka rëndësi.

Udhëzuesi është i dobishëm si për fillestarët ashtu dhe për profesionistët e këtij fushe, prandaj do të ketë komente, por më të shkurtra.

1. Serveri

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

  • konfiguroni atĂ« (pĂ«r shembull pĂ«r 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

    "Pjesa e "hapjes" është e vendosur për auto-mbyllje pas 1 ore. Ndoshta


  • /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Ă«rpara:

    service iptables restart
    service knockd start

  • mund tĂ« shtoni RDP nĂ« njĂ« Windows Server virtual qĂ« qarkullon ( /etc/knockd.conf; emri i ndĂ«rfaqes tĂ« vendoset sipas preferencĂ«s):

    [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

    Të gjithë goditjet tona nga klienti i ndjekim në server me komandën iptables -S.

2. Udhëzuesi për pengesat

knockd.conf:

Edhe në manual ka gjithçka (por kjo nuk është e saktë), megjithatë knockd - është një shok mjaft i kursyer me mesazhe, prandaj duhet të jeni shumë të kujdesshëm.

  • i
    Në depozat Fedora/CentOS, knockd më i fundit deri tani është 0.63. Ata që duan UDP - kërkoni paketat 0.70.
  • interface
    Në konfigurimin default të Fedora/CentOS, kjo rresht nuk ka. Shtoni manualisht, përndryshe nuk do të funksionojë.
  • timeout
    Këtu mund ta zgjidhni sipas preferencës. Duhet që dhe klienti të ketë kohë të mjaftueshme për të dërguar të gjitha goditjet - dhe skaneri i portave të bllokohet (sepse do të skanojnë 146%).
  • start/stop/command.
    NĂ«se ekipi Ă«shtĂ« njĂ« — atĂ«herĂ« command, nĂ«se dy — atĂ«herĂ« start_command+stop_command.
    NĂ«se gaboni — knockd do tĂ« hesht, por nuk do tĂ« punojĂ«.
  • proto
    Teoretikisht Ă«shtĂ« e mundur tĂ« pĂ«rdoret UDP. NĂ« praktikĂ«, unĂ« kam pĂ«rzierĂ« tcp dhe udp, dhe klienti nga plazhi nĂ« Bali arriti tĂ« hapĂ« derĂ«n vetĂ«m me herĂ«n e pestĂ«. Sepse TCP arriti kur duhej, ndĂ«rsa pĂ«r UDP — nuk Ă«shtĂ« e sigurt. Por ky Ă«shtĂ« njĂ« çështje shijeje, pĂ«rsĂ«ri.
  • sequence
    Gropat e padukshme janë se sekuencat nuk duhet të përputhen... si ta themi...

Për shembull, kjo:

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

Për goditjen 11111 open do të presë goditjen tjetër në 22222. Sidoqoftë, me këtë (22222) goditje do të fillojë të punojë close dhe gjithçka do të prishet. Kjo varet edhe nga vonesa e klientit. Këto janë gjëra ©.

iptables

Në /etc/sysconfig/iptables nëse kjo këtu:

*nat
:PREROUTING ACCEPT [0:0]

nuk na pengon shumë, atëherë kjo këtu:

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

vërtet na pengon.

Meqenëse knockd shton rregulla në fund të zinxhirit INPUT, ne do të marrim një refuzim.

Dhe çaktivizimi i kĂ«tij refuzimi — do tĂ« thotĂ« tĂ« hapĂ«sh makinĂ«n pĂ«r çdo erĂ«.

Për të mos u përpjekur me iptables se çfarë vendosim para se çfarë (siç propozojnë njerëzit) le të veprojmë më thjesht: default

  • nĂ« CentOS/Fedora rregulli i parĂ« («çfarĂ« nuk ndalohet — lejohet») do ta zĂ«vendĂ«sojmĂ« me tĂ« kundĂ«rtĂ«n, dhe rregulli pĂ«rfundimtar e heqim.
  • Si rezultat, duhet tĂ« duket kĂ«shtu:

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

Mund të bëni, sigurisht, në vend të DROP të bëni REJECT, por me DROP bots do të ketë jetë më të lehtë.

3. Klienti

Në këtë vend është më interesante (sipër mendjes time), sepse duhet të punosh jo vetëm nga çdo plazh, por edhe nga çdo pajisje.

Në parim, një sërë klientësh janë përmendur në

projekt, por kjo është nga ajo seri «në internet gjithçka është». Pra, unë do të përmend atë që funksionon për mua këtu dhe tani. website Kur zgjidhni një klient, është e nevojshme të siguroheni që ai mbështet opsionin e vonesës midis paketeve. Po, plazhi në plazh ndryshon dhe 100 megabit nuk garantojnë aspak arritjen e paketeve në rendin e duhur në kohën e duhur nga ky vend.

Dhe po — kur konfiguroni klientin, vonesĂ«n duhet ta pĂ«rshtatni vetĂ«. ShumĂ« timeout — bots do tĂ« sulmojnĂ«, pak — klienti nuk do tĂ« arrijĂ«. ShumĂ« vonesĂ« — klienti nuk do tĂ« arrijĂ« ose do tĂ« ketĂ« konflikt tĂ« goditjeve (shih «gropat»), pak — paketat do tĂ« humbasin nĂ« internet.

Me timeout=5s një variant mjaft funksional është delay=100..500ms

Siç tingĂ«llon qesharake, por gjetja e njĂ« knock-klienti tĂ« qartĂ« pĂ«r kĂ«tĂ« platformĂ« Ă«shtĂ« mjaft e vĂ«shtirĂ«. NjĂ«, qĂ« tĂ« ketĂ« CLI, mbĂ«shtetje pĂ«r vonesĂ«, TCP — dhe pa shiritat.

Windows

Si e çuditshme, por Ă«shtĂ« mjaft e vĂ«shtirĂ« tĂ« gjesh njĂ« klient knock tĂ« kuptueshĂ«m pĂ«r kĂ«tĂ« platformĂ«. NjĂ« qĂ« tĂ« ketĂ« CLI, tĂ« mbĂ«shtesĂ« vonesat, TCP — dhe pa zbukurime.

Si e mundësi për ta provuar kjo këtu. Duket se Gugl-i im nuk funksionon mirë.

Linux

Këtu është e thjeshtë:

dnf install knock -y
knock -d   11111 22222 33333

MacOS

Më lehtë është të instalohet porti nga homebrew:
brew install knock
dhe të krijosh vetë skedarë komandash si:

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

iOS

Varianti funksional — KnockOnD (falas, nga dyqani).

Android

«Knock on Ports». Nuk është reklamë, thjesht funksionon. Dhe zhvilluesit janë mjaft të përgjegjshëm.

P.S. markdown nĂ« Habr, sigurisht, ia uroj shĂ«ndet derisa tĂ« bĂ«het ndonjĂ«herë 

UPD1: falë një njeriu të mirë u gjet klienti funksional për Windows.
PËRDITËSIMI 2: njĂ« tjetĂ«r njeri i mirĂ« mĂ« kujtoi se vendosja e rregullave tĂ« reja nĂ« fund tĂ« iptables nuk Ă«shtĂ« gjithmonĂ« e dobishme. Por — varet.

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster