CategoríaTips

Filtrar inyecciones SQL y XSS con Mod_Rewrite en Apache

Revisando un servidor me encontré con la siguientes reglas para el módulo ModRewrite de apache, que nos ayudan a filtrar las URLs potencialmente maliciosas. Este codigo nos va a ayudar a proteger el servidor de las aplicaciones que tengan fallas de seguridad.

RewriteEngine On         
########## Begin - Rewrite rules to block out some common exploits
        #
        # Block out any script trying to set a mosConfig value through the URL
        RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
        # Block out any script trying to base64_encode crap to send via URL
        RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]
        # Block out any script that includes a <script> tag in URL
        RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
        # Block out any script trying to set a PHP GLOBALS variable via URL
        RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
        # Block out any script trying to modify a _REQUEST variable via URL
        RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
        # Send all blocked request to homepage with 403 Forbidden error!
        RewriteRule ^(.*)$ index.php [F,L]
######### End - Rewrite rules to block out some common exploits

Nos protegerá de ataques XSS y SQL Injection. Este script podría afectar el funcionamiento de algunas aplicaciones.

[Tip] Limitar el uso de ancho de banda con Trickle

trickle is a portable lightweight userspace bandwidth shaper. It can run in collaborative mode (together with trickled) or in stand alone mode.

Con esta herramienta podemos limitar la velocidad de subida y bajada de cualquier aplicación. Como dice en la descripción, puede trabajar “solo” y tambien como demonio. Si ejecutamos el demonio, todas las aplicaciones que se corran usando trickle (sin especificar subida ni bajada) correrán con el límite señalado. Por ejemplo, si corremos el demonio con los parametros:

trickled -d 150 -u 20
Establecemos que la velocidad de bajada y subida será de 150 y 20 Kb/s, respectivamente. Desde ahora, todas las aplicaciones corridas con trickle tendran esa configuración, por ejemplo:

trickle axel https://domain.com/download.tbz2
Limitará la bajada a 150kb/s.

Podemos pasarle parametros a trickle directamente, por ejemplo trickle -d 100 -u 100 wget https://domain.com/file.tbz2, de esta forma se limitara a wget solo descargar a 100kb/s.

Aunque wget tiene la opción –limit-rate que nos permite limitar el RATE, y –max-speed que nos permite limitar la máxima velocidad en axel, trickle nos puede servir para limitar el ancho de banda de cualquier aplicación.

Tip: Ver y modificar los parametros de tu tarjeta de red

Para ver y modificar los parametros de configuración de tu tarjeta de red puedes usar las herramientas mii-tool y ethtool, aunque la primera herramienta está obsoleta (deprecated), aún sirve para sistemas con instalaciones antiguas.

mii-tool – view, manipulate media-independent interface status
ethtool – Display or change ethernet card settings

Para modificar la velocidad de transferencia de las tarjetas usamos el siguiente comando:

ethtool eth1 speed 1000 duplex full

Para dejarla a 1Gbps full duplex. Podemos setear la tarjeta a 10, 100 o 1000mbps según su capacidad, tambien decirle si es half o full duplex, activar y desactivar la autonegociación, modiicar el tamaño de los Jumbo Frames, etc.

Para conocer la configuración actual de la tarjeta de red sólo debemos ejecutar ethtool y especificarle el dispositivo:

DPMS y ScreenBlanking: Controlar el ahorro de energía de la pantalla

Despues de una actualización, magicamente, cuando veia alguna película en mi portatil despues de 10 minutos se iba a negro y se apagaba la pantalla. Es un comportamiento normal si pensamos en que el laptop estaba inactivo, pero no me sucedía cuando dejaba corriendo VLC o mplayer. Ultimamente comenzó a suceder … entonces pensé inmediatamente que era la opción DPMS de la X.

Probé poniendo la opción Options “DPMS” “false”, configurando la X usando xset para desactivar la opción de ahorro de energia y tambien probé con vbetool, pero ninguna me dio resultado.

Buscando y buscando, encontré que existen dos opciones: DPMS y ScreenBlanking.

ScreenBlanking: Es un “apagado de pantalla/monitor” de mentira, hace que la pantalla se “apague” y se ponga negra, pero realmente sigue prendida, por lo que solamente le baja el brillo. Por defecto está seteado en 10 minutos.

DPMS: Esta es una función real del manejo de energia para las pantallas. Por defecto pasa a un estado “StandBy” luego de 20 minutos, “Suspend” luego de 30 minutos y “Off” luego de 40.

Para manejar las configurar los parametros de estas opciones podemos hacerlo mediante la configuración de la X o usando xset.

Seguir leyendo

Script monitor de sistemas de archivos y particiones

Existen herramientas que nos permiten monitorear distintas cosas en un parque de servidores, como Zabbix, Nagios, etc. Pero hay veces que no es posible, ya sea por recursos o por tiempo, implementar una solución de monitoreo de alto nivel, por lo que recurrimos a los scrtips. Estoy seguro que bash, las llaves publicas y privadas para la autentificación, y cron son unos de nuestros mejores amigos al momento de querer monitorear o administrar máquinas simultaneamente.

Con du podemos saber el uso de disco de nuestro sistema y con un pequeño script en bash podemos mejorar la salida de este comando.

ssh 10.0.0.56 -p5022 "df -hPl"|awk -F ' ' '{print $1,$4,$6,$5}' |egrep -v "Avail|Dispo|Use|Use"

Esto nos devuelve en 4 columnas el dispositivo, espacio disponible, punto de montaje y porcentaje usado.

Algo similar a:

/dev/mapper/VolGroup_25980-LogVol1 3.5G / 75%
/dev/sda1 80M /boot 16%
none 16G /dev/shm 0%
/dev/mapper/VolGroup_25980-LogVolHome 30G /home 69%
/dev/mapper/VolGroup_25980-LogVol2 4.6G /tmp 1%
/dev/mapper/VolGroup_25980-LogVol5 6.6G /usr 29%
/dev/mapper/VolGroup_25980-LogVol4 14G /var 87%
/dev/mapper/VolGroup_25980-mysql 7.0G /var/lib/mysql 63%

Seguir leyendo

Creación de passwords aleatorias con /dev/urandom

/dev/random es un archivo especial que sirve como un generador de números aleatorios, o un generador de números seudo-aleatorios. Permite el acceso a ruido ambiental recogido de dispositivos y otras fuentes […] /dev/urandom que reutiliza la fuente interna para producir más bits seudoaleatorios. Esto implica que llamadas de lectura nunca se bloquearán, pero la salida puede contener menos entropía que una lectura de /dev/random. La intención es servir como un generador de números seudoaleatorios criptográficamente seguro. Éste puede ser utilizado en aplicaciones que no necesiten de tanta seguridad. (Wikipedia)

Para generar password aleatorias usaremos una combinación de los comandos tr y head, para poder hacer legible para humanos los bits aleatorios que nos entregará urandom.

Seguir leyendo