Këshilla dhe truk për Linux: server, hapu

Ata qĂ« duan tĂ« sigurojnĂ« aksesin ndaj serverĂ«ve tĂ« tyre nga çdo pikĂ« nĂ« botĂ« pĂ«rmes SSH/RDP ose ndonjĂ« metode tjetĂ«r — njĂ« RTFM e vogĂ«l/shĂ«nim.

Na nevojitet të bëjmë pa VPN dhe trillime të tjera, nga çdo pajisje në duar.

Dhe që të mos ushtrojmë shumë me serverin.

Gjithçka qĂ« na nevojitet Ă«shtĂ« — knockd, duar tĂ« drejta dhe 5 minuta punĂ«.

«NĂ« internet gjendet gjithçka», sigurisht (madje dhe nĂ« Habr), por kur vjen puna pĂ«r zbatimin konkret — kĂ«tu fillon


Do të ushtrojmë me shembujt Fedora/CentOS, por kjo nuk ka rëndësi.

Shënimi do të përgjigjet si për fillestarët, ashtu edhe për ekspertët e kësaj fushe, prandaj do të ketë komentet, 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:

    [opcionet]
        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 "hapëse" është e vendosur për auto-mbyllje pas 1 ore. Mos dihet


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

    shërbimi iptables restart
    shërbimi knockd fillon

  • mund tĂ« shtoni RDP nĂ« njĂ« Server Windows qĂ« rrotullohet brenda virtuale (/etc/knockd.conf; emri i interfesĂ«s mund tĂ« vendoset sipas dĂ«shirĂ«s):

    [RDPopen]
        sekuenca        = 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]
        sekuenca        = 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ë gjitha goditjet tona nga klienti i monitorojmë në server me komandën iptables -S.

2. Udhëzuesi për gabime

knockd.conf:

Në manalë gjithashtu ka informacion (por kjo nuk është e saktë), megjithatë knockd është një shok mjaft i kurthuar në mesazhe, kështu që duhet të jeni shumë vigjilent.

  • versioni
    NĂ« repo-t e Fedora/CentOS, versi i fundit i knockd sot Ă«shtĂ« 0.63. Kushdo qĂ« dĂ«shiron UDP – kĂ«rkoni paketat 0.70.
  • interface
    Në konfigurimin default të Fedora/CentOS, kjo rresht mungon. Shtoni me dorë, përndryshe nuk do të funksionojë.
  • koha e skadimit
    KĂ«tu mund tĂ« zgjidhni sipas shijes. Duhet qĂ« klienti tĂ« ketĂ« kohĂ« pĂ«r tĂ« gjitha shtytjet — dhe boti skanues i porteve dĂ«shtoi (dhe do tĂ« skanojĂ« 146%).
  • start/stop/command.
    NĂ«se komanda Ă«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Ă« funksionojĂ«.
  • proto
    Teoretikisht, mund tĂ« pĂ«rdoret UDP. NĂ« praktikĂ«, unĂ« kam pĂ«rzier tcp dhe udp, dhe klienti nga plazhi nĂ« Bali mundi ta hapte portĂ«n vetĂ«m pas herĂ«s sĂ« pestĂ«. Sepse TCP arriti kur duhej, ndĂ«rsa UDP — nuk Ă«shtĂ« e sigurt. Por kjo Ă«shtĂ« çështje shijesh, pĂ«rsĂ«ri.
  • sequence
    Grapat e padukshme janë që sekuencat nuk duhet të përzihen
 si ta them


Për shembull, diçka e tillë:

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

Për shtytjen 11111 open do të pret shtytjen tjetër në 22222. Megjithatë, për këtë (22222) shtytje do të fillojë të funksionojë close dhe gjithçka do të prishet. Kjo varet edhe nga vonesa e klientit. Këto janë punë ©.

iptables

Në /etc/sysconfig/iptables 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

Përfundimisht pengon.

Duke qenë se knockd shton rregulla në fund të zinxhirit INPUT, ne do të marrim reject.

Dhe ç'arĂ« tĂ« çaktivizosh kĂ«tĂ« reject — do tĂ« hapĂ«sh makinĂ«n pĂ«r çdo erĂ«.

Për të mos u përpjekur me iptables dhe të kuptojmë se ku duhet të fusim çfarë (siç sugjerojnë njerëzit), lehtësimin e bëmë më të thjeshtë: njerëzit duke e bërë më të thjeshtë:

  • default nĂ« CentOS/Fedora rregulli i parĂ« ('çfarĂ« nuk Ă«shtĂ« e ndaluar – Ă«shtĂ« e lejuar') do ta ndryshojmĂ« nĂ« tĂ« kundĂ«rtin, ndĂ«rsa rregulli i fundit e heqim.
  • NĂ« fund duhet tĂ« rezultojĂ«:

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

Sigurisht, mund të përdorim REJECT në vend të DROP, por me DROP botët do të kenë një jetë më të lehtë.

3. Klienti

Këtu është pjesa më interesante (sipër mendjes sime), pasi duhet të punojmë jo vetëm nga çdo plazh, por edhe nga çdo pajisje.

Në thelb, disa klientë janë përmendur në

projekt, por kjo është në të njëjtën seri 'në internet ka gjithçka'. Prandaj do të listoj atë që funksionon këtu dhe tani në duar. të internetit Kur zgjidhni klientin, është e nevojshme të siguroheni që ai mbështet opsionin delay midis paketave. Po, plazhi i plazhit ndryshon dhe 100 megabitet nuk garantojnë asnjëherë që paketat do të arrijnë në rendin e duhur në kohën e duhur nga ky vend.

Dhe po – gjatĂ« konfigurimit tĂ« klientit, delay duhet tĂ« jetĂ« i pĂ«rshtatur vetĂ«. ShumĂ« timeout – botĂ«t do tĂ« sulmojnĂ«, pak – klienti nuk do tĂ« arrijĂ«. ShumĂ« delay – klienti nuk do tĂ« arrijĂ« apo do tĂ« ketĂ« konflikte pĂ«r kryqĂ«zimin (shiko 'gyrbjne'), pak – paketat do tĂ« humbasin nĂ« internet.

Po, kur konfiguroni klientin, ecret duhet tĂ« pĂ«rshtaten vetĂ«. ShumĂ« kohĂ« shkĂ«putjeje — botĂ«t do tĂ« sulmojnĂ«, pak — klienti nuk do tĂ« arrijĂ« nĂ« kohĂ«. ShumĂ« ecret — klienti nuk do tĂ« arrijĂ« nĂ« kohĂ« ose do tĂ« ketĂ« konflikte tĂ« dhĂ«nash (shih "gjĂ«ra e zakonshme"), pak — paketat do tĂ« humbasin nĂ« internet.

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

Windows

Sa qesharake qĂ« tingĂ«llon, por tĂ« gjesh njĂ« klient knock tĂ« qartĂ« pĂ«r kĂ«tĂ« platformĂ« Ă«shtĂ« mjaft problematike. NjĂ« qĂ« mbĂ«shtet delay, TCP — dhe pa zbukurime.

Si variant, mund të provosh këtë. Duket se Google im nuk është shumë i aftë.

Linux

Këtu gjithçka është e thjeshtë:

dnf install knock -y
knock -d   11111 22222 33333

MacOS

Më e lehtë është të instalosh portin nga homebrew:
brew install knock
dhe të krijosh vetë skriptet e nevojshme të komandave si:

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

iOS

NjĂ« variant 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ë Habra, padyshim, e shpresoj të ketë ndonjëherë një shëndet të mirë...

UPD1: falë një njeriu të mirë u gjet një klient funksional për Windows.
UPD2: 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

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster