Análisis Lynis, ayuda a la interpretacion del script.

31.08.2018

Al ejecutar una auditoría de Lynis, se observa que el modo de usuario único y GRUB no están protegidos por ninguna contraseña / autenticación:

[16:00:28] Warning: No password set for single mode [AUTH-9308] [15:59:26] Suggestion: Set a password on GRUB bootloader to prevent altering boot configuration (eg boot in single user mode without password) [BOOT-5122]

Además, Lynis también menciona unidades de almacenamiento:

[16:05:09] Suggestion: Disable drivers like USB storage when not used, to prevent unauthorized storage or data theft [STRG-1840] [16:05:09] Suggestion: Disable drivers like firewire storage when not used, to prevent unauthorized storage or data theft [STRG-1846]

Como se trata de una instancia virtualizada de Linux y es un servidor, ¿sería beneficioso tomar medidas sobre los puntos planteados anteriormente? Añadir mecanismos de autenticación al modo de usuario único y GRUB realmente causaría problemas durante el arranque (particularmente con GRUB) ya que es un servidor virtualizado no un típico cliente de escritorio Linux, aunque obviamente Lynis no lo sabe.

Este artículo trata sobre el fortalecimiento de la seguridad de los servidores Linux y proporciona comandos específicos para CentOS / RHEL6. Esto no pretende cubrir todas las tareas posibles para endurecer un servidor, sino identificar y abordar la "fruta que cuelga poco" en un servidor CentOS 6 con una instalación básica.

Aquí hay algunos enlaces a información útil:

  • 25 Endurecimiento de los consejos de seguridad para servidores Linux

  • https://wiki.centos.org/HowTos/OS_Protection

  • Herramienta de auditoría de seguridad de Linux que genera recomendaciones y un índice de la rigidez de su sistema. https://cisofy.com/download/lynis/

Este artículo se basará en Lynis proporcionado por Cisofy. Después de ejecutar la herramienta, obtuve un resultado que enumera los elementos de reparación ordenados con prioridad por advertencias y sugerencias . Ahora vamos a trabajar ... Comencemos con las advertencias.

Advertencia : Sin contraseña establecida para modo único [AUTH-9308]
Solución : requiere la contraseña de root para ingresar al modo de usuario único. Modifique / etc / inittab para forzar el inicio de sesión durante el modo de usuario único. Advertencia : no pierda la contraseña de root. Nunca.

echo "# Require the root pw when booting into single user mode" >> /etc/inittab

echo "~~:S:wait:/sbin/sulogin" >> /etc/inittab

Advertencia : No se pudieron encontrar 2 servidores de nombres receptivos [NETW-2705]
Solución : agregue un segundo servidor de nombres.

echo "nameserver 4.2.2.1" >>/etc/resolv.conf

Advertencia : Found mail_name en SMTP banner, y / o mail_name contiene 'Postfix' [MAIL-8818]
Solución : para solucionar esto, modifique el archivo postfix main.cf y establezca la configuración smtpd_banner. Descomenta y elimina $ mail_name.

vim +/smtpd_banner /etc/postfix/main.cf

/etc/postfix/main.cf

# SHOW SOFTWARE VERSION OR NOT

#

# The smtpd_banner parameter specifies the text that follows the 220

# code in the SMTP server's greeting banner. Some people like to see

# the mail version advertised. By default, Postfix shows no version.

#

# You MUST specify $myhostname at the start of the text. That is an

# RFC requirement. Postfix itself does not care.

#

smtpd_banner = $myhostname ESMTP

#smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)

Advertencia : No se configuró la contraseña raíz de MySQL [DBS-1816]
Solución : configure la contraseña de root en MySQL y documentela en un lugar seguro.

mysqladmin -u root password rootsSecretPassword

mysqladmin -u root -p rootsSecretPassword -h localhost password rootsSecretPassword

service mysqld restart

Sugerencia : configure una contraseña en el gestor de arranque GRUB para evitar la alteración de la configuración de arranque (por ejemplo, arranque en modo de usuario único sin contraseña) [BOOT-5122]

Solución : genere un hash de contraseña usando el comando / sbin / grub-md5-crypt y luego agregue esta contraseña al archivo de configuración de grub. Consulte https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/4/html/Security_Guide/s2-wstation-bootloader.html para obtener más información.

Ejecute este comando e ingrese la contraseña cuando se le solicite. Asegúrese de documentar esto en su contraseña segura.

/sbin/grub-md5-crypt

Password:

Retype password:

$1$hUTyB$EzIvE4KbkLl34N9tHZC7p.

Modifique el archivo de configuración de GRUB e inserte una línea debajo del tiempo de espera que contiene la contraseña -md5 seguido del hash que generó en el siguiente comando. Vea el ejemplo a continuación en la línea # 3.

vi +/timeout /boot/grub/grub.conf

/boot/grub/grub.conf

default=0

timeout=0

password --md5 $1$hUTyB$EzIvE4KbkLl34N9tHZC7p.

title CentOS (2.6.32-504.3.3.el6.x86_64)

root (hd0)

kernel /boot/vmlinuz-2.6.32-504.3.3.el6.x86_64 ro root=UUID=81a5cb42-e533-4d71-8c27-30177617388a co

nsole=hvc0 LANG=en_US.UTF-8

initrd /boot/initramfs-2.6.32-504.3.3.el6.x86_64.img

Sugerencia : ejecute chkconfig -list para ver todos los servicios y deshabilitar servicios innecesarios
Solución : deshabilite los servicios innecesarios. Elimine cualquier servicio de este comando que pueda necesitar en su entorno.

for SERVICE in avahi-daemon \

bluetooth \

gpm \

hidd \

iscsi \

iscsid \

isdn \

mdmonitor \

pcscd \

smartd

do

chkconfig $SERVICE off

service $SERVICE stop >/dev/null 2>&1

echo " $SERVICE disabled."

done

Sugerencia : umask predeterminado en / etc / profile podría ser más estricto como 027 [AUTH-9328]
Solución : cambie umask a 027 en / etc / profile.

vi +/umask /etc/profile

/ etc / profile

# By default, we want umask to get set. This sets it for login shell

# Current threshold for system reserved uid/gids is 200

# You could check uidgid reservation validity in

# /usr/share/doc/setup-*/uidgid file

if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then

umask 002

else

umask 027

fi

Sugerencia : deshabilite controladores como el almacenamiento USB cuando no se utilizan, para evitar el almacenamiento no autorizado o el robo de datos [STRG-1840]
Solución : utilice los archivos de configuración en /etc/modprobe.d para deshabilitar los módulos de almacenamiento usb para que no se carguen en el kernel.

echo "Disabling USB Mass Storage" > /etc/modprobe.d/blacklist-usbstorage

echo "blacklist usb-storage" >> /etc/modprobe.d/blacklist-usbstorage

Sugerencia : deshabilite controladores como el almacenamiento firewire cuando no se usen, para evitar el almacenamiento no autorizado o el robo de datos [STRG-1846]
Solución : utilice los archivos de configuración en /etc/modprobe.d para desactivar los módulos firewire de la carga en el núcleo.

echo "Disabling Firewire" > /etc/modprobe.d/blacklist-firewire

echo "blacklist firewire_core" >> /etc/modprobe.d/blacklist-firewire

echo "blacklist firewire_ohci" >> /etc/modprobe.d/blacklist-firewire

Sugerencia : compruebe las reglas de iptables para ver qué reglas no se utilizan actualmente [FIRE-4513]
Solución : aplique las reglas básicas de iptables. Descomente (o agregue) los servicios adicionales necesarios.

### Flush all of the current rules ###

iptables -F

### Block null packets ###

iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP

### Block Syn-flood packets ###

iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

### Block XMAS packets ###

iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP

### Accept loopback interface ###

iptables -A INPUT -i lo -j ACCEPT

### Uncomment to allow web services ###

#iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

#iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT

### Uncomment to allow SMTP services ###

#iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT

#iptables -A INPUT -p tcp -m tcp --dport 465 -j ACCEPT

### Uncomment to allow POP3 Services ###

#iptables -A INPUT -p tcp -m tcp --dport 110 -j ACCEPT

#iptables -A INPUT -p tcp -m tcp --dport 995 -j ACCEPT

### Uncomment to allow IMAP Services ###

#iptables -A INPUT -p tcp -m tcp --dport 143 -j ACCEPT

#iptables -A INPUT -p tcp -m tcp --dport 993 -j ACCEPT

### Allow SSH ###

iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

### Allow established and related connections ###

iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

### Block everything else ###

iptables -P OUTPUT ACCEPT

iptables -P INPUT DROP

### Save iptables and restart the service ###

cat /etc/sysconfig/iptables >/etc/sysconfig/iptables.old

iptables-save >/etc/sysconfig/iptables

service iptables restart

Sugerencia : agregue un banner legal a / etc / motd, para advertir a los usuarios no autorizados [BANN-7122]
Solución : actualice / etc / motd.

cp -p /etc/motd /etc/motd.old

(echo; echo "Unauthorized access to this machine is prohibited."; echo "Disconnect now if you are not an authorized user."; echo) >/etc/motd

Sugerencia : agregue un banner legal a / etc / issue, para advertir a los usuarios no autorizados [BANN-7126]
Solución : actualice / etc / issue.

cp -p /etc/issue /etc/issue

(echo; echo "Unauthorized access to this machine is prohibited."; echo "Disconnect now if you are not an authorized user."; echo) >/etc/issue

Sugerencia : agregue un banner legal a /etc/issue.net, para advertir a los usuarios no autorizados [BANN-7130]
Solución : actualice /etc/issue.net.

cp -p /etc/issue.net /etc/issue.net

(echo; echo "Unauthorized access to this machine is prohibited."; echo "Disconnect now if you are not an authorized user."; echo) >/etc/issue.net

Sugerencia : el daemon de auditoría está habilitado con un conjunto de reglas vacío. Deshabilite el daemon o defina reglas [ACCT-9630]
Solución : configure el daemon de auditoría para registrar todos los comandos raíz. Para obtener más información sobre la auditoría de RHEL, vaya a: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Security_Guide/chap-system_auditing.html

Agregue estas 2 líneas a /etc/audit/audit.rules y reinicie el servicio:

echo '-a exit,always -F arch=b64 -F euid=0 -S execve' >> /etc/audit/audit.rules

echo '-a exit,always -F arch=b32 -F euid=0 -S execve' >> /etc/audit/audit.rules

service auditd restart

Sugerencia : faltan algunos servidores de tiempo en el archivo step-tickers [TIME-3160]
Solución : agregue una lista de servidores NTP al archivo / etc / step-tickers que realizará una sincronización ntpdate cuando se inicie el servicio ntpd.

echo '0.centos.pool.ntp.org' >>/etc/step-tickers

echo '1.centos.pool.ntp.org' >>/etc/step-tickers

echo '2.centos.pool.ntp.org' >>/etc/step-tickers

echo '3.centos.pool.ntp.org' >>/etc/step-tickers

Sugerencia : para disminuir el impacto de un sistema de archivos completo / doméstico, lugar / hogar en una partición separada [FILE-6310]
Solución : cree un sistema de archivos dedicado / doméstico durante la instalación del sistema o realice una migración de datos a una partición separada.

Sugerencia : para disminuir el impacto de un sistema de archivos full / tmp, coloque / tmp en una partición separada [FILE-6310]
Solución : cree un sistema de archivos dedicado / doméstico durante la instalación del sistema o realice una migración de datos a una partición separada.

Sugerencia : compruebe su archivo / etc / fstab para opciones de montaje de partición de intercambio [FILE-6336]
Solución :

Sugerencia: determine si las herramientas de automatización están presentes para la administración del sistema [TOOL-5002]
Solución :

Sugerencia: uno o más valores de sysctl difieren del perfil de escaneo y podrían modificarse [KRNL-6000]

Sugerencia: endurezca los compiladores, como restringir el acceso al usuario root solamente [HRDN-7222]

Sugerencia: endurezca el sistema instalando uno o escáneres de malware para realizar escaneos periódicos del sistema de archivos [HRDN-7230]

Sugerencia: Instale Apache mod_evasive para proteger el servidor web contra ataques DoS / brute force [HTTP-6640]

Sugerencia: Instale Apache mod_qos para proteger el servidor web contra ataques de Slowloris [HTTP-6641]

Sugerencia: Instale Apache mod_spamhaus para proteger el servidor web de los spammers [HTTP-6642]

Sugerencia: Instale modsecurity de Apache para proteger el servidor web contra ataques de aplicaciones web [HTTP-6643]

Sugerencia: compruebe qué archivos eliminados todavía están en uso y por qué. [LOGG-2190]

Sugerencia : configure los límites de antigüedad de la contraseña para forzar el cambio de contraseña de forma regular [AUTH-9286]

Sugerencia : Compruebe 143 archivos en / tmp que son anteriores a 90 días [FILE-6354]
Solución: instale una secuencia de comandos para limpiar / tmp y programarlo para que se ejecute a través de cron.

/ etc / profile

#!/bin/bash

###############################################################################

### clean_tmp.bash

###

### Searched /tmp for aged files and deletes them. Should be scheduled in cron

### to run periodically.

###

### Written by: Timothy Ringrose

### Written on: 4/12/2015

###

###############################################################################

### Specify in days the age of files to target for cleanup ###

FILE_AGE=15

find /tmp -mtime +${FILE_AGE} -type f -exec rm -f {} \;

find /tmp -type d -empty -delete

Sugerencia: instale una herramienta de integridad de archivos [FINT-4350]
Solución: instale y configure el asistente ( https://help.ubuntu.com/community/FileIntegrityAIDE