GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo asegurar el servicio SSH con Port Knocking

Si desea permitir que los usuarios accedan a servicios específicos en su servidor sin abrir un firewall, puede usar la activación de puertos. La llamada de puerto es un método que le permite proteger su servicio de usuarios no autorizados. La activación de puertos permite conexiones entrantes cuando se recibe una secuencia correcta de intentos de conexión.

En esta publicación, aseguraremos el puerto SSH abierto 22 con la activación de puertos. Este puerto solo se abrirá cuando alguien solicite los puertos 7000, 8000, 9000 en secuencia.

Requisitos

  • Un servidor Ubuntu 20.04 en Atlantic.Net Cloud Platform
  • Una contraseña de root configurada en su servidor

Paso 1:crear el servidor en la nube de Atlantic.Net

Primero, inicie sesión en su servidor en la nube de Atlantic.Net. Cree un nuevo servidor, eligiendo Ubuntu 20.04 como sistema operativo con al menos 2 GB de RAM. Conéctese a su servidor en la nube a través de SSH e inicie sesión con las credenciales resaltadas en la parte superior de la página.

Una vez que haya iniciado sesión en su servidor Ubuntu 20.04, ejecute el siguiente comando para actualizar su sistema base con los últimos paquetes disponibles.

apt-get update -y

Paso 2:instalar y configurar Knockd

apt-get install knockd -y

Una vez que el paquete esté instalado, edite el archivo de configuración predeterminado de eliminación de puertos:

nano /etc/knockd.conf

Encuentre la secuencia predeterminada que se muestra a continuación:

        sequence    = 7000,8000,9000
        sequence    = 9000,8000,7000

Y reemplácelos con la siguiente secuencia:

        sequence    = 7777,8888,9999
        sequence    = 9999,8888,7777

Además, busque la siguiente línea:

        command     = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT

Y reemplácelo con la siguiente línea:

        command     = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT

Guarde y cierre el archivo cuando haya terminado.

En el archivo de configuración anterior, la secuencia 7777, 8888, 9999 se usa para abrir el puerto 22 para un sistema cliente y la secuencia 9999, 8888, 7777 se usa para cerrar el puerto 22 para un sistema cliente.

A continuación, edite el /etc/default/knockd archivo de configuración:

nano /etc/default/knockd

Cambie las siguientes líneas:

# Start the Knockd service
START_KNOCKD=1

# Name of your network interface
KNOCKD_OPTS="-i eth0"

Guarde y cierre el archivo cuando haya terminado, luego reinicie el servicio Knockd y habilítelo para que se inicie al reiniciar el sistema:

systemctl restart knockd
systemctl enable knockd

A continuación, verifique el estado del servicio Knockd con el siguiente comando:

systemctl status knockd

Salida de muestra:

● knockd.service - Port-Knock Daemon
     Loaded: loaded (/lib/systemd/system/knockd.service; disabled; vendor preset: enabled)
     Active: active (running) since Sun 2021-08-15 13:26:31 UTC; 5s ago
       Docs: man:knockd(1)
   Main PID: 6555 (knockd)
      Tasks: 1 (limit: 2353)
     Memory: 296.0K
     CGroup: /system.slice/knockd.service
             └─6555 /usr/sbin/knockd -i eth0

Aug 15 13:26:31 ubuntu2004 systemd[1]: Started Port-Knock Daemon.
Aug 15 13:26:31 ubuntu2004 knockd[6555]: starting up, listening on eth0

Paso 3:instalar y configurar IPtables

Knockd usa la regla Iptables para abrir y cerrar el puerto SSH, por lo que deberá instalar el paquete Iptables en su servidor.

Ejecute el siguiente comando para instalar el paquete de Iptables:

apt-get install iptables iptables-persistent -y

Una vez que el paquete esté instalado, cree una regla de Iptables para bloquear el puerto SSH 22 para todos los usuarios:

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j REJECT

A continuación, guarde la regla de Iptables y vuelva a cargarla con el siguiente comando:

netfilter-persistent save
netfilter-persistent reload

En este punto, la activación de puertos está configurada para OpenSSH en su servidor.

Paso 4:comprobar la conexión OpenSSH desde el sistema del cliente

A continuación, vaya al sistema cliente y compruebe si el puerto 22 de OpenSSH está bloqueado o no.

Puede verificarlo usando el comando NMAP:

nmap your-server-ip

Debería ver que el puerto 22 está filtrado en el servidor.

Nmap scan report for your-server-ip
Host is up (0.38s latency).
Not shown: 998 closed ports
PORT   STATE    SERVICE
21/tcp open     ftp
22/tcp filtered ssh
Nmap done: 1 IP address (1 host up) scanned in 277.58 seconds

Ahora, intenta conectarte a tu servidor usando SSH desde la máquina cliente:

ssh [email protected]

Debería ver el mensaje de conexión rechazada:

ssh: connect to host your-server-ip port 22: Connection refused

Paso 5:configurar Knockd en el cliente para conectar el servidor SSH

Ahora deberá instalar el cliente Knock en el sistema cliente para conectarse al servidor SSH.

Primero, ejecute el siguiente comando para instalar el paquete del cliente Knockd:

apt-get install knockd -y

Ahora use la siguiente secuencia de golpes para abrir el puerto SSH 22 en el servidor.

knock -v your-server-ip 7777 8888 9999

Cuando su servidor reciba una secuencia correcta que haya definido en el archivo de configuración de Knockd, abrirá el puerto SSH 22 para su máquina cliente y podrá conectarse al servidor SSH.

ssh [email protected]

Después de completar su tarea en el servidor SSH remoto, puede usar la siguiente secuencia desde la máquina cliente para cerrar el puerto SSH nuevamente.

knock -v your-server-ip 9999 8888 7777

Conclusión

En la guía anterior, aprendió cómo proteger un servidor SSH con la activación de puertos. Puede usar el mismo método para asegurar otros puertos en un servidor Linux. ¡Pruébelo en alojamiento VPS de Atlantic.Net!


Linux
  1. Cómo instalar el servicio SSH (shell seguro) en Kali Linux

  2. SSH a un puerto distinto del 22:cómo hacerlo (con ejemplos)

  3. Cómo habilitar el servicio SSH en Ubuntu 22.04 LTS

  4. Cómo cambiar el puerto SSH en Linux

  5. Cómo proteger su servidor Ubuntu con CSF Firewall

Cómo administrar de forma remota el servidor Ubuntu con SSH

Cómo instalar el servidor SSH en Ubuntu 20.04

Cómo usar el golpe de puerto para asegurar el servicio SSH en Linux

Cómo SSH al servidor a través de Linux

Cómo bloquear su servidor CentOS con IPTables

Cómo proteger SSH con Fail2Ban