Publicado el

Proteger SYSCTL contra ataques de SYN FLOODS en Linux

proteger-sysctl-contra-ataques-de-syn-floods-en-linux

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
 

Salir y Guardar

Publicado el

Monitor de Integridad del Sistema (SIM) en Linux

monitor-de-integridad-del-sistema-sim-en-linux

Generalidades

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.

Enlaces de Recursos:

http://www.rfxn.com/appdocs/README.sim

http://www.rfxn.com/appdocs/CHANGELOG.sim

Publicado el

Monitor de Sockets Linux (LSM)

monitor-de-sockets-linux-lsm

Generalidades:

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

Indica que todo está instalado:

.: LSM installed
Install path: /usr/local/lsm
Config path: /usr/local/lsm/conf.lsm
Executable path: /usr/local/sbin/lsm

Para configurarlo adecuadamente se debe ejecutar:

nano /usr/local/lsm/conf.lsm

Y cambiar las siguientes variables:

USER="hostmaster@sudominio.com"
SUB="!!Alerta LSM!! en $HOSTNAME"

Ahora debemos crear un cron para la ejecución del LSM. Para ello debemos ejecutar:

cd /etc/cron.d
nano lsm

Agregar:

MAILTO=
SHELL=/bin/sh
*/10 * * * * root /usr/local/sbin/lsm -c >> /dev/null 2>&1

Salir y Guardar

Cambiar Permisos:

chmod 644 lsm

Reiniciar el servicio de Cron

service crond restart (ó /etc/rc.d/init.d/crond restart)

Enlaces a Recursos:

http://www.rfxn.com/appdocs/README.lsm

http://www.rfxn.com/appdocs/CHANGELOG.lsm

Publicado el

Crear una Alerta por Email cuando alguien ingresa por SSH en Linux

crear-una-alerta-por-email-cuando-alguien-ingresa-por-ssh-linux

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.

Salir y Guardar

Publicado el

Creando un mensaje de advertencia al entrar por SSH en Linux

creando-un-mensaje-de-advertencia-al-entrar-por-ssh-en-linux

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.

Luego salir y Guardar.

Publicado el

Proteger el servidor contra RootKits con RKHunter en Linux

proteger-el-servidor-contra-rootkits-con-rkhunter-en-linux

Generalidades:

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:

SCRIPTWHITELIST=/sbin/ifup
SCRIPTWHITELIST=/sbin/ifdown
SCRIPTWHITELIST=/usr/bin/groups
SCRIPTWHITELIST=/usr/bin/whatis
SCRIPTWHITELIST=/usr/bin/ldd
SCRIPTWHITELIST=/usr/bin/GET

ALLOWDEVFILE=/dev/.udev/db/block:*
ALLOWDEVFILE=/dev/.udev/db/sound:*
ALLOWDEVFILE=/dev/.udev/db/net:*
ALLOWDEVFILE=/dev/.udev/db/input:*
ALLOWDEVFILE=/dev/.udev/db/serio:*
ALLOWDEVFILE=/dev/.udev/db/usb:*
ALLOWDEVFILE=/dev/.udev/queue.bin
ALLOWDEVFILE=/dev/.udev/db/drm:*
ALLOWDEVFILE=/dev/.udev/rules.d/99-root.rules

ALLOWHIDDENDIR=/etc/.java
ALLOWHIDDENDIR=/dev/.mdadm
ALLOWHIDDENDIR=/dev/.udev

ALLOWHIDDENFILE=/usr/share/man/man5/.k5identity.5.gz
ALLOWHIDDENFILE=/usr/share/man/man5/.k5login.5.gz
ALLOWHIDDENFILE=/usr/share/man/man1/..1.gz
ALLOWHIDDENFILE=/usr/bin/.ssh.hmac
ALLOWHIDDENFILE=/usr/bin/.fipscheck.hmac
ALLOWHIDDENFILE=/usr/sbin/.sshd.hmac
 

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:

Ejecutar como: root

Comando: /usr/local/bin/rkhunter –update > /dev/null 2>&1

Descripción: Actualización RKHunter

Horas y fechas seleccionadas abajo ..

Minutos: 0

Horas: 23

Días: Todos

Meses: Todos

Días de Semana: Todos

Ejecutar en cualquier fecha

Salvar y LISTO.

En el caso de un Servidor de Producción, lo que debe hacer es ingresar por SSH y crear un cron manualmente con:

crontab -e

Editar el archivo colocando al final

0 23 * * * /usr/local/bin/rkhunter --update > /dev/null 2>&1

Guardar y Listo.

Por otra parte, si se desea desinstalar el RKHunter podemos ejecutar:

cd /usr/local/src/rkhunter-1.4.2
./installer.sh --remove

Enlaces de Recursos:

http://rkhunter.sourceforge.net/

http://rkhunter.cvs.sourceforge.net/viewvc/*checkout*/rkhunter/rkhunter/files/README

Publicado el

Proteger el servidor contra RootKits con ChkRootKit (OPCIONAL) en Linux

proteger-el-servidor-contra-rootkits-con-chkrootkit-en-linux

Generalidades

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
  • echo egrep env find fingerd gpm grep hdparm su ifconfig inetd
  • inetdconf identd init killall ldsopreload login ls lsof mail mingetty
  • netstat named passwd pidof pop2 pop3 ps pstree rpcinfo rlogind rshd
  • 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:

awk, cut, egrep, find, head, id, ls, netstat, ps, strings, sed, uname.

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

Enlaces a Recursos:

http://www.chkrootkit.org/

http://www.chkrootkit.org/README

Publicado el

Bloquear la ejecución de archivos en directorios temporales en Linux

bloquear-la-ejecucion-de-archivos-en-directorios-temporales-linux

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

Salir y Guardar.

Luego debe volver a montarse con:

mount -o remount /dev/shm

LISTO.

Publicado el

Supervisor de Archivos de Registro de Eventos (LogWatch) Linux

supervisor-de-archivos-de-registro-de-eventos-logWatch-linux

Generalidades:

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

Luego debemos editar el archivo de configuración:

nano -w /usr/share/logwatch/default.conf/logwatch.conf

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

DON’T PANIC! Read http://www.clamav.net/support/faq

main.cld is up to date (version: 52, sigs: 704727, f-level: 44, builder: sven)

Downloading daily-10602.cdiff [100%]

daily.cld updated (version: 10603, sigs: 30163, f-level: 44, builder: guitar)

WARNING: Your ClamAV installation is OUTDATED!

WARNING: Current functionality level = 29, recommended = 44

DON’T PANIC! Read http://www.clamav.net/support/faq

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

Mensaje:

Disconnected, ip=[::ffff:200.82.179.75], time=0: 4 Time(s)

Análisis:

Indica que la IP mostrarada se ha desconectado el número de veces señalado.

Mensaje:

LOGIN FAILED, user=nombre@dominio.com.ve, ip=[::ffff:67.223.85.96]: 97 Time(s)

Análisis:

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.

Mensaje:

**Unmatched Entries**

client 110.136.249.61 query (cache) ‘dominio1.com/MX/IN’ denied: 1 Time(s)

client 112.197.58.119 query (cache) ‘dominio2.com/A/IN’ denied: 2 Time(s)

Análisis

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.

Mensaje:

Disconnected, ip=[::ffff:200.82.179.75], time=0: 4 Time(s)

Análisis:

Indica que la IP mostrarada se ha desconectado el número de veces señalado.

Mensaje:

LOGIN FAILED, user=nombre@dominio.com.ve, ip=[::ffff:67.223.85.96]: 37 Time(s)

Análisis:

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

———————- Disk Space End ————————-

Enlaces a Recursos:

http://www.logwatch.org/

ftp://ftp.kaybee.org/pub/linux/logwatch-7.3.6.tar.gz

Publicado el

Prevenir Ataques de Fuerza Bruta con BFD (OPCIONAL) en Linux

prevenir-ataques-de-fuerza-bruta-con-bfd-opcional-en-linux

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:

BFD installed
Install path: /usr/local/bfd
Config path: /usr/local/bfd/conf.bfd
Executable path: /usr/local/sbin/bfd

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:

190.199.193.0/255.255.255.0
201.208.115.0/255.255.255.0
200.44.189.0/255.255.255.0
192.168.1.0/255.255.255.0

Guardar los cambios (CTRL X, Y, Enter)

Para ejecutar el programa se debe usar:

/usr/local/sbin/bfd -s

NOTA: Para personalizar la configuración del BFD para aplicaciones específicas se debe revisar el directorio de reglas en:

/usr/local/bfd

Finalmente, para ejecutar el BFD a través de un cron diario debemos ejecutar:

cd /etc/cron.d
nano bfd

Agregar:

MAILTO=
SHELL=/bin/sh
*/10 * * * * root /usr/local/sbin/bfd -q

Salir y Guardar

Cambiar Permisos:

chmod 644 bfd

Reiniciar el servicio de Cron con:

/etc/rc.d/init.d/crond restart

Enlaces a Recursos:

http://www.rfxn.com/appdocs/README.bfd

http://www.rfxn.com/appdocs/CHANGELOG.bfd