Table of Contents
23 Consejos de seguridad para el refuerzo del servidor CentOS-Parte 2
Continuando con el tutorial anterior sobre Cómo proteger y fortalecer el servidor CentOS, en este artículo, analizaremos otros consejos de seguridad que se presentarán en la lista de verificación a continuación.
Requisitos
- 20 Servidor CentOS Consejos de seguridad reforzados: parte 1
21. Deshabilitar comandos SUID y SGID inútiles
Si los bits setuid. y setgid. están configurados en programas binarios, estos comandos pueden ejecutar tareas con otros derechos de usuario o grupo, como los privilegios root. que pueden exponer problemas de seguridad graves.
A menudo, los ataques de saturación del búfer pueden explotar dichos binarios ejecutables para ejecutar código no autorizado con los derechos de un usuario root avanzado.
# buscar/-ruta/proc-prune-o-type f \ (-perm-4000-o-perm-2000 \)-exec ls-l \;
Para desarmar el bit setuid. ejecute el siguiente comando:
# chmod us/path/to/binary_file
Para desarmar el bit setgid ejecute el siguiente comando:
# chmod gs/ruta/a/archivo_binario
22. Buscar archivos y directorios sin propietario
freestar.config.enabled_slots.push
Los archivos o directorios que no pertenecen a una cuenta válida deben eliminarse o asignarse con permisos de un usuario y grupo.
Ejecute el siguiente comando de búsqueda para enumerar archivos o directorios sin usuario ni grupo.
# find/-nouser-o-nogroup-exec ls-l \;
23. Enumere los archivos que se pueden escribir en todo el mundo
Mantener un archivo en el que se puede escribir en todo el mundo en el sistema puede ser peligroso debido al hecho de que cualquiera puede modificarlos. Ejecute el siguiente comando para mostrar archivos que se pueden escribir en palabras, excepto los enlaces simbólicos. que siempre se pueden escribir en todo el mundo.
# find/-path/proc-prune-o-perm-2!-tipo l –ls
24. Cree contraseñas seguras
Cree una contraseña de un mínimo de ocho caracteres. La contraseña debe contener dígitos, caracteres especiales y letras mayúsculas. Utilice pwmake. para generar una contraseña de 128 bits a partir del archivo /dev/urandom.
# pwmake 128
25. Aplicar la política de contraseñas seguras
Obligar al sistema a utilizar contraseñas seguras añadiendo la línea siguiente en el archivo /etc/pam.d/passwd.
Se requiere contraseña pam_pwquality.so retry = 3
Al agregar la línea anterior, la contraseña ingresada no puede contener más de 3. caracteres en una secuencia monótona, como abcd. y más de 3 caracteres consecutivos idénticos, como 1111.
Para obligar a los usuarios a utilizar una contraseña con una longitud mínima de 8. caracteres, incluidas todas las clases de caracteres, verifique la fuerza para secuencias de caracteres y caracteres consecutivos, agregue las siguientes líneas al archivo /etc/security/pwquality.conf.
minlen = 8 minclass = 4 maxsequence = 3 maxrepeat = 3
26. Usar caducidad de contraseña
El comando chage se puede usar para caducar la contraseña de usuario. Para configurar la contraseña de un usuario para que caduque en 45. días, use el siguiente comando:
# chage-M 45 username
Para deshabilitar el tiempo de vencimiento de la contraseña, use el comando:
# chage-M-1 username
Forzar la expiración inmediata de la contraseña (el usuario debe cambiar la contraseña en el próximo inicio de sesión) ejecutando el siguiente comando:
# chage-d 0 username
27. Bloquear cuentas
Las cuentas de usuario se pueden bloquear ejecutando el comando passwd. o usermod:
# passwd-l username # usermod-L username
Para desbloquear cuentas, use la opción-u para el comando passwd. y la opción-U para usermod.
Artículo relacionado. Cómo bloquear cuentas de usuario después de un inicio de sesión fallido Intentos
28. Impedir el acceso al shell de cuentas
Para evitar que una cuenta del sistema (cuenta ordinaria o cuenta de servicio) obtenga acceso a un shell de bash, cambie el shell de root a /usr/sbin/nologin. o /bin/false. en el archivo /etc/passwd. emitiendo el siguiente comando:
# usermod-s/bin/false username
Para cambiar el shell al crear un nuevo usuario, emita el siguiente comando:
# useradd-s/usr/sbin/nologin username Artículo relacionado. Aprenda 15 ejemplos del comando “useradd” en Linux
29. Bloquear la consola de usuario virtual con vlock
vlock. es un programa que se utiliza 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 siguientes comandos:
# 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 administración y el control de cuentas. Los servicios que pueden ofrecer este tipo de administración de cuentas son IPA Server, LDAP, Kerberos, Microsoft Active Directory, Nis, Samba ADS o Winbind.
Algunos de estos servicios están por defecto altamente seguros con protocolos criptográficos y simétricos. criptografía de claves, como Kerberos.
Artículo relacionado. Configuración del servidor NFS con autenticación de usuario basada en Kerberos en Linux
31. Forzar el montaje de solo lectura de medios USB
Con la utilidad blockdev. puede forzar que todos los medios extraíbles se monten como de solo lectura. Por ejemplo, cree un nuevo archivo de configuración udev. llamado 80-readonly-usb.rules. en el directorio /etc/udev/rules.d/ con el siguiente contenido:
SUBSYSTEM == “block”, ATTRS removable == “1”, RUN program = “/sbin/blockdev–setro% N”
Luego, aplica 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 de root a través de TTY
Para evitar que la cuenta de root inicie sesión en el sistema a través de todos los dispositivos de consola (TTY), borre el contenido del archivo securetty escribiendo el siguiente símbolo del terminal de comando como root.
# cp/etc/securetty/etc/securetty.bak # cat/dev/null>/etc/securettyRecuerde que esta regla no se aplica a las sesiones de inicio de sesión SSH Para evitar el inicio de sesión root a través de SSH, edite el archivo /etc/ssh/sshd_config. y agregue la siguiente línea:
PermitRootLogin no Artículo relacionado. Cómo proteger y fortalecer el servidor OpenSSH
33. Use POSIX ACL para expandir los permisos del sistema
Las listas de control de acceso pueden definir derechos de acceso para más de un usuario o grupo y pueden especificar derechos para programas, procesos, archivos y directorios. Si configura ACL en un directorio, sus descendientes heredarán los mismos derechos automáticamente.
Por ejemplo,
# setfacl-mu: user: rw file # getfacl file Artículo relacionado. Configure ACL y cuotas de disco para usuarios/grupos en Linux
34. Configurar SELinux en modo de aplicación
La mejora SELinux. 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 para la seguridad y no en la identidad del usuario autenticado.
Para obtener El estado de Selinux. y la política de aplicación ejecutan los siguientes comandos:
# getenforce # setenforce 1 # sestatus Artículo relacionado. Configurar la política de control de acceso obligatorio con SELinux
35. Instale las utilidades adicionales de SELinux
Instale el paquete policycoreutils-python. que proporciona utilidades adicionales de Python para operar SELinux. audit2allow. audit2why. chcat. y semanage.
Para mostrar todos los valores booleanos junto con una breve descripción, utilice el siguiente comando:
# semanage boolean-l
Por ejemplo, para mostrar y establecer el valor de httpd_enable_ftp_server. ejecute el siguiente comando:
# getsebool httpd_enable_ftp_server
Para hacer el valor de un booleano persiste entre reinicios, especifique la opción-P en setsebool. como se ilustra en el siguiente ejemplo:
# setsebool-P httpd_enable_ftp_server en
36. Utilice el servidor de registro centralizado
Configure el demonio rsyslog. para enviar mensajes de registro de utilidades sensibles a un servidor de registro centralizado. Además, supervise los archivos de registro con la ayuda de la utilidad 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 malintencionados no pueden ocultar completamente su actividad, dejando siempre rastros en el registro remoto archivos.
Artículo relacionado. 4 mejores herramientas de administración y supervisión de registros de Linux
37. Habilite la contabilidad de procesos
Habilite la contabilidad de procesos instalando la utilidad psacct y use el comando lastcomm. para mostrar información sobre los comandos ejecutados anteriormente según se registra en el archivo de contabilidad del sistema y sa. para resumir la información sobre los comandos ejecutados anteriormente según se registra en el archivo de contabilidad del sistema.
38. Endureciendo/etc/sysctl.conf
Use las siguientes reglas de parámetros del kernel para proteger el sistema:
Deshabilitando el enrutamiento de origen net.ipv4.conf.all.accept_source_route = 0 Deshabilite el reenvío de IPv4 ipv4.conf. all.forwarding = 0 Deshabilitar IPv6 net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1
Deshabilitar la aceptación y envío de ICMP paquetes redirigidos a menos que se requiera específicamente.
net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.all.secure_redirects = 0 net.ipv4.conf.all.send_redirects = 0 Desactivar el reenvío de ruta inversa net.ipv4 .conf.all.rp_filter = 2
Ignorar todas las solicitudes de eco ICMP (establecer en 1 para habilitar)
net.ipv4.icmp_echo_ignore_all = 0
39. Utilice los servicios VPN para acceder a sus instalaciones a través de redes públicas desprotegidas
Utilice siempre los servicios VPN. para que los operadores accedan de forma remota a las instalaciones de la LAN a través de Internet. Estos tipos de servicios se pueden configurar mediante una solución de código abierto gratuita, como OpenVPN, o mediante una solución patentada, como Cisco VPN (instale la utilidad de línea de comandos vpnc. proporcionada por Epel Repositories).
Artículo relacionado. Instale OpenVPN Server con clientes de Windows en CentOS
40. Realice un escaneo del sistema externo
Evalúe la seguridad de su sistema en busca de vulnerabilidades escaneando el sistema desde puntos remotos a través de su LAN utilizando herramientas específicas como:
- Nmap. escáner de red 29 Ejemplos de comando Nmap
- Nessus. escáner de seguridad
- OpenVAS. utilizado para buscar vulnerabilidades y gestión integral de vulnerabilidades.
- Nikto. un excelente escáner de scripts de interfaz de puerta de enlace común (CGI) Escanear la vulnerabilidad web en Linux
41. Proteja el sistema internamente
Utilice la protección interna del sistema contra virus, rootkits, malware y, como buena práctica, instale sistemas de detección de intrusos que puedan detectar actividad no autorizada (ataques DDOS, análisis de puertos), como:
- AIDE-Entorno avanzado de detección de intrusiones-http://aide.sourceforge.net/
- ClamAV-Escáner antivirus https://www.clamav.net
- Rkhunter-Escáner de rootkit
- Lynis. Herramienta de análisis y auditoría de seguridad para Linux
- Tripwire. Seguridad e integridad de datos http ://www.tripwire.com/
- Fail2Ban. prevención de intrusiones en la red
- OSSEC. (HIDS) basado en host Sistema de detección de intrusiones http://ossec.github.io/
- Mod_Security. protege los ataques de fuerza bruta o DDoS
42. Modifique las variables del entorno del usuario
Agregue el formato fecha. y hora. para almacenar la ejecución de los comandos emitiendo el siguiente comando:
# echo ‘HISTTIMEFORMAT = ” % d/% m/% y% T “‘>> .bashrc’
Forzar el registro instantáneo de HISTFILE. cada vez que se escribe un comando (en lugar de cerrar sesión):
# echo ‘PROMPT_COMMAND = “history-a”‘>> .bashrc
Limite el tiempo de espera de la sesión de inicio de sesión. Derriba automáticamente el caparazón cuando no se realiza ninguna actividad durante un período de tiempo inactivo. Muy útil para desconectar automáticamente sesiones SSH.
# echo ‘TMOUT = 120’>> .bashrc
Aplica todas las reglas ejecutando:
# source .bashrc Artículo relacionado. : Establecer variables de entorno de usuario en Linux
43. Copia de seguridad de datos
Utilice utilidades de copia de seguridad, como tar, cat, rsync, scp, instantáneas LVM, etc. para almacenar una copia de su sistema, preferiblemente fuera del sitio, en caso de una falla del sistema.
Si el sistema se ve comprometido, puede realizar la restauración de datos de copias de seguridad anteriores.
Por último, no olvide que no importa cuántas medidas de seguridad y contramedidas tome para mantener su sistema seguro, nunca estará completamente seguro mientras su máquina esté enchufada y encendida.