Hola gente hoy vamos a proteger nuestros servicios detrás de NPM con nuestro Fail2Ban ejemplo portainer o el mismo NPM, fail2ban analizara los Login de nuestros servicios y con base a las reglas especificadas que nosotros tengamos configurado en fail2ban bloqueara por un tiempo o de por vida a quien intente ingresar de manera fallida a cualquier pagina.
✅Primeramente vamos a validar si tenemos:
👉Instalado fail2ban
👉Instalado NPM
✅Tendremos que crear un filtro /etc/fail2ban/filter.d
sudo nano "npm.conf " [INCLUDES] [Definition] failregex = ^.+ (405|404|403|401|\-) (405|404|403|401) - .+ \[Client <HOST>\] \[Length .+\] ".+" .+$
✅Debemos de tener instadlo NPM y agregar un proxy host dependiendo donde tienes instalado tus contenedores deberas dirigirte a donde se encuentre NPM y ubicar la carpeta «npm/data/logs» dentro de ella encontraras dos archivos
👉proxy-host-1_error.log
👉proxy-host-1_access.log
si tienes mas proxy host agregados aparecerán mas números y según el servicio que quieras proteger deberas de ir abriendo cada uno para validar a cual pertenece cada uno
una vez localizado el archivo a proteger deberas de agregarlo al archivo jail.local
✅Nos movemos jail.local
sudo nano /etc/fail2ban/jail.local
✅Agregamos y modificamos según nuestro servidor
[npm] enabled = true ignoreip = x.x.x.x/16 port = https,http,81 chain = DOCKER-USER logpath = /docker/npm/data/logs/proxy-host-1_error.log /docker/npm/data/logs/proxy-host-1_access.log /docker/npm/data/logs/proxy-host-4_access.log /docker/npm/data/logs/proxy-host-4_error.log /docker/npm/data/logs/proxy-host-6_error.log /docker/npm/data/logs/proxy-host-6_access.log maxretry = 1 findtime = 5m bantime = -1
Reiniciamos Fail2Ban y probamos si empieza a bloquear ingresando usuarios incorrectos
sudo service fail2ban restart