El comando sysctl es usado para visualizar, configurar y automatizar configuraciones del kernel en el directorio /proc/sys/. Un ataque posible es el SYN FlOODS (Ver el Punto 3.0 donde se explica este tipo de ataque).
Para proteger Sysctl de este tipo de ataques debemos ejecutar:
cd /etc nano /etc/sysctl.conf
Comentar lo que tenga y colocar:
#Kernel sysctl configuration file for Red Hat Linux # # For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and # sysctl.conf(5) for more details. # Disables packet forwarding net.ipv4.ip_forward=0 # Disables IP source routing net.ipv4.conf.all.accept_source_route = 0 net.ipv4.conf.lo.accept_source_route = 0 net.ipv4.conf.eth0.accept_source_route = 0 net.ipv4.conf.default.accept_source_route = 0 # Enable IP spoofing protection, turn on source route verification net.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.lo.rp_filter = 1 net.ipv4.conf.eth0.rp_filter = 1 net.ipv4.conf.default.rp_filter = 1 # Disable ICMP Redirect Acceptance net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.lo.accept_redirects = 0 net.ipv4.conf.eth0.accept_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 # Enable Log Spoofed Packets, Source Routed Packets, Redirect Packets net.ipv4.conf.all.log_martians = 0 net.ipv4.conf.lo.log_martians = 0 net.ipv4.conf.eth0.log_martians = 0 # Disables IP source routing net.ipv4.conf.all.accept_source_route = 0 net.ipv4.conf.lo.accept_source_route = 0 net.ipv4.conf.eth0.accept_source_route = 0 # Enable IP spoofing protection, turn on source route verification net.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.lo.rp_filter = 1 net.ipv4.conf.eth0.rp_filter = 1 net.ipv4.conf.default.rp_filter = 1 # Disable ICMP Redirect Acceptance net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.lo.accept_redirects = 0 net.ipv4.conf.eth0.accept_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 # Disables the magic-sysrq key kernel.sysrq = 0 # Decrease the time default value for tcp_fin_timeout connection net.ipv4.tcp_fin_timeout = 15 # Decrease the time default value for tcp_keepalive_time connection net.ipv4.tcp_keepalive_time = 1800 # Turn off the tcp_window_scaling net.ipv4.tcp_window_scaling = 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 ignoring broadcasts request net.ipv4.icmp_echo_ignore_broadcasts = 1 # Enable bad error message Protection net.ipv4.icmp_ignore_bogus_error_responses = 1 # Log Spoofed Packets, Source Routed Packets, Redirect Packets net.ipv4.conf.all.log_martians = 1 # Increases the size of the socket queue (effectively, q0). net.ipv4.tcp_max_syn_backlog = 1024 # Increase the tcp-time-wait buckets pool size net.ipv4.tcp_max_tw_buckets = 1440000 # Allowed local port range net.ipv4.ip_local_port_range = 16384 65536
SIM es un monitor de la integridad del sistema y sus servicios. Está diseñado para ser intuitivo y modular y para proporcionar un sistema limpio e informativo. Para ello, verifica sistemáticamente que los servicios están en línea, que los promedios de carga sean adecuados, y que los archivos de registro de eventos (logs) tienen tamaños razonables. SIM dispone de diversos módulos y características de mayor profundidad que lo convierten en una herramienta muy completa a nuestra disposición para la administración de servidores en la internet.
Las características de SIM son:
Supervisión de los Servicios HTTP, FTP, DNS, SSH, MYSQL y más
Seguimiento de eventos y del sistema de alertas
Capacidad de auto-reinicio para servicios caídos
Verificación contra los sockets de red y la lista de procesos para asegurar que los servicios estén en línea
Monitorización avanzada del servicio HTTP para evitar problemas encontrados comúnmente
Monitor de carga del sistema con advertencias y acciones personalizables
Capacidad de auto-reiniciar el sistema con un nivel de carga crítica definible
Cambio de prioridad configurable para los servicios, para niveles de carga de advertencia o crítica
Pantalla informativa del estado en la línea de comandos
Archivo de configuración fácilmente personalizable
Programa de auto configuración
Configuración del cronjob automática
Programa de instalación simple e informativo
Función de actualización automática integrada
Instalación
Para instalar SIM se deben seguir los siguientes pasos:
cd /usr/local/src wget http://www.rfxn.com/downloads/sim-current.tar.gz tar -zxvf sim-current.tar.gz cd sim-3.0/ ./setup -i
Esto muestra la licencia, el readme y la configuración automática, dar ENTER todo el tiempo.
Ahora debemos editar la configuración con:
nano /usr/local/sim/config/conf.sim
Debemos buscar los siguientes parámetros y colocar el valor indicado:
EMAIL="hostmaster@sudominio.com" SUBJ="Advertencia de Estado del Servidor $HOSTNAME"
Para activar los servicios que queremos monitorear debemos editar el archivo de configuración de módulos:
nano /usr/local/sim/config/mods.control
Observaremos la lista de módulos al final del mismo notando que todos están apagados (en off) por lo que no se verificará su funcionamiento. Para activar la verificación de los servicios deseados debemos colocarlos en on, por lo que se deben buscar los siguientes módulos y colocarlos en on como se muestra a continuación:
init.httpd on init.mysqld on init.named on init.sshd on
La lista de módulos indicada arriba es solo un ejemplo, como podrá observar en el archivo de configuración es posible monitorear muchos otros servicios incluyendo el propio cpanel o el webmin, lo importante es activar (colocar en on) solo aquellos servicios que realmente son fundamentales para el funcionamiento del servidor y están en ejecución en el mismo (ej. no activar la verificación del webmin en los servidores de producción ni del cpanel en los de desarrollo ya que dichos servicios no existen en esos servidores).
La tarea cron se crea automáticamente por lo que no es necesario crearla manualmente, sin embargo, si se desea eliminar y crearla posteriormente de nuevo el comando es:
cd /usr/local/src/sim-3.0/ ./setup -c
Si ya se estaba ejecutando el cron y lo eliminamos, entonces debemos ejecutar 2 veces el comando para re-establecerlo.
LSM es un monitor de sockets de red; está diseñado para realizar un seguimiento de los cambios en los sockets de la red y sockets de dominio de UNIX, esto es básicamente un monitor de puertos. Para ello, realiza una comparación simple basada en las diferencias de sockets actuales y nuevos (puertos del servidor). Un sistema de alerta simple y configurable envía alertas cada vez que se activan nuevos puertos. LSM omitirá los servicios que ya mantienen sockets abiertos y sólo informará de eventos cuando se haya creado un socket ‘nuevo’ (puerto).
Instalación:
Para instalar el LSM se debe ejecutar:
cd /usr/local/src wget http://www.rfxn.com/downloads/lsm-current.tar.gz tar -zxvf lsm-current.tar.gz cd lsm-0.6/ ./install.sh
Es fundamental que el administrador de un servidor conozca con precisión cuando alguien ingrese en el sistema utilizando el usuario root de tal forma que pueda ejecutar las acciones de defensa lo antes posible, para lograr esto debemos ejecutar:
cd /root nano -w /root/.bashrc
Ir al final del archivo y agregar:
echo 'ALERTA - Acceso Root por SSH en el Servidor N – Fecha/Desde:' `date` `who` | mail -s "Alerta: Acceso Root por SSH en el Servidor N `who | cut -d"(" -f2 | cut -d")" -f1`" hostmaster@sudominio.com
NOTA: Asegurarse que todo el comando anterior quede en una sola línea.
Con la finalidad de mostrar una advertencia legal en inglés y en español a los intrusos que accedan por SSH debemos ejecutar:
nano /etc/motd
Introducir en el archivo:
This server system is for SUEMPRESA authorized users only. All activity is logged and regulary checked by systems personal. Individuals using this system without authority or in excess of their authority are subject to having all their services revoked. Any illegal services run by user or attempts to take down this server or its services will be reported to local law enforcement, and said user will be punished to the full extent of the law. Anyone using this system consents to these terms.
Este sistema servidor es solo para usuarios autorizados de SUEMPRESA. Toda la actividad realizada es registrada en un bitacora que es verificada en forma periodica por nuestro personal de sistemas. Si usted utiliza este sistema sin la autorizacion necesaria o en exceso de la autoridad que se le ha otorgado, le podriamos suspender el servicio. Cualquier servicio ilegal ejecutado por un usuario o intento de sacar de funcionamiento este servidor o sus servicios sera reportado a las autoridades judiciales, y a dicho usuario le sera aplicado todo el peso de la ley. Al usar este sistema usted esta de acuerdo con estos terminos de uso.
Rkhunter (o Rootkit Hunter) es una herramienta de Linux que detecta los rootkits, los backdoors y los exploit locales mediante la comparación de los hashes MD5 de archivos importantes con su firma correcta en una base de datos en línea, buscando los directorios por defecto (de rootkits), los permisos incorrectos, los archivos ocultos, las cadenas sospechosas en los módulos del kernel, y las pruebas especiales para Linux.
Instalación:
Para instalar RKHunter se debe ejecutar:
cd /usr/local/src wget 'http://downloads.sourceforge.net/project/rkhunter/rkhunter/1.4.2/rkhunter-1.4.2.tar.gz' tar xvzf rkhunter-1.4.2.tar.gz cd rkhunter-1.4.2 ./installer.sh --layout default --install
Para probarlo se debe ejecutar:
/usr/local/bin/rkhunter -c
Para crear un Email diario con los resultados del RKHunter, se debe ejecutar:
nano -w /etc/cron.daily/rkhunter.sh
Y colocar en el archivo:
#!/bin/bash (/usr/local/bin/rkhunter -c --nocolors --cronjob --createlogfile --skip-keypress --quiet --summary --rwo 2>&1 | mail -s "Informe Diario de Rkhunter en el Servidor N" hostmaster@sudominio.com)
Salir y Guardar.
Luego debemos colocar los permisivos de ejecución:
chmod 755 /etc/cron.daily/rkhunter.sh
Ahora debemos actualizar la base de datos del RKHunter con:
rkhunter --update
Y crear el archivo inicial con:
rkhunter --propupd
Adicionalmente se puede editar el archivo de configuración:
nano /etc/rkhunter.conf
Buscar las siguientes variables y configurar el email:
MAIL-ON-WARNING=hostmaster@sudominio.com MAIL_CMD=mail -s "[rkhunter] Advertencias encontradas en el Servidor N"
Adicionalmente, es posible configurar para que no de falsas alarmas en CentOS por scripts, por ejemplo:
Luego de finalizado, para ver un reporte detallado de las advertencias (warnings) debemos ejecutar:
nano /var/log/rkhunter.log
ó
cat /var/log/rkhunter.log | more
Finalmente, para que se actualice solo diariamente el RKHunter, debemos entrar por webmin (Desarrollo) y crear una tarea planificada (cron) con los siguientes datos:
Un rootkit es una herramienta, o un grupo de ellas que tiene como finalidad esconderse a sí misma y esconder otros programas, procesos, archivos, directorios, claves de registro, y puertos que permiten al intruso mantener el acceso a un sistema para remotamente comandar acciones o extraer información sensible.
Chkrootkit (Check Rootkit) es una aplicación por consola que permite localizar rootkits conocidos, realizando múltiples pruebas en las que busca entre los binarios modificados por dicho software. Usa herramientas comunes de Linux como las órdenes strings y grep para buscar las bases de las firmas de los programas del sistema y correlacionar los resultados del archivo /proc con la salida de la orden ps (estado de los procesos (process status) para buscar discrepancias. Básicamente hace múltiples comprobaciones para detectar todo tipo de rootkits y archivos maliciosos.
Existen limitaciones inherentes en la confiabilidad de cualquier programa que procure detectar compromisos (tales como rootkits y virus informáticos). Los nuevos rootkits pueden específicamente intentar detectar y comprometer copias del programa chkrootkit o tomar otras medidas para evadir las detecciones que éste efectúa.
Instalación
Para instalar ChkRootKit debe ejecutarse:
cd /usr/local/src wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz tar xvzf chkrootkit.tar.gz cd chkrootkit* make sense
Nota: Verificar el md5, ingresando en ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.md5
Para ejecutar manualmente el comando es:
./chkrootkit [opciones] [nombre-a-probar]
Las [opciones] son:
-h Muestra la ayuda y sale
-V Muestra la versión y sale
-l Muestra las pruebas disponibles
-d Depuración
-q Modo Silencio
-x Modo Experto
-r dir Utiliza a dir como el directorio raiz
-p dir1:dir2:dirN Ubicación de los comandos externos usados por chkrootkit
-n Salta los directorios montados con NFS
Es de hacer notar que las opciones no funcionan sin los nombres de las pruebas a realizar [nombre-a-probar].
Los [nombre-a-probar] son:
aliens asp bindshell lkm rexedcs sniffer w55808 wted scalper slapper
z2 chkutmp amd basename biff chfn chsh cron crontab date du dirname
slogin sendmail sshd syslogd tar tcpd tcpdump top telnetd timed
traceroute vdir w write
Por ejemplo, el siguiente comando verifica si los ejecutables de ps y ls tienen troyanos y también verifica si la interfaz de red está en modo promiscuo:
./chkrootkit ps ls sniffer
La opción ‘-q’ puede usarse para colocar al chkrootkit en Modo Silencio. En este modo la salida resultante solo mostrará los mensajes con el estado infectado (`infected’) para las pruebas escogidas en [nombre-a-probar].
Con la opción `-x’ el usuario puede examinar cadenas sospechosas en los programas ejecutables que podrían indicar la existencia de un troyano. Todo el análisis se deja en manos del administrador del sistema. Puede verse mucha información ejecutando:
./chkrootkit -x | more
ó
./chkrootkit -x | egrep '^/'
chkrootkit utiliza los siguientes comandos para ejecutar sus pruebas:
Es posible usar la opción `-p’ para indicar la ubicación alternativa al chkrootkit de tal forma que no haga uso de los ejecutables del sistema posiblemente comprometido para realizar sus pruebas. Por ejemplo para utilizar los ejecutables ubicados en CD ROM (/cdrom/bin) puede ejecutarse:
./chkrootkit -p /cdrom/bin
Para lograr que nos envíe un email diario de ejecución debemos seguir los pasos a continuación:
nano /etc/cron.daily/chkrootkit.sh
Colocar dentro del archivo lo siguiente:
#!/bin/bash cd /usr/local/src/chkrootkit-0.50/ ./chkrootkit | grep INFECTED | mail -s "Ejecucion diaria de chkrootkit en el Servidor N" hostmaster@sudominio.com
Salir y Guardar.
Nota: En el texto del mensaje cambiar N por el número o nombre del servidor correspondiente.
Luego se debe colocar el permisivo adecuado al archivo creado con:
chmod 755 /etc/cron.daily/chkrootkit.sh
Para ejecutar una prueba ingresar en:
cd /etc/cron.daily/
y luego ejecutar
./chkrootkit.sh
Falso Positivo:
En los emails recibidos de chkrootkit se anuncia:
Checking `bindshell'... INFECTED (PORTS: 465)
Esto es un falso positivo para los servidores basados en Fedora y CentOS
Una de las formas como los intrusos tratan de violar el correcto funcionamiento de un servidor y abusar del mismo es instalando y ejecutando programas en perl y/o cgis en los directorios temporales que tienen permisología 777. Para evitar esto debemos bloquear dicho tipo de ejecuciones ejecutando:
nano -w /etc/fstab
Buscar las líneas donde aparece /tmp, /var/tmp, y:
Donde diga defaults, eliminar defaults y agregar loop,noexec,nosuid,rw
(Esto no existe normalmente en los servidores CentOS)
A su vez, buscar la línea donde aparece /dev/shm, y:
Donde diga defaults, eliminar defaults y agregar noexec,nosuid
Una de las tareas que debe hacer a diario un Administrador de Servidores Linux es realizar un análisis de los archivos de registro de eventos (logs) de las aplicaciones principales.
Logwatch es un servicio de monitorización y detección de intrusiones basado en el análisis de los archivos de registro de eventos (logs) del sistema que suelen estar localizados en /var/log/. Con una frecuencia determinada (se suele ejecutar cada noche) analiza los logs del sistema y realiza un reporte que es enviado de inmediato al administrador vía correo electrónico.
Los registros que se llevan a cabo en un sistema Linux son manejados por el demonio syslogd-ng y su archivo de configuración suele estar localizado en /etc/syslog-ng/syslog-ng.conf.
LogWatch es bastante útil para saber que ha estado haciendo el servidor cada día sin tener que leerse decenas de logs ya que proporciona un resumen de cada servicio del sistema, tales como los paquetes instalados, emails enviados por el servidor, errores de autentificación, estadísticas de apache, espacio en disco, información sobre posibles ataques, etc.
Instalación
Para realizar la instalación de LogWatch se debe ejecutar:
cd /usr/local/src wget ftp://rpmfind.net/linux/sourceforge/l/lo/logwatch/logwatch-7.4.1/logwatch-7.4.1-1.noarch.rpm rpm -Uvh logwatch-7.4.1-1.noarch.rpm
Asegurar definir el correo electrónico, el nivel de detalle del reporte y que la salida del programa no vaya a una impresora, para ello colocar los siguientes valores a las variables indicadas:
Mailto = hostmaster@sudominio.com (no debe ser root sino una cuenta externa por seguridad) Detail = Low Print = No
Luego Guardar el archivo.
Para ejecutarlo se ejecuta directamente:
logwatch
Para eliminar problemas de emails muy largos debemos editar su configuración:
nano /etc/logwatch/conf/ignore.conf
Y agregar las líneas:
GETDISKUSED CP-Wrapper
Guardar y listo.
Análisis de Registros Típicos del Logwatch
A continuación colocamos algunos ejemplos de la información recibida en los emails del Logwatch y el análisis de los mismos:
——————— BFD Begin ————————
Mensaje:
Banned: 218.38.30.208 : (bfd.courier)
Análisis:
El BFD detectó un intento de ataque de fuerza bruta en el servicio indicado entre paréntesis y agregó al APF la IP indicada para bloquearla.
———————- BFD End ————————-
——————— clam-update Begin ————————
Mensaje:
Last ClamAV update process started at Sat Mar 20 22:10:40 2010
Last Status:
WARNING: Your ClamAV installation is OUTDATED!
WARNING: Local version: 0.93 Recommended version: 0.95.3
Database updated (734890 signatures) from database.clamav.net (IP: 65.120.238.5)
Análisis:
El Clamav es el antivirus que se maneja en los servidores. Estos mensajes corresponden a la actualización diaria de sus bases de datos. Mayor información está en: http://www.clamav.net/support/faq
———————- clam-update End ————————-
——————— Cron Begin ————————
Mensaje:
Files with bad mode:
/etc/cron.d/bfd
/etc/cron.d/lsm
Análisis:
El servicio crond reporta que dos crones colocados en la carpeta correspondiente tienen permisología incorrecta. En el caso del ejemplo los archivos bfd y lsm tenían permisos 755 y deben ser 644 ya que no son ejecutables sino que guardan la información de los crones a ejecutar.
———————- Cron End ————————-
——————— IMAP Begin ————————
Mensaje:
[IMAPd] Logout stats:
====================
User | Logouts | Downloaded | Mbox Size
—————————————- | ———– | —————– | —————
Nombre1@dominio1.net | 95 | 0 | 0
Nombre2@dominio2.com.ve | 101 | 18214 |
—————————————————————————
8937 | 404711617 | 0
Análisis:
Resumen de todos los usuarios de correo electrónico que se conectaron al servidor incluyendo la cantidad de conexiones en el día y la cantidad de bytes descargados por emails. El análisis de estos números permite diagnosticar abusos y desviaciones en las tendencias normales de la emisión de emails.
Mensaje:
**Unmatched Entries** /usr/lib/courier-imap/etc/shared/index: No such file or directory: 36 Time(s)
Análisis:
El archivo en referencia es usado cada vez que un usuario se conecta al Horde. Es un bug típico de cPanel que se soluciona ejecutando el comando touch para crear dicho archivo vacío.
Mensaje:
44 active connections.: 2 Time(s)
47 active connections.: 208 Time(s)
48 active connections.: 700 Time(s)
49 active connections.: 305 Time(s)
50 maximum active connections.: 166 Time(s)
Análisis:
Indica la cantidad de conexiones al servicio de email simultáneas activas. Normalmente el límite en el exim del cPanel es de 50 conexiones activas, sin embargo se puede cambiar de ser necesario ingresando en: WHM > Service Configuration > Mailserver Configuration
Indica que la dirección de email señalada ha fallado en el login la cantidad de veces mostrada al final desde dicha IP. Esto permite analizar cuando una cuenta de email esta tratando de ser violada y normalmente deberíamos bloquearla. En pe articular la IP mostrada en el ejemplo pertenece a la empresa Research In Motion (RIM) a la cual pertenece la red blackberry lo que nos indica que el problema de la clave lo tiene un usuario específico en un teléfono celular y deberíamos informarle al administrador de dicho dominio para que lo resuelva.
———————- IMAP End ————————-
——————— Kernel Begin ————————
Mensaje:
WARNING: Kernel Errors Present
ata2.00: failed to IDENTIFY (I/O error, err_mask=0x40) …: 1 Time(s)
ata2.01: failed to IDENTIFY (I/O error, err_mask=0x4) …: 3 Time(s)
Análisis:
Reporte de advertencia del Kernel respect al driver de manejo de discos. Aparentemente puede estar relacionado con bugs de drivers de dicso o del kernel para Fedora.
———————- Kernel End ————————-
——————— Named Begin ————————
Mensaje:
Zone update refused:
190.202.101.242 (dominio.com.ve/IN): 3 Time(s)
Análisis:
Desde la IP indicada se solicitó la actualización de la Zona DNS para el dominio y fue rechazada.
Los dominios señalados no estan respondiendo desde el servidor. Esto es típico cuando los DNS asignados a los dominios apuntan hacia nuestro servidor pero dichos dominios no han sido configurados en el servidor. Esto se soluciona parqueando los dominios a nuestro dominio principal del servidor y/o a otros dominios principales con los que se relacionen si existen en el mismo.
———————- Named End ————————-
——————— pam_unix Begin ————————
Mensaje:
su:
Authentication Failures:
miusuario(32078) -> root: 1 Time(s)
Sessions Opened:
root -> root: 6 Time(s)
Análisis:
Indica que “miusuario” se conectó por SSH y al ejecutar “su” para pasarse como “root” colocó mal la contraseña una vez. Adicionalmente hubo seis conexiones exitosas por SSH como root (usando su).
———————- pam_unix End ————————-
——————— POP-3 Begin ————————
Mensaje:
[POP3] Logout stats (in MB):
============================
User | Logouts | Downloaded | Mbox Size
————————————— | ———- | —————– | ———-
nombre@dominio.com.ve | 6 | 7.41 | 0
nombre2@dominio.com.ve | 4 | 21.00 |
Análisis:
Resumen de las veces en que las cuentas de correo se conectaron para recibir emails por POP3 y la cantidad de bytes descargados. El análisis de estos números permite diagnosticar abusos y desviaciones en las tendencias normales de la emisión de emails.
Indica que la dirección de email señalada ha fallado en el login la cantidad de veces mostrada al final desde dicha IP. Esto permite analizar cuando una cuenta de email esta tratando de ser violada y normalmente deberíamos bloquearla. En pe articular la IP mostrada en el ejemplo pertenece a la empresa Research In Motion (RIM) a la cual pertenece la red blackberry lo que nos indica que el problema de la clave lo tiene un usuario específico en un teléfono celular y deberíamos informarle al administrador de dicho dominio para que lo resuelva.
———————- POP-3 End ————————-
——————— Connections (secure-log) Begin ————————
Mensaje:
**Unmatched Entries**
Cp-Wrap: Pushing “32151 NULLIFY grupodiga.com.ve eantonio ” to ‘/usr/local/cpanel/bin/mxadmin’ for UID: 32151 : 3 Time(s)
Análisis:
Aparentemente es causado por errores en las conexiones cuando se ha estado administrando funciones en el panel del reseller.
———————- Connections (secure-log) End ————————-
——————— Smartd Begin ————————
Mensaje:
Warnings:
Warning via mail to root: successful – 2 Time(s)
Sending warning via mail to root … – 2 Time(s)
Análisis:
Se emitió por email al root el mensaje de advertencia de fallas de smartd acerca del comportamiento del disco duro.
Mensaje:
**Unmatched Entries**
Device: /dev/sdc, failed to read SMART Attribute Data
Análisis:
El disco /dev/sdc ha fallado al leer la información de atributos del smartd. Debe verificarse
———————- Smartd End ————————-
——————— SSHD Begin ————————
Mensaje:
Users logging in through sshd:
miusuario:
201.242.236.103 (201-242-236-103.genericrev.cantv.net): 3 times
Análisis:
Indica la dirección IP, red y el usuario que se ha conectado por SSH así como las veces que lo ha hecho.
Mensaje:
**Unmatched Entries**
reverse mapping checking getaddrinfo for 201-242-236-103.genericrev.cantv.net [201.242.236.103] failed – POSSIBLE BREAK-IN ATTEMPT! : 3 time(s)
Análisis:
Indica que se ha hecho un análisis inverso y la IP desde la cual se conectó el usuario por SSH posiblemente sea un intento de intrusión. En el caso del ejemplo es un falso positivo ya que la IP fue usada por nosotros mismos para conectarnos en un momento dado.
———————- SSHD End ————————-
——————— Disk Space Begin ————————
Mensaje:
Filesystem Size Used Avail Use% Mounted on
/dev/sda5 2.9G 305M 2.4G 12% /
/dev/sda8 48G 18G 28G 39% /home
/dev/sda7 996M 139M 806M 15% /tmp
/dev/sda3 9.5G 4.2G 4.8G 47% /var
/dev/sda2 9.5G 4.4G 4.6G 49% /usr
/dev/sda1 99M 12M 83M 13% /boot
/dev/sdb1 74G 28G 43G 40% /backup
Análisis:
Provee un resumen del uso de espacio en disco. Hay que estar pendientes de las particiones donde se guardan los logs (/var y /usr).
OPCIONAL: Se prefiere instalar como prevención de fuerza bruta la funcionalidad LFD para los servidores de producción ya que esta integrado al CSF y este al WHM y permite una mejor interacción y manejo de aspectos de seguridad el cPanel/WHM.
Ataque de fuerza bruta
Se denomina “ataque de fuerza bruta” a la forma de obtener una contraseña probando todas las combinaciones posibles hasta encontrar aquella que permite el acceso. Estos intentos múltiples pueden hacerse tanto a nivel de interfaces web como a través de conexiones SSH, FTP, entre otros.
Analizando el registro de eventos de las aplicaciones (archivos logs) para verificar los errores de autenticación (errores de login y contraseñas de acceso), es posible determinar si existen múltiples intentos de violación de usuarios y/o contraseñas.
BFD es un script de consola modular para el análisis de registros de eventos de aplicaciones y comprobación de errores de autenticación. Esto se consigue mediante un sistema de reglas donde se almacenan opciones específicas de aplicaciones incluyendo expresiones regulares para cada formato único auth. Las expresiones regulares se analizan contra los registros de eventos con la herramienta ‘sed’ (editor de secuencias) que permite un rendimiento excelente en todos los entornos. Además de los beneficios del análisis de registros de eventos en secuencias con “sed”, BFD también utiliza un sistema de seguimiento de los registros de eventos para que sólo se analicen los registros desde el último punto leído previamente. Esto ayuda a ampliar enormemente el rendimiento de BFD ya que no estamos leyendo continuamente los mismos registros. El sistema de seguimiento de registros de eventos es compatible con las rotaciones de registros de eventos al estilo de syslog/logrotate que le permite detectar cuando han ocurrido rotaciones y agarrar colas de registros del nuevo archivo de registros y del archivo de registro rotado.
Es posible utilizar al BFD para bloquear atacantes utilizando cualquier número de herramientas tales como el firewall APF, así como, iptables crudas, enrutamiento de ips o ejecutar cualquier comando personalizado. También permite crear un mensaje de correo electrónico completamente personalizable con las alertas del sistema utilizando una sencilla plantilla de correo electrónico editable por el administrador. El seguimiento de atacantes en BFD se administra mediante archivos de texto plano simples, que están controlados en tamaño para evitar las limitaciones de espacio con el tiempo, haciéndolo ideal para dispositivos sin disco. También hay un histórico de ataques que almacena datos de las tendencias de todos los hosts que se han bloqueado, incluyendo qué reglas de bloqueo fueron aplicadas.
El proceso de ejecución es simplemente una tarea de cron que ejecuta el BFD una vez cada 3 minutos en forma predeterminada. El cronjob puede ejecutarse con más frecuencia para aquellos que deseen hacerlo y no provocará ningún problema de rendimiento (no colocar con menos de una vez por minuto). Aunque la ejecución del cron no permite al BFD actuar en tiempo real, el sistema de seguimiento de registros de eventos asegura que nunca se pierda nada en errores de autenticación.
Instalación
Para realizar la instalación de BFD debemos ejecutar:
cd /usr/local/src wget http://www.rfxn.com/downloads/bfd-current.tar.gz tar -xvzf bfd-current.tar.gz cd bfd-1.5-2
Ejecutar el archive de instalación:
./install.sh
Se presentará un mensaje indicando que ha sido instalado con la siguiente información:
Ahora debemos editar la configuración del BFD con:
nano /usr/local/bfd/conf.bfd
Debemos habilitar las Alertas de Fuerza Bruta y configurar el Email:
Buscar:
ALERT_USR="0" EMAIL_USR="root"
Y cambiar a:
ALERT_USR="1" (EMAIL_ALERTS="1") EMAIL_USR="hostmaster@sudominio.com" (EMAIL_ADDRESS="hostmaster@sudominio.com") EMAIL_SUBJECT="ADVERTENCIA: Intento de Ataque de Fuerza Bruta en el servidor $HOSTNAME"
Guardar los cambios (CTRL X, Y, Enter)
Luego debemos prevenir que nos bloquee a nosotros mismos, para ello:
nano -w /usr/local/bfd/ignore.hosts
Colocar nuestras direcciones IP posibles, por ejemplo: