LinuxParty
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.

-
Bases de Datos
- Monty quiere Salvar MySQL
- ¿Por qué Oracle no podrá matar fácilmente PostgreSQL?
- Realizar un Backup de una BD de Oracle. ( Mediante Export)
- Listar las tablas en Oracle
- Importar una bases de datos Oracle mediante imp
- Web SQL Database, tu base de datos en HTML5
- Twitter planifica la migración de MySQL a Cassandra DB
- SQL Datamodeler – Modelador de datos [Oracle] [How to Linux]
- Liberada nueva version de la base de datos NoSQL MongoDB
- SAP planea comprar el fabricante de software Sybase
- MySQL supera a Oracle tras su adquisición, y los desarrolladores prefieren Linux
- Disponible PostgreSQL 9.0
Comentarios
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!