LinuxParty

NUESTRO SITIO necesita la publicidad para costear hosting y el dominio. Por favor considera deshabilitar tu AdBlock en nuestro sitio. También puedes hacernos una donación entrando en linuxparty.es, en la columna de la derecha.

Ratio: 5 / 5

Inicio activadoInicio activadoInicio activadoInicio activadoInicio activado
 

He intentado averiguar que IPs "externas" estaban haciendo consultas a la BBDD de MySQL, bueno, yo al menos, por mucho que lo he intentado no he conseguido conocer más IP que la del server de la BBDD, y ésta, no es la IP que quiero conocer.

Por lo que trasteando un poco, buscando por allí y por acá, vi algunos scripts de Python que me indicaban que consultas se estaban haciendo, (pero no las IP "externas" a ellas asociadas) la mayoría de estos guiones están basados en "processlist", una función incluida en MySQL, así que me dije... pues ya está estoy, voy a hacer el siguiente script, que aquí os dejo para vuestro regocijo, y que es lo más que se aproxima a lo que yo buscaba.

caputuraStart=$(date +%Y-%m-%d-%HH-%MM-%SS)
echo "INICIO CAPTURA: $caputuraStart "

# Bucle que puedes cambiar a tu elección, pero 100 consultas son suficientes.
for i in {1..100}; do 
	# Optenemos las IP (en un server, casi todas irán o al puerto 80 o 443)
        netstat -ntp | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1
        # usamos mysqladmin, con usuario y contraseña para ver "processlist"
        mysqladmin -u userdebasedatos -pcontraseña processlist --verbose
done  
caputuraStop=$(date +%Y-%m-%d-%HH-%MM-%SS) echo "FIN CAPTURA..: $caputuraStop

El script (o guión) te dice en la línea de "netstat" que IP que tenga conexión establecida (no en espera) está conectado al equipo, en la siguiente línea, mysqldadmin te dirá que consulta de MySQL que se está ejecutando. De esta forma podrías asociar IPs a consultas (que puedes ampliar en programación dentro de la aplicación php-mysql, por ejemplo, y que ya se escapa totalmente de la intención este artículo)

Después, por ejemplo, para los "chicos malos" puedes usar este script y bloquear las IP rápidamente:

#!/bin/bash
if [ "$2" == "" ] ; then
        RangoIP=32
else
        RangoIP="$2"
fi

if [ "$1" == "" ] ; then
        echo "$0 IP Rango"
        echo "$0 192.168.1.7 32"
        echo "Bloqueará 192.168.1.7/32"
        exit 0
else
        IP="$1"
fi

echo "--------------------------"
echo "iptables -I INPUT -s $IP/$RangoIP -j REJECT "
iptables -I INPUT -s $IP/$RangoIP -j REJECT
iptables -L -n | grep $IP

 

Puede contratar ExtreHost para temas profesionales con sus servidores. No lo dude, contáctenos.

Pin It

Comentarios  

+2 # Marcelo 30-04-2015 16:41
Hola, muy bueno, lo único que cambiaría es:

iptables -I INPUT -s $IP/$RangoIP -j REJECT

por

iptables -I INPUT -s $IP/$RangoIP -j DROP

en esos casos es recomendable utilizar DROP en lugar de REJECT, para descartar paquetes y evitar trafico de red, también es mas seguro.

Saludos!
Responder | Responder con una citación | Citar

Escribir un comentario


Código de seguridad
Refescar



Redes:



 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Filtro por Categorías