10 pasos para asegurar el Servidor Linux para el Entorno de Producción
Asegurar un servidor Linux es esencial para proteger nuestros datos de los hackers. Pero asegurar un servidor no requiere ser complicado.Debemos adoptar un método que proteja nuestro servidor de los ataques más frecuentes junto con una administración eficiente.
Sin embargo, no hay que dar las cosas por sentado. Incluso los servidores más reforzados pueden ser secuestrados mediante la explotación de cualquier componente vulnerable que se ejecute en ese servidor.
Instale lo que necesita
La primera regla es mantener su servidor delgado y medio. Instale sólo los paquetes que realmente necesita. Si hay paquetes no deseados; purga. Cuantos menos paquetes, menos posibilidades de código sin parchear.
Activar SELinux
Security-Enhanced Linux (SELinux) es un mecanismo de seguridad de control de acceso proporcionado en el kernel.
SELinux proporciona 3 modos básicos de funcionamiento :
- Enforcing: Este es el modo por defecto que permite y hace cumplir la política de seguridad de SELinux en la máquina.
- Permisivo: En este modo, SELinux no hará cumplir la política de seguridad en el sistema, sólo advertirá y registrará las acciones.
- Desactivado: SELinux está desactivado.
Se puede gestionar desde el archivo ‘/etc/selinux/config’, donde se puede habilitar o deshabilitar.
Acceso seguro a la consola
Debe proteger el acceso a la consola de los servidores Linux deshabilitando el arranque desde dispositivos externos como DVDs / CDs / lápiz USB tras la configuración de la BIOS. También, establezca la contraseña del BIOS y del cargador de arranque grub para proteger estas configuraciones.
Restringir el uso de contraseñas antiguas
Podemos restringir a los usuarios el uso de las mismas contraseñas antiguas. El archivo de contraseñas antiguas se encuentra en /etc/security/opasswd. Esto se puede hacer utilizando el módulo PAM.
Abrir el archivo ‘/etc/pam.d/system-auth’ bajo RHEL / CentOS / Fedora.
# vi /etc/pam.d/system-auth
Abrir el archivo ‘/etc/pam.d/common-password’ bajo Ubuntu/Debian/Linux.
# vi /etc/pam.d/common-password
Agrega la siguiente línea a la sección ‘auth’.
auth sufficient pam_unix.so likeauth nullok
Agrega la siguiente línea a la sección ‘password’ para no permitir que un usuario reutilice las 3 últimas contraseñas.
password sufficient pam_unix.so nullok use_authtok md5 shadow remember=3
Las 3 últimas contraseñas son recordadas por el servidor. Si intenta utilizar cualquiera de las 3 últimas contraseñas antiguas, obtendrá un error como.
Compruebe los puertos de escucha
Use el comando ‘netstat’ para ver los puertos abiertos y los servicios correspondientes.
netstat -tunlp
Desactivar los servicios no deseados del sistema utilizando el comando ‘chkconfig’ y cerrar los puertos que no son necesarios.
chkconfig serviceName off
Desactivar el inicio de sesión de root
No es aconsejable hacer ssh en su servidor como superusuario(root). Debemos deshabilitar el ssh como usuario root en el servidor, pero antes de hacerlo, vamos a crear un usuario con poderes sudo para que pueda sshear en el servidor y realizar tareas administrativas. Una vez iniciada la sesión en el servidor, siempre se puede cambiar de usuario a root, si es necesario.
Crear un nuevo usuario :
useradd user1
Crear contraseña para el usuario añadido :
passwd user1
Proporcionar permisos sudo al usuario recién añadido :
echo 'user1 ALL=(ALL) ALL' >> /etc/sudoers
SSH al servidor con el nuevo usuario y asegurarse de que el login funciona.
Ahora vamos a desactivar el inicio de sesión de root, lo que significa que nadie puede ssh o iniciar sesión en el servidor como usuario root. Para ello, abra el archivo de configuración de sshd:
nano /etc/ssh/sshd_conf
A continuación, descomenta la línea que dice
PermitRootLogin no
Luego guarda y cierra este archivo y reinicia el servicio
service sshd restart
Importante: No cierre la sesión del servidor todavía. Primero prueba si puedes entrar con éxito en el servidor mediante el usuario creado anteriormente. Abra otra instancia de la terminal y haga ssh en el servidor con el usuario que creó anteriormente. Si todo funciona bien, puede cerrar la sesión del servidor con seguridad como root.
Cambiar el puerto
Podemos cambiar el puerto SSH por defecto para añadir una capa de opacidad para mantener su servidor seguro .
Abrir el archivo /etc/ssh/sshd_config
reemplazar el Puerto 22 por defecto con un número de puerto diferente digamos 1110
guardar &salir del archivo
service sshd restart
Ahora para iniciar sesión definir el puerto No.
ssh username@IP -p 1110
Desactivar Ctrl+Alt+Suprimir en Inittab
Pulsar Ctrl+Alt+Suprimir llevará a su servidor a un proceso de reinicio. Así que esto es siempre aconsejable para desactivar esto como alguien puede erróneamente reiniciar el sistema.
La acción ctrl+Alt+Del se define en /etc/init/control-alt-delete.conf .Comenta la siguiente línea
Inicio de sesión sin contraseña
Podemos iniciar sesión fácilmente en nuestro servidor a través de SSH sin ninguna contraseña generando las claves ssh. Sólo hay que tener cuidado de que se puede iniciar sesión en el servidor sólo desde esa máquina en la que generó las claves ssh
Generación de claves SSH :
ssh-keygen - t rsa
Copie su clave pública SSH , luego añada la misma en el servidor
cat ~/.ssh/id_rsa.pub
Para añadir claves ssh en el servidor
Supongamos que tenemos el usuario-user1 para proporcionar acceso de clave ssh al servidor
cd /home/user1
ls -ll
Cree un directorio .ssh y dentro de él crear un archivo llamado authorized_keys y añadir la clave pública ssh del usuario en el mismo
mkdir .ssh
cd /home/admin/.ssh
vim authorized_keys
Añadir la clave pública SSH y luego cambiar el propietario del archivo
chown user1 authorized_keys
Desactivar el inicio de sesión ssh
Editar /etc/ssh/sshd_config
Passwordauthentication no
PermitRootLogin no