23 consejos de seguridad de endurecimiento del servidor CentOS - Parte 2

23 consejos de seguridad de endurecimiento del servidor CentOS - Parte 2

Continuando con el tutorial anterior sobre cómo asegurar y endurecer el servidor CentOS, en este artículo, discutiremos otros consejos de seguridad que se presentarán en la lista de verificación a continuación.

Requisitos

  1. Consejos de seguridad de endurecimiento del servidor de 20 CentOS - Parte 1

21. Deshabilitar comandos inútiles Suid y SGID

Si el setuid y setgid Los bits se establecen en programas binarios, estos comandos pueden ejecutar tareas con otros derechos de usuario o grupo, como raíz privilegios que pueden exponer serios problemas de seguridad.

A menudo, los ataques de desbordamiento de búfer pueden explotar dichos binarios de ejecutables para ejecutar código no autorizado con los derechos de un usuario de potencia raíz.

# find / -path / proc -prune -o -type f \ (-perm -4000 -o -perm -2000 \) -exec ls -l  \; 

Para desestimar el setuid bit ejecute el siguiente comando:

# chmod u-s/rath/to/binary_file 

Para desastar el bit setgid, ejecute el siguiente comando:

# Chmod G-S/Path/To/Binary_File 

22. Verifique los archivos y directorios no propiedades

Los archivos o directorios que no son propiedad de una cuenta válida deben eliminarse o asignarse con permisos de un usuario y grupo.

Emitir el siguiente comando encontrar archivos o directorios sin usuario y grupo.

# Find / -Nouser -o -NoGroup -exec ls -l  \; 

23. Lista de archivos escritos en el mundo

Mantener un archivo mundial en el sistema puede ser peligroso debido al hecho de que cualquiera puede modificarlo. Ejecutar el siguiente comando a continuación para mostrar archivos escritos por palabras, excepto Symlinks, que siempre son escritos mundiales.

# encontrar / -path / proc -prune -o -perm -2 ! -Tipo L -LS 

24. Crear contraseñas seguras

Crear una contraseña de un mínimo de ocho caracteres. La contraseña debe contener dígitos, caracteres especiales y letras mayúsculas. Usar PWMake para generar una contraseña de 128 bits de /dev/urandom archivo.

# PWMake 128 

25. Aplicar la política de contraseña segura

Obligar al sistema a usar contraseñas seguras agregando la línea a continuación en /etc/pam.D/PASSWD archivo.

Contraseña requerida PAM_PWQUALIDAD.Entonces vuelve a intentarlo = 3 

Agregar la línea anterior, la contraseña ingresada no puede contener más de 3 personajes en una secuencia monotónica, como a B C D, y más de 3 caracteres consecutivos idénticos, como 1111.

Para obligar a los usuarios a usar una contraseña con una longitud mínima de 8 Los personajes, incluidas todas las clases de personajes, verificación de fuerza para secuencias de caracteres y personajes consecutivos, agregan las siguientes líneas a la /etc/seguridad/pwQuality.confusión archivo.

Minlen = 8 mínclas = 4 max -showsence = 3 maxRepeat = 3 

26. Use el envejecimiento de la contraseña

El comando CHAGE se puede utilizar para el envejecimiento de la contraseña de usuario. Para establecer la contraseña de un usuario para expirar 45 Días, use el siguiente comando:

# CHAGE -M 45 Nombre de usuario 

Para deshabilitar el tiempo de vencimiento de la contraseña, use el comando:

# CHAGE -M -1 Nombre de usuario 

Forzar la vencimiento de la contraseña inmediata (el usuario debe cambiar la contraseña en el siguiente inicio de sesión) ejecutando el siguiente comando:

# CHAGE -D 0 Nombre de usuario 

27. Bloquear cuentas

Las cuentas de usuario se pueden bloquear ejecutando el pasada o comando usermod:

# passwd -l nombre de usuario # usermod -l nombre de usuario 

Para desbloquear cuentas use el -u opción para pasada comando y -U opción para usermod.

Artículo relacionado: Cómo bloquear las cuentas de los usuarios después de los intentos de inicio de sesión fallidos

28. Evitar el acceso a la concha de las cuentas

Para evitar que una cuenta del sistema (cuenta ordinaria o cuenta de servicio) obtenga acceso a un shell bash, cambie el shell raíz a /usr/sbin/nologin o /bin/falso en el /etc/passwd Archivo emitiendo el comando a continuación:

# usermod -s /bin /falso nombre de usuario 

Para cambiar el shell al crear un nuevo usuario de usuario, el siguiente comando:

# userAdd -s/usr/sbin/nologin nombre de usuario 
Artículo relacionado: Aprenda 15 ejemplos de comando "UserAdd" en Linux

29. Bloquear la consola de usuario virtual con vlock

vlock es un programa utilizado para bloquear una sesión múltiple en la consola de Linux. Instale el programa y comience a bloquear su sesión de terminal ejecutando los comandos a continuación:

# yum install vlock # vlock 

30. Utilice un sistema centralizado para administrar cuentas y autenticación

El uso de un sistema de autenticación centralizado puede simplificar enormemente la gestión y el control de las cuentas. Los servicios que pueden ofrecer este tipo de administración de cuentas son IPA Server, LDAP, Kerberos, Microsoft Active Directory, NIS, Samba Ans o Winbind.

Algunos de estos servicios están, por defecto, están altamente asegurados con protocolos criptográficos y criptografía de tecla simétrica, como Kerberos.

Artículo relacionado: Configurar el servidor NFS con autenticación de usuario con sede en Kerberos en Linux

31. Force el montaje de solo lectura de los medios USB

Usando blockdev Utilidad Puede forzar todos los medios extraíbles a montar como solo lectura. Por ejemplo, crea un nuevo udev Archivo de configuración nombrado 80-readonly-USB.normas en el /etc/udev/reglas.d/ Directorio con el siguiente contenido:

Subsistema == "bloque", attrs eliminable == "1", ejecut programa = "/sbin/blockdev --setro %n" 

Luego, aplique la regla con el siguiente comando:

# Udevadm Control -Reload 
Artículo relacionado: Cómo usar UDEV para la detección y administración de dispositivos en Linux

32. Deshabilitar el acceso a la raíz a través de TTY

Para evitar que la cuenta raíz realice el inicio de sesión del sistema a través de todos los dispositivos de consola (TTY), borre el contenido del archivo Securetty escribiendo el siguiente mensaje terminal de comando como root.

# CP /ETC /SEVETTY /ETC /SEVELTY.bak # cat /dev /null> /etc /Securetty 

Recuerde que esta regla no se aplica a las sesiones de inicio de sesión de SSH
Para evitar el inicio de sesión raíz a través de SSH, edite el archivo /etc/ssh/sshd_config y agregue la línea a continuación:

Permitrootlogin no 
Artículo relacionado: Cómo asegurar y endurecer el servidor OpenSsh

33. Use ACL de POSIX para expandir los permisos del sistema

Las listas de control de acceso pueden definir los derechos de acceso para más que un solo usuario o grupo y pueden especificar derechos para programas, procesos, archivos y directorios. Si establece ACL en un directorio, sus descendientes heredarán los mismos derechos automáticamente.

Por ejemplo,

# setfacl -m u: user: rw archivo # getFacl archivo 
Artículo relacionado: Configurar cuotas de ACL y disco para usuarios/grupos en Linux

34. Configurar Selinux en modo de aplicación

El Selinux La mejora del kernel de Linux implementa la política de control de acceso obligatorio (MAC), lo que permite a los usuarios definir una política de seguridad que proporciona permisos granulares para todos los usuarios, programas, procesos, archivos y dispositivos.

Las decisiones de control de acceso del kernel se basan en todo el contexto relevante de seguridad y no en la identidad del usuario autenticada.

Llegar Selinux Estado y hacer cumplir la política Ejecute los siguientes comandos:

# getenforce # setenforce 1 # sestatus 
Artículo relacionado: Configurar la política de control de acceso obligatoria con Selinux

35. Instalar utilidades adicionales de Selinux

Instalar PolicyCoreutils-Python paquete que proporciona utilidades de Python adicionales para operar Selinux: Audit2allow, auditoría, chcat, y semanago.

Para mostrar todos los valores booleanos junto con una breve descripción, use el siguiente comando:

# semanage booleano -l 

Por ejemplo, para mostrar y establecer el valor de httpd_enable_ftp_server, Ejecute el siguiente comando:

# getsebool httpd_enable_ftp_server 

Para que el valor de un booleano persista a través de reinicios, especifique el -PAG opción para setsebool, Como se ilustra en el siguiente ejemplo:

# setsebool -p httpd_enable_ftp_server en 

36. Usar servidor de registro centralizado

Configurar rsyslog Daemon para enviar mensajes de registro de utilidades confidenciales a un servidor de registro centralizado. Además, monitoree los archivos de registro con la ayuda de la utilidad de logwatch.

El envío de mensajes de registro a un servidor remoto asegura que una vez que el sistema se ha visto comprometido, los usuarios maliciosos no pueden ocultar completamente su actividad, siempre dejando rastros en archivos de registro remotos.

Artículo relacionado: 4 Las mejores herramientas de administración de monitoreo y registro de registro de Linux

37. Habilitar contabilidad de procesos

Habilitar contabilidad de procesos instalando PSACCT Utility y use Lastcomm comando para mostrar información sobre comandos ejecutados previamente como se registra en el archivo de contabilidad del sistema y SA Para resumir la información sobre los comandos ejecutados previamente como se registra en el archivo de contabilidad del sistema.

38. Endurecimiento /etc /sysctl.confusión

Use las siguientes reglas de parámetros del núcleo para proteger el sistema:

Desactivar el enrutamiento de la fuente

neto.IPv4.confusión.todo.Acept_source_route = 0 

Deshabilitar el reenvío de IPv4

IPv4.confusión.todo.Reenvío = 0 

Deshabilitar IPv6

neto.IPv6.confusión.todo.disable_ipv6 = 1 net.IPv6.confusión.por defecto.disable_ipv6 = 1 net.IPv6.confusión.holgazanería.disable_ipv6 = 1 

Deshabilite la aceptación y el envío de paquetes redirigidos por ICMP a menos que se requiera específicamente.

neto.IPv4.confusión.todo.Acept_Redirects = 0 net.IPv4.confusión.todo.seguro_redirects = 0 net.IPv4.confusión.todo.send_redirects = 0 

Deshabilitar el reenvío de la ruta inversa

neto.IPv4.confusión.todo.rp_filter = 2 

Ignore todas las solicitudes de eco ICMP (establecido en 1 para habilitar)

neto.IPv4.ICMP_ECHO_IGNORE_ALL = 0 

39. Use servicios VPN para acceder a sus instalaciones a través de redes públicas sin protección

Siempre usa VPN Servicios para que los transportistas accedan a las instalaciones de LAN a través de Internet. Dichos tipos de servicios se pueden configurar utilizando una solución de código abierto gratuito, como OpenVPN, o utilizando una solución patentada, como Cisco VPN (instalar VPNC Utilidad de línea de comandos proporcionada por los repositorios de EPEL).

Artículo relacionado: Instale el servidor OpenVPN con clientes de Windows en CentOS

40. Realizar una exploración de sistema externo

Evalúe la seguridad de su sistema para las vulnerabilidades escaneando el sistema desde puntos remotos a través de su LAN utilizando herramientas específicas como:

  1. Nmap - escáner de red 29 ejemplos de comando nMAP
  2. Nessus - escáner de seguridad
  3. Abierto - Se utiliza para escanear vulnerabilidades y para una gestión integral de vulnerabilidades.
  4. Nikto - Una excelente vulnerabilidad web de escaneo de escáner de script de interfaz de puerta de enlace común (CGI) en Linux

41. Proteger el sistema internamente

Utilice la protección interna del sistema contra virus, kits rootkits, malware y, como una buena práctica, instale sistemas de detección de intrusiones que puedan detectar actividad no autorizada (ataques DDoS, escaneos de puertos), como:

  1. Ayudante - Entorno avanzado de detección de intrusos - http: // ayudante.Fuente de la fuente.neto/
  2. Clamav - escáner antivirus https: // www.clamav.neto
  3. RKHUnter - RootKit Scanner
  4. Lynis - Herramienta de auditoría y escaneo de seguridad para Linux
  5. Cable - Integridad de seguridad y datos http: // www.cable.com/
  6. Fail2ban - Prevención de redes de intrusión
  7. Ossec - (HIDS) Sistema de detección de intrusos basado en host http: // ossec.github.IO/
  8. Mod_securidad - Proteger la fuerza bruta o los ataques DDoS

42. Modificar las variables de entorno de usuario

Adjuntar fecha y tiempo formatear para almacenar la ejecución de los comandos emitiendo el siguiente comando:

# echo 'HistTimeFormat = "%d/%m/%y%t"' >> .bashrc ' 

Fuerza para registrar instantáneamente Histórico Cada vez que se escribe un comando (en lugar de inicio de sesión):

# ECHO 'ARD_COMMAND = "HISTORIA -A"' >> .bashrc 

Limite la sesión de inicio de sesión de tiempo de espera. Tirar automáticamente la carcasa cuando no se realiza ninguna actividad durante un período de tiempo de inactividad. Muy útil para desconectar automáticamente las sesiones de SSH.

# echo 'tmout = 120' >> .bashrc 

Aplicar todas las reglas ejecutando:

# fuente .bashrc 
Artículo relacionado: Establecer variables de entorno de usuario en Linux

43. Los datos de copia de seguridad

Use utilidades de respaldo, como alquitrán, gato, rsync, scp, lvm instantáneas, etc. para almacenar una copia de su sistema, preferiblemente fuera del sitio, en caso de falla del sistema.

Si el sistema se compromete, puede realizar la restauración de datos desde copias de seguridad anteriores.

Finalmente, no olvide que, sin importar cuántas medidas de seguridad y medidas contrarias, tome para mantener su sistema seguro, nunca estará 100% completamente seguro siempre que su máquina esté enchufada y encendida.