Protegiendo nuestro servidor con fail2ban


fail2ban es una herramienta que nos da una buena mano al momento de proteger nuestros servidores. Trabaja baneando las ips de los atacantes por un determinado periodo de tiempo.

Por ejemplo, supongamos que tenemos un ataque por fuerza bruta a nuestro servicio ssh, esta herramienta, agrega una regla a nuestro firewall iptables, denegando la ip del atacante, en el puerto 22, por un periodo de tiempo configurable.

Instalación:

Necesitaremos tener los repositorios epel en nuestro CentOS / RHEL para poder instalarlo con yum. A partir de ahí es coser y cantar…

# yum install gamin fail2ban

Configuración:

En el /etc/fail2ban, tenemos:

fail2ban.conf: Este es el archivo de configuración general y podemos dejarlo con los valores por defecto.

jail.conf: Este archivo es el que debemos modificar de acuerdo a los servicios que queremos monitorear, o inclusive configurar nuevos servicios. Cada servicio definido entre [ ] tiene una linea filter que indica que cadenas (definidas en el directorio filter.d) buscar en los archivos de log para detectar la intrusión.

Dejo un ejemplo de archivos de configuración para detectar ataques por ssh, http y vpopmail y vsftpd:

jail.conf:

# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 747 $
#

# The DEFAULT allows a global definition of the options. They can be override
# in each jail afterwards.

[DEFAULT]

# "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not
# ban a host which matches an address in this list. Several addresses can be
# defined using space separator.
ignoreip = 127.0.0.1

# "bantime" is the number of seconds that a host is banned.
bantime  = 600

# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime  = 600

# "maxretry" is the number of failures before a host get banned.
maxretry = 5 

# "backend" specifies the backend used to get files modification. Available
# options are "gamin", "polling" and "auto". This option can be overridden in
# each jail too (use "gamin" for a jail and "polling" for another).
#
# gamin:   requires Gamin (a file alteration monitor) to be installed. If Gamin
#          is not installed, Fail2ban will use polling.
# polling: uses a polling algorithm which does not require external libraries.
# auto:    will choose Gamin if available and polling otherwise.
backend = gamin

# This jail corresponds to the standard configuration in Fail2ban 0.6.
# The mail-whois action send a notification e-mail with a whois request
# in the body.

[ssh-iptables]

enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
           sendmail-whois[name=SSH, dest=fail2ban@hvivani.com.ar]
logpath  = /var/log/secure
maxretry = 5

# This jail demonstrates the use of wildcards in "logpath".
# Moreover, it is possible to give other files on a new line.

[apache-tcpwrapper]

enabled  = true
filter	 = apache-nohome
action   = hostsdeny
           sendmail-whois[name=APACHE, dest=fail2ban@hvivani.com.ar]
logpath  = /var/log/httpd*/*error.log
#           /home/www/myhomepage/error.log
maxretry = 3

# Same as above but with banning the IP address.

[vsftpd-iptables]

enabled  = true
filter   = vsftpd
action   = iptables[name=VSFTPD, port=ftp, protocol=tcp]
           sendmail-whois[name=VSFTPD, dest=fail2ban@hvivani.com.ar]
logpath  = /var/log/secure
maxretry = 3
bantime = 1800

[vpopmail]
enabled = true
port    = pop3
filter  = vpopmail
action   = iptables[name=VPOPMAIL, port=pop3, protocol=tcp]
           sendmail-whois[name=VPOPMAIL, dest=fail2ban@hvivani.com.ar]
logpath = /var/log/maillog
maxretry = 3
bantime = 1800

Para el vpopmail, vamos a tener que crear un vpopmail.conf en el ./filter.d porque no viene por default. El mio es asi:

# Fail2Ban configuration file for vpopmail
#
# Author: Lawrence Sheed
#
# $Revision: 1.0 $
#

[Definition]

# Option: failregex
# Notes.: regex to match the password failures messages in the logfile.
# Values: TEXT
#
failregex = vchkpw-pop3: vpopmail user not found .*@:<HOST>$

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =

 

Instalando Repositorios EPEL en CentOS / RHEL


Simplemente un apunte, dado que hay varios links desactualizados en la web.

Para CentOS 5.5 de 32 bits:

# rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm

Para CentOS 5.5 de 64 bits:

# rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm

Para CentOS 6 de 64 bits:

# rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm

 

# rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpmInstall EPEL Repository On 64-bit CentOS Linux 5.5:
# rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm

Uso de disco de usuarios por consola


Este es un simple script para obtener el uso de disco de los usuarios de nuestro servidor linux. Se basa en la utilización del comando du. Puede ser muy util cuando trabajamos con home’s centralizados.

#!/bin/sh
#hvivani. 20120828
#imprime totales de uso de disco por usuario verificando cada home.

cd /home/
for f in `ls`
do
 du -sh ./$f
done

Creando un pendrive de rescate con Linux – Linux System Rescue USB Stick


Siempre es útil tener un pendrive de rescate para cualquier problema que podamos tener con un servidor o una pc, donde debamos recuperar archivos, o realizar ciertas tareas cuando el sistema no arranca.

Este pendrive contiene herramientas de rescate y utilidades como: parted, partimage, fstools, editores, el viejo y querido midnight commander, network tools, etc

El kernel soporta ext2/ext3/ext4, reiserfs, btrfs, xfs, jfs, vfat, ntfs, así como también samba y nfs

Para armarlo vamos a utilizar una image prearmada con todo esto disponible en SystemRescueCD.

Vamos con los pasos de la instalación:

1) Descargamos la imágen de instalación desde: http://www.sysresccd.org/Download

2) Montamos la imágen:

mkdir -p /tmp/cdrom
mount -o loop,exec /path/to/systemrescuecd-x86-x.y.z.iso /tmp/cdrom

3) Insertamos el pendrive y ejecutamos el instalador:

cd /tmp/cdrom
bash ./usb_inst.sh

Si el pendrive está montado nos solicitara que lo desmontemos primero. El instalador muestra los dispositivos extraibles donde puede instalarse el sistema.

4) Por pantalla nos indicará cuando termine el proceso de creación y estará listo para usar.

rpmfusion para Fedora 14


Es muy probable que tengamos los siguientes errores de dependencia al intentar instalar los repositiorios rpmfusion en fedora 14:

error: Failed dependencies:
	system-release >= 15 is needed by rpmfusion-free-release-15-5.noarch
	system-release >= 15 is needed by rpmfusion-nonfree-release-15-5.noarch

Estos son los nuevos links para instalar rpmfusion en fedora 14

free:

# rpm -Uvh http://download1.rpmfusion.org/free/fedora/releases/14/Everything/i386/os/rpmfusion-free-release-14-0.4.noarch.rpm

nonfree:

# rpm -Uvh http://download1.rpmfusion.org/nonfree/fedora/releases/14/Everything/i386/os/rpmfusion-nonfree-release-14-0.4.noarch.rpm


Instalar Firefox 14 en Fedora / RHEL / CentOS


Veamos paso a paso como instalar Firefox 14 en Fedora 12, 13, 14, 15 o 16 utilizando YUM. También es aplicable a CentOS 6 y RHEL 6. Los usuarios de Fedora 17 seguramente van a tener disponible esta versión de Firefox en los repositorios update, pero los usuarios de versiones anteriores van a tener que recurrir a otros repositorios como el remi.

1) Instalamos repositorios remi:

Fedora:

## Dependencia Remi en Fedora 17, 16, 15, 14, 13, 12 ##
# rpm -Uvh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm
# rpm -Uvh http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm

## Fedora 17 ##
# rpm -Uvh http://rpms.famillecollet.com/remi-release-17.rpm

## Fedora 16 ##
# rpm -Uvh http://rpms.famillecollet.com/remi-release-16.rpm

## Fedora 15 ##
# rpm -Uvh http://rpms.famillecollet.com/remi-release-15.rpm

## Fedora 14 ##
# rpm -Uvh http://rpms.famillecollet.com/remi-release-14.rpm

## Fedora 13 ##
# rpm -Uvh http://rpms.famillecollet.com/remi-release-13.rpm

## Fedora 12 ##
# rpm -Uvh http://rpms.famillecollet.com/remi-release-12.rpm

CentOS / RHEL:

## Dependencia Remi en CentOS 6 y Red Hat (RHEL) 6 ##
rpm -Uvh http://download.fedora.redhat.com/pub/epel/6/i386/epel-release-6-5.noarch.rpm

## CentOS 6 y Red Hat (RHEL) 6 ##
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

2) Listamos versiones disponibles:

Fedora 17:

# yum --enablerepo=updates-testing list firefox

Fedora 12,13,14,15,16 CentOS, RHEL:

# yum --enablerepo=remi list firefox

3) Actualizamos o instalamos:

Fedora 17:

# yum --enablerepo=updates-testing update firefox
## OR ##
# yum --enablerepo=updates-testing install firefox

Fedora 12,13,14,15,16, CentOS, RHEL:

# yum --enablerepo=remi update firefox
## OR ##
# yum --enablerepo=remi install firefox

4) Iniciamos firefox:

$ firefox

Deshabilitar actualizaciones automáticas en Fedora / Disable yum update check for PackageKit


Las actualizaciones automáticas en Fedora son manejadas por el plugin Package Kit.

Hay situaciones en las que no queremos que se chequeen o apliquen las actualizaciones automáticas en una frecuencia determinada. Para evitar o modificar la frecuencia de acutalización, ejecutamos desde consola:

$ sudo gpk-prefs

Y seteamos de acuerdo a nuestra necesidad.

Ocultar versión en servidor apache / Hide apache software version


Ante cualquier servidor expuesto a internet, seguramente necesitemos incrementar su nivel de seguridad, dado que es muy probable que cuando comience a tener tráfico, sea victima de múltiples ataques.

Una vulnerabilidad importante en los servidores Apache es que cuando una página da error, nos muestra la versión de apache que está corriendo y sobre que sistema operativo. De esta manera, le damos información a un atacante para buscar vulnerabilidades específicas a nuestra instalación

Para ocultar esta información en nuestro servidor, debemos modificar dos líneas en el httpd.conf:

ServerSignature Off 

Esta variable, cuando está en On, muestra la versión del servidor apache y el nombre del servidor.

#ServerTokens OS

Comentamos esta variable para que los clientes no reciban en la cabecera de las respuestas del servidor información de versiones.

 

Abrir archivos con formato MHTML (.mht)


Tal vez les haya pasado que reciben un mail en el evolution y ven un adjunto llamado attachment.dat y no pueden abrirlo, o simplemente han encontrado un archivo .mht y no saben como leerlo.

El formato MHTML es utilizado para guardar páginas html completas, incluyendo todo su contenido en el mismo archivo, es decir, sin directorios externos. Es por eso que también podemos recibir archivos con este formato por mail.

Una de las maneras mas fáciles de abrir este tipo de archivos es utilizando el navegador Firefox con el siguiente plugin:

https://addons.mozilla.org/firefox/downloads/latest/8051/addon-8051-latest.xpi?src=dp-btn-primary

Una vez instalado y reiniciado el Firefox, solo tendremos que hacer un “Abrir con” sobre el archivo en cuestión y seleccionar el navegador Firefox.