2011-12-22

Monitorización del servidor web con pingdom

Una de las formas más simples (y útiles) de monitorizar que nuestro sitio web no se ha caido y sigue online es mediante el uso de herramientas externas que regularmente comprueban que nuestra página web es accesible desde internet.

Una de estas herramientas en pingdom.

Una vez nos hallamos registrado en esta aplicación podremos, de manera gratuita, monitorizar una página web de nuestra elección, y pingdom nos enviará un email (también se puede notificar a traves de SMS, twitter, aplicaciones de iPhone y android).
Sólo tenemos que poner la dirección de nuestra página (www.nioos.com en nuestro caso) y el intervalo de comprobación, y pingdom se encargará de enviarnos un email cuando la página esté caida.

Las cosas mas sencillas suelen ser las más útiles, ¿verdad?


2011-12-21

Instalar rootkit hunter en linux Debian

De la misma forma que existen virus para sistemas windows hay rootkits para linux.

Podemos comprobar si nuestro sistema tiene alguno de estos rootkits si instalamos algún tipo de herramienta que los detecte.

Una de estas herramientas es Rootkit Hunter.

Podemos descargarla directamente en nuestro sistema linux con el comando


apt-get install rkhunter

Una vez instalado podemos ejecutarlo haciendo uso de los siguientes comandos, que pueden incluse ejecutarse desde cron:

rkhunter --versioncheck
comprueba si hay una versión más moderna de Rootkit Hunter disponible para ser descargada.

rkhunter --update
actualiza la base de datos de los rootkits detectados desde el repositorio central de internet.

rkhunter --propupd
actualiza la base de datos de control de los comandos instalados en nuestro sistema.

rkhunter --check --sk
escanea el sistema en busca de posibles rootkits.

Útil y sencillo.

2011-12-13

Instalar rootkit hunter en linux CentOS

De la misma forma que existen virus para sistemas windows hay rootkits para linux.

Podemos comprobar si nuestro sistema tiene alguno de estos rootkits si instalamos algún tipo de herramienta que los detecte.

Una de estas herramientas es Rootkit Hunter.

Podemos descargarla directamente en nuestro sistema linux con el comando

wget http://downloads.sourceforge.net/project/rkhunter/rkhunter/1.3.8/rkhunter-1.3.8.tar.gz

Lo descomprimimos con el comando

tar xvzf rkhunter-1.3.8.tar.gz

Una vez descomprimido, se instala ejecutando el script de instalación localizado en el directorio "rkhunter"

./installer.sh --install

Una vez instalado podemos ejecutarlo haciendo uso de los siguientes comandos, que pueden incluse ejecutarse desde cron:

rkhunter --versioncheck
comprueba si hay una versión más moderna de Rootkit Hunter disponible para ser descargada.

rkhunter --update
actualiza la base de datos de los rootkits detectados desde el repositorio central de internet.



rkhunter --propupd
actualiza la base de datos de control de los comandos instalados en nuestro sistema.


rkhunter --check --sk
escanea el sistema en busca de posibles rootkits.

Útil y sencillo.


2011-12-10

Proteger Debian de ataques externos con fail2ban

Cuando tenemos un servidor en internet es muy común sufrir a diario algún tipo de ataque externo automatizado que trata de acceder y controlar nuestra máquina linux.

Podemos evitar parte de estos ataques instalando la utilidad fail2ban, que permite escanear los ficheros logs del sistema, detecta los ataques sufridos y toma automáticamente medidas para evitarlos, por ejemplo, baneando la IP de la máquina atacante durante cierto tiempo.



La instalación se puede hacer con apt-get.


apt-get install fail2ban

Ahora podemos habilitar las reglas de escaneo de logs que queramos modificando el fichero de configuración /etc/fail2ban/jail.conf.
Aqui podremos, por ejemplo, cambiar la dirección del correo electronico de destino de las notificaciones, el contenido del correo, etc.

destemail = correo.de.destino@dominio.com
mta = mail
action = %(action_mwl)s

La configuración por defecto escanea el fichero /var/log/auth.log que, entre otras cosas, usa el demonio sshd para escribir el log de los intentos fallidos de login para que, usando iptables, restringa los accesos desde la IP atacante y, a la vez, nos envíe un correo electronico avisándonos (un ataque de fuerza bruta muy habitual en internet).


La mayoría de las veces se trata de máquinas que han sido infectadas por algún troyano sin que sus dueños sepan que están siendo usadas para atacar a otras máquinas.
Si podeis poneros en contacto con el dueño y avisarle os lo agradecerá enormemente.

Proteger CentOS de ataques externos con fail2ban

Cuando tenemos un servidor en internet es muy común sufrir a diario algún tipo de ataque externo automatizado que trata de acceder y controlar nuestra máquina linux.

Podemos evitar parte de estos ataques instalando la utilidad fail2ban, que permite escanear los ficheros logs del sistema, detecta los ataques sufridos y toma automáticamente medidas para evitarlos, por ejemplo, baneando la IP de la máquina atacante durante cierto tiempo.

Podemos descargar fail2ban directamente en nuestra máquina linux desde su página en github.

wget --no-check-certificate --output-document=fail2ban.0.8.6.tar.gz https://github.com/fail2ban/fail2ban/tarball/0.8.6

También es interesante instalar las librerías de gamin en nuestro sistema, para facilitar la tarea de monitorización de los ficheros logs.
Esto se hace con el comando

yum install gamin

Una vez descargado el fichero fail2ban.0.8.6.tar.gz lo podemos descomprimir usando el comando

tar xvfz fail2ban.0.8.6.tar.gz

La instalación consiste ahora en ejecutar el script de instalación que se encuentra en la carpeta creada por la descompresión.

python setup.py install

Una vez hecho esto podemos comprobar que la instalación ha sido correcta ejecutando el comando

fail2ban-client -h

que mostrará la ayuda del comando.

Si queremos que fail2ban se arranque al iniciar la máquina, podemos copiar el fichero redhat-initd que está dentro del directorio files al directorio de los scripts de arranque de linux CentOS.

cp files/redhat-initd /etc/init.d/fail2ban

Recordar que debemos darle los permisos adecuados

chmod 755 /etc/init.d/fail2ban
y que debemos usar la utilidad chkconfig para crear los enlaces simbólicos usados en el arranque automático.

chkconfig --add fail2ban

Fail2ban también genera su propio fichero log que es conveniente rotar con logrotate.
Para esto podemos crear el fichero /etc/logrotate.d/fail2ban con el siguiente contenido.

/var/log/fail2ban.log {
    weekly
    rotate 7
    missingok
    compress
    postrotate
        /usr/bin/fail2ban-client reload 1>/dev/null || true
    endscript
}

Ahora podemos habilitar las reglas de escaneo de logs que queramos modificando el fichero de configuración /etc/fail2ban/jail.conf.
Por ejemplo, podemos habilitar el escaneo del fichero /var/log/secure que, entre otras cosas, usa el demonio sshd para escribir el log de los intentos fallidos de login para que, usando iptables, restringa los accesos desde la IP atacante y, a la vez, nos envíe un correo electronico avisándonos (un ataque de fuerza bruta muy habitual en internet).

[ssh-iptables]
enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
           mail-whois[name=SSH, dest=correo.de.destino@dominio.com, sender=persona.que.manda.el.correo@dominio.com]
logpath  = /var/log/secure
maxretry = 5

Por último, debemos instalar el comando whois en nuestra máquina para recibir más información sobre la IP atacante.

yum install jwhois

La mayoría de las veces se trata de máquinas que han sido infectadas por algún troyano sin que sus dueños sepan que están siendo usadas para atacar a otras máquinas.
Si podeis poneros en contacto con el dueño y avisarle os lo agradecerá enormemente.

2011-12-08

Enviar email con línea de comandos desde linux Debian usando Gmail

Ya hemos visto anteriormente como podemos usar Gmail como servidor de correo electronico para nuestro dominio, pero también es posible enviar correos electrónicos directamente desde nuestro sistema linux Debian desde línea de comandos usando Gmail como relay de correo si instalamos la utilidad "mailx" (también conocida como "nail").

Podemos usar apt-get para instalarla.

apt-get install heirloom-mailx

La configuración general de "mailx" se realiza en el fichero /etc/nail.rc.
Aquí añadiremos las siguientes líneas para hacer que "mailx" use Gmail como nuestro relay de correo.

set smtp-use-starttls
set ssl-verify=ignore
set smtp-auth=login
set smtp=smtp://smtp.gmail.com:587
set from="tu.direccion.de.correo@tu.dominio"
set smtp-auth-user=tu.direccion.de.correo@tu.dominio
set smtp-auth-password=tu.password
set ssl-verify=ignore

Bastante sencillo, ¿verdad?

Enviar email con línea de comandos desde linux CentOS usando Gmail

Ya hemos visto anteriormente como podemos usar Gmail como servidor de correo electronico para nuestro dominio, pero también es posible enviar correos electrónicos directamente desde nuestro sistema linux CentOS desde línea de comandos usando Gmail como relay de correo si instalamos la utilidad "nail" (también conocida como "mailx").

Podemos encontrar la última versión de "nail" en http://rpm.pbone.net/.

La podemos descargar directamente en nuestro sistema con "wget"

wget ftp://ftp.pbone.net/mirror/centos.karan.org/el5/extras/testing/i386/RPMS/nail-12.3-4.el5.kb.i386.rpm

Una vez descargado el paquete lo podemos instalar usando "rpm".

rpm -ivh nail-12.3-4.el5.kb.i386.rpm

Lo más cómodo ahora es crear algunos links simbólicos para que las aplicaciones que habitualmente usan el comando "mail" de linux empiecen a usar nuestro nuevo comando "nail".

ln -s /usr/bin/nail /usr/bin/mail
ln -s /usr/bin/nail /bin/mail

Por último, la configuración general de "nail" se realiza en el fichero /etc/nail.rc.
Aquí añadiremos las siguientes líneas para hacer que "nail" use Gmail como nuestro relay de correo.

set smtp-use-starttls
set ssl-verify=ignore
set smtp-auth=login
set smtp=smtp://smtp.gmail.com:587
set from="tu.direccion.de.correo@tu.dominio"
set smtp-auth-user=tu.direccion.de.correo@tu.dominio
set smtp-auth-password=tu.password
set ssl-verify=ignore

Bastante sencillo, ¿verdad?


2011-12-04

Borrar los ficheros logs antiguos de tomcat en linux

Con el paso del tiempo el tamaño y cantidad de ficheros logs de tomcat se vuelve muy elevado.
Podemos borrar estos ficheros logs haciendo uso de "cron" y del comando "find".

Esto lo hacemos modificando el fichero shell script (en nuestro el fichero "tomcat.log.cron") del directorio "/etc/cron.daily".


#!/bin/sh
find /opt/tomcat/logs/ -type f -name '*.txt.gz' -mtime +30 -exec rm -f '{}' ';'
find /opt/tomcat/logs/ -type f -name '*.log.gz' -mtime +30 -exec rm -f '{}' ';'
El comando "find" busca ficheros (-type f) en el directorio "/opt/tomcat/logs/" con la terminación txt.gz ó log.gz (-name '*.txt.gz') que hallan sido modificados hace más de 30 días (-mtime +30) aproximadamente, y ejecutar (-exec) sobre ellos el comando de borrado rm.

Esto mismo se puede hacer con cualquier tipo de fichero log, no es necesario que sea de tomcat.

Una forma sencilla de ahorrar una espacio en el disco de nuestro sistema.

Comprimir los ficheros logs antiguos de tomcat en linux

Con el paso del tiempo el tamaño y cantidad de ficheros logs de tomcat se vuelve muy elevado.
Podemos comprimir estos ficheros logs haciendo uso de "cron" y del comando "find".

Esto lo hacemos creando un fichero shell script en el directorio "/etc/cron.daily" para que "cron" los ejecute diariamente (en nuestro caso lo llamaremos "tomcat.log.cron").

#!/bin/sh
find /opt/tomcat/logs/ -type f -name '*.txt' -mtime +2 -exec gzip -9 '{}' ';'
find /opt/tomcat/logs/ -type f -name '*.log' -mtime +2 -exec gzip -9 '{}' ';'

El comando "find" busca ficheros (-type f) en el directorio "/opt/tomcat/logs/" con la terminación txt ó log (-name '*.txt') que hallan sido modificados hace más de 2 días (-mtime +2) aproximadamente, y ejecuta (-exec) sobre ellos el comando de compresión gzip.
Esto mismo se puede hacer con cualquier tipo de fichero log, no es necesario que sea de tomcat.

Una forma sencilla de ahorrar una espacio en el disco de nuestro sistema.