Solución 1:
Si bien es prohibitivamente difícil ocultar el número de versión de su demonio SSH, puede ocultar fácilmente la versión de Linux (Debian-3ubuntu4)
Agrega la siguiente línea a /etc/ssh/sshd_config
DebianBanner no
Y reinicie su demonio SSH:/etc/init.d/ssh restart
o service ssh restart
Solución 2:
Ocultarlos no asegurará su servidor. Hay muchas más formas de tomar huellas dactilares de lo que está ejecutando su sistema. Para SSH en particular, el anuncio de la versión es parte del protocolo y es obligatorio.
http://www.snailbook.com/faq/version-string.auto.html
Solución 3:
Casi universalmente, los banners de identificación son parte del código compilado y no tienen opciones de configuración para alterarlos o suprimirlos. Tendrá que volver a compilar esas piezas de software.
Solución 4:
Estoy bastante seguro de que no puedes cambiar el anuncio de la versión.
Las mejores formas de asegurar sshd son:
- Cambie el número de puerto predeterminado.
- Prohibir inicios de sesión raíz.
- Forzar el protocolo 2 (suponiendo que no se haga de forma predeterminada).
- Incluya en la lista blanca los servidores que tienen permitido SSH.
Los tres primeros se pueden hacer modificando /etc/sshd_config
El cuarto depende del software de firewall que esté utilizando.
Solución 5:
Como se dijo anteriormente, cambiar un número de versión es
- Difícil de hacer
- Seguridad a través de la oscuridad
- No flexible
Lo que sugiero es implementar Port Knocking. Es una técnica bastante simple para ocultar cualquier cosa que se esté ejecutando en su servidor.
Aquí hay una buena implementación:http://www.zeroflux.org/projects/knock
Así es como lo implementé en mis servidores (otros números) para abrir SSH solo a las personas que conocen 'el golpe secreto':
[openSSH]
sequence = 300,4000,32
seq_timeout = 5
command = /opencloseport.sh %IP% 2305
tcpflags = syn
Esto dará una ventana de 5 segundos en la que los 3 paquetes SYN deben recibirse en el orden correcto. Elija puertos que estén alejados entre sí y no secuenciales. De esa manera, un escáner de puertos no puede abrir el puerto por accidente. Estos puertos no necesitan ser abiertos por iptables.
El script que llamo es este. Abre un puerto particular durante 5 segundos para que la IP envíe los paquetes SYN.
#!/bin/bash
/sbin/iptables -I INPUT -s $1 -p tcp --dport $2 -j ACCEPT
sleep 5
/sbin/iptables -D INPUT -s $1 -p tcp --dport $2 -j ACCEPT
Puede ser una verdadera molestia enviar los paquetes SYN, así que uso el script para conectarme al SSH de mis servidores:
#!/bin/bash
knock $1 $2
knock $1 $3
knock $1 $4
ssh [email protected]$1 -p $6
(Es bastante obvio lo que está pasando aquí...)
Una vez que se establece la conexión, se puede cerrar el puerto. Sugerencia:use autenticación de clave. De lo contrario, debe ser muy rápido para escribir su contraseña.