Consellos e trucos de Linux: servidor, abre

Para aqueles que precisan proporcionarse a si mesmos, aos seus seres queridos, acceso aos seus servidores desde calquera parte do mundo a través de SSH/RDP/outro, un pequeno RTFM/spur.

Necesitamos prescindir da VPN e doutros timbres e asubíos, desde calquera dispositivo que teñamos a man.

E para que non teñas que facer moito exercicio co servidor.

Todo o que necesitas para iso é bater, brazos rectos e 5 minutos de traballo.

"Todo está en Internet", por suposto (incluso en Habré), pero cando se trata dunha implementación específica, aquí é onde comeza...

Practicaremos usando Fedora/CentOS como exemplo, pero iso non importa.

O espolón é adecuado tanto para principiantes como para expertos nesta materia, polo que haberá comentarios, pero serán máis breves.

1. Servidor

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

  • configúrao (por exemplo en 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 de "apertura" está configurada para pecharse automaticamente despois de 1 hora. Nunca sabes...

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

  • adiante:

    service iptables restart
    service knockd start

  • podes engadir RDP ao servidor virtual de Windows xirando dentro (/etc/knockd.conf; substitúe o nome da interface segundo o teu gusto):

    [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

    Seguimos todas as nosas patadas do cliente no servidor co comando iptables -S.

2. Guía de anciños

knockd.conf:

O mana tamén contén todo (pero isto é inexacto), pero knockd é un amigo bastante tacaño coas mensaxes, polo que hai que ter moito coidado.

  • versión
    Nos repositorios Fedora/CentOS, o último knockd para hoxe é 0.63. Quen quere UDP: busque paquetes de 0.70.
  • interface
    Na configuración predeterminada de Fedora/CentOS esta liña ningunha. Engade coas mans, se non, non funcionará.
  • tempo de espera
    Aquí podes escoller segundo o teu gusto. É necesario que o cliente teña tempo suficiente para todas as patadas e o bot do escáner de portos avarase (e o 146% escaneará).
  • iniciar/parar/comando.
    Se hai un comando, entón comando, se hai dous, entón start_command+stop_command.
    Se cometes un erro, knockd permanecerá en silencio, pero non funcionará.
  • prototipo
    Teoricamente, pódese usar UDP. Na práctica, mesturei tcp e udp, e o cliente da praia de Bali só puido abrir a porta por quinta vez. Porque TCP chegou cando era necesario, pero UDP non é un feito. Pero isto é unha cuestión de gustos, de novo.
  • secuencia
    O rake implícito é que as secuencias non deben cruzarse... como debería dicir isto...

Por exemplo, isto:

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

Por kick 11111 abrir agardará pola seguinte patada en 22222. Non obstante, despois desta (22222) comezará a funcionar pechar e todo se romperá. Isto tamén depende do atraso do cliente. Tales cousas ©.

iptables

Se está en /etc/sysconfig/iptables isto é:

*nat
:PREROUTING ACCEPT [0:0]

Non nos molesta moito, así que aquí está:

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

Interfire.

Dado que knockd engade regras ao final da cadea INPUT, rexeitaremos.

E desactivar este rexeitamento significa abrir o coche a todos os ventos.

Para non perderse en iptables que inserir antes que (como este persoas suxerir) imos facelo máis sinxelo:

  • por defecto en CentOS/Fedora primeiro a regra (“o que non está prohibido está permitido”) substituirase pola contraria,
  • e eliminamos a última regra.

O resultado debe ser:

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

Por suposto, podes REXECTAR en lugar de DROP, pero con DROP a vida será máis divertida para os bots.

3. Cliente

Este lugar é o máis interesante (desde o meu punto de vista), xa que hai que traballar non só desde calquera praia, senón tamén desde calquera dispositivo.

En principio, figuran varios clientes On-line proxecto, pero isto é da mesma serie "todo está en Internet". Polo tanto, enumerarei aquí e agora o que está funcionando ao meu alcance.

Ao escoller un cliente, cómpre asegurarse de que admite a opción de atraso entre paquetes. Si, hai diferenzas entre as praias e os 100 megabits nunca garanten que os paquetes cheguen na orde correcta no momento axeitado desde unha determinada localización.

E si, ao configurar un cliente, cómpre seleccionar o atraso vostede mesmo. Demasiado tempo de espera - os bots atacarán, moi pouco - o cliente non terá tempo. Demasiado atraso - o cliente non chegará a tempo ou haberá un conflito de idiotas (ver "rastrillos"), moi pouco - os paquetes perderanse en Internet.

Con timeout=5s, delay=100..500ms é unha opción completamente funcional

Windows

Non importa o divertido que pareza, non é nada trivial para Google un cliente claro para esta plataforma. De tal xeito que a CLI admite retardo, TCP e sen arcos.

Alternativamente, podes probar é o que hai. Ao parecer, o meu Google non é un bolo.

Linux

Todo é sinxelo aquí:

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

MacOS

O xeito máis sinxelo é instalar o porto desde Homebrew:
brew install knock
e debuxa os ficheiros por lotes necesarios para comandos como:

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

IOS

Unha opción de traballo é KnockOnD (gratuíto, desde a tenda).

androide

"Knock on Ports" Non é publicidade, pero só funciona. E os desenvolvedores son bastante sensibles.

Desconto de PS en Habré, por suposto, Deus o bendiga algún día...

UPD1: grazas a a unha boa persoa atopado cliente que traballa baixo Windows.
UPD2: Outro bo home lembroume que poñer novas regras ao final de iptables non sempre é útil. Pero - depende.

Fonte: www.habr.com

Engadir un comentario