Algunas de las IP están abriendo miles de conexiones de mi servidor. Tengo un servidor Ubuntu 14. Compruebo las conexiones totales usando el siguiente comando:
netstat -an | grep tcp | awk '{print $ 5}' | corte -f 1 -d: | ordenar | uniq -c | ordenar -n
Luego uso la siguiente regla de iptables para bloquear la IP culpable.
iptables -I INPUT 1 -s xxxx -j DROP
Funciona bien y bloquea la dirección IP. Sin embargo, no puedo permanecer en línea las 24 horas, los 7 días de la semana para monitorear el servidor. Me preguntaba si hay algún script de Shell que pueda usar para hacerlo automáticamente. Por ejemplo, si una IP abre más de X número de conexiones en cualquier momento, debería quedar automáticamente prohibida por la regla de iptables anterior.
command-line
scripts
iptables
connection
usuario3404047
fuente
fuente
Respuestas:
En primer lugar, no reinventes la rueda. Eso es precisamente para lo que
denyhosts
sirve:Hasta donde yo sé,
denyhosts
es solo parassh
conexiones, pero también hayfail2ban
que lidiar con casi cualquier cosa:Ambos están disponibles en los repositorios:
También puedes escribir esto, si quieres. Algo como:
El
awk
extraerá las IPs y contarlos y sólo imprimir los que aparecen másmax
veces (en este caso,-vmax=100
, cambie en consecuencia). Las IP se alimentan a un ciclo while que ejecuta laiptables
regla relevante .Para ejecutar esto las 24 horas del día, los 7 días de la semana, haría un trabajo cron que ejecuta el comando anterior cada minuto más o menos. Agregue esta línea a
/etc/crontab
fuente
fail2ban
no es solo para ssh. También funciona muy bien para el puerto 80. Véase, por ejemplo, aquí , aquí y aquí .Una posible opción alternativa es identificar y tratar las direcciones IP problemáticas dentro del conjunto de reglas de iptables, utilizando el
recent
módulo. El desafío con este método es el límite de hitcount predeterminado de 20, por lo que uno debe desviarse de los valores predeterminados o crear contadores de acarreo de mayor nivel para lograr un punto de activación de hitcount más alto.El siguiente ejemplo es de mi conjunto de reglas iptables, y prohibirá una dirección IP por poco más de 1 día si realiza 80 nuevas conexiones TCP en el puerto 80 en menos de 12 minutos. Una vez en la lista de tipos malos, cualquier intento de conexión restablecerá el contador de 1 día a 0. Este método podría llegar a un máximo de 400 visitas antes de que se requiriera la expansión a otro transporte (y he probado otra cadena de transporte). Tenga en cuenta que el código publicado tiene la infraestructura que se utilizará para prohibir solo durante mucho tiempo en múltiples desencadenantes de tiempo más cortos. Actualmente, lo tengo configurado para prohibir durante mucho tiempo en el primer disparador.
fuente