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á
[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.