1. Servicio SSH
Configuraciones para servicio SSH.
Desactivación del usuario root remoto
sudo sed -i -e $’$\a\\\nPermitRootLogin no’ /etc/ssh/sshd_config
Desactivación de algoritmos inseguros
sudo sed -i -e $'$a\\\nCiphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128, aes128-cbc,cast128-cbc,aes192-cbc, aes256-cbc,arcfour, chacha20-poly1305, blowfish-cbc' /etc/ssh/sshd_config
Reemplazar login directo con login a través de llaves
Crear claves
sudo ssh-keygen -O hashalg=sha512 -t rsa -Z aes256-cbc
Copiar claves a un servidor.
sudo ssh-copy_id user@server
Desactivar el acceso por contraseñas
sudo sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/g; s/#PasswordAuthentication no/PasswordAuthentication no/g' /etc/ssh/sshd_config
Cambiar puerto por defecto (deshabilitar puerto 22)
Cambiar puerto al 2222.
sudo sed -i 's/#Port 22$/Port 2222/g; s/Port 22$/Port 2222/g' /etc/ssh/sshd_config
Desactivar puerto 22 por iptables
sudo iptables -A INPUT -p tcp –dport 22 -j DROP
sudo iptables-save | tee /etc/iptables/rules.v4
Revisar forzado ssh2
sudo sed -e -i $'$a\\\nProtocol 2' /etc/ssh/sshd_config
Tiempo de espera de sesión
sudo sed -i -e $'$a\\\nClientAliveInterval 300 # segundos' /etc/ssh/sshd_config
Máximos intentos de login y tiempo para completar login
sed -i -e $'$a\\\nMaxAuthTries 3 # intentos' -e $'$a\\\nLoginGraceTime 30 # segundos' /etc/ssh/sshd_config
Limitación de usuarios con permisos de uso SSH
sudo sed -e $'$a\\\nAllowUsers usuario1,usuario2,usuario3' /etc/ssh/sshd_config
Deshabilitar DNS reversing
sudo sed -i -e $'$a\\\nUseDNS no' /etc/ssh/sshd_config
MFA libpam-google-authenticator
Instalar libpam-google-authenticator
sudo amazon-linux-extras install epel -y
sudo yum install google-authenticator -y
google-authenticator
Configurar servicio PAM códigos MFA
sudo sed -i -e $'$a\\\nauth required pam_google_authenticator.so' /etc/pam.d/sshd
sudo sed -i -e $'$a\\\nChallengeResponseAuthentication yes' /etc/ssh/sshd_config
Limitar de conexiones concurrentes vía SSH
sudo sed -i -e $'$a\\\nMaxStartups 1' /etc/ssh/sshd_config
Limitar de sesiones concurrentes vía SSH
sudo sed -i -e $'$a\\\nMaxSessions 1' /etc/ssh/sshd_config
Deshabilitar autenticación por clave vacía (empty password)
sudo sed -i 's/#PermitEmptyPasswords no/PermitEmptyPasswords no/' /etc/ssh/sshd_config
Deshabilitar reenvío de puertos (port forwarding)
sudo sed -i 's/#AllowTcpForwarding yes/AllowTcpForwarding no/' /etc/ssh/sshd_config
Auditar el servicio SSH con auditd
auditd
sudo auditctl -w /etc/ssh/sshd_config -p wa -k ssh_config_changes`
Proteger por permisos archivos de claves privadas SSH
sudo chmod 600 $HOME/.ssh/id_rsa
Cambiar banner SSH
sudo echo "Unauthorized access to this system is prohibited. Doing so without proper permissions will result in severe legal action." > /etc/issue.net
sudo sed -i 's/#Banner none/Banner \/etc\/issue.net/' /etc/ssh/sshd_config
Monitoreo de acceso con Fail2Ban
sudo apt-get install fail2ban
sudo systemctl enable fail2ban.service
sudo systemctl start fail2ban.service
Implementar reglas de baneo en /etc/fail2ban/jail.local
[DEFAULT]
bantime = 600
maxretry = 3
findtime = 120
...SNIP...
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
Bloquear manualmente una IP
sudo fail2ban-client set sshd banip 10.10.10.10
Desbloquear manualmente una IP
sudo fail2ban-client set sshd unbanip 10.10.10.10
Verificar IP bloqueada
sudo fail2ban-client status sshd