25 consejos para aumentar tu seguridad en Linux

Consejos de Seguridad en Linux

Es muy importante la seguridad en nuestros servidores, y con toda  esta revolución tecnologica asociada a los MALWARE y ataques a nivel  mundial, es bueno que tengas en cuenta ciertos aspectos de seguridad que  pueden ayudarte ante cualquier situación que se te pueda presentar y  por esta razón te muestro unos 25 consejos para aumentar la seguridad en  Linux, no solo en Debian sino tambien en otros sabores.


1 Seguridad física del sistema

Configurar el BIOS para deshabilitar el arranque por CD/DVD,  dispositivos externos y diskettes. Después, habilitar la contraseña del  BIOS y proteger el archivo GRUB con contraseña para restringir el acceso  físico al sistema.

2 Disco particionado

Es importante contar con diferentes particiones para conseguir mayor  seguridad de los datos en caso de que algún desastre ocurra. Al crear  diferentes particiones, los datos pueden ser separados o agrupados según  su tipo. Cuando un accidente ocurre, solo los datos de la partición  afectada deberán ser remplazados, mientras que los datos en otras  particiones no se verán afectados.

Asegúrate de tener las siguientes particiones e instalar todas las aplicaciones de terceros en la partición /opt

/, /boot, /usr, /var, /home, /tmp, /opt.

3 Minimizar paquetes para minimizar vulnerabilidades

¿Realmente necesitas todos los servicios instalados- se recomienda  evitar instalar paquetes que no se utilizan para evitar las  vulnerabilidades de esos paquetes. Esto minimiza el riesgo de que  comprometan un servidor.

Identifica y elimina los servicios y programas innecesarios en el  servidor para minimizar vulnerabilidades. Utiliza el comando “chkconfig”  para identificar los servicios que están corriendo en runlevel3

# /sbin/chkconfig –list |grep ‘3:on’

Una vez identificado el servicio incensario, es posible deshabilitarlo con el siguiente comando

# chkconfig serviceName off

Utiliza el adiestrador de paquetes RPM, yum o apt-get, para listar  todos los paquetes instalados en el sistema y remover aquellos que no  son necesarios con el siguiente comando:

# yum -y remove package-name

# sudo apt-get remove package-name

4 verifica los puertos de red que escuchan conexiones

Con la ayuda del comando “netstat” es posible listar todos los  puertos abiertos y los programas que los utilizan. Es posible utilizar  el comando “chkconfig” para deshabilitar todos los servicios de red no  deseados en el sistema.

# netstat -tulpn

Lee también 5 amenazas comunes de seguridad para los navegadores y cómo protegernos

5 Utiliza Secure Shell (SSH)

Los protocolos Telnet y rlogin utilizan texto plano para el envío de  la información, en cambio, Secure Shell es un protocolo seguro ya que  utiliza cifrado en todas las comunicaciones entre equipos.

Nunca inicies sesión directamente como root, a menos que sea  sumamente necesario. Utiliza el comando “sudo” para ejecutar comandos  que requieran permisos administrativos. Sudo está especificado en el  archivo /etc/sudoers/ y puede ser editado con el comando “visudo” a  través de la interfaz del editor Vi.

También se recomienda cambiar el puerto predeterminado para el protocolo SSH, puerto 22, a un puerto no convencional.

Se recomienda modificar el archivo de configuración  “/etc/ssh/sshd_config” con los siguientes parámetros para restringir el  acceso a usuarios.

Deshabilitar inicio de sesión de root

PermitRootLogin no

Permitir solo usuarios específicos

AllowUsers username

Utilizar versión 2 del protocolo SSH

Protocol 2

Cambiar puerto para escuchar conexiones entrantes

Port 50221

6 Mantener actualizado el sistema

Siempre se debe mantener actualizado el sistema y aplicar los  parches, soluciones de seguridad y actualizaciones de kernel más  recientes y tan pronto se encuentre encuentren disponibles.

# yum updates

# yum check-update

# sudo apt-get update

7 Controlar las tareas programadas

El demonio cron tiene una característica incluída en la cual se puede  especificar los usuarios que pueden y no pueden ejecutar tareas  programadas. Esto se controla con el uso de los archivos llamados  /etc/cron.allow y /etc/cron.deny. Para bloquear a un usuario, basta con  añadir su nombre de usuario en el archivo cron.deny y para permitir un  usuario que ejecute tareas, se añade su nombre en el archivo cron.allow.  Si se desea deshabilitar a todos los usuarios del uso de tareas, se  añade la palabra ALL a una línea del archivo cron.deny.

# echo ALL >> /etc/cron.deny

8 Deshabilitar puertos USB

Muchas veces pasa que se desea restringir a los usuarios para que no  puedan conectar memorias USB en lo equipos, con la finalidad de proteger  contra robo la información que almacenan. Para lograr esto, se debe  crear el archivo /etc/modprobe.d/no-usb y agregarle la siguiente línea,  con la cual no se detectarán dispositivos de almacenamiento por USB.

install usb-storage /bin/true

9 Activar SELinux

El módulo SELinux (Security Enhanced Linux o Seguridad Mejorada de  Linux, en español) es un mecanismo de seguridad y control de acceso que  se incluye en el kernel. Deshabilitar esta característica, significa  quitar los mecanismos de seguridad del sistema. Piensa dos veces y de  forma cuidadosa antes de quitarlo, incluso si tu equipo está conectado a  Internet y provee servicios públicos.

SELinux provee tres modos básico de operación:

Enforcing (Restrictivo): Este es el modo habilitado por defecto y que habilita y aplica las políticas de seguridad en el equipo.

Permissive (Permisivo): En este modo, SELinux no forzará el uso de  políticas en el sistema, solo advertirá y registrará las acciones. Este  modo es muy útil para la resolución de problemas relacionados con  SELinux.

Disabled (Deshabiltado): SELinux está apagado.

Si SELinux está deshabilitado, se puede habilitar con el siguiente comando:

# setenforce enforcing

Se puede saber el estado de SELinux desde la línea de comandos escribiendo los siguientes comandos:

# sestatus

# system-config-selinux

# getenforce

10 Deshabilitar los escritorios gráficos KDE o GNOME

No existe la necesidad de ejecutar escritorios gráficos basados en X,  como KDE o GNOME, dentro de un servidor de producción. Se pueden  desinstalar o deshabilitar para aumentar la seguridad y rendimiento del  servidor. Para hacerlo, únicamente edita el archivo /etc/inittab y  ajusta el nivel de ejecución en 3. Si deseas quitarlo por completo,  utiliza el siguiente comando:

# yum groupremove “X Window System”

# sudo apt-get remove –purge xserver-xorg

11 Deshabilitar IPv6

Si no se utiliza ningún protocolo de IPv6 en el sistema, entonces de  debería deshabilitar, puesto que ninguna de las aplicaciones, políticas y  protocolos de IPv6 se requieren. Edita el archivo de configuración de  red y añade las siguientes líneas para deshabilitarlo:

NETWORKING_IPV6=no

IPV6INIT=no

12 Evitar que los usuarios reutilicen contraseñas

Esta es una medida muy útil en caso de que se requiera evitar que los  usuarios reutilicen contraseñas viejas. Para lograrlo se debe utilizar  el módulo de autenticación de usuarios PAM y el archivo  /etc/security/opasswd.

En sistemas Red Hat Enterprise Linux, CentOS o Fedora se edita el  archivo /etc/pam.d/system-auth. En sistemas Debian, Ubuntu o Linux Mint,  editar el archivo /etc/pam.d/common-password. En estos archivos se debe  añadir la siguiente línea a la sección auth:

auth sufficient pam_unix.so likeauth nullok

También se debe agregar la siguiente línea a la sección password para  evitar que un usuario reutilice las últimas 5 contraseñas usadas en el  sistema:

password sufficient pum_unix.so nullok use_authtok md5 shadow remember=5

13 Revisar el tiempo de validez de contraseñas de usuarios

En Linux, las contraseñas de los usuarios son almacenadas de forma  cifrada en el archivo /etc/shadow. Para ajustar la fecha de expiración  de la contraseña de un usuario, se necesita utilizar el comando chage.

Para saber el tiempo de uso, vigencia o días desde el último cambio de contraseña, se utiliza el comando:

# chage -l nombre_de_usuario

Algunas opciones del comando son:

-M Para indicar el máximo número de días de vigencia de la contraseña.

-m Para indicar el mínimo número de días de vigencia de la contraseña.

-W Para indicar cuantos días antes de que la contraseña expire, se mande una advertencia.

14 Bloqueo y desbloqueo manual de cuentas

Esta característica es muy útil para evitar borrar cuentas de  usuario, ya que sirve para especificar un periodo de tiempo en el cual  se bloquearán las cuentas de usuario. Esto se realiza con el comando:

# passwd -l nombre_de_usuario

Para desbloquear al usuario se utiliza el comando:

# passwd -u nombre_de_usuario

Cabe mencionar que si el usuario root inicia sesión como algún usuario bloqueado, si podrá iniciar sesión.

15 Uso de contraseñas seguras

Muchos usuarios utilizan contraseñas débiles que pueden ser  descubiertas por medio de un ataque de fuerza bruta. Para evitar el uso  de contraseñas débiles, el módulo PAM contiene una funcionalidad llamada  pam_cracklib que obliga al usuario a utilizar contraseñas fuertes y  seguras. Para habilitarlo basta con añadir al archivo  /etc/pam.d/system-auth la siguiente directiva:

/lb/security/$ISA/pam_cracklib.so retry=3 minlen=8 lcredit=1 ucredit=-2 dcredit=-2 ocredit=-1

Las palabras reservadas significan:

lcredit = lower-case o minúsculas

ucredit = upper-case o mayúsculas

dcredit = digitos

other = otros

16 Activar Iptables (Firewall)

Es áltamente recomendable habilitar el firewall de Linux para evitar  accesos no autorizados a nuestro equipo. Se deben aplicar reglas para  direcciones IP origen y destino y puerto UDP o TCP para paquetes  entrantes, salientes y redirigidos.

17 Deshabilitar Ctrl+Alt+Supr en el archivo /etc/inittab

En la mayoría de las distribuciones Linux, el presionar la  combinación de teclas ctrl+alt+supr provocará un reinicio del sistema,  por lo que no es muy recomendable tener habilitada dicha opción,  específicamente en servidores de producción.

Esta acción se define dentro del archivo /etc/inittab en una línea similar a la siguiente:

# ca::ctrlaltdel:/sbin/shutdown -t 3 -r now

18 Verficar cuentas sin contraseñas

Cualquier cuenta de usuario con una contraseña vacía significa una  puerta abierta para acceso no autorizado desde cualquier parte del  mundo. Se debe asegurar que todas las cuentas de usuario cuenten con  contraseñas fuertes y seguras. Para revisar si existen cuentas con  contraseñas vacías se puede utilizar el siguiente conjunto de comandos:

# cat /etc/shadow | awk -F : ‘($2==””) {print $1}’

Este comando obtendrá toda la lista de usuarios en el sistema y mostrará a aquellos que su contraseña sea vacía.

19 Mostrar mensaje de SSH antes de iniciar sesión

Es una buena práctica mostrar y contar con mensajes de seguridad o  advertencias antes de realizar una autenticación por medio de SSH.

20 Monitoreo de actividades del usuario

Si se tienen muchos usuarios en el sistema, es muy importante  recolectar información de la actividad y procesos de cada usuario, para  después poder analizar esa información en caso de problemas de  rendimiento o seguridad. Existen dos herramientas muy útiles llamadas  psacct y acct que son utilizadas para monitorear los procesos y la  actividad de los usuarios en el sistema. Estas herramientas se ejecutan  en segundo plano y continuamente están registrando la actividad de los  usuarios y los recursos del sistema que consumen servicios como Apache,  MySQL, SSH, FTP, etc.

21 Revisión de bitácoras de forma regular

Reasigna las bitácoras en un servidor dedicado de bitácoras, esto  podría evitar que los intrusos puedan modificar las bitácoras locales.  Los archivos de bitácoras más comunes se encuentran en la ruta /var/log/  y son:

messages: Bitácoras del sistema

auth.log: Bitácoras de autenticación (Debian, Ubuntu, Linux Mint)

kern.log: Bitácoras del kernel

cron.log: Bitácoras del demonio crond

maillog: Bitácoras del servidor de correo del sistema

boot.log: Bitácoras del arranque del sistema

mysqld.log: Bitácoras del manejador de bases de datos, MySQL

secure: Bitácoras de autenticación (Red Hat, Fedora, CentOS)

utmp ó wtmp: Bitácora de inicio de sesión

Otros consejos:

22 Tener un respaldo de archivos importantes

23 Unión de Tarjetas de Red

24 Mantener /boot como solo lectura

25 Ignorar ICMP o peticiones de Broadcast

Comparto este tutorial, el cual me parecio sumamente mportante, y obvio, creditos para quien lo merece, Beny Blanco, lo encuentra en Udemy, tiene gran variedad de videos con alto contenido importante.

Pueden ir y ver sus contenidos en una nueva pestaña dando clic en el siguiente enlace.

Beny Blanco.

Related Posts

Deja una respuesta

Tu dirección de correo electrónico no será publicada.