GNU/Linux >> Tutoriales Linux >  >> Cent OS

15 pasos de refuerzo de Linux para el servidor CentOS 7

El fortalecimiento del servidor es el proceso de mejorar la seguridad del servidor a través de varios métodos. Tenemos muchos pasos para asegurar un servidor. ¡Manténgase alejado a usted y a su empresa protegiendo sus sistemas Linux de piratas informáticos, piratas informáticos y atacantes! Puede convertir una caja vulnerable en un servidor reforzado mediante los siguientes pasos. Te ayudará a prevenir ataques externos. Aquí estoy describiendo el fortalecimiento del servidor de CentOS.

Qué saber

Esta guía lo guía a través de los pasos necesarios para reforzar la seguridad de CentOS 7. Fortalecer un sistema lo hará más restrictivo y es posible que tenga problemas. Recomiendo crear una máquina virtual duplicada que pueda usar para solucionar problemas. A continuación, encontrará una lista de pasos básicos que puede y debe seguir para fortalecer sus servidores inmediatamente después del aprovisionamiento.

1. Acceso remoto seguro

A veces accedemos a nuestro servidor por métodos remotos y si no es más seguro, podemos exponer nuestro servidor. Las opciones de OpenSSH se controlan a través de /etc/ssh/sshd_config archivo.

a. Deshabilite el método de autenticación de contraseña SSH y habilite el método de autenticación de clave pública

Es importante deshabilitar el método de inicio de sesión remoto con contraseña y habilitar la clave pública de autenticación

Cambiar ChallengeResponseAuthentication y Autenticación de contraseña a no para desactivar el método de contraseña

PasswordAuthentication no
ChallengeResponseAuthentication no

Autorizar autenticación de clave pública

RSAAuthentication yes
PubkeyAuthentication yes

ahora puede generar un nuevo par de claves

# ssh-keygen -t rsa

b. Deshabilitar inicio de sesión raíz directo

Es un riesgo de seguridad permitir que la raíz inicie sesión directamente en el servidor. En su lugar, debe iniciar sesión en el sistema como su cuenta y luego hacer su - para iniciar sesión como root. Por lo tanto, debe cambiar PermitRootLogin yes a PermitRootLogin no

PermitRootLogin no

c. Cambiar el puerto de escucha SSH predeterminado (p. ej.:8500)

A veces no se recomienda usar el puerto predeterminado porque es conocido por todo el mundo y es un riesgo de seguridad. Es bueno personalizar el puerto a usar

port 8500

2. Asegurar el cargador de arranque con contraseña de grub

Al asegurar el gestor de arranque, podemos evitar el acceso al modo de usuario único que inicia sesión automáticamente como root. Esto se hace con GRUB configurando una contraseña que se almacena en texto sin formato de forma predeterminada.

Para el sistema Debian

# grub-mkpasswd-pbkdf2

Para Centos

# grub2-mkpasswd-pbkdf2

3. Puertos de red de escucha

Después de configurar los servicios de red, es importante prestar atención a qué puertos están realmente escuchando en las interfaces de red del sistema. Cualquier puerto abierto puede ser evidencia de una intrusión.

# nmap -sT -O localhost

Starting Nmap 6.40 ( http://nmap.org ) at 2017-06-07 23:13 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000061s latency).
Other addresses for localhost (not scanned): 127.0.0.1
rDNS record for 127.0.0.1: centos-01
Not shown: 995 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
80/tcp open http
111/tcp open rpcbind
2049/tcp open nfs

Para enumerar todos los puertos abiertos y los programas asociados, use el siguiente comando

# netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd           
tcp        0      0 0.0.0.0:20048           0.0.0.0:*               LISTEN   

4. Reducir los permisos

Reduzca los permisos para archivos y carpetas del sistema para limitar los riesgos.

# chmod 700 /root
# chmod 700 /var/log/audit
# chmod 740 /etc/rc.d/init.d/iptables
# chmod 740 /sbin/iptables
# chmod -R 700 /etc/skel
# chmod 600 /etc/rsyslog.conf
# chmod 640 /etc/security/access.conf
# chmod 600 /etc/sysctl.conf

5. Comprobación de cuentas en busca de contraseñas vacías

Cualquier cuenta que tenga una contraseña vacía significa que está abierta para el acceso no autorizado a cualquier persona en la web y es parte de la seguridad dentro de un servidor Linux. Para verificar cuentas con contraseña vacía, use el siguiente comando

# cat /etc/shadow | awk -F: '($2==""){print $1}'
paul

Por seguridad, es bueno bloquear todas las cuentas con contraseñas vacías:

# passwd -l paul
Locking password for user paul.
passwd: Success

6. Ajuste los parámetros del kernel

Sysctl es una interfaz para examinar y cambiar dinámicamente parámetros en el sistema operativo Linux. Edite /etc/sysctl.conf archivo para optimizar los parámetros del kernel

Sysctl es el comando utilizado para modificar los parámetros del kernel en tiempo de ejecución.

# sysctl -a
# sysctl -A
# sysctl net.ipv4.conf.all.rp_filter
To load settings, enter: 
# sysctl -p

Copie y pegue el siguiente contenido en /etc/sysctl.conf

# Turn on execshield
kernel.exec-shield=1
kernel.randomize_va_space=1

# Enable IP spoofing protection
net.ipv4.conf.all.rp_filter=1

# Disable IP source routing
net.ipv4.conf.all.accept_source_route=0

# Ignoring broadcasts request
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.icmp_ignore_bogus_error_messages=1

# Make sure spoofed packets get logged
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.log_martians = 1

# Disable ICMP routing redirects
sysctl -w net.ipv4.conf.all.accept_redirects=0
sysctl -w net.ipv6.conf.all.accept_redirects=0
sysctl -w net.ipv4.conf.all.send_redirects=0
sysctl -w net.ipv6.conf.all.send_redirects=0

# Disables the magic-sysrq key
kernel.sysrq = 0

# Turn off the tcp_sack
net.ipv4.tcp_sack = 0

# Turn off the tcp_timestamps
net.ipv4.tcp_timestamps = 0

# Enable TCP SYN Cookie Protection
net.ipv4.tcp_syncookies = 1

# Enable bad error message Protection
net.ipv4.icmp_ignore_bogus_error_responses = 1

7. Deshabilitar servicios no deseados

Debe eliminar todos los servicios y demonios no deseados (servicios que se ejecutan en segundo plano) desde el inicio del sistema que se inician en el momento del arranque en nivel de ejecución 3 .

# chkconfig --list | grep '3:on'

Para deshabilitar el servicio, ingrese:

# service serviceName stop
# chkconfig serviceName off

8. Requerir autenticación para el modo de usuario único

Se recomienda solicitar la contraseña de root al ingresar al modo de usuario único. Abra /etc/sysconfig/init archivo y agregue la línea:

SINGLE=/sbin/sulogin

9. Linux con seguridad mejorada (SELinux)

SELinux es un conjunto de reglas de seguridad que determinan qué proceso puede acceder a qué archivo, directorios, puertos, etc. Cada archivo, proceso, directorio y puerto tiene una etiqueta de seguridad especial llamada contextos SELinux. Un contexto es simplemente un nombre que utiliza la política de SELinux para determinar si un proceso puede o no acceder a un archivo, directorio o puerto. De forma predeterminada, la política no permite ninguna interacción, por lo que las reglas explícitas otorgan acceso. Si no hay una regla de permiso, no se permite el acceso.

obtener fuerza El comando nos dice en qué modo está SELinux.

Podemos cambiar el modo SELinux para que se cumpla cambiando SELINUX=enforcing en /etc/sysconfig/selinux

Hay tres directivas en este archivo como se explica a continuación.

  • Cumplimiento: Se aplica la política de seguridad de SELinux.
  • Permisivo: SELinux imprime advertencias en lugar de aplicarlas.
  • Deshabilitado: SELinux está completamente deshabilitado.

Puede comprobar el estado de SELinux con el comando

# sestatus
SELinux status: disabled

Ves que está deshabilitado. Para habilitarlo, puede usar

# setenforce enforcing

10. Configurar el cortafuegos con iptables

iptables es un programa de aplicación de espacio de usuario que permite al administrador del sistema configurar las tablas proporcionadas por Linux Kernel Firewall y las cadenas y reglas que almacena.

a. Cierra todos los puertos no deseados

iptables -A INPUT -p tcp --dport PORT_NUMBER -j DROP

b. Bloquear IP malas

iptables -A INPUT -s IP_ADDRESS -j DROP

c. Bloquear conexiones a una interfaz de red

Para bloquear conexiones desde una dirección IP específica a una interfaz de red específica, use el comando

# iptables -A INPUT -i ens0 -s 6.6.6.6 -j DROP

d. Lista de reglas de iptables

Puede ver todas las reglas de iptables con el comando

iptables -L -n -v

11. Verificando el sistema de archivos

Todos los archivos habilitados con bits SUID/SGID se pueden usar para actividades maliciosas, cuando el ejecutable SUID/SGID tiene un problema de seguridad. Todos los usuarios locales o remotos pueden usar dicho archivo.

a. Identificar binarios SUID y SGID no deseados

find / \( -perm -4000 -o -perm -2000 \) -print
find / -path -prune -o -type f -perm +6000 -ls

b. Identificar archivos de escritura mundiales

find /dir -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print

c. Identificar archivos y carpetas huérfanos

find /dir -xdev \( -nouser -o -nogroup \) -print

12. Mantener /boot como de solo lectura

El kernel de Linux y sus archivos relacionados se encuentran en el directorio /boot, que por defecto es de lectura y escritura. Cambiarlo a solo lectura reduce el riesgo de modificación no autorizada de archivos de arranque críticos. Necesitamos editar /etc/fstab e inserte la línea debajo

LABEL=/boot     /boot     ext2     defaults,ro     1 2

13. Denegar todos los contenedores TCP

Los contenedores TCP pueden proporcionar un método rápido y fácil para controlar el acceso a las aplicaciones vinculadas a ellos. Por lo tanto, se recomienda bloquear todas las aplicaciones no utilizadas y luego autorizar solo las aplicaciones que se utilizarán.

Por ejemplo, bloquearemos todas las aplicaciones pero solo las ssh autorizadas

echo "ALL:ALL" >> /etc/hosts.deny 
echo "sshd:ALL" >> /etc/hosts.allow

14. Bloquee cronjobs para usuarios no autorizados

Cron se utiliza para automatizar trabajos en un momento determinado. Es posible especificar quién puede y quién no puede ejecutar trabajos. Esto se controla mediante el uso de archivos llamados /etc/cron.allow y /etc/cron.deny . Para bloquear a un usuario usando cron, simplemente agregue nombres de usuario en cron.deny y permita que un usuario ejecute cron add en el archivo cron.allow.

# echo ALL >>/etc/cron.deny

15. Asegure el servidor contra el desbordamiento del búfer

Un desbordamiento de búfer ocurre cuando un programa o proceso intenta escribir más datos en un bloque de memoria de longitud fija, o búfer, de los que el búfer está asignado para contener. Es importante proteger su servidor nuevamente este ataque

a. Activar ExecShield

Ayuda a evitar que se rompan las pilas. Por lo general, un exploit de desbordamiento de búfer sobrescribe una dirección de retorno para que una función regrese a una dirección elegida por el atacante. Debe habilitarlo en el kernel actual

sysctl -w kernel.exec-shield=1

También puede agregar la siguiente línea a /etc/sysctl.conf

kernel.exec-shield = 1

b. Marcar/Habilitar ASLR

La aleatorización del diseño del espacio de direcciones es una característica de defensa para dificultar los desbordamientos del búfer. ASLR dificulta que el atacante encuentre una dirección a la que saltar. Debe habilitar la ubicación aleatoria de regiones de memoria virtual configurando el tiempo de ejecución para kernel.randomize_va_space

sysctl -q -n -w kernel.randomize_va_space=2

Agregue la siguiente línea a /etc/sysctl.conf si no existe ya

kernel.randomize_va_space = 2

Conclusión

Estas son algunas de las consideraciones básicas para los nuevos usuarios que intentan ejecutar sus propios servidores. Tenga en cuenta que las galletas saladas siempre van un paso por delante; siguen buscando agujeros para piratear su servidor. Es importante reconocer que, si bien es mejor tarde que nunca, la eficacia de las medidas de seguridad disminuye cuanto más se espera para implementarlas


Cent OS
  1. 7 pasos para asegurar su servidor Linux

  2. Cómo instalar o actualizar a PHP 7 en CentOS 7 Linux Server

  3. Los 7 mejores consejos para reforzar la seguridad del servidor CentOS 8/RHEL 8

  4. Instale PHP Server Monitor en un VPS CentOS 7 Linux

  5. Comando de Linux para esperar a que un servidor SSH esté activo

Endurecimiento de servidores Linux:mejores prácticas

Servidor FreeIPA en Alma Linux 8/CentOS 8

Cómo configurar la replicación FreeIPA en Rocky Linux/Alma Linux/Centos 8

Pasos para instalar Spotify en Rocky Linux o CentOS 8

Cómo instalar Memcaed en CentOS 8 Linux

Servidor de monitoreo Graylog en Ubuntu Linux para servidores/servicios de monitoreo