El golpe de puerto es una forma de proteger un servidor cerrando los puertos del firewall, incluso aquellos que usted sabe que serán utilizados. Esos puertos se abren a pedido si, y solo si, la solicitud de conexión proporciona el golpe secreto.
En la década de 1920, cuando la prohibición estaba en pleno apogeo, si querías entrar en un bar clandestino, tenías que conocer el golpe secreto y tocarlo correctamente para entrar.
El golpe de puerto es un equivalente moderno. Si desea que las personas tengan acceso a los servicios en su computadora, pero no desea abrir su firewall a Internet, puede usar la llamada de puertos. Le permite cerrar los puertos en su firewall que permiten conexiones entrantes y hacer que se abran automáticamente cuando se realiza un patrón preestablecido de intentos de conexión. La secuencia de intentos de conexión actúa como un golpe secreto. Otro golpe secreto cierra el puerto.
La llamada de puertos es una novedad, pero es importante saber que es un ejemplo de seguridad a través de la oscuridad, y ese concepto es fundamentalmente defectuoso. El secreto de cómo acceder a un sistema es seguro porque solo los miembros de un grupo específico lo conocen. Pero una vez que se revela ese secreto, ya sea porque se revela, se observa, se adivina o se resuelve, su seguridad es nula. Es mejor proteger su servidor de otras formas más sólidas, como requerir inicios de sesión basados en claves para un servidor SSH .
Los enfoques más sólidos de la ciberseguridad son de múltiples capas, por lo que quizás la llamada de puertos debería ser una de esas capas. Cuantas más capas, mejor, ¿verdad? Sin embargo, se podría argumentar que el golpe de puerto no agrega mucho (si acaso) a un sistema seguro y debidamente reforzado.
La ciberseguridad es un tema vasto y complicado, pero no debe usar la llamada de puertos como su única forma de defensa.
Para demostrar el golpe de puerto, lo usaremos para controlar el puerto 22, que es el puerto SSH. Usaremos una herramienta llamada knockd . Úselo apt-get
para instalar este paquete en su sistema si usa Ubuntu u otra distribución basada en Debian. En otras distribuciones de Linux, utilice la herramienta de administración de paquetes de su distribución de Linux.
Escriba lo siguiente:
sudo apt-get install knockd
Probablemente ya tenga el firewall de iptables instalado en su sistema, pero es posible que deba instalar el iptables-persistent
paquete. Maneja la carga automática de iptable
reglas guardadas .
Escriba lo siguiente para instalarlo:
sudo apt-get install iptables-persistent
Cuando aparezca la pantalla de configuración de IPV4, presione la barra espaciadora para aceptar la opción «Sí».
Presione la barra espaciadora nuevamente en la pantalla de configuración de IPv6 para aceptar la opción “Sí” y continuar.
El siguiente comando le dice iptables
que permita que continúen las conexiones establecidas y en curso. Ahora emitiremos otro comando para cerrar el puerto SSH.
Si alguien está conectado por SSH cuando emitimos este comando, no queremos que se corte:
sudo iptables -A INPUT -m conntrack --ctstate ESTABLECIDO, RELACIONADO -j ACEPTAR
Este comando agrega una regla al firewall, que dice:
-m
parámetro hace iptables
que se utilicen módulos de coincidencia de paquetes adicionales; en este caso, el llamado conntrack
funciona con las capacidades de seguimiento de conexión de red del kernel.Ahora podemos emitir el comando para cerrar el puerto:
sudo iptables -A INPUT -p tcp --dport 22 -j RECHAZAR
Este comando agrega una regla al firewall, que dice:
Debemos iniciar el netfilter-persistent
demonio. Podemos hacerlo con este comando:
sudo systemctl start netfilter-persistent
Queremos netfilter-persistent
pasar por un ciclo de guardar y recargar, por lo que carga y controla las iptable
reglas.
Escriba los siguientes comandos:
sudo netfilter-persistent save
sudo netfilter-persistent reload
Ahora ha instalado las utilidades y el puerto SSH está cerrado (con suerte, sin terminar la conexión de nadie). Ahora es el momento de configurar el golpe secreto.
Hay dos archivos que edita para configurar knockd
. El primero es el siguiente knockd
archivo de configuración:
sudo gedit /etc/knockd.conf
El gedit
editor se abre con el knockd
archivo de configuración cargado.
Editaremos este archivo para satisfacer nuestras necesidades. Las secciones que nos interesan son «openSSH» y «closeSSH». Las siguientes cuatro entradas están en cada sección:
iptables
firewall cuando se activa la acción de abrir o cerrar. Estos comandos agregan una regla al firewall (para abrir el puerto) o la eliminan (para cerrar el puerto).La sección «openSSH» puede leerse como «se debe realizar una solicitud de conexión TCP a los puertos 7000, 8000 y 9000, en ese orden y dentro de los 5 segundos, para que el comando para abrir el puerto 22 se envíe al firewall».
La sección «closeSSH» se puede leer como «se debe realizar una solicitud de conexión TCP a los puertos 9000, 8000 y 7000, en ese orden y en 5 segundos, para que el comando para cerrar el puerto 22 se envíe al firewall».
Las entradas de «comando» en las secciones openSSH y closeSSH siguen siendo las mismas, excepto por un parámetro. Así es como se componen:
Las ediciones que haremos en el archivo están resaltadas en rojo a continuación:
Extendemos el «seq_timeout» a 15 segundos. Esto es generoso, pero si alguien dispara manualmente solicitudes de conexión, es posible que necesite tanto tiempo.
En la sección «openSSH», cambiamos la -A
opción (agregar) en el comando a -I
(insertar). Este comando inserta una nueva regla de firewall en la parte superior de la lista de reglas de firewall. Si deja la -A
opción, agrega la lista de reglas de firewall y la coloca al final .
El tráfico entrante se prueba con cada regla de firewall en la lista de arriba hacia abajo. Ya tenemos una regla que cierra el puerto 22. Por lo tanto, si el tráfico entrante se prueba con esa regla antes de ver la regla que permite el tráfico, la conexión se rechaza; si ve esta nueva regla primero, se permite la conexión.
El comando cerrar elimina la regla agregada por openSSH de las reglas de firewall. El tráfico SSH se maneja una vez más mediante la regla preexistente de “puerto 22 cerrado”.
Después de realizar estas ediciones, guarde el archivo de configuración.
El knockd
archivo de control es mucho más sencillo. Sin embargo, antes de sumergirnos y editar eso, necesitamos saber el nombre interno de nuestra conexión de red; para encontrarlo, escriba este comando:
dirección ip
La conexión que utiliza esta máquina para investigar este artículo se llama enp0s3
. Anote el nombre de su conexión.
El siguiente comando edita el knockd
archivo de control:
sudo gedit / etc / default / knockd
Aquí está el knockd
archivo en formato gedit
.
Las pocas ediciones que debemos realizar están resaltadas en rojo:
Cambiamos la entrada «START_KNOCKD =» de 0 a 1.
También hemos eliminado el hash #
desde el principio de la “KNOCKD_OPTS =” entrada, y se sustituye “eth1” con el nombre de nuestra conexión a la red, enp0s3
. Por supuesto, si su conexión de red es eth1
, no la cambiará.
Es hora de ver si funciona. Iniciaremos el knockd
demonio con este comando:
sudo systemctrl start knockd
Ahora, saltaremos a otra máquina e intentaremos conectarnos. También instalamos la knockd
herramienta en esa computadora, no porque queramos configurar el puerto, sino porque el knockd
paquete proporciona otra herramienta llamada knock
. Usaremos esta máquina para disparar en nuestra secuencia secreta y llamar por nosotros.
Utilice el siguiente comando para enviar su secuencia secreta de solicitudes de conexión a los puertos en la computadora host que golpea el puerto con la dirección IP 192.168.4.24:
golpe 192.168.4.24 7000 8000 9000 -d 500
Esto le dice knock
que apunte a la computadora a la dirección IP 192.168.4.24 y active una solicitud de conexión a los puertos 7000, 8000 y 9000, a su vez, con un -d
(retraso) de 500 milisegundos entre ellos.
Un usuario llamado «dave» luego realiza una solicitud SSH a 192.168.4.24:
ssh dave@192.168.4.24
Su conexión es aceptada, ingresa su contraseña y comienza su sesión remota. Su símbolo del sistema cambia de dave@nostromo
a dave@howtogeek
. Para cerrar sesión en la computadora remota, escribe:
salida
Su símbolo del sistema vuelve a su computadora local. Usa knock
una vez más, y esta vez, apunta a los puertos en orden inverso para cerrar el puerto SSH en la computadora remota.
golpe 192.168.4.24 9000 8000 7000 -d 500
Es cierto que esta no fue una sesión remota particularmente fructífera, pero demuestra la apertura y el cierre del puerto a través de golpes de puerto y cabe en una sola captura de pantalla.
Entonces, ¿cómo se ve esto desde el otro lado? El administrador del sistema en el host de golpe de puerto utiliza el siguiente comando para ver las nuevas entradas que llegan al registro del sistema:
tail -f / var / log / syslog
iptables
envía el comando para insertar la regla en la lista de reglas. Permite el acceso a través de SSH en el puerto 22 desde la dirección IP específica de la PC que dio el golpe secreto correcto (192.168.4.23).Ahora, la única regla en la iptables
lista de reglas con respecto al puerto 22 es la que escribimos al principio para cerrar ese puerto. Entonces, el puerto 22 ahora está cerrado nuevamente.
Ese es el truco de salón de los golpes de puerto. Trátelo como una distracción y no lo haga en el mundo real. O, si debe hacerlo, no confíe en él como su única forma de seguridad.
El mundo del gaming ha experimentado un crecimiento exponencial en los últimos años. La…
Stokkete/Shutterstock.com ¿Sigue utilizando una unidad flash USB obsoleta para almacenar sus archivos? ¿Por qué no…
LG Los fabricantes siempre intentan mejorar el rendimiento de imagen de los monitores. Como resultado,…
Patty Chan/Shutterstock.com Si cree en lo que ve en las redes sociales, puede pensar en…
Seksan.TH/Shutterstock.com Los servicios de suscripción como Netflix, Game Pass y Spotify nos permiten consumir tantas…
fatmawati achmad zaenuri/Shutterstock El acceso a Internet, oa cualquier otra red, se rige por la…