Configurar un golpeo de puertos con ConfigServer Security & Firewall (CSF) es realmente facil

 

Para explicar que es Golpeo de puertos nada mejor explicado que wikipedia

«El golpeo de puertos (del inglés port knocking) es un mecanismo para abrir puertos externamente en un firewall mediante una secuencia preestablecida de intentos de conexión a puertos que se encuentran cerrados. Una vez que el firewall recibe una secuencia de conexión correcta, sus reglas son modificadas para permitir al host que realizó los intentos conectarse a un puerto específico.

El propósito principal del golpeo de puertos es prevenir un escanéo de puertos por parte de un atacante que busca posibles servicios vulnerables. Como los mismos solo se abren ante un golpeo de puertos correcto. Normalmente los puertos donde se brindan los servicios se muestran aparentemente cerrados.»

Suponiendo que ya instalaste CSF y ya tienes funcionando el firewall ahora debes editar la configuración, sino acá tienes una guía Instalar y configurar ConfigServer Security & Firewall (CSF).

En el servidor haces:

#Abres el archivo de configuración
sudo nano /etc/csf/csf.conf

#Pasas el firewall a modo debug
#Cambiando
TESTING = "0"
#por
TESTING = "1"

#Guardas, sales y luego haces
sudo csf -r

#Volves a entrar
sudo nano /etc/csf/csf.conf

#Buscas la linea que tiene el valor PORTKNOCKING

#No recuerdo los datos que trae por defecto
#Suponiendo que tienes ssh en el puerto 22
#A modo de ejemplo lo dejamos
PORTKNOCKING = "22;TCP;30;7000;8000;9000"

#Guardas y sales y luego reinicias el firwall
sudo csf -r

Abres una nueva consola en tu pc local (EN LOCAL no en el server) y probas entrar por ssh, te debería fallar.

Los puertos a los que debes llamar son a los puertos 7000,8000 y 9000 en ese orden, obviamente tu puede elegir los puertos que quieras y la cantidad de puertos que quieras, pero ojo, cuantos mas puertos elijas mas va a demorar la conexión, lo aconsejable es elegir otros puertos y que no estén en orden.

Para llamar a estos puertos creas el siguiente archivo:

Tambien en local hacemos lo siguiente

Si tu ssh solo pide contraseña

sudo nano /usr/bin/knock

#Alli dentro pegas
KNOCK='7000 8000 9000'
HOST='example.com'
PORT='22'
USER='root'
echo 'Conectando...'

for x in $KNOCK ; do nmap -Pn --host_timeout 201 --max-retries 0 -p $x $HOST > /dev/null ; done 
ssh -p $PORT $USER@$HOST

#Si los puertos que configuraste en el firewall no son
#7000 8000 y 9000 en KNOCK colocas los que pusiste tu
#En HOST colocas la ip o tu dominio
#En PORT pones el puerto que tengas ssh
#En USER colocas tu nombre de usuario del servidor

Por el contrario si a ssh tu ingresas con un archivo key en lugar de lo anterior haces lo siguiente:

sudo nano /usr/bin/knock

#Alli dentro pegas
KNOCK='7000 8000 9000'
HOST='example.com'
PORT='22'
KEY='/home/tu/.ssh/rsa.key'
USER='root'

echo 'Conectando...'
for x in $KNOCK ; do nmap -Pn --host_timeout 201 --max-retries 0 -p $x $HOST > /dev/null ; done 
ssh -p $PORT -i $KEY $USER@$HOST

#Si los puertos que configuraste en el firewall no son
#7000 8000 y 9000 en KNOCK colocas los que pusiste tu
#En HOST colocas la ip o tu dominio
#En PORT pones el puerto que tengas ssh
#En KEY pones la ruta a tu key
#En USER colocas

En ambos casos:


#Guardas, sales y luego haces
sudo chmod +x /usr/bin/knock

En el servidor hacemos lo siguiente:

#Reinicias por las dudas así el modo
#depuración te da 5 minutos mas
sudo csf -r

Ahora en Local haces lo siguiente:

#En consola escribes knock y presionas enter
knock

#Te deberia aparecer 
Conectando...
#Luego de demorar un poquito deberia abrirte la sesion ssh

Linux srv01 4.9.0-4-amd64 #1 SMP Debian 4.9.51-1 (2017-09-28) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Tue Dec 26 18:42:49 2017 from XXX.XXX.XXX.XXX
root@example.com:~$

Si todo funciono correctamente ahora debes sacar al firewall de modo debug, para eso en el servidor haces lo siguiente:

sudo nano /etc/csf/csf.conf
#Cambias
TESTING = "1"
#por
TESTING = "0"

#Guardas, sales y luego
csf -r

Todo Listo, ya tienes otro mecanismo mas de seguridad.

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *