Análisis Lynis, ayuda a la interpretacion del script.
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:
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