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!