Securizando servidor ssh


Siempre que montamos un nuevo servidor es necesario asegurar el ssh.

 

No se debe permitir el acceso a root, debe de configurarse un tiempo máximo de inactividad, un número máximo de conexiones simultaneas por usuario ...etc

 

Nosotros lo vamso a hacer en un script que está comentado casi línea a linea para hacerlo entendible a cualquiera.

Esto no es lo único que podemos asegurar en un servidor ssh, podríamos usar intercambio de claves, kerberos ...etc

 

Este script ofrece unas medidas de seguridad básicas aplicables a cualquier host.

 

Como siempre espero que lo disfruteis

#!/bin/bash

#Este script está bajo licencia GPL y se distribuye sin garantías, copia, modifica y haz lo que quieras con él.
#Este script configura los requisitos mínimos de seguridad de un servidor SSH, creado en Ubuntu 14.04
#Creado por Kao y M 2/09/2014

echo

echo    '###########################################################################'
echo    '#                          SECURE SSH SCRIPT                              #'
echo    '#                    Aseguro de forma básica un servidor ssh              #'
echo    '#                                  BY  K&M                                #'
echo -e '########################################################################### n'

echo "Se crea una copia de la configuración actual de ssh en /root/backfiles"
mkdir /root/backfiles
cp /etc/ssh/sshd_config /root/backfiles/sshd_config.backup

#Dando Explicaciones al usuario
echo "Lo primero que hace este script es modificar el /etc/issue.net para no dar pistas sobre nuestro so"
echo "Modificando el /etc/issue.net"
cp /etc/issue.net /root/backfile
echo "Private Server Unknown Release" > /etc/issue.net

#Configurando y securizando SSH
#Recogida de Variables del usuario
#PUERTO
read -p "Introduce un puerto para ssh por encima de 1024 y por debajo de 65535:  "  puerto

#USUARIOS
echo -e  "A continuación se elegirán usuarios podrán acceder por ssh, n "
echo   "si los usuarios elegidos no existen serán creados, el  resto de los ususarios quedarán restringidos"
read -p "Introduce el número de usuarios que deseas permitir: "  numusers

for (( i=1; i<=$numusers; i++ ))
    do
        read -p "Introduce el nombre del usuario $i: " unusuario
        lospermitidos+=$unusuario" "
            if  grep -qw $unusuario  /etc/passwd
            then
                echo -e "El usuario elegido existe. RECUERDA QUE A PARTIR DE AHORA n" 
                echo    "SOLO SE LE PERMITIRÁ ACCESO A ESE USUARIO"
            else
                echo  "Se creará el usuario solicitado." 
                echo  "RECUERDA QUE A PARTIR DE AHORA SOLO SE LE PERMITIRA ACCESO A ESE USUARIO"
                adduser $user
            fi
done

#IP
echo -e "¿Deseas restringir el acceso a una sola ip o a un dominio? n"
echo -e "Si respondes si SOLO SE PERMITIRÁN USUARIOS QUE PROVENGAN DE ESA IP O DOMINIO n"
read -p  "y todo el resto serán denegados? (s/n) " restringir

if [ $restringir = "s" ]
then
        read -p "Introduce la ip o el dominio a permitir: " ips
fi

#Configuración del fichero sshd_config por sus valores seguros
cd /etc/ssh

sed -i "s|Port .*|Port $puerto |g" sshd_config #modifica el puerto
#(si alguien gana acceso por ssh, al menos que tenga que escalar no se lo damos todo hecho)
sed -i "s|PermitRootLogin without-password|PermitRootLogin no |g" sshd_config #Impide el acceso a root
#evita scripts scripts de fuerza bruta
sed -i "s|LoginGraceTime 120|LoginGraceTime 30 |g" sshd_config #Tiempo que se mantiene abierta laconexión
sed -i "s|#MaxStartups .*|MaxStartups 3 |g" sshd_config #Nº de conexiones simultaneas maximas por usuario
#Añadiendo Variables
echo "AllowUsers $lospermitidos *@$ips" >> /etc/ssh/sshd_config #Especifica un usuario para el ssh
echo "MaxAuthTries 2" >> /etc/ssh/sshd_config #Nº Máximo de intentos permitidos = 3

service ssh reload
echo "Se ha finalizado, Gracias por utilizar este script."

Publicado el 02/09/2014 a las 14:15

Comentarios en el post


Esta web utiliza cookies, puedes ver nuestra la política de cookies, aquí Si continuas navegando estás aceptándola
Política de cookies +