Tengo una máquina Debian que ejecuta varios servicios, como Apache con http y https, jabber y un servidor openssh para administración. El servidor ssh no se ejecuta en el puerto 22. Está en algo así como el puerto 62111. Aseguro el openssh con fail2ban. Entonces, cada vez que un atacante intenta conectarse a ssh en el puerto 62111, tiene dos intentos antes de que fail2ban lo prohíba durante dos días en el puerto 62111.
Me gustaría iniciar un servidor SSH (falso) en el puerto 22 y cada vez que alguien intenta conectarse a ese puerto, se le prohíbetodoport por iptables para siempre o al menos hasta que elimine la regla de iptables. Cualquier conexión SSH legal no intentará conectarse por ssh al puerto 22, porque cada administrador conoce el puerto SSH correcto.
La idea es que un atacante intente atacar primero el puerto 22. Por lo tanto, ni siquiera ha tenido la oportunidad de intentar conectar SSH al puerto 62111. No me importa que esos crackers vean mi sitio web. Por lo tanto, está bien bloquearlos en cualquier puerto (incluidos el 80 y el 443).
¿Alguna sugerencia sobre cómo hacer esto?
Respuesta1
Intentaré sugerirte otra solución para los paranoicos :)
http://www.portknocking.org/view/
Funciona requiriendo intentos de conexión a una serie de puertos cerrados predefinidos. Cuando se recibe la secuencia correcta de "llamadas" al puerto (intentos de conexión), el firewall abre ciertos puertos para permitir una conexión.
Y, por supuesto, solo autenticación con clave ssh.
Respuesta2
No es una buena idea (en mi humilde opinión).
Una conexión al puerto 22 no significa automáticamente que alguien esté intentando ingresar a su servidor.
Para proteger su servidor de piratas informáticos/crackers, siga algunas reglas simples (por ejemplo).
- Utilice herramientas como fail2ban de forma inteligente
- mantenga sus servicios (ssh, http,...) siempre actualizados
- use contraseñas seguras (y cámbielas circularmente)
- use claves ssh para sshd y deshabilite la autenticación de contraseña
Respuesta3
Si desea ejecutar sshd en otro puerto y seguir usando el mismo fail2ban, etc., encontré un manual muy bueno y similar aquí:http://www.kudos.be/multiple_sshd
Volveré a publicar y cambiaré cosas aquí:
El objetivo es ejecutar el mismo demonio en dos puertos diferentes y deshabilitar cualquier tipo de autenticación en una instancia.
Copiar configuración:
cd /etc/ssh/sshd_config /etc/ssh/sshd_config-falso
cambie la configuración de acuerdo a esto:
cambiar
Port
,,SyslogFacility
cadenas*Authentication
(deshabilitar para falso),PidFile
crear enlace simbólico: ln -s /usr/sbin/sshd /usr/sbin/sshd-fake
cree un script de inicio:
cp /etc/init.d/sshd /etc/init.d/sshd-fake
y modifique el contenido del archivo sshd-fake en consecuencia.cambie /etc/sysconfig/sshd-fake:
OPTIONS="-f /etc/ssh/sshd_config-fake"
agregar servicio
chkconfig --add sshd-fake
crear configuración pam:
cp /etc/pam.d/sshd /etc/pam.d/sshd-fake
edite /etc/pam.d/sshd-fake y no permita todo, o use un método diferente, como permitir a los usuarios enumerados en el archivo:http://linux.die.net/man/8/pam_listfile
reiniciar servicios:
service sshd restart;service sshd-fake restart;chkconfig sshd-fake on
configurar fail2ban en consecuencia
Respuesta4
Puede que este no sea el más elegante, pero debería ser rápido y funcional:
iptables -I INPUT --m recent --name blocked --rcheck -j DROP
iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --name blocked --set
Explicación:
Inserte una regla de firewall (en la parte superior) en la cadena de entrada, que verifique si la dirección de origen del paquete está actualmente en la lista de "bloqueados" y, si lo está, SÍQUELA.
Inserte otra regla de firewall (encima de la que acabamos de insertar) en la cadena de entrada que agrega la dirección de origen de cualquier intento de conexión al puerto 22 a la lista de "bloqueados".
No veo la necesidad de ejecutar un servidor (falso) ni ningún oyente en el puerto 22.
Editar: mirando mi respuesta, quiero agregar que probablemente deberías agotar el tiempo de espera de tu lista de bloqueados de alguna otra manera que no sea
"para siempre o al menos hasta que elimine la regla de iptables"
porque obtendrá muchos accesos de direcciones IP dinámicas que luego (en cuestión de horas o incluso minutos) se reasignarán a usuarios legítimos.
Ver:http://www.netfilter.org/documentation/HOWTO/netfilter-extensions-HOWTO-3.html#ss3.16