La mayoría de los sistemas empresariales y multicomponentes como SAVIA , base de datos Oracle utilizan en su plataforma un sistema operativo basado en linux . En vista de esto, los auditores de TI les prestan tanta atención. Hoy, en el artículo, presentaremos a su atención varias herramientas gratuitas presentadas en forma de scripts y utilizando mecanismos regulares del sistema operativo para proporcionar una auditoría rápida de la configuración de seguridad.
Los siguientes comandos y secuencias de comandos del sistema utilizados para la auditoría rápida de las opciones de seguridad de los sistemas operativos Linux se basan en las recomendaciones de auditoría de seguridad publicadas por la comunidad de ISACA en el manual del Programa de garantía/auditoría de seguridad del sistema operativo UNIX/LINUX.
1. Verificación de cuentas
1.1 Listar todos los usuarios
La lista de usuarios se almacena en /etc/passwdfile. Para obtener una lista de usuarios, puede usar el siguiente script:
- papelera/golpe
- # listadeusuariosenelsistema.sh
- # cuenta y enumera los usuarios "reales" existentes en el sistema.
- echo “[*] Usuarios existentes (ordenados alfabéticamente):”
- grep ‘/bin/bash’ /etc/passwd | grep -v 'raíz' | corte-f1
- -d':' | clasificar
- echo -n “[*] Número de usuarios reales encontrados: “
- grep ‘/bin/bash’ /etc/passwd | grep -v 'raíz' | wc-l
Durante la auditoría, debe verificar la lista de usuarios bloqueados y desbloqueados ( nombre de la cuenta ). El siguiente comando funcionará para esto:
- #!/bin/bash
- # passwd –s nombre de cuenta
1.3 Visualización de estadísticas de todos los usuarios
- #!/bin/bash
- #!/bin/bash
- # ac -d
- #!/bin/bash
- # usuario ac
Las aplicaciones del sistema psacct o acct se ejecutan en segundo plano y realizan un seguimiento de la actividad de cada usuario en el sistema, así como de los recursos que consumen. Para verificar la actividad de los usuarios en el sistema, ejecute el siguiente script:
- #!/usr/bin/envksh
- último -Fa|awk '
- /empieza wtmp/ ( siguiente; )
- /todavía conectado/ (siguiente;)
- $0 == reiniciar (siguiente;)
- NF > 0 (
- si (NR > 1)
- imprimirf("
”); - printf("Usuario:t%s
”, $1); # usuario - printf(" Inicio:t%s %s %s %s
”, $3, $4, $5, $6); - si ($ 9 == "abajo")
- printf(" Fin: apagado
”); - printf(" Fin:t%s %s %s %s
”, $9, $10, $11, $12); - if(substr ($NF, 1, 1) == “(“)
- t = $NF;
- h = "hostlocal";
- t = $(NF-1);
- h = $NF;
- gsub(“[()]”, “”, t);
- printf("Hora en:t%s
”, t); - printf("Host Remoto:t%s
”, h);
2. Comprobación de la política de contraseñas
2.1 cuentas con una contraseña vacía
Durante la auditoría, debe asegurarse de que no haya cuentas bloqueadas en el sistema que le permitan iniciar sesión en el sistema sin ingresar una contraseña. Esta regla se puede comprobar con el comando:
# gato /etc/sombra | awk -F: ($2==””)(imprimir $1)’
2.2 Comprobación de la complejidad de la contraseña
Durante la auditoría, es necesario verificar la configuración de complejidad de la contraseña para reducir el riesgo de ataques de fuerza bruta (brute-force) o de diccionario en la contraseña. Se deben usar módulos de autenticación conectables (PAM) para establecer esta política en el sistema.
El auditor puede verificar la configuración adecuada en el archivo de configuración:
# vi /etc/pam.d/system-auth
2.3 Comprobación de la caducidad de la contraseña
Como parte de la auditoría, debe comprobar la configuración de caducidad de la contraseña. Para verificar el tiempo de vencimiento de la contraseña, use el comando cambio.
Este comando genera información detallada la fecha de caducidad de la contraseña y la fecha en que se modificó por última vez.
El siguiente comando se utiliza para ver información sobre la "edad" de las contraseñas:
#cambiar -l nombre de usuario
Para cambiar el tiempo de vencimiento de la contraseña para un usuario específico, puede usar los siguientes comandos:
#cambiar -M 60 nombre de usuario
#cambio -M 60 -m 7 -W 7 nombre de usuario
Opciones (para establecer la fecha de caducidad de la contraseña):
-M - fecha máxima de caducidad en días.
-m es la fecha de caducidad mínima en días.
-W - configuración de advertencia en días.
2.4 Uso de contraseñas repetidas
La configuración de autorización en el sistema debe cumplir con la política de contraseñas. El archivo que contiene el historial de contraseñas se encuentra en /etc/security/opasswd.
Para verificar, siga estos pasos:
para RHEL: abra el archivo '/etc/pam.d/system-auth':
# vi /etc/pam.d/system-auth
para Ubuntu/Debian/Linux Mint: abra el archivo '/etc/pam.d/common-password':
# vi /etc/pam.d/contraseña-común
Agregue la siguiente línea a la sección 'auth':
auth suficiente pam_unix.so likeauthnullok
Para deshabilitar el uso de las últimas seis contraseñas, agregue la siguiente línea:
Contraseña suficiente pam_unix.so nullokuse_authtok md5 shadow Remember=6
Después de ejecutar el comando, el sistema mantendrá un historial de las seis contraseñas anteriores, y si algún usuario intenta actualizar la contraseña usando alguna de las últimas seis, recibirá un mensaje de error.
3. Configuración de conexión segura
Los protocolos de conexión remota Telnet y Rlogin son muy antiguos y vulnerables debido a la transmisión de la contraseña a través de la red de forma no cifrada. Se debe utilizar un protocolo seguro para una conexión remota y segura Shell seguro (SSH).
El auditor también debe asegurarse de que la opción inicio de sesión raíz
deshabilitado, puerto SSH predeterminado cambiado, acceso remoto permitido solo para usuarios autorizados específicos. Los ajustes a comprobar están en el archivo de configuración de SSH:
1. #vi /etc/ssh/sshd_config
3.1 Iniciar sesión como superusuario (inicio de sesión raíz)
Durante el curso de la auditoría, el auditor debe verificar que esté prohibido el inicio de sesión remoto con derechos de superusuario raíz.
# PermitRootLogin = sí
3.2 Verificar el inicio de sesión SSH de la cuenta de servicio
Durante la auditoría, el auditor debe verificar la cuenta de servicio con un inicio de sesión SSH sin contraseña. Por lo general, los administradores del sistema utilizan esta función para tareas programadas. copias de seguridad, transfiriendo archivos y ejecutando scripts en modo de control remoto.
Verifique que la configuración de sshd_config (/etc/ssh/sshd_config) sea correcta por última vez.
# PermitRootLogin sin contraseña
# RSAAuthentication = sí
#PubkeyAuthentication=sí
3.3 Verificación de listas de acceso en DenyHosts y Fail2ban
Durante la auditoría, es necesario verificar la configuración de las listas de acceso DenyHosts
y Fail2ban
. Estos son scripts que se utilizan para monitorear y analizar los registros de acceso SSH y proteger contra ataques de fuerza bruta de contraseñas.
Características de DenyHost:
- guarda y realiza un seguimiento de los registros de un archivo /var/registro/seguro , marcando todos los intentos de inicio de sesión exitosos y fallidos, y los filtra.
- supervisa los intentos fallidos de inicio de sesión
- envía notificaciones por correo electrónico de hosts bloqueados e intentos de inicio de sesión sospechosos
- Guarda y rastrea registros de archivos /var/registro/seguro y /var/log/auth.log , /var/log/pwdfail
- altamente personalizable y multiproceso
- supervisa los archivos de registro de forma regular
4. Comprobación de los registros del sistema
Durante la auditoría, debe asegurarse de que el demonio SysLog se esté ejecutando y de que todos los eventos significativos que ocurran en el sistema se registren en los registros de eventos. La auditoría también debe garantizar que la política de retención del registro de eventos tenga en cuenta los requisitos de la ley y la política de seguridad aplicables.
4.1 Registros de eventos en Linux:
/var/log/auth.log: registro del sistema de autorización (inicios de sesión y mecanismo de autenticación).
/var/log/dpkg.log - registro de instalación/eliminación de paquetes usando dpkg.
/var/log/yum.log - registro de instalación/eliminación de paquetes usando yum.
/var/log/faillog: un registro de intentos fallidos de inicio de sesión y su límite para cada cuenta.
/var/log/kern.log: registro del kernel (registro detallado de mensajes del kernel de Linux).
/var/log/maillog o /var/log/mail.log: registro del servidor de correo.
/var/log/wtmp: registro de inicio de sesión (tiempo de registro y duración de todos los usuarios del sistema).
/var/run/utmp: información sobre los usuarios actualmente conectados al sistema.
/var/log/lastlog: registros de inicios de sesión anteriores.
/var/log/boot: información que se registra durante el arranque del sistema
5. Protección de archivos del sistema
5.1 Proteger el cargador de arranque GRUB
Para proteger el cargador de arranque GRUB, el administrador debe usar el cifrado de contraseña en formato MD5 :
# grub-md5-cripta
Después de ejecutar el comando, el administrador debe abrir el archivo /boot/grub/menu.lst o /boot/grub/grub.conf y agregue la contraseña MD5:
# vi /boot/grub/menu.lst
#vi /boot/grub/grub.conf
La contraseña MD5 recién creada se puede agregar al archivo de configuración de GRUB.
5.2 Proteger el directorio de arranque /BOOT
Durante la auditoría, debe verificar el estado del directorio /bota, ya que el núcleo del sistema y los archivos relacionados se encuentran en el directorio /bota. Debe asegurarse de que este directorio tenga acceso de solo lectura, lo que evita cambios no autorizados en archivos importantes del sistema. Para verificar, abra el archivo /etc/fstab y verifique la configuración:
El archivo debe contener la línea:
ETIQUETA=/arranque /arranque ext2 por defecto,ro 1 2
5.3 Comprobación de puertos abiertos y conexiones activas
El siguiente script se puede utilizar para comprobar los servicios que se ejecutan en el sistema:
#!/bin/bash
si (($(ps -ef | grep -v grep | grep $servicio | wc -l) > 0))
después
echo "$el servicio se está ejecutando!!!"
más
/etc/init.d/$inicio del servicio
fi
Vista conexiones de red
# netstat-anop
o
# lsof-i(lsof-ni)
o
#iptraf
Puertos de escucha
Usando el comando Netstat, puede ver todos puertos abiertos y comandos relacionados. Ejemplo de guión:
# netstat-tulpn
Un script para escanear puertos es:
escanear() (
si [[ -z $1 || -z$2]]; después
echo “Uso: $0
retorno
fi
anfitrión local=$1
puertos locales=()
caja $2 en
*-*)
IFS=- leer inicio fin<<< “$2”
for ((puerto=inicio; puerto<= end; port++)); do
puertos+=($puerto)
hecho
;;
*,*)
IFS=, leer -ra puertos<<< “$2”
;; *)
puertos+=($2) ;;
esac
para puerto en “$(puertos[@])”; hacer
alarma 1 "eco >/dev/tcp/$host/$puerto" &&
echo "puerto $puerto abierto" ||
echo "puerto $puerto cerrado"
hecho
}
cortafuegos iptables
Durante la auditoría, debe verificar la configuración del firewall de Linux para evitar el acceso no autorizado. Para controlar el tráfico, se deben crear reglas en iptables que filtrarán los paquetes entrantes, salientes y reenviados según la dirección IP y el número de puerto TCP/UDP.
# iptables -n -L -v --números de línea
ICMP/solicitudes de transmisión
Durante la auditoría, debe verificar que los sistemas estén configurados para ignorar los ping y las solicitudes de transmisión. Para hacer esto, asegúrese de que el archivo “/etc/sysctl.conf” agregó las siguientes líneas:
# ignorar las solicitudes ICMP:
net.ipv4.icmp_echo_ignore_all = 1
# ignorar las solicitudes de transmisión:
net.ipv4.icmp_echo_ignore_broadcasts = 1
5.4 Comprobación de actualizaciones instaladas
Los sistemas deben tener instaladas las últimas actualizaciones:
# actualizaciones ñam
# actualización de verificación de yum
6. Comprobación de trabajos CRON ejecutados automáticamente
El auditor debe verificar quién tiene permiso y quién está prohibido ejecutar trabajos en cron. El acceso a cron se controla mediante archivos. /etc/cron.permitir y /etc/cron.deny.
# echo TODO >>/etc/cron.deny
7. Comprobación de seguridad forzada SELINUX
Durante la auditoría, es importante comprobar el estado SELinux
. Este mecanismo debe estar habilitado en el sistema.
Hay tres modos SELinux
:
- Aplicación: se aplica la política de SELinux. SELinux deniega el acceso según las reglas de la política de SELinux.
- Permisivo: la política de SELinux no se aplica. SELinux no deniega el acceso, pero las denegaciones se registran como acciones que se denegarían si la política estuviera configurada para cumplir.
- Deshabilitado: SELinux está deshabilitado. Solo se utilizan reglas DAC discretas.
Durante una auditoría, puede usar el siguiente script para verificar el estado de SELinux o usar los comandos system-configselinux, getenforce o sestatus:
HABILITADO=`cat /selinux/enforce`
si [“$HABILITADO” == 1]; después
echo “SELinux está habilitado, ¿deshabilitado? (sí No):"
leer deshabilitar
if [ $deshabilitar == "sí" ]; después
echo "deshabilitando selinux"
setenforce 0
fi
fi
Script LBSA para verificar las opciones básicas de seguridad
LBSA (secuencia de comandos de auditoría de seguridad básica de Linux) es un script básico de auditoría de configuración de seguridad de Linux. El script debe ejecutarse desde una línea de comando con privilegios raíz, o idealmente programado para ejecutarse regularmente usando cron para verificar sistemáticamente los cambios de configuración.
El propósito de este script es auditar rápidamente la configuración de seguridad y descargar un informe que describa las posibles configuraciones que se pueden cambiar para brindar un mayor grado de seguridad. En el caso de que no haya recomendaciones para ninguna opción, el script simplemente muestra una línea con el procesamiento del cheque, y la decisión final siempre queda en manos del administrador. Antes de ejecutar una prueba, los desarrolladores recomiendan encarecidamente que lea el manual y estudie las secciones recomendadas para obtener más información.
En la edición actual (Versión 1.0.49), el script busca las siguientes opciones:
- vulnerabilidades en la configuración de la cuenta
- vulnerabilidades en la configuración de SSH
- vulnerabilidades en directorios temporales y directorios del sistema de archivos cargados en RAM (por ejemplo, en /tmp, /var/tmp /dev/)
- permisos de archivos, estado de los directorios del sistema
- -configuración de servicios DRBD y Hearbeat
El guión es bastante grande, así que no lo pusimos en la página.
Realizar una auditoría de seguridad del servidor una vez al mes para detectar oportunamente posibles problemas relacionados con la penetración de intrusos en el servidor.
Si no ve ningún signo de actividad de terceros en el VPS o el sitio, realice la siguiente serie de comprobaciones y ajustes para proteger el servidor de la piratería.
Configuración de la capa de aplicación
Si CMS está instalado en el servidor, compruebe si están instaladas todas las actualizaciones más recientes.
Joomla
Busque el archivo changelog.txt en el directorio raíz del sitio, donde encontrará información sobre la versión de CMS. Si no está actualizado, actualice Joomla.
WordPress
Busque el archivo wp-includes/version.php para obtener información sobre la versión de CMS. Si está desactualizado, actualice Wordpress.
DLE
Busque el archivo engine/data/config.php, busque la línea version_id y asegúrese de que la versión esté actualizada.
Compruebe también los archivos engine/ajax/updates.php y upgrade/index.php (parámetro dle_version).
1C-Bitrix
Busque el archivo /bitrix/modules/main/classes/general/version.php, donde encontrará información sobre la versión del CMS. También verifique el archivo /bitrix/admin/update_system.php. Si la versión está desactualizada, actualice 1C-Bitrix.
Drupal
Busque el archivo changelog.txt en el directorio raíz del sitio, donde encontrará información sobre la versión de CMS. Si no está actualizado, actualice Drupal.
Verifique la versión del kernel en el archivo /modules/system/system.info.
Además, puede detectar la versión de CMS a través del panel de control.
Controlar Servidor web.
apache
Abra el archivo de configuración de Apache (dependiendo de la versión, estos pueden ser archivos httpd.conf, httpd2.conf, apache.conf, apache2.conf) y verifique si contiene una directiva que deshabilite la salida de información sobre la versión de la web. servidor:
ServerTokensProd
Si esta directiva no está presente, agregue y guarde el archivo.
Busque el archivo secure.conf, ábralo para verlo y verifique su contenido con el siguiente ejemplo:
Su archivo secure.conf no debe ser significativamente diferente del ejemplo anterior.
Compruebe el MPM instalado con el comando
Apachectl -V
Para mayor seguridad, use mpm_itk a menos que necesite absolutamente mpm_prefork.
Si desea cambiar MPM, realice una reinstalación después de realizar copias de seguridad de los archivos de configuración. Después de la reinstalación, verifique si el propietario del sitio y todos sus directorios es el usuario.
Nginx
Abra el archivo de configuración del servidor web (nginx.conf), vaya a la sección http y verifique si contiene directivas que limitan la cantidad de conexiones desde una dirección IP:
Limit_zone limita $binary_remote_addr 5m; limit_conn limita 10; o (para versiones recientes) limit_conn_zone $binary_remote_addr zone=addr:10m; limit_conn dirección 10;
Si estas directivas no están presentes, agregue y guarde el archivo.
Bloquee algunos agentes de usuario para bloquear el tráfico no deseado. En la sección http del archivo de configuración de Nginx, agregue la directiva
Si ($http_user_agent ~* LWP::Simple|BBBike|wget|msnbot) (devuelve 403;)
Bloquee el spam de referencia agregando la directiva a la sección http del archivo de configuración de Nginx
If($http_referer ~*(chicas|en venta|niña|joyería|amor|nudit|orgánica|póquer|pornografía|sexo|adolescente))(return 403;)
Gerente de ISP
Realice las siguientes comprobaciones en el panel de control de ISPmanager.
Compruebe si el acceso al panel de control está restringido por dirección IP.
Configure la copia de seguridad de datos si no está habilitada. Recomendamos usar una unidad externa para la copia de seguridad para evitar la pérdida de datos junto con el archivo.
PHP
Abra el archivo de configuración php.ini y agregue las siguientes directivas.
Expose_php=Off - apaga la transmisión de la información de la versión de PHP en el encabezado HTTP; sql.safe_mode=On - habilitar el modo seguro de SQL; post_max_size=8M - límite de tamaño para los datos transmitidos por el método POST; disabled_functions exec, system, passthru, proc_open, shell_exec: deshabilite algunas funciones por razones de seguridad.
NTP
En el archivo de configuración de NTP (/etc/ntp.conf por defecto), agregue líneas para deshabilitar las solicitudes recursivas:
Restringir predeterminado kod limitado nomodify notrap nopeer noquery restringir -6 predeterminado kod limitado nomodificar notrap nopeer noquery restringir 127.0.0.1 restringir -6::1
Unir
Coloque las siguientes líneas en el archivo named.conf para deshabilitar las consultas recursivas:
Permitir recursividad (127.0.0.1; 82.146.32.0/19; 78.24.216.0/21; 92.63.96.0/20; 62.109.0.0/19; 188.120.224.0/19; 149.154.64.0/21; 37.230.0.94.0/21; 248.0/21; );
Comprobación del propietario del directorio del sitio
Compruebe quién es el propietario del directorio principal del sitio y de todos sus subdirectorios.
En la barra de herramientas de ISPmanager, vaya a la sección "Sistema" -> "Administrador de archivos" y abra el directorio del sitio. Asegúrese de que las columnas Propietario y Grupo sean para el usuario propietario del sitio. Para cambiar estos atributos, haga clic en el botón Atributos en la barra de herramientas.
Los nombres de propietarios de sitios válidos son apache, www, www-data si usa mpm_prefork. Recomendamos usar mpm_itk para mejorar la seguridad.
Si el sitio contiene carpetas compartidas (por ejemplo, upload, tmp), entonces es válido para ellos el nombre de propietario 777. Asegúrese de que este usuario esté configurado solo para los directorios necesarios ejecutando el comando
Buscar ./ -perm 0777
Encontrará todas las carpetas y archivos propiedad de 777.
Configuración del nivel del sistema operativo
Cazador
Utilice la utilidad rkhunter para identificar posibles vulnerabilidades del servidor.
Para instalar la utilidad, use el comando:
Yum install rkhunter - CentOS OS apt-get install rkhunter - Debian/Ubuntu OS make all install clean -C /usr/ports/security/rkhunter or pkg install rkhunter - FreeBSD OS
Para actualizar la base de datos de esta utilidad, ejecute los comandos
Rkhunter-actualización
Rkhunter-propupd
Ejecute una verificación del sistema con el comando
Rkhunter -c --cs2
Durante el proceso de verificación, debe presionar la tecla Intro varias veces para continuar. Al finalizar, aparecerá un resumen del resultado de la prueba.
Los resultados de la verificación se colocan en el archivo de registro /var/log/rkhunter/rkhunter.log, revíselo en busca de advertencias y errores.
sistema
Use la utilidad sysctl para administrar los parámetros del kernel del sistema. Abra el archivo de configuración de la utilidad /etc/sysctl.conf e ingrese las siguientes líneas.
Deshabilite la capacidad de enrutar el tráfico entrante, ya que un atacante puede usar esta capacidad para falsificar direcciones IP:
net.ipv4.conf.all.accept_source_route = 0
Deshabilite las respuestas a las solicitudes ICMP en el canal de transmisión; esto ayudará a prevenir ataques de pitufo:
Net.ipv4.icmp_echo_ignore_broadcasts = 1
Deshabilite el registro de mensajes de error no válidos:
Net.ipv4.icmp_ignore_bogus_error_responses = 1
Habilite la protección contra desbordamiento de memoria:
Kernel.exec-escudo=1 (CentOS)
Habilite el uso de la memoria ASLR:
núcleo.randomize_va_space = 2
Deshabilite la capacidad de reenviar mensajes ICMP:
net.ipv4.conf.all.accept_redirects=0 net.ipv4.conf.default.accept_redirects=0
Si no está utilizando una VPN u otras aplicaciones especiales en el servidor, deshabilite el reenvío:
Net.ipv4.conf.all.forwarding=0
Habilitar la protección contra inundaciones SYN: uso de cookies SYN:
Net.ipv4.tcp_syncookies=1
Configure el número de intentos para enviar paquetes SYN-ACK:
Net.ipv4.tcp_synack_retries = 3
Configure el tiempo después del cual el servidor verifica la conexión si no se ha utilizado durante mucho tiempo (el valor predeterminado es 2 horas):
Net.ipv4.tcp_keepalive_time=1800
Establezca el número de comprobaciones de conexión antes de que finalice:
Net.ipv4.tcp_keepalive_probes=3
Configure el tiempo de espera del socket en el estado FIN-WAIT-2:
net.ipv4.tcp_fin_timeout=30
fstab
Compruebe el archivo de configuración de fstab (/etc/fstab), que contiene información sobre discos, particiones y dispositivos de almacenamiento, y cómo se montan en el sistema.
Vi /etc/fstab
Tenga en cuenta que las particiones no raíz deben tener la opción nodev. Si /tmp está montado en una partición separada, agregue nodev, noexec, nosuid para esa partición.
rsyslog
Verifique el archivo de registro del sistema /etc/rsyslog.conf.
Vi /etc/rsyslog.conf
Preste atención a las siguientes líneas, que deberían verse así:
También asegúrese de que el archivo de registro no esté vacío, es decir, el registro es correcto.
sudo
Compruebe si la utilidad sudo (o su) está configurada correctamente, lo que permite al usuario ejecutar ciertos comandos y programas como root. La configuración de esta utilidad se encuentra en el archivo de configuración /etc/sudoers o /usr/local/etc/sudoers. Abrirlo para editar
Vi /etc/sudoers
Busque la línea que está escrita de forma predeterminada y permite que el superusuario raíz ejecute cualquier comando.
Para dar a todos los usuarios el privilegio de ejecutar comandos como root, agregue la siguiente línea:
TODO TODO=/bin/su o TODO TODO=/usr/bin/su
Para otorgar a un usuario específico el privilegio de ejecutar solo ciertos comandos como raíz, agregue la línea:
%users ALL=/sbin/mount: el grupo de usuarios solo podrá usar sudo con el comando de montaje. usuario ALL=/sbin/mount: el usuario usuario solo podrá usar sudo con el comando de montaje.
Configuración de nivel de red
Verifique qué puertos están abiertos en el servidor y qué servicios los están usando ejecutando el comando
Netstat-tuplnw | awk "(imprimir $4,$NF)" | ordenar | único
Por ejemplo, la entrada 127.0.0.1:53 748/named significa que el servicio named está usando el puerto 53. Verifique que solo los necesarios estén entre los servicios en ejecución, deshabilite todos los demás.
FTP
Establezca el rango de puertos que se usará para el modo FTP pasivo. Para hacer esto, abra el archivo de configuración de su servidor FTP para editar y agregue las líneas:
para vsftpd.conf:
pasv_min_port=1028 pasv_max_port=1048
para proftpd.conf:
Puertos Pasivos 1028 1048
No use el protocolo FTP a menos que sea absolutamente necesario, use SFTP en su lugar. Si aún se requiere FTP, agregue las siguientes líneas al archivo de configuración:
para vsftpd.conf:
Xferlog_enable=SÍ (registro ftp) anonymous_enable=NO (denegar conexiones de usuarios anónimos) anon_upload_enable=NO anon_mkdir_write_enable=NO
para proftpd.conf:
en la sección
iptables
Compruebe si el cortafuegos está configurado correctamente. Para iptables ejecute el comando
Iptables-NL
Este comando imprime todas las reglas de firewall de iptables en la línea de comando. Además, estas reglas se pueden ver y editar en el archivo de configuración del cortafuegos /etc/sysconfig/iptables - para CentOS OS, /etc/network/if-up.d/ispmgrfw - para Debian/Ubuntu OS.
En las reglas del cortafuegos, cierre todos los puertos excepto los utilizados por los servicios que se ejecutan en el servidor. Para hacer esto, cambie las líneas
:ACEPTAR ENTRADA :ACEPTAR ADELANTE :ACEPTAR SALIDA a :CAÍDA DE ENTRADA :CAÍDA ADELANTE :CAÍDA DE SALIDA
Para abrir los puertos necesarios, agregue líneas como
A ENTRADA -p tcp -m tcp --dport 53 -j ACEPTAR -A ENTRADA -p udp -m udp --dport 53 -j ACEPTAR -A ENTRADA -p tcp -m multipuerto --deportes 53,80,25,443,953 -j ACEPTAR
donde 53 es el número de puerto a abrir.
Antes de realizar cambios en el archivo de configuración del cortafuegos, haga una copia del archivo de trabajo.
Las reglas del cortafuegos se pueden configurar desde el panel de control de ISPmanager.
SSH
Abra el archivo de configuración de SSH:
Vi /etc/ssh/sshd_config
Compruebe que las siguientes líneas no están comentadas:
Protocolo 2 (para usar la segunda versión del protocolo) IgnoreRhosts sí (no use el archivo .rhost) HostbasedAuthentication no (no autentique el host) PermitRootLogin no (deniegue el acceso a la raíz) PermitEmptyPasswords no (no use contraseñas en blanco) PermitUserEnvironment no (prohibir al usuario establecer variables de entorno) PasswordAuthentication sí (permitir la autenticación de contraseña)
Habilite SFTP agregando la siguiente línea a sshd_config:
Subsistema sftp /usr/lib/openssh/sftp-server
Verifique la cola de correo en busca de desbordamiento y asegúrese de que no haya mensajes de spam entre los mensajes.
Ejecute el comando mailq y vea la lista de mensajes. Si la lista es muy grande, verifique selectivamente los mensajes que puedan ser spam. Por identificador (por ejemplo, BD65F10DEE4) determine el remitente de la carta. Dominio
Exim -Mvh id_mensaje
muestra el encabezado del correo electrónico y el comando
Exim -Mvb id_mensaje
mostrará el cuerpo del mensaje.
Entre los encabezados de los mensajes, el campo De: contiene el remitente y X-PHP-Originating-Script contiene el script al que se envió el mensaje.
Software
Compruebe el software del servidor en busca de vulnerabilidades.
Sistema operativo CentOS
Ejecute un comando que enumere los archivos de software instalados recientemente modificados:
Rpm -qVa - para mostrar todos los archivos, rpm -qVa | awk "$2!="c" (imprimir $0)" - para imprimir archivos excepto registros.
Analice qué archivos se han modificado y cómo, utilizando los siguientes valores de parámetros:
S: tamaño de archivo modificado M: permisos predeterminados modificados 5: suma de comprobación MD5 modificada D: números mayores/menores del dispositivo modificados L: enlace simbólico modificado U: propietario del archivo modificado G: grupo modificado T: fecha de modificación del archivo (mtime) modificada) c - archivo de configuración d - archivo de documentación g - archivo no incluido en el paquete l - archivo de licencia r - archivo README
Por ejemplo, la línea S.5....T. c /etc/httpd/conf/httpd.conf significa que httpd.conf es un archivo de configuración, su tamaño, suma de verificación y última fecha de modificación han cambiado. Como se trata de un archivo de configuración, estos cambios no son sospechosos.
Preste atención a los archivos que tienen sus valores de suma de verificación cambiados sin razón aparente. Para dichos archivos, ejecute el comando:
Stat /usr/sbin/sshd && file /usr/sbin/sshd donde usr/sbin/sshd es la ruta al archivo.
Como resultado del comando, se muestra en la pantalla información detallada sobre el cambio en este archivo.
Ejecute el comando:
Yum --actualización de seguridad
para instalar la actualización de seguridad.
Sistema operativo Debian
Ejecute comandos que verifiquen las sumas de verificación MD5 para los programas instalados:
# apt-get install debsums # debsums -c
Ejecute los siguientes comandos para verificar la actualización de seguridad:
# echo 'deb http://security.debian.org wheezy/updates main contrib non-free' >> /etc/apt/sources.list # grep security /etc/apt/sources.list > /etc/apt/secsrc .list # apt-get -s -o Dir::Etc::sourcelist="secsrc.list" -o Dir::Etc::sourceparts="-" actualizar
Para instalar la actualización de seguridad, ejecute el comando:
# apt-get -o Dir::Etc::sourcelist="secsrc.list" -o Dir::Etc::sourceparts="-" actualizar
Verifique que todos los repositorios tengan reconciliación gpg ejecutando los comandos:
# grep -ri gpgcheck /etc/yum.conf # grep -ri gpgcheck /etc/yum.repos.d/ Asegúrese de que las líneas tengan el siguiente aspecto: gpgcheck=1 # grep -ri AllowNouthenticated /etc/apt/
filas del formulario
APT::Get::AllowNoauthenticated "true";
no debería ser.
Servicios no utilizados
Sistema operativo CentOS
chkconfig --lista
Chkconfig --del service_name donde service_name es el nombre del servicio.
Sistema operativo Debian
Ejecute un comando que enumere los servicios no utilizados:
sysv-rc-conf
Para deshabilitar el inicio de un servicio no utilizado, ejecute el comando:
Sysv-rc-conf off service_name donde service_name es el nombre del servicio.
La seguridad del servidor Linux es muy importante para proteger sus datos, propiedad intelectual, así como el tiempo a manos de los crackers. por seguridad Sistema operativo respuestas linux Administrador de sistema. En este artículo, veremos veinte cosas que debe hacer con su sistema operativo Linux para mantenerlo seguro en todo momento. Si esto computadora de casa, entonces, sobre la seguridad, tal vez, no tiene sentido preocuparse tanto, las contraseñas fuertes y el bloqueo del acceso a los puertos desde Internet serán suficientes. Pero en el caso de un servidor público, debe prestar atención para garantizar su protección.
Estas instrucciones funcionarán para cualquier distribución, ya sea que esté usando CentOS, Red Hat o Ubuntu, Debian.
1. Cifrado de comunicaciones
Todos los datos transmitidos a través de la red están abiertos para ser monitoreados. Por tanto, es necesario cifrar los datos transmitidos, en la medida de lo posible mediante contraseñas, claves o certificados.
Utilice scp, ssh, rsync o sftp para transferir archivos. También puede montar un sistema de archivos remoto en su directorio de inicio utilizando herramientas como shhfs.
GnuPG le permite cifrar y firmar sus datos con una clave privada especial. También hay funciones para la gestión de claves y el acceso a las claves públicas.
Fugu es una herramienta gráfica de transferencia de archivos SFTP. SFTP es muy similar a FTP, pero toda la sesión está encriptada. Esto significa que no se transmiten contraseñas ni comandos en claro. Por lo tanto, dichas transferencias son menos vulnerables a terceros. También puedes usar FileZilla, es multiplataforma cliente ftp con soporte para FTS sobre SSH/TLS y SSH File Transfer Protocol (SFTP).
OpenVPN es un cliente VPN eficiente y liviano con soporte para encriptación SSH.
2. Trate de no usar FTP, Telnet, Rlogin y RSH
En la mayoría de las redes, los nombres de usuario, las contraseñas de los comandos FTP, Telnet y RSH pueden ser interceptados por alguien en la misma red mediante un rastreador de paquetes. La solución general a este problema es usar OpenSSH, SFTP o SFTP, que agrega SSL o TLS al FTP normal. Ejecute el siguiente comando para eliminar NIS, RSH y otros servicios obsoletos:
yum erase inetd xinetd ypserv servidor tftp servidor telnet rsh-serve
3. Reducir la cantidad de software
¿Realmente necesita todos los servicios web instalados? No instale innecesario software para evitar vulnerabilidades en estos programas. Use su administrador de paquetes para ver programas instalados y eliminar todo lo innecesario:
lista yum instalada
paquete de lista $ yum
$ yum eliminar paquete
dpkg --lista
$ dpkg --info paquete
$ apt-get remove paquete
4. Una máquina - un servicio
Ejecutar diferentes servicios en servidores separados, o maquinas virtuales. Esto limita la cantidad de servicios que pueden verse comprometidos. Por ejemplo, si un atacante puede piratear Apache, obtendrá acceso a todo el servidor. Incluyendo servicios como MySQL, servidor Correo electrónico y así. Puede usar software como XEN u OpenVZ para la virtualización.
5. Mantenga actualizado el kernel y el software de Linux
La aplicación de parches de seguridad es una parte muy importante para mantener seguro un servidor Linux. El sistema operativo proporciona todas las herramientas para mantener el sistema actualizado y actualizarlo a nuevas versiones. Todas las actualizaciones de seguridad deben aplicarse lo antes posible. Aquí, también, necesita usar su administrador de paquetes. Por ejemplo:
O para sistemas basados en Debian:
actualización de sudo apt && actualización de sudo apt
Puede configurar Red Hat o Fedora para que le envíen notificaciones por correo electrónico cuando haya nuevas actualizaciones de seguridad disponibles. También puedes personalizar Actualización automática a través de cron, o puede usar el aptcron de Debian para notificarle que actualice su sistema.
6. Usa extensiones de seguridad en Linux
El sistema operativo Linux viene con varios parches de seguridad que se pueden usar para proteger contra errores de configuración o malware. Pero también puede utilizar sistemas de control de acceso adicionales para aplicaciones como SELinux o AppArrmor.
SELinux proporciona varias políticas de seguridad para el kernel de Linux. Aquí es posible controlar el acceso a cualquier recurso del sistema usando roles. Un recurso en particular solo puede ser accedido por un programa cuya función lo permita, e incluso los derechos de superusuario no importan. SELinux aumenta en gran medida la seguridad de un sistema Linux, ya que incluso root se considera un usuario normal aquí. Más detalles se describen en un artículo separado.
7. Cuentas de usuario y contraseñas seguras
Utilice los comandos useradd y usermod para crear y mantener cuentas de usuario. Asegúrese de tener una contraseña buena y segura, debe contener al menos ocho caracteres, preferiblemente en un caso diferente, entre los cuales deben haber caracteres especiales o números. Por ejemplo, 8 caracteres, de los cuales siete son letras y un carácter o número. Use herramientas como John the Ripper para encontrar contraseñas de usuario débiles en el servidor y configure pam_cracklib.so para hacer cumplir la política de contraseñas.
8. Cambia las contraseñas de vez en cuando
El comando de cambio le permite especificar el número de días antes de la fecha de cambio de contraseña forzada. Esta información es utilizada por el sistema para determinar cuándo el usuario debe cambiarla. Estas configuraciones están en /etc/login.defs. Para deshabilitar la caducidad de la contraseña, ingrese el siguiente comando:
cambiar -l nombre de usuario
Para obtener información sobre la fecha de vencimiento de la contraseña, ingrese el comando:
También puede configurar todo manualmente, en el archivo /etc/shadow:
(contraseña de usuario): (última modificación):(max_days): (minimum_days): (Advertencia):(desactivar):(líneas_de_caducidad):
- Días mínimos- el intervalo mínimo entre cambios de contraseña, es decir, con qué frecuencia el usuario puede cambiar la contraseña.
- Días máximos- cuántos días será válida la contraseña, después de este período el usuario se verá obligado a cambiar la contraseña.
- Advertencia- el número de días después de los cuales se advertirá al usuario que necesita cambiar su contraseña.
- cadena_de_caducidad- el número de días desde el 1 de enero de 1970 cuando la cuenta estará completamente inhabilitada.
cambiar -M 60 -m 7 -W 7 nombre de usuario
También es deseable evitar que los usuarios utilicen contraseñas antiguas, de lo contrario, se anularán todos los esfuerzos para obligarlos a cambiar las contraseñas.
9. Bloquear cuentas después de intentos fallidos de inicio de sesión
En un sistema operativo Linux, puede usar el comando faillog para ver los intentos fallidos de inicio de sesión del usuario. También puede usarlo para establecer un límite de intentos fallidos de inicio de sesión. Toda la información sobre los intentos de inicio de sesión fallidos se almacena en el archivo /var/log/faillog. Para verlo, escriba:
Y para establecer un límite de intentos de inicio de sesión para una cuenta específica, use:
registro de errores -r -u usuario
También puede bloquear o desbloquear cuentas manualmente usando el comando passwd. Para bloquear uso:
contraseña -l usuario
Y para desbloquear:
contraseña -u usuario
También es recomendable verificar si hay cuentas con contraseñas vacías en el sistema. Para hacer esto, ejecute:
awk -F: "($2 == "") (imprimir)" /etc/shadow
También verifique si hay algún usuario con grupo o id 0. Solo debe haber uno de esos usuarios, y este es root. Puedes comprobar con este comando:
awk -F: "($3 == "0") (imprimir)" /etc/passwd
Debe haber una sola línea:
raíz:x:0:0:raíz:/raíz:/bin/bash
Si hay otros, elimínelos. Los usuarios, y especialmente sus contraseñas débiles, son una de las cosas más vulnerables que pueden romper la seguridad en Linux.
10. Deshabilitar inicio de sesión de superusuario
Para mantener su sistema Linux seguro, nunca inicie sesión como root. Puede usar sudo para obtener los permisos necesarios y ejecutar el comando deseado como root. Este comando le permite no revelar la contraseña de superusuario a otros administradores y también contiene herramientas para monitorear, restringir y rastrear acciones.
11. Seguridad física del servidor
La seguridad del servidor Linux debe incluir la seguridad física. Debe restringir el acceso físico a la consola del servidor. Configure el BIOS para que no admita el arranque desde medios externos como DVD, CD, USB. También establezca una contraseña en el cargador de arranque BIOS y GRUB para proteger su configuración.
12. Deshabilitar servicios innecesarios
Deshabilite todos los servicios y demonios no utilizados. Además, no olvide eliminar estos servicios del inicio. Puede enumerar todos los servicios activos en los sistemas Red Hat con el comando:
chkconfig --lista | grep "3: activado"
Para deshabilitar el servicio, use:
parada de servicio
$ servicio chkconfig desactivado
Encuentra todo programas abiertos puertos:
Lo mismo se puede hacer con el escáner nmap:
nmap -sT -O servidor local
Utilice iptables para cerrar todos los puertos a los que no debería poder acceder desde la red. o detener servicios innecesarios como se describió anteriormente.
13. Eliminar el servidor X
El servidor X en la computadora del servidor es completamente opcional. No necesita ejecutar un entorno gráfico en un servidor Apache o de correo electrónico dedicado. Elimine este software para mejorar la seguridad y el rendimiento.
14. Configurar Iptables
iptables es un programa de espacio de usuario para configurar el cortafuegos Netfilter integrado en el núcleo. Le permite filtrar todo el tráfico y permitir solo ciertos tipos de tráfico. También use TCPWrappers - sistema ACL para filtrar el acceso a Internet. Puede prevenir muchos tipos de ataques de DOS con iptables. La seguridad de la red en Linux es un aspecto muy importante de la seguridad general del sistema.
15. Configurar el núcleo
El archivo /etc/sysctl.conf almacena la configuración del kernel que se carga y aplica durante el inicio del sistema.
Habilite la protección contra desbordamiento de búfer execshield:
kernel.exec-escudo=1
núcleo.randomize_va_space=1
Habilite la protección contra la suplantación de IP:
net.ipv4.conf.all.rp_filter=1
Deshabilitar el reenvío de direcciones IP:
net.ipv4.conf.all.accept_source_route=0
Ignorar solicitudes de transmisión:
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.icmp_ignore_bogus_error_messages=1
Registrar todos los paquetes falsificados:
net.ipv4.conf.all.log_martians=1
16. Particiona tu disco duro
Separación disco duro en particiones según el propósito de los archivos mejora la seguridad del sistema operativo Linux. Se recomienda hacer secciones separadas para dichos directorios:
- /casa
- /var y /var/tmp
Cree particiones separadas para los directorios raíz de Apache y los servidores FTP. Abra el archivo /etc/fstab y establezca opciones especiales para las particiones deseadas:
- noexec- no ejecute ningún programa o archivo ejecutable en esta partición, solo se permiten scripts
- nodev- no permita dispositivos simbólicos o especiales en esta partición.
- nosuid- no permitir acceso SUID/SGID para programas de esta sección.
17. Usar la limitación de espacio en disco
Limite el espacio en disco disponible para los usuarios. Para hacer esto, cree una cuota de disco en /etc/fstab, vuelva a montar los sistemas de archivos y cree una base de datos de cuotas de disco. Esto mejorará la seguridad en Linux.
18. Deshabilitar IPv6
El protocolo de Internet de próxima generación IPv6 reemplazará al IPv4 ya utilizado en el futuro. Pero por el momento no existen herramientas que permitan comprobar la seguridad de una red basada en IPv6. Muchas distribuciones de Linux permiten IPv6 de forma predeterminada. Los piratas informáticos pueden enviar tráfico no deseado y los administradores no podrán rastrearlo. Entonces, si no necesita este servicio, desactívelo.
19. Deshabilitar los binarios SUID y SGID no utilizados
Todos los archivos ejecutables para los que está activado el indicador SUID o SGID son potencialmente peligrosos. Esta bandera significa que el programa se ejecutará con derechos de superusuario. Y esto significa que si el programa tiene algún tipo de vulnerabilidad o error, entonces el local o usuario remoto puede utilizar este archivo. Encuentre todos esos archivos con el siguiente comando:
encontrar / -perm +4000
Encuentre archivos con el indicador SGID establecido:
encontrar / -perm +2000
O podemos combinarlo todo en un solo comando:
encontrar / \(-perm -4000 -o -perm -2000 \) -imprimir
$ encontrar / -ruta -prune -o -type f -perm +6000 -ls
Deberá estudiar cada archivo encontrado en detalle para comprender cuánto se necesita este o aquel archivo.
20. Archivos Públicos
También es deseable encontrar archivos que puedan ser modificados por todos los usuarios del sistema. Para hacer esto, use el siguiente comando:
encontrar /dir -xdev -type d \(-perm -0002 -a ! -perm -1000 \) -print
Ahora debe verificar si los derechos para el grupo y el propietario de cada archivo están configurados correctamente y si esto representa un riesgo de seguridad.
También es conveniente encontrar todos los archivos que no pertenecen a nadie:
encontrar /dir -xdev \(-nouser -o -nogroup \) -print
21. Usa un sistema de autenticación centralizado
Sin un sistema de autenticación centralizado, los datos del usuario se vuelven inconsistentes, lo que puede generar credenciales obsoletas y cuentas olvidadas que deberían haberse eliminado hace mucho tiempo. El servicio centralizado le permitirá mantener el control sobre las cuentas de usuario y los datos de autenticación en diferentes sistemas linux y Unix. Puede sincronizar datos de autenticación entre servidores. Pero no use el servicio NIS, mejor mire hacia Open DAP.
Una de las implementaciones interesantes de dicho sistema es Kerberos. Permite autenticar a los usuarios mediante una clave secreta en redes donde los paquetes pueden ser interceptados y modificados. Kerberos usa una clave simétrica para cifrar datos y requiere un Centro de administración de claves para funcionar. Puede configurar inicio de sesión remoto, copia remota, copia segura de archivos entre sistemas y otras tareas con un alto nivel de seguridad.
22. Registro y auditoría
Configure el registro y la auditoría para recopilar y guardar todos los intentos fallidos de inicio de sesión e intentos de piratería. De forma predeterminada, todos los registros, o al menos la mayoría de ellos, se encuentran en la carpeta /var/log/. Con más detalle, hablamos sobre de qué son responsables ciertos en un artículo separado.
Puede ver registros con utilidades como logwatch o logcheck. Simplifican enormemente la lectura de los registros. No puede ver el archivo completo, sino solo los eventos que le interesan, así como enviarse una notificación a su dirección de correo electrónico.
Supervise el sistema con el servicio auditd. El programa escribe en el disco todos los eventos de auditoría que le interesan. Todas las configuraciones de auditoría se almacenan en el archivo /etc/audit.rules Al iniciar el sistema, el servicio lee todas las reglas de este archivo. Puede abrirlo y configurar todo lo que necesite, o usar una utilidad separada: auditctl. Puede establecer los siguientes puntos:
- Eventos de inicio y apagado del sistema
- Fecha y hora del evento
- Eventos de usuario (por ejemplo, acceso a un archivo específico)
- Tipo de evento (editar, acceder, eliminar, escribir, actualizar, etc.)
- Éxito o fracaso al ejecutar un evento
- Grabación de eventos de cambio de configuración de red
- Registro de cambios de usuarios y grupos
- Supervisar los cambios de archivos
23. Protege tu servidor OpenSSH
Permitir solo el uso del protocolo 2:
Deshabilitar inicio de sesión como superusuario:
24. Instalar IDS
El IDS o Sistema de Detección de Intrusos intenta detectar actividades sospechosas y maliciosas como Ataque de DOS, escaneo de puertos, o incluso intentos de piratear la computadora al monitorear el tráfico de la red.
Es una buena práctica implementar dicho software antes de que el sistema esté disponible en Internet. Puede instalar AIDE, es HIDS (IDS basado en host) que puede controlar todos los aspectos dispositivo interno tu sistema.
Snort es un software de detección de intrusos en la red. Es capaz de analizar y registrar paquetes y analizar el tráfico de red en tiempo real.
25. Protege tus archivos y directorios
Linux tiene excelentes protecciones contra el acceso no autorizado a los archivos. Sin embargo, los permisos establecidos por Linux y sistema de archivos no significan nada cuando un atacante tiene acceso físico a una computadora y simplemente puede conectarse disco duro computadora a otro sistema para copiar sus datos. Pero puede proteger fácilmente sus archivos con cifrado:
- Para cifrar y descifrar un archivo con una contraseña, use GPG
- También puede proteger archivos con OpenSSL
- El cifrado de directorios se realiza con ecryptfs
- TrueCrypt es una herramienta gratuita de cifrado de disco para Windows y Linux
recomendaciones
Ahora la seguridad del sistema operativo Linux en su computadora aumentará considerablemente. No olvide establecer contraseñas complejas de vez en cuando. Escriba su herramienta de seguridad del sistema favorita en los comentarios.
En este artículo, nos familiarizaremos con las principales utilidades para el fortalecimiento de Linux. En ruso, esto se llama algo así como "comprobar el nivel de seguridad de los sistemas Linux y evaluar la corrección de las configuraciones en términos de seguridad de la información". Por supuesto, no solo revisaremos los programas, sino que también daremos ejemplos de su uso.
Su propio auditor, o seguridad por su cuenta
Los administradores, y más aún, los auditores de SI a menudo se enfrentan a la tarea de verificar la seguridad un número grande anfitriones en muy poco tiempo. Y por supuesto, existen herramientas especializadas en el segmento Enterprise para solucionar estos problemas, por ejemplo, como los escáneres de seguridad de red. Estoy seguro de que todos ellos, desde las fuentes abiertas del motor OpenVAS hasta productos comerciales como Nessus o Nexpose, son conocidos por nuestros lectores. Sin embargo, este software generalmente se usa para buscar software obsoleto y, por lo tanto, vulnerable y luego ejecutar la administración de parches. Además, no todos los escáneres tienen en cuenta algunas características específicas de los mecanismos de seguridad integrados de Linux y otros productos de código abierto. Y por último, pero no menos importante, el precio de la emisión importa, porque solo las empresas que destinan presupuestos para este negocio pueden permitirse productos comerciales.
Es por eso que hoy hablaremos sobre un conjunto especializado de utilidades distribuidas gratuitamente que pueden diagnosticar el nivel actual de seguridad del sistema, evaluar los riesgos potenciales, por ejemplo, "servicios adicionales" que sobresalen en Internet, o una configuración predeterminada insegura, e incluso sugerir opciones para corregir las deficiencias encontradas. Otra ventaja de usar estas herramientas es la capacidad de replicar scripts de prueba de granja típicos de cualquier número de sistemas Linux y formar una base de prueba documentada en forma de registros e informes separados.
Aspectos prácticos de la auditoría de seguridad
Si mira a través de los ojos del auditor, entonces el enfoque de las pruebas se puede dividir en dos tipos.
El primero- este es el cumplimiento de los llamados requisitos de cumplimiento, aquí se verifica la presencia de elementos de seguridad obligatorios prescritos en cualquier estándar internacional o "mejor práctica". Un ejemplo clásico son los requisitos de PCI DSS para sistemas de TI de pago, SOX404, serie NIST-800, .
Segundo- este es un enfoque puramente racional basado en la pregunta "¿Qué más se puede hacer para mejorar la seguridad?". No hay requisitos obligatorios, solo su conocimiento, cabeza brillante y manos hábiles. Por ejemplo, esto es actualizar la versión del kernel y/o los paquetes de la aplicación, habilitar, forzar, configurar un firewall.
Todo lo relacionado con el segundo enfoque suele denominarse término especial. endurecimiento, que también se puede definir como "acciones destinadas a fortalecer el nivel de seguridad inicial del sistema operativo (o programa) principalmente por medios regulares".
El cumplimiento de los requisitos de cumplimiento generalmente se verifica en preparación para pasar una auditoría obligatoria como PCI DSS u otra auditoría de certificación. Prestaremos más atención al componente de endurecimiento. Todos los principales desarrolladores ofrecen para sus productos Pautas de endurecimiento- guías que contienen consejos y recomendaciones sobre cómo mejorar la seguridad, teniendo en cuenta los mecanismos de seguridad habituales y las especificidades del software. Entonces, Red Hat, Debian, Oracle, Cisco tienen manuales similares.
INFORMACIÓN
El endurecimiento es un término del mundo de la seguridad de la información, que se refiere al proceso de garantizar la seguridad de un sistema (programa) mediante la reducción de su vulnerabilidad y, por regla general, utilizando solo utilidades estándar o mecanismos de protección.
sudo apt-get update sudo apt-get install lynis
Y para distribuciones orientadas a RPM (después de agregar los repositorios apropiados):
Yum instalar linus -y
Instalación en macOS:
$ cerveza buscar lynis $ cerveza instalar lynis
Para iniciar Lynis, es suficiente especificar al menos una clave. Por ejemplo, para ejecutar todas las pruebas disponibles, debe especificar el modificador -c (marcar todo, marcar todo):
# Suite de prueba típica del sistema de auditoría de sudo lynis # Suite de prueba completa del sistema de auditoría de sudo lynis -c # Escanear un sistema de auditoría de host remoto remoto
Antes de una auditoría, siempre es una buena idea comprobar si una nueva version lynnis:
Información de actualización de Lynis && Verificación de actualización de Lynis
La utilidad Lynis, además de la estándar, tiene un modo más: carrera sin privilegios:
Auditoría Lynis --pentest
Si desea poner el nombre del auditor que inició la prueba, simplemente agregue el parámetro -auditor
Sudo lynis sistema de auditoría -c -auditor Papá
En cualquier etapa de la auditoría, el proceso de verificación puede continuar (Enter) o terminarse por la fuerza (Ctrl+C). Los resultados de las pruebas realizadas se escribirán en el registro de Lynis en /var/log/lynis.log. Tenga en cuenta que el registro se sobrescribirá cada vez que se inicie la utilidad.
Para probar de forma sistemática en modo automático, puede asignar el trabajo apropiado al programador de Cron usando el interruptor -cronjob. En este caso, la utilidad se ejecutará de acuerdo con la plantilla especificada (config) y no mostrará ningún mensaje interactivo, pregunta o advertencia. Todos los resultados se guardarán en el registro. Por ejemplo, aquí hay un script de inicio de utilidad con una configuración predeterminada una vez al mes:
#!/bin/sh AUDITOR="automatizado" FECHA=$(fecha +%Y%m%d) HOST=$(nombre de host) LOG_DIR="/var/log/lynis" REPORT="$LOG_DIR/informe-$( HOST).$(FECHA)" DATA="$LOG_DIR/informe-datos-$(HOST).$(FECHA).txt" cd /usr/local/lynis ./lynis -c –auditor "$(AUDITOR)" --cronjob > $(INFORME) mv /var/log/lynis-report.dat $(DATOS) # Fin
Guarde este script en el directorio /etc/cron.monthly/lynis. Y no olvide agregar rutas para guardar registros (/usr/local/lynis y /var/log/lynis), de lo contrario, es posible que no funcione correctamente.
Puede ver una lista de todos los comandos disponibles para llamar:
Lynis muestra comandos
Particularmente curioso puede mirar la configuración desde la configuración predeterminada:
Lynis muestra la configuración
Breve instrucción sobre cómo trabajar con la utilidad:
hombre lynis
Las opciones para posibles estados basados en los resultados de la verificación se limitan a la siguiente lista: NINGUNO, DÉBIL, HECHO, ENCONTRADO, NO_ENCONTRADO, OK, ADVERTENCIA.
![](https://i2.wp.com/xakep.ru/wp-content/uploads/2018/10/189524/17.jpg)
Ejecución de pruebas individuales en Lynis
En la práctica, puede ser necesario realizar solo algunas pruebas. Por ejemplo, si su servidor realiza solo las funciones de Mail Server o Apache. Podemos usar la opción -tests para esto. La sintaxis del comando es la siguiente:
Lynis -pruebas "Identificadores de prueba"
Si le resulta difícil de entender debido a la gran cantidad de ID de prueba, puede usar el parámetro de grupo -test-category . Con esta opción, Lynis solo ejecuta ID de prueba que pertenecen a una categoría específica. Por ejemplo, planeamos ejecutar pruebas de firewall y kernel:
./lynis -tests-category "núcleo de cortafuegos"
Además, la funcionalidad de Lynis se amplía con varios complementos que puede agregar por su cuenta, o puede colocar otros nuevos en un directorio existente.
Sugerencias de corrección
Todas las advertencias se enumerarán después de los resultados. Cada uno comienza con el texto de advertencia, luego la prueba que lo generó se indica entre paréntesis junto a él. La siguiente línea sugiere una solución al problema, si existe. De hecho, la última línea es una URL donde puede ver los detalles y encontrar recomendaciones adicionales sobre cómo solucionar el problema.
Perfiles
Los perfiles que gestionan la auditoría se definen en ficheros con extensión .prf ubicado en el directorio /etc/lynis. El perfil predeterminado tiene el nombre predecible: default.prf . Los desarrolladores no recomiendan editarlo directamente: cualquier cambio que desee realizar en la auditoría se agrega mejor al archivo custom.prf ubicado en el mismo directorio.
Continúa disponible solo para miembros
Opción 1. Únase a la comunidad del "sitio" para leer todos los materiales en el sitio
¡La membresía en la comunidad durante el período especificado le dará acceso a TODOS los materiales de Hacker, aumentará su descuento acumulativo personal y le permitirá acumular una calificación profesional de Xakep Score!