EtiquetaTips

Tip: Destrucción de archivos y datos en GNU/Linux

Cuando digo “destrucción” de información no me refiero a simpemente eliminarla o purgarla del disco duro, sino a sobrescribirla y hacer imposible su restauración. Existen varias utilidades y formas de hacerlo, pero yo les mostraré tres utilidades/herramientas que nos ayudarán: dd, shred y wipe. La primera, nos ayudará a zero-izar un sector de nuestro disco duro, memoria o lo que sea. Las otras dos son herramientas que nos permitiran sobreescribir y eliminar definitivamente un archivo para que sea irrecuperable. shred viene por defecto en casi todas las distribuciones unixlike, wipe se puede instalar en cualquiera.

Según los manpages,

wipe:
Wipe is a secure file wiping utility. There are some low level issues that must be taken into consideration. One of these is that there must be some sort of write barrier between passes. Wipe uses fdatasync(2) (or fsync(2)) as a write barrier, or if fsync(2) isn’t available, the file is opened with the O_DSYNC or O_SYNC flag. For wipe to be effective, each pass must be completely written. To ensure this, the drive must support some form of a write barrier, write cache flush, or write cache disabling. SCSI supports ordered command tags, has a force media access bit for commands, and write cache can be disable on mode page 8. IDE/ATA drives support write cache flushes and write cache disabling. Unfortunetly, not all drives actually disable write cache when asked to. Those drives are broken. Write caching should always be disabled, unless your system is battery backed and always powers down cleanly.

shred:
Overwrite the specified FILE(s) repeatedly, in order to make it harder for even very expensive hardware probing to recover the data.

dd:
Copy a file, converting and formatting according to the operands

Vamos a lo practico.

Seguir leyendo

Tip: Mantener sesiones ssh activas con autossh

autossh (1) – monitor and restart ssh sessions

Esta herramienta es muy util cuando queremos mantener las sesiones activas y mantener los tuneles que hemos hecho con ssh. En simples palabras lo que hace este programita es monitorear la sesión y cuando se pierde la conexion, vuelve a conectarse.
Lo ideal es trabajar con llaves públicas/privadas para autenticarse con el servidor, para que al intentar restablecer la conexion no pida la contraseña. Le pasamos a “autossh” los mismos parámetros que a ssh, por ejemplo:
autossh -L5022:10.0.0.11:22 -L5023:10.0.0.15:22 -L5024:10.0.0.20:22 10.0.0.1
Para hacer un bind de puertos locales a distintas maquinas remotas. O
autossh -R2200:localhost:22 example.com
Para hacer bind de puertos remotos hacia nuestra maquina local.

Link: https://www.harding.motd.ca/autossh/

Tethering con un BlackBerry 8520 en Archlinux via bluetooth

Si bien lo probé con Archlinux, tambien hay evidencias que funciona en Debian aunque, independiente de la distribución, debería funcionar para cualquiera. Tambien debería funcionar con cualquier celular que soporte “Dial Up“.
Debemos tener instaladas las herramientas de bluetooth: bluez-utils bluez-libs dbus wvdial

Primero, debemos poner el bluetooth del teléfono en modo escucha y escanearlo con nuestro disponisitivo, para ver si soporte el modo.

[root@balcebu zerial]# hcitool scan
Scanning ...
F4:0B:93:DB:90:FF BlackBerry 8520
[root@balcebu zerial]#

Y vemos si soporta el modo Dial Up

root@balcebu zerial]# sdptool browse F4:0B:93:DB:90:FF
Browsing F4:0B:93:DB:90:FF ...
[...]
Service Name: Dialup Networking
Service RecHandle: 0x10000
Service Class ID List:
"Dialup Networking" (0x1103)
"Generic Networking" (0x1201)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 1
Profile Descriptor List:
"Dialup Networking" (0x1103)
Version: 0x0100
[...]

En este caso soporta, en el canal 1.

Seguir leyendo

[Tip] AND (&&) y OR (||) en bash

Parece algo muy simple, pero estoy seguro que muchos no lo saben: Usar los operadores lógicos && y || al momento de crear scripts o ejecutar comandos en bash.
Podemos condicionar la ejecución de un comando en función de otro; por ejemplo, si falla el primer comando, entonces no ejecuto el segundo, o bien, si no se ejecuta el primero entonces ejecuto el segundo, dependiendo de lo que necesitemos.
Ejemplos:

Ejecutar el comando2 solo si se ejecuta el comando1:
$ comando1 && comando2

Ejecutar el comando2 solo si no se ejecuta el primero
$ comando1 || comando2

Sería así:
[zerial@balcebu ~]$ comando1 || echo "Como comando1 no existe, entonces ejecuto el echo"
bash: comando1: command not found
Como comando1 no existe, entonces ejecuto el echo
[zerial@balcebu ~]$ echo "El primer echo se ejecuta, pero el segnudo no" || echo "Como comando1 no existe, entonces ejecuto el echo"
El primer echo se ejecuta, pero el segnudo no
[zerial@balcebu ~]$

Es muy útil cuando queremos programar scripts para ejecutar tareas condicionadas a otros comandos.

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.