AnuncioFail2ban es un sistema de prevención de intrusiones escrito en Python que se ejecuta en todos los sistemas operativos POSIX que tienen un sistema de filtrado de paquetes o firewall manipulable (por ejemplo, iptables en Linux). El objetivo principal de fail2ban es determinar y bloquear direcciones IP específicas que probablemente pertenezcan a los atacantes que quieran obtener acceso al sistema. fail2ban identifica direcciones IP de archivos de registro que intentan iniciar sesión con contraseñas incorrectas o realizar otras acciones peligrosas o sin sentido con mayor frecuencia en un período de tiempo establecido por el administrador. Por lo general, fail2ban está configurado para desbloquear direcciones bloqueadas después de un cierto período de tiempo para no bloquear intentos de conexión legítimos (por ejemplo, si la IP del atacante se asigna dinámicamente a otro host). Se considera útil un tiempo de bloqueo de unos minutos para evitar que el servidor se inunde con intentos de conexión maliciosos (fuerza bruta). Fail2ban es capaz de realizar diversas acciones cuando se ha detectado una IP probable maliciosa, como bloquear esa IP con una regla en iptables o la perteneciente a wrappers TCP para rechazar ataques posteriores, notificaciones por correo electrónico o cualquier acción personalizada que se pueda realizar con Pitón. La configuración predeterminada incluye filtros para Apache, Lighttpd, sshd, vsftpd, qmail y Postfix Server. Los filtros se definen mediante expresiones regulares que el administrador puede personalizar fácilmente. La combinación de filtro y acción se llama cárcel y es capaz de bloquear hosts maliciosos. Se puede crear una cárcel para cualquier software que cree archivos de registro que puedan evaluarse con expresiones regulares. Es fácil de instalar y configurar fail2ban, al menos para el propósito básico. SSH a su servidor y ejecute los siguientes comandos: apt update -y apt Upgrade -y apt install fail2ban # check content cat /etc/fail2ban/jail.conf cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local apt install iptables-persistentapt update -yapt update -y apt install fail2ban# check contentcat /etc/fail2ban/jail.confcp /etc/fail2ban/jail.conf /etc/fail2ban/jail.localapt install iptables-persistentRestart fail2ban :Ejecutar iptables – L para enumerar las reglas actuales: Si las reglas de firewall no están presentes, puede ejecutar: sudo iptables -A INPUT -i lo -j ACCEPT sudo iptables -A INPUT -m conntrack –ctstate ESTABLECIDO, RELACIONADO -j ACCEPT sudo iptables -A INPUT -p tcp –dport 22 -j ACEPTAR sudo iptables -A ENTRADA -p tcp –dport 80 -j ACEPTAR sudo iptables -A ENTRADA -j DROPsudo iptables -A ENTRADA -i lo -j ACEPTARsudo iptables -A ENTRADA -m conntrack –ctstate ESTABLECIDO, RELACIONADO -j ACCEPTsudo iptables -A INPUT -p tcp –dport 22 -j ACCEPTsudo iptables -A INPUT -p tcp –dport 80 -j ACCEPTsudo iptables -A INPUT -j DROPiptables Las reglas son opcionales cuando usted usando fail2ban para servidores virtuales y servidores dedicados con un firewall proporcionado por el servidor web. Puede ver los filtros disponibles aquí: ls /etc/fail2ban/filter.dls /etc/fail2ban/filter.d Estos filtros se pueden habilitar desde: Los pasos que hemos realizado deberían reducir el 80% de los ataques. Desde este archivo, puede cambiar el tiempo de búsqueda, el tiempo de baneo, etc. De forma predeterminada, están configurados en un valor más bajo para fines de prueba. Si puede aumentar el tiempo de baneo a 1 día o más después de realizar la prueba durante unos días. Por supuesto, debe habilitar el inicio de sesión SSH basado en certificado PEM. Para WordPress, necesita un complemento de WordPress llamado Fail2Ban Redux: https://wordpress.org/plugins/wp-fail2ban-redux/https://wordpress.org/plugins/wp-fail2ban-redux/Cargue y active el complemento a través el menú ‘Complementos’ en WordPress. Copie los archivos config/filters/wordpress-hard.conf y config/filters/wordpress-soft.conf a su directorio de filtros Fail2Ban /etc/fail2ban/filters.d. Si mi directorio público (donde WordPress está instalado) es /var/www/html/, luego wordpress-hard.conf y wordpress-soft.conf estarán ubicados en: /var/www/html/wp-content/plugins/wp-fail2ban-redux/config /filters/var/www/html/wp-content/plugins/wp-fail2ban-redux/config/filtersNecesitamos copiar estos archivos (uno o ambos) para: Ejecutar estos comandos: cp /var/www/html/wp- content/plugins/wp-fail2ban-redux/config/filters/wordpress-soft.conf /etc/fail2ban/filter.d/wordpress-soft.conf ## cp /var/www/html/wp-content/plugins/wp -fail2ban-redux/config/filters/wordpress-hard.conf /etc/fail2ban/filter.d/wordpress-hard.confcp /var/www/html/wp-content/plugins/wp-fail2ban-redux/config/filters /wordpress-soft.conf /etc/fail2ban/filter.d/wordpress-soft.conf##cp /var/www/html/wp-content/plugins/wp-fail2ban-redux/config/filters/wordpress-hard. conf /etc/fail2ban/filter.d/wordpress-hard.confEste es el archivo de configuración: /var/www/html/wp-content/plugins/wp-fail2ban-redux/config/jail/wordpress.conf/var/www /html/wp-content/plugins/wp-fail2ban-redux/config/jail/wordpress.confEste es el contenido del archivo:
[wordpress-hard]
habilitado = verdadero filtro = wordpress-hard logpath = /var/log/auth.log maxretry = 2 puerto = http,https

[wordpress-soft]
habilitado = verdadero filtro = wordpress-soft logpath = /var/log/auth.log maxretry = 5[wordpress-hard]habilitado = truefilter = wordpress-hardlogpath = /var/log/auth.logmaxretry = 2port = http,https [wordpress-soft]enable = truefilter = wordpress-softlogpath = /var/log/auth.logmaxretry = 5Abrir: nano /etc/fail2ban/jail.confnano /etc/fail2ban/jail.confAgregue la estrofa anterior. Reinicie fail2ban: compruebe si hicimos lo correcto o no: sudo fail2ban-client status wordpress-hardsudo fail2ban-client status wordpress-hardObtendrá un resultado como: Estado de la cárcel: wordpress-hard |- Filtro | |- Actualmente falló:0 | |- Total fallidos: 40 | `- Lista de archivos: /var/log/auth.log `- Acciones |- Actualmente prohibidos:1 |- Total prohibidos: 1 `- Lista de IP prohibidas: 91.200.12.155Estado de la cárcel: wordpress-hard|- Filtro| |- Actualmente falló:0| |- Total fallidos: 40| `- Lista de archivos: /var/log/auth.log`- Acciones |- Actualmente prohibidos:1 |- Total prohibidos: 1 `- Lista de IP prohibidas: 91.200.12.155Es un paso opcional. Abra logrotate.conf: sudo nano /etc/logrotate.confsudo nano /etc/logrotate.confAgregue esta estrofa: /var/log/auth.log { tamaño 30k crear 0600 raíz raíz rotar 4 }/var/log/auth.log { tamaño 30k crear 0600 raíz raíz rotar 4}Es para establecer el tamaño máximo del archivo, los permisos del archivo y el número de semanas (4 en el ejemplo anterior) que el archivo no se convertirá en /var/log/auth. registro.1. Es un sistema de autolimpieza en GNU/Linux preservando el registro en diferentes archivos. Puedes consultar estos archivos: Este comando es muy útil para verificar Fail2Ban todos los días, se divide en número, posibles nombres de host y direcciones IP: grep «Ban » /var/log/fail2ban.log | grep `fecha +%Y-%m-%d` | awk ‘{imprimir $NF}’ | ordenar | awk ‘{imprimir $1,»(«$1″)»}’ | logresolución | único -c | sortgrep «Prohibir » /var/log/fail2ban.log | grep `fecha +%Y-%m-%d` | awk ‘{imprimir $NF}’ | ordenar | awk ‘{imprimir $1,»(«$1″)»}’ | logresolución | único -c | sortSalida de ejemplo: 1 101.36.123.172 (101.36.123.172) 1 143.110.176.216 (143.110.176.216) 1 169.204.96.34.bc.googleusercontent.com (34.96.204.169) 1 199.15.1 09.208.host.secureserver.net (208.109.15.199 ) 1 36.137.56.33 (36.137.56.33) 1 43.134.1.156 (43.134.1.156) 1 43.135.146.161 (43.135.146.161) 3 103.118.29.175 (103.118.29.17 5) 3 129.146.242.24 (129.146.242.24) 3 192.241.139.149 (192.241.139.149) 3 vps-b13be790.vps.ovh.net (54.38.243.250) 1 101.36.123.172 (101.36.123.172) 1 143.110.176.216 (143.110.176.216) 1 1 69.204.96.34.bc.googleusercontent.com (34,96 .204.169) 1 199.15.109.208.host.secureserver.net (208.109.15.199) 1 36.137.56.33 (36.137.56.33) 1 43.134.1.156 (43.134.1.156) 1 43.135.146 .161 (43.135.146.161) 3 103.118.29.175 ( 103.118.29.175) 3 129.146.242.24 (129.146.242.24) 3 192.241.139.149 (192.241.139.149) 3 vps-b13be790.vps.ovh.net (54.38.243.250)Ahora puede instalar módulo libapache2-mod-geoip para obtener los nombres de los países. Para nginx, había que luchar para configurarlo. Tenemos una guía para compilar GeoIP con Nginx. Para Apache2, son unos pocos pasos: sudo apt install libapache2-mod-geoip sudo nano /etc/apache2/mods-available/geoip.confsudo apt install libapache2-mod-geoipsudo nano /etc/apache2/mods-available/geoip.confgeoip .conf debería verse así:

GeoIPEnable en GeoIPDBFile /usr/share/GeoIP/GeoIP.dat
GeoIPEnable en GeoIPDBFile /usr/share/GeoIP/GeoIP.datHabilite el módulo y reinicie Apache2 después de una prueba de configuración exitosa: sudo apt-get install geoip-bin sudo a2enmod geoip sudo apachectl configtest sudo service apache2 restartsudo apt-get install geoip-binsudo a2enmod geoipsudo apachectl configtestsudo service apache2 restartAhora, si ejecuta este comando , obtendrás atacantes por país: zgrep -h «Ban » /var/log/fail2ban.log* | awk ‘{imprimir $NF}’ | ordenar | único -c | xargs -n 1 geoiplookup { } | ordenar | único -c | sortzgrep -h «Prohibir » /var/log/fail2ban.log* | awk ‘{imprimir $NF}’ | ordenar | único -c | xargs -n 1 geoiplookup { } | ordenar | único -c | sortAsí: 1 Edición de país de GeoIP: FR, Francia 1 Edición de país de GeoIP: RU, Federación de Rusia 1 Edición de país de GeoIP: TW, Taiwán 3 Edición de país de GeoIP: CN, China 4 Edición de país de GeoIP: JP, Japón 7 Edición de país de GeoIP: EE. UU. , Estados Unidos 17 Edición de país GeoIP: Dirección IP no encontrada 1 Edición de país GeoIP: FR, Francia 1 Edición de país GeoIP: RU, Federación Rusa 1 Edición de país GeoIP: TW, Taiwán 3 Edición de país GeoIP: CN, China 4 Edición de país GeoIP: JP, Japón 7 Edición de país de GeoIP: EE. UU., Estados Unidos 17 Edición de país de GeoIP: Dirección IP no encontrada Obtendrá más comandos en nuestra guía anterior sobre fail2ban. Puede configurar el gráfico de análisis de registros de Fail2Ban con badips.com.

Source link