LINUX

15 pasos de refuerzo de Linux para el servidor CentOS 7

El refuerzo 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 endurecimiento del servidor de CentOS.

Qué saber

Esta guía lo guía a través de los pasos necesarios para fortalecer la seguridad de CentOS 7. El refuerzo de 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 del /etc/ssh/sshd_config expediente.

una. 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

Cambio ChallengeResponseAuthentication y Autenticación de contraseña a No para desactivar el método de contraseña

PasswordAuthentication no
ChallengeResponseAuthentication no

Autorizar la autenticación de clave pública

RSAAuthentication yes
PubkeyAuthentication yes

ahora puede generar un nuevo par de claves

# ssh-keygen -t rsa

B. Deshabilitar el inicio de sesión de root directo

Es un riesgo para la seguridad permitir que root 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. Entonces necesitas cambiar PermitRootLogin sí a PermitRootLogin no

PermitRootLogin no

C. Cambiar el puerto de escucha SSH predeterminado (por ejemplo: 8500)

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

port 8500

2. Protección del cargador de arranque con contraseña de grub

Al proteger el cargador de arranque, podemos evitar el acceso al modo de usuario único que inicia sesión automáticamente como root. Esto se hace con GRUB estableciendo 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 escuchando realmente 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 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. Permisos restringidos

Reduzca los permisos para los 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 de cheques para contraseñas vacías

Cualquier cuenta que tenga una contraseña vacía significa que está abierta para 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 de contraseña vacías:

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

6. Ajustar los parámetros del kernel

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

Sysctl es el comando que se usa 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

Copiar y pegar 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. Deshabilite los 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 ejecutar el nivel 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. Abierto /etc/sysconfig/init archivo y agregue la línea:

SINGLE=/sbin/sulogin

9. Seguridad mejorada de Linux (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.

getenforce El comando nos dice en qué modo se encuentra SELinux.

Podemos cambiar el modo SELinux para hacer cumplir cambiando SELINUX=enforcing en /etc/sysconfig/selinux

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

  • Hacer cumplir: Se aplica la política de seguridad de SELinux.
  • Permisivo: SELinux imprime advertencias en lugar de hacer cumplir.
  • Discapacitado: SELinux está completamente deshabilitado.

Puede verificar el estado de SELinux con el comando

# sestatus
SELinux status: disabled

Ves que está deshabilitado. Para habilitarlo, puede usar

# setenforce enforcing

10. Configure el firewall con iptables

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

una. Cierre todos los puertos no deseados

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

B. Bloquear direcciones IP incorrectas

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. Verificación del sistema de archivos

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

una. 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 en todo el mundo

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. Mantenga / 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 modificaciones no autorizadas de archivos de arranque críticos. Necesitamos editar /etc/fstab archivo e inserte la línea debajo <

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

13. Denegar todas las envolturas TCP

Los envoltorios TCP pueden proporcionar un método rápido y sencillo 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 ssh autorizado.

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

14. Bloquear 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 para permitir 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 del 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 de nuevo este ataque.

una. Habilitar ExecShield

Ayuda a evitar que la pila se rompa. Por lo general, un exploit de desbordamiento de búfer sobrescribe una dirección de retorno para que una función vuelva a la dirección elegida por el atacante. Necesita habilitar en el kernel actual

sysctl -w kernel.exec-shield=1

También puede agregar la línea a continuación para /etc/sysctl.conf

kernel.exec-shield = 1

B. Marcar / habilitar ASLR

La distribución aleatoria del diseño del espacio de direcciones es una función de defensa que dificulta 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 la región 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 línea de abajo para /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 cualquier agujero para piratear su servidor. Es importante reconocer que, si bien es mejor tarde que nunca, las medidas de seguridad disminuyen en su efectividad cuanto más esperas para implementarlas.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar