Para aquellos que necesitan proporcionarse a ellos mismos, a sus seres queridos, acceso a sus servidores desde cualquier parte del mundo a través de SSH/RDP/otro, un pequeño RTFM/spur.
Necesitamos prescindir de VPN y otras comodidades, desde cualquier dispositivo que tengamos a mano.
Y para que no tengas que ejercitarte demasiado con el servidor.
Todo lo que necesitas para esto es
"Todo está en Internet", por supuesto (incluso en
Practicaremos usando Fedora/CentOS como ejemplo, pero eso no importa.
El espolón es apto tanto para principiantes como para expertos en esta materia, por lo que habrá comentarios, pero serán más breves.
1 Servidor
-
instalar knock-servidor:
yum/dnf install knock-server
-
configúrelo (por ejemplo 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
La parte de “apertura” está configurada para cerrarse automáticamente después 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 ...
-
adelante:
service iptables restart service knockd start
-
puede agregar RDP al servidor virtual de Windows que gira en su interior (/etc/knockd.conf; sustituya el nombre de la interfaz según su 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
Realizamos un seguimiento de todas nuestras patadas del cliente en el servidor con el comando
iptables -S
.
2. Guía de rastrillos
knockd.conf:
El maná también contiene todo (pero esto es inexacto), pero knockd es un amigo bastante tacaño con los mensajes, por lo que debes tener mucho cuidado.
- versión
En los repositorios de Fedora/CentOS, el último knockd de hoy es 0.63. ¿Quién quiere UDP? Busque paquetes de 0.70. - interfaz.
En la configuración predeterminada de Fedora/CentOS esta línea No. Agrega con las manos, de lo contrario no funcionará. - tiempo de espera
Aquí podrás elegir según tu gusto. Es necesario que el cliente tenga suficiente tiempo para todas las patadas, y el robot del escáner de puertos fallará (y el 146% escaneará). - iniciar/detener/comando.
Si hay un comando, entonces comando, si hay dos, entonces start_command+stop_command.
Si comete un error, knockd permanecerá en silencio, pero no funcionará. - proto
En teoría, se puede utilizar UDP. En la práctica, mezclé tcp y udp, y el cliente de la playa de Bali solo pudo abrir la puerta la quinta vez. Porque TCP llegó cuando fue necesario, pero UDP no es un hecho. Pero esto es una cuestión de gustos, nuevamente. - secuencia
El rastrillo implícito es que las secuencias no deben cruzarse... cómo debería decir esto...
Por ejemplo, esto:
open: 11111,22222,33333
close: 22222,11111,33333
Por patada 11111 habiertos esperará la próxima patada en 22222. Sin embargo, después de esta patada (22222) comenzará a funcionar Cerrar y todo se romperá. Esto también depende del retraso del cliente. Cosas así ©.
iptables
Si en /etc/sysconfig/iptables esto es:
*nat
:PREROUTING ACCEPT [0:0]
Realmente no nos molesta, así que aquí está:
*filter
:INPUT ACCEPT [0:0]
...
-A INPUT -j REJECT --reject-with icmp-host-prohibited
Interfiere.
Dado que knockd agrega reglas al final de la cadena INPUT, obtendremos un rechazo.
Y apagar este rechazo significa abrir el coche a todos los vientos.
Para no perderse en iptables qué insertar antes de qué (como este
- por defecto en CentOS/Fedora primero la regla (“lo que no está prohibido está permitido”) será reemplazada por la contraria,
- y eliminamos la última regla.
El resultado debería ser:
*filter
:INPUT DROP [0:0]
...
#-A INPUT -j REJECT --reject-with icmp-host-prohibited
Por supuesto, puedes REJECT en lugar de DROP, pero con DROP la vida será más divertida para los bots.
3. Cliente
Este lugar es el más interesante (desde mi punto de vista), ya que es necesario trabajar no solo desde cualquier playa, sino también desde cualquier dispositivo.
En principio, varios clientes figuran en
Al elegir un cliente, debe asegurarse de que admita la opción de retraso entre paquetes. Sí, existen diferencias entre playas y 100 megabits nunca garantizan que los paquetes lleguen en el orden correcto en el momento correcto desde un lugar determinado.
Y sí, al configurar un cliente, debes seleccionar el retraso tú mismo. Demasiado tiempo de espera: los bots atacarán, muy poco: el cliente no tendrá tiempo. Demasiado retraso: el cliente no llegará a tiempo o habrá un conflicto de idiotas (ver "rastrillos"), muy poco: los paquetes se perderán en Internet.
Con tiempo de espera = 5 segundos, retraso = 100..500 ms es una opción completamente funcional
Windows
No importa lo gracioso que parezca, para Google no es nada trivial un cliente claro para esta plataforma. De modo que la CLI admita retrasos, TCP y sin arcos.
Como una opción, puedes probar
Linux
Es simple aquí:
dnf install knock -y
knock -d <delay> <dst_ip> 11111 22222 33333
MacOS
La forma más sencilla es instalar el puerto desde homebrew:
brew install knock
y dibuje los archivos por lotes necesarios para comandos como:
#!bin/sh
knock -d <delay> <dst_ip> 11111 22222 33333
iOS
Una opción que funciona es KnockOnD (gratis, en la tienda).
Android
"Llamar a los puertos" No es publicidad, pero simplemente funciona. Y los desarrolladores son bastante receptivos.
PD: rebaja en Habré, por supuesto, Dios lo bendiga algún día...
UPD1: gracias a
UPD2: Otro
Fuente: habr.com