Cunsiglii è trucchi Linux: servitore, apre

Per quelli chì anu bisognu di furnisce elli stessi, i so amati, cù accessu à i so servitori da ogni locu in u mondu via SSH / RDP / altri, un picculu RTFM / spur.

Avemu bisognu di fà senza VPN è altre campane è fischi, da ogni dispusitivu in manu.

È cusì chì ùn avete micca eserciziu troppu cù u servitore.

Tuttu ciò chì avete bisognu per questu hè chjappà, braccia dritte è 5 minuti di travagliu.

"Tuttu hè in Internet", di sicuru (ancu nantu Habré), ma quandu si tratta di una implementazione specifica, hè quì chì principia ...

Praticaremu cù Fedora / CentOS cum'è un esempiu, ma ùn importa micca.

U spur hè adattatu per i principianti è l'esperti in questa materia, cusì ci saranu cumenti, ma seranu più brevi.

1. Servitore

  • stallà knock-server:
    yum/dnf install knock-server

  • cunfigurallu (per esempiu in 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

    A parte "apertura" hè stallata per chjude automaticamente dopu à 1 ora. Ùn sapete mai...

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

  • avanti :

    service iptables restart
    service knockd start

  • pudete aghjunghje RDP à u servitore virtuale di Windows chì giranu in l'internu (/etc/knockd.conf; sustituisce u nome di l'interfaccia per adattà à u vostru gustu):

    [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

    Seguimu tutti i nostri calci da u cliente nantu à u servitore cù u cumandimu iptables -S.

2. Guida à i razzi

knockd.conf:

U mana cuntene ancu tuttu (ma questu hè imprecisu), ma knockd hè un amicu piuttostu stingy cù missaghji, cusì avete bisognu à esse assai attenti.

  • versione
    In i repositori Fedora / CentOS, l'ultimu knockd per oghje hè 0.63. Quale vole UDP - cercate 0.70 pacchetti.
  • interfaccia
    In a cunfigurazione predeterminata Fedora / CentOS sta linea assenza. Aghjunghjite cù e vostre mani, altri ùn viaghja micca.
  • pausa
    Quì pudete sceglie secondu u vostru gustu. Hè necessariu chì u cliente hà abbastanza tempu per tutti i calci - è u bot scanner di u portu si romperà (è 146% scanserà).
  • start / stop / cumanda.
    Se ci hè un cumandamentu, allora cumanda, se ci sò dui, allora start_command + stop_command.
    Se fate un sbagliu, Knockd resta in silenziu, ma ùn funziona micca.
  • prototipu
    In teoria, UDP pò esse usatu. In pratica, aghju mischju tcp è udp, è u cliente da a spiaggia in Bali hà sappiutu apre a porta solu a quinta volta. Perchè TCP hè ghjuntu quandu hè necessariu, ma UDP ùn hè micca un fattu. Ma questu hè una questione di gustu, di novu.
  • secunnu
    U rake implicitu hè chì e sequenze ùn deve micca intersece ... cumu si mette ...

Per esempiu, questu:

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

À u colpu 11111 apartu aspittàrà u prossimu calciu à 22222. Tuttavia, dopu à questu (22222) calciu hà da cumincià à travaglià chiudi è tuttu si romperà. Questu dipende ancu da u ritardu di u cliente. Tali cose ©.

iptables

Se in /etc/sysconfig/iptables questu hè:

*nat
:PREROUTING ACCEPT [0:0]

Ùn ci preoccupa micca veramente, dunque quì hè quì:

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

Si interferisce.

Siccomu knockd aghjunghje regule à a fine di a catena INPUT, avemu da ricusà.

È spegne stu rifiutu significa apre a vittura à tutti i venti.

Per ùn perde micca in iptables ciò chì inserisce prima di ciò chì (cum'è questu persone suggerisce) rendemu più simplice:

  • predeterminatu nantu à CentOS/Fedora u primu a regula ("ciò chì ùn hè micca pruibitu hè permessu") serà rimpiazzata da u cuntrariu,
  • è sguassate l'ultima regula.

U risultatu deve esse:

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

Pudete, sicuru, fà REJECT invece di DROP, ma cù DROP a vita serà più divertente per i bots.

3. Cliente

Stu locu hè u più interessante (da u mo puntu di vista), postu chì avete bisognu di travaglià micca solu da ogni spiaggia, ma ancu da ogni dispusitivu.

In principiu, una quantità di clienti sò listati situ prughjettu, ma questu hè da a stessa serie "tuttu hè in Internet". Dunque, vi elencu ciò chì travaglia à a mo dita quì è avà.

Quandu sceglite un cliente, avete bisognu di assicurà chì sustene l'opzione di ritardu trà i pacchetti. Iè, ci sò diffirenzii trà e spiagge è 100 megabits ùn guarantisci mai chì i pacchetti ghjunghjeranu in l'ordine ghjustu à u mumentu propiu da un locu determinatu.

È iè, quandu crea un cliente, avete bisognu di selezziunate u ritardu stessu. Troppu timeout - i bots attaccheranu, troppu pocu - u cliente ùn hà micca tempu. Troppu ritardu - u cliente ùn farà micca in tempu o ci sarà un cunflittu di idioti (vede "rakes"), troppu pocu - i pacchetti si perderanu in Internet.

Cù timeout = 5s, ritardu = 100..500ms hè una opzione cumpletamente di travagliu

Windows

Ùn importa micca quantu sona divertente, hè abbastanza micca triviale per Google un cliente chjaru per questa piattaforma. Tali chì u CLI sustene ritardu, TCP - è senza arcu.

In alternativa, pudete pruvà questu hè. Apparentemente u mo Google ùn hè micca una torta.

Linux

Hè simplice quì:

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

MacOS

A manera più faciule hè di stallà u portu da homebrew:
brew install knock
è tracciate i schedari batch necessarii per i cumandamenti cum'è:

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

iOS

Una opzione di travagliu hè KnockOnD (gratuitu, da a tenda).

Android

"Knock on Ports" Ùn hè micca publicità, ma funziona solu. È i sviluppatori sò abbastanza responsive.

PS markdown nantu à Habré, sicuru, Diu u benedica un ghjornu...

UPD1: grazie à à una bona persona trovu cliente chì travaglia sottu Windows.
UPD2: Un altru omu bonu m'hà ricurdatu chì mette novi regule à a fine di iptables ùn hè micca sempre utile. Ma - dipende.

Source: www.habr.com

Add a comment