GNU/Linux >> Tutoriales Linux >  >> Debian

Aumente su seguridad IPv4 con Fail2Ban y Tinyhoneypot en Debian Jessie

Es un ejercicio de cinco minutos para aumentar la seguridad en una máquina con dirección IPv4. El propósito de la configuración descrita en este tutorial es bloquear los escáneres de puertos y los abridores de puertos maliciosos durante un período de tiempo. Este ejercicio solo se prueba y aplica en Debian Jessie. Durante el ejercicio, cada comando se confirma como raíz. Es su trato cómo obtener acceso de root.

Ya sea su -, sudo, inicio de sesión en la consola, etc...

Instrucción para principiantes perezosos:cuando represente el indicador de bash, simplemente copie y pegue la parte en negrita del texto a la suya.

Los ingredientes

  • El software fail2ban es capaz de manejar dinámicamente las reglas de su firewall para bloquear a los malos.
  • El tinyhoneypot es capaz de escuchar en un puerto TCP/IP y registrar los detalles de apertura.
  • El servicio xinetd inicia tinyhoneypot y administra sus puertos de escucha.

Instalar ingredientes: (Solo copie y pegue la parte en negrita del texto)

[email protected]:~# apt-get install tinyhoneypot fail2ban xinetd

Configuración

Para hacer que SSH escuche en un puerto diferente, reemplace su archivo de configuración ssh con un puerto ssh alternativo:

[email protected]:~# sed -i.orig 's/Port 22/Port 2201/m' /etc/ssh/sshd_config

Su configuración original de /etc/ssh/sshd_config se guarda como /etc/ssh/sshd_config.orig

Cuando reinicie su servicio SSH, escuchará en el puerto 2201 (no en el 22) ahora.

[email protected]:~# service ssh restart
[email protected]:~# netstat -lptn | grep ssh
tcp 0 0 0.0.0.0:2201 0.0.0.0:* LISTEN 4313/sshd
tcp6 0 0 :::2201 :::* LISTEN 4313/sshd

Hasta ahora todo bien..

Configure Xinetd para iniciar tinyhoneypot y escuchar en el puerto 22 de TCP:

[email protected]:~# cp -v /usr/share/doc/tinyhoneypot/examples/xinetd.d/thp-pasv /etc/xinetd.d/

Edite su /etc/xinetd.d/thp-pasv para que le guste esto:

[email protected]:~# cat /etc/xinetd.d/thp-pasv
# default: on
# description: thp-ftpd calls the generic thpsvcs with param "ftp",
#       resulting in an ftpd emulation.

service thp-pasv
{
        type                    = UNLISTED
        socket_type             = stream
        protocol                = tcp
        port                    = 22
        wait                    = no
        user                    = thpot
        server                  = /usr/sbin/thpot
        server_args             = nullresp
        nice                    = 10
        disable                 = no
        instances               = 1
        per_source              = 1

}

(RE) Inicie xinetd con su nueva configuración y asegúrese de que escuche en el puerto 22.

[email protected]:~# service xinetd restart
[email protected]:~# netstat -lptn | grep xinetd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 4567/xinetd

Asegúrate de que esté funcionando

Abra una conexión ssh desde otra máquina.

[email protected]:~$ ssh 192.168.88.212

Después de un rato no debería pasar nada, interrúmpelo con [Ctrl + C]

Y verifique las entradas de registro en su máquina de prueba:

[email protected]:~# cat /var/log/thpot/captures
Feb 29 13:02:10 SID=56D4334221165.nullresp PID=4837 SRC=192.168.88.242 SPT=47187 ET=00:00:11 BYTES=39

En caso de que todo haya ido bien, debería haber una entrada en su registro de captura.

Ajustemos su Fail2Ban para cooperar con TinyHoneyPot

[email protected]:~# cd /etc/fail2ban/
[email protected]:/etc/fail2ban# cp -v jail.conf jail.local

¡¡Nunca edites tu jail.conf!! ¡Haz una copia como jail.local y SOLO haz cambios en el archivo .local!

Busque la sección [ssh] en su jail.local y modifíquela según el [Puerto 2201] de /etc/ssh/sshd_config

[ssh]

enabled  = true
port     = 2201
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 6

Realice una entrada en la sección JAIL de jail.local:

Esto hará que Fail2Ban lea el archivo de registro de tinyhoneypot y obtenga la dirección IPv4 para denegar. Recomiendo colocarlo después de la sección [ssh]. Se trata de la fila 137.

[thp-ssh]

enabled  = true
port     = all
filter   = thpot
logpath  = /var/log/thpot/captures
banaction = iptables-allports
maxretry = 1
findtime = 1800
bantime = 99999

Fail2ban debería tener un filtro para saber qué negar. Allá es una macro que sustituye la dirección IPv4. Crea un filtro para ello:

[email protected]:~# cat /etc/fail2ban/filter.d/thpot.local
[Definition]

failregex = SRC=<HOST>
ignoreregex =

¡Se ha hecho!

Solo una pequeña prueba....

[email protected]:~# service fail2ban restart

Debería ver algo similar al final de /var/log/fail2ban.log

2016-02-29 13:54:06,915 fail2ban.jail   [6102]: INFO    Creating new jail 'thp-ssh'
2016-02-29 13:54:06,915 fail2ban.jail   [6102]: INFO    Jail 'thp-ssh' uses pyinotify
2016-02-29 13:54:06,920 fail2ban.jail   [6102]: INFO    Initiated 'pyinotify' backend
2016-02-29 13:54:06,922 fail2ban.filter [6102]: INFO    Added logfile = /var/log/thpot/captures
2016-02-29 13:54:06,923 fail2ban.filter [6102]: INFO    Set maxRetry = 1
2016-02-29 13:54:06,925 fail2ban.filter [6102]: INFO    Set findtime = 1800
2016-02-29 13:54:06,926 fail2ban.actions[6102]: INFO    Set banTime = 99999
2016-02-29 13:54:06,934 fail2ban.jail   [6102]: INFO    Jail 'ssh' started
2016-02-29 13:54:06,940 fail2ban.jail   [6102]: INFO    Jail 'thp-ssh' started

Puede ver sus valores personalizados desde jail.local y ajustarlos si es necesario.

findtime = 1800
bantime = 99999

Eche un vistazo a sus reglas actuales de iptables:

[email protected]:~# iptables-save
# Generated by iptables-save v1.4.21 on Mon Feb 29 14:05:17 2016
*filter
:INPUT ACCEPT [2:64]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:fail2ban-ssh - [0:0]
:fail2ban-thp-ssh - [0:0]
-A INPUT -p tcp -j fail2ban-thp-ssh
-A INPUT -p tcp -m multiport --dports 2201 -j fail2ban-ssh
-A fail2ban-ssh -j RETURN
-A fail2ban-thp-ssh -j RETURN
COMMIT
# Completed on Mon Feb 29 14:05:17 2016

Verifiquemos la regla de denegación desde otra máquina:

[email protected]:~# ssh 192.168.88.212
^C
[email protected]:~# ssh 192.168.88.212
ssh: connect to host 192.168.88.212 port 22: Connection refused

La primera acción no hará nada. El atacante probablemente lo interrumpa después de un tiempo. La segunda acción será rechazada.

Sus reglas de iptables deberían verse así ahora:

[email protected]:~# iptables-save
# Generated by iptables-save v1.4.21 on Mon Feb 29 14:10:53 2016
*filter
:INPUT ACCEPT [4:542]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1:88]
:fail2ban-ssh - [0:0]
:fail2ban-thp-ssh - [0:0]
-A INPUT -p tcp -j fail2ban-thp-ssh
-A INPUT -p tcp -m multiport --dports 2201 -j fail2ban-ssh
-A fail2ban-ssh -j RETURN
-A fail2ban-thp-ssh -s 192.168.88.242/32 -j REJECT --reject-with icmp-port-unreachable
-A fail2ban-thp-ssh -j RETURN
COMMIT
# Completed on Mon Feb 29 14:10:53 2016

El resultado es:la PC del atacante es RECHAZADA en cada puerto.

La Posdata

En el momento de escribir este HowTo, ni Fail2Ban ni tinyhoneypot podían manejar IPv6. Si cree que este HowTo es útil, ¡compártalo! Hágales saber a sus amigos.


Debian
  1. Acelere Apache con mod_pagespeed y Memcached en Debian 8

  2. Cómo proteger su servidor con badIPs.com y reportar IPs con Fail2ban en Debian

  3. Configuración de Master-Master Replication con MySQL en Debian 8 (Jessie)

  4. Cómo instalar WebDAV con Lighttpd en Debian 8 (Jessie)

  5. Seguridad Linux:Proteja sus sistemas con fail2ban

Tutorial del servidor Debian 8 Jessie LAMP con Apache 2, PHP 5 y MariaDB (en lugar de MySQL)

Cómo instalar y configurar vsftpd con TLS en Debian 8 (Jessie)

Cómo cifrar sus datos con EncFS en Debian 8 (Jessie)

Cómo instalar TYPO3 7 con Nginx y MariaDB en Debian 8 (Jessie)

Hacer chroot de Apache 2.4 con mod_unixd en Debian 8 (Jessie)

Instalar y configurar Fail2ban en Debian 11