Deshabilitar la carga de ficheros en MySQL

Un posible ataque que se puede realizar contra cualquier aplicación web y, por extensión, contra el gestor de base de datos y el sistema donde este corre, son las SQLi. Sí, al sistema operativo, también. ¿Cómo? Pues, aprovechando una SQLi descubierta, intentar descargar ficheros críticos del sistema. Qué ficheros se podrá cargar dependerá del usuario con el que se esté ejecutando el demonio del gestor de base de datos. Es decir, podrá descargar aquellos para los que tenga permisos de lectura (y /etc/passwd lo puede leer cualquier usuario, ¡recuérdalo!)

Para evitar la fuga de información crítica de nuestro sistema, podemos:

  1. Como buena práctica recomendada para todos los servicios, ejecutar el demonio con un usuario con los mínimos permisos necesarios.
  2. Otra buena práctica recomendada: “enjaular el servicio” Con chroot impedir el acceso al sistema de archivos de nuestro sistema.
  3. Y el caso que nos ocupa: Dehabilitar la carga del ficheros en el gestor. Para el caso del MySQL en /etc/mysql/my.cnf, escribiremos

[mysqld]

local-infile=0

secure-file-priv=/dev/null

Si queremos hacerlo solo para determinados usuarios (los que usan nuestra aplicación web para conectarse a la base de datos son unos excelentes candidatos 😉 ), basta con revocar el privilegio file_priv a esos usuarios:

REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] ...
    ON [object_type] {tbl_name | * | *.* | db_name.*}
    FROM user [, user] ...
FLUSH PRIVILEGES;

Referencias


Centralizar los logs en un servidor dedicado sólo a almacenar nuestros eventos

Es una buena práctica es centralizar los eventos de nuestros sistemas en un servidor cuya única función sea recoger los logs de nuestros sistemas, clasificarlos y almacenarlos (y por tanto, otra excelente buena práctica es que en ese servidor solo ofrezcamos un servicio: el de recogida de eventos). Algunos argumentos para defender esta opinión son:

  • Mejora la seguridad
  • Permite centralizar los análisis de los eventos
  • Puede actuar como “copia de seguridad”
  • ….

Una buena opción en GNU/Linux es el uso de rsyslog cuya configuración es sencilla:

Leer más


Estado de equipos con Nagios

Cuando queremos comprobar el estado de uno o varios servicios, una herramienta muy útil es Nagios. En la Unidad de laboratorios de la Escuela Politécnica la usamos con un gran resultado.

Explicando en clase su configuración y, especialmente, en la clase de prácticas, muchos alumnos han tenido problemas cuando, haciendo caso del enunciado de prácticas, han monitorizado un servicio web externo al laboratorio; muchos optaron por www.eps.ua.es.

Leer más


Raspberry PI

Raspberry Pi es una placa de bajo coste, pequeña para la potencia que tiene (fijaos en la segunda foto y comparadla con el ratón) y en cuyo diseño se incluye un System-on-a-chip Broadcom BCM2835, que contiene un ARM1176JZF-S a 700MHz (puede llegar a 1GHz), salida HDMI y S-Video y 512 MB de memoria RAM. También usa una tarjeta SD como almacenamiento permanente pero no incluye ni disco duro ni fuente de alimentación ni carcasa.

Leer más


Las cookies nos permiten ofrecer nuestros servicios. Al utilizar nuestros servicios, aceptas el uso que hacemos de las cookies. Más información.