Usando Linux para muchas cosas y disfrutando de videojuegos, en dispositivos moviles, consolas y pc. Using Linux for many things and enjoying video games, mobile devices, consoles and pc

Como instalar y configurar Fail2ban paso a paso

DriveMeca instalando y configurando Fail2ban en Linux CentosEn los tiempos de ahora una forma común de hackear un servidor es conectarse a sus puertos y explotar vulnerabilidades conocidas o atacar por la fuerza buscando alguna cuenta con una contraseña conocida.
Esto nos obliga a estar pendientes de actualizaciones criticas y estar mirando logs del OS buscando pruebas de ataques para poder reaccionar antes de que sea tarde. Por suerte existe fail2ban, un framework escrito en Python para prevención de intrusos (intrusion prevention framework) que básicamente inspecciona logs del OS y reacciona bloqueando temporalmente (o total) las ip's sospechosas de un ataque. Al ser temporal el bloqueo no dejamos por fuera completamente a alguna conexión legitima que estuviera desconfigurada.
Fail2ban puede realizar varias acciones al detectar intentos maliciosos de conexión como son bloqueo de ip/dominio por medio de iptables, envió de email con un alerta a un administrador, actualizar por medio de TCP Wrappers el archivo hosts.deny o una acción definida en un script Python. Entre los scripts que ya vienen preconfigurados encontramos chequeos para sshd, apache, asterisk, vsftpd, postfix entre otros lo cual nos permite tenerlo funcionando en pocos minutos desde que lo instalamos.
Para el articulo de hoy veremos como se instala en un servidor Linux Centos 6.5 actualizado a la fecha.

Requerimientos



-Instalamos por medio del repositorio RPMForge
yum --enablerepo=rpmforge install fail2ban

-Configuramos Fail2ban y activamos los chequeos que queremos tener activos
vi /etc/fail2ban/jail.conf
[DEFAULT]
#ignoreip nos permite agregar las ip's que no queremos bloquear. Pensemos en la ip del mismo host
#que ejecuta fail2ban como primera opcion. Si queremos podemos agregar otras ip's separandolas
#con espacios en blancos; también podemos usar dominios
ignoreip = 127.0.0.1/8

#bantime es el numero de segundos que estará bloqueado un host. Podemos incrementarlo o
#decrementarlo según nuestra necesidad
bantime  = 600

#Tiempo en segundos del que dispone un host para logearse antes de la cantidad máxima de veces que
#nos indica maxretry
findtime  = 600

#Numero de intentos antes de ser bloqueado un host
maxretry = 3

[ssh-iptables]
enabled  = true
filter   = sshd
#Personalizamos la acción para que nos llegue a nuestro email la alerta. you@example.com lo
#cambiamos por nuestra dirección y fail2ban@example.com es el campo from (De) del email
action   = iptables[name=SSH, port=ssh, protocol=tcp]
           sendmail-whois[name=SSH, dest=you@example.com, sender=fail2ban@example.com]
logpath  = /var/log/sshd.log
maxretry = 5

-Directorios a tener en cuenta dentro de /etc/fail2ban
/etc/fail2ban/action.d <-------------- directorio de scripts a ejecutarse por action
/etc/fail2ban/filter.d <---------------- directorio de filtros que activaran los scripts de action

-Activamos el servicio para que se ejecute siempre que inicie el servidor y lo ejecutamos por primera vez
chkconfig fail2ban on
service fail2ban start

-Verificamos las reglas de iptables
iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
ACCEPT     icmp --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh 
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

-Para desbloquear una ip ejecutamos el siguiente comando
iptables -D fail2ban-ssh 1

Al automatizar ciertas tareas como la de verificar logs para reaccionar a ataques; tendremos mas tiempo para investigar y trabajar en otros temas. Ya usas Fail2ban, con cuales servicios? usas otro sistema de prevención de intrusos, cual?
Si te resulto útil este articulo, se social, haz un tweet, compártelo con otros por medio de los botones o sígueme en twitter google+ o email y podrás estar enterado de todas mis publicaciones.
Disfrútenlo.

Share/Bookmark

Como restringir el acceso en Apache Web Server

Apache http server logo
No todo tiene que ser publico en este mundo interconectado por medio de la red de redes, Internet. En algún momento puedes necesitar tener un sitio o parte de el privado, solo para tus ojos y algunos colaboradores. Usas Apache, bien, la solución que te mostrare es con el como servidor web.
Esto lo podrías hacer de dos formas; con un archivo .htaccess en el directorio al que quieres restringir el acceso lo cual no es recomendado por motivos de perfomance de Apache y la segunda opción, que es la que les mostrare, es con un bloque Directory.
El ejemplo mostrado se hizo en un servidor Linux Centos 6.5 con Apache, en otras distribuciones debe funcionar igual

Requerimientos

  • Tener permisos para editar el conf de apache
  • Poder reiniciar Apache despues del cambio


-Editamos el httpd.conf y nos creamos un bloque Directory con el path exacto del directorio que queremos restringir. Salimos guardando
vi /etc/httpd/conf/httpd.conf
<Directory "/var/www/html/homero-hobby">
    Order allow,deny
    Allow from 192.168.1.0/24
    Allow from 127
    AddHandler cgi-script cgi exe pl
</Directory>

Explicación de lineas:

  1. Order allow,deny primero dará permisos a las ips en las sentencias Allow from y después denegara todos los accesos que no hayan sido listados en Allow from
  2. Allow from listara una por linea las ips permitidas a leer el directorio, como ven podemos tambien usar rangos con el uso de /mascara de red
  3. AddHandler lista los scripts/binarios permitidos en el directorio
  4. El bloque abre con un <Directory "path"> y cierra con un </Directory> por ende nuestra configuración es dentro de estas dos lineas

-Reiniciamos apache
service httpd restart

-Si alguien no permitido intenta visitar el sitio restringido vera el siguiente error. Sin importar si navegan por http o por https, el directorio/sitio no sera mostrado
DriveMeca restringiendo directorios web con Apache

Te suena util esta forma de restringir contenido? Lo haces de otra forma, como?
Si te resulto útil este articulo, se social, haz un tweet, compártelo con otros por medio de los botones o sígueme en twitter google+ o email y podrás estar enterado de todas mis publicaciones.
Disfrútenlo.

Share/Bookmark

Como personalizar seguridad de Oracle Java

La seguridad en el mundo digital cada día es mas importante. Si no sabes de que hablo puedes estar perdiendo dinero de tu cuenta bancaria, viendo como modifican tu pagina web, inhabilitan tu tienda virtual y mucho mas. Solo porque no tuviste algunas medidas de protección. Ya tengo tu atención?, ok, seguro usas Java y haz escuchado reportes de hacking por medio de applets (pequeños programas).
Desde unas versiones para acá, Oracle aumento las defensas por default de Java y es muy posible que ahora la aplicación que podías usar normalmente ahora te responda con una ventana parecida a la que muestro debajo. Se que puede ser irritante y hoy te enseñare a como personalizar la seguridad de Oracle Java para que te deje ejecutar esos sitios de confianza que usas.


-Si ya tienes instalado Oracle Java debes tener una herramienta llamada ControlPanel que te permitirá personalizar algunos detalles. Lo ejecutamos desde consola
ControlPanel

-En la ventana que aparece nos vamos a la pestaña Security y damos click al botón Edit Site List. Allí agregamos el URL de la pagina que no podemos ejecutar en Java. Aunque te veas tentado, no bajes el Security Level, dejalo en el mínimo recomendado. Damos click al botón Apply

-Ya de regreso a nuestro browser, si damos recargar, esta vez nos debe dar la opción de marcar I accept the risk and want to run this application. Con esto ya abrirá la aplicación sin problemas.

Conoces otros trucos de Java? Cuales?
Si te resulto útil este articulo, se social, haz un tweet, compártelo con otros por medio de los botones o sígueme en twitter google+ o email y podrás estar enterado de todas mis publicaciones.
Disfrútenlo.

Share/Bookmark