Virtualbox, No se puede cargar el servicio de host USB

He actualizado la versión de Virtualbox a la 1.5.2 y ahora tengo otro error similar a el que tenia anteriormente: Not permitted to open the USB device, check usbfs options, trate de cambiar los permisos de /etc/udev/rules.d/40-permissions.rules pero aun me marcaba el error de USB

Could not load the Host USB Proxy Service (VERR_FILE_NOT_FOUND). The service might be not installed on the host computer.

Ahora he encontrado la solución, el fallo se encuentra en el archivo /etc/fstab en mi fstab no tenia la siguiente linea

#usbfs
none /proc/bus/usb usbfs devgid=46,devmode=664 0 0

Asi que la agregue y listo!!, reinicio las particiones con

sudo mount -a

y ahora en VirtualBox ya puedo agregar dispositivos USB (seleccionar la maquina virtual y luego configuración)

Recordar contraseña para la red inalambrica – nm-applet

Si estas cansado de que cada vez que inicias Gnome y deseas conectarte a la red inalambrica te pide la clave ya sea WEP / WAP, o si ya tienes esa clave en tu keyring (anillo de contraseñas) y aun asi te pide una clave, algo como esto:

Titulo: Desbloquear anillo

Contenido: La aplicacion”nm-applet” (USER/BIN/nm-applet) quiere acceder al anillo de claves predeterminado, pero esta bloquedado.

Bueno, si tienes alguno de estos dos problemas, aquí vas a encontrar al solución. :-P

Primero ocupas tener la clave de tu manejador de contraseñas o keyring sea igual, a la que entras a Gnome (tu usuario del sistema), en caso que no sea la misma debes de borrar la clave vieja del keyring mediante el siguiente comando:

rm /.gnome2/keyrings/default.keyring

Ten encuenta que al ejecutar ese comando, se borra TODAS tus claves, tanto la del keyring como la del Wifi, la otra es poner la del sistema igual a la del keyring

sudo passwd MI_USUARIO

Ahora que tenemos el primer requisito cumplido, procedemos con la instalación de programa que nos va a controlar todo este rollo de los passwords

sudo apt-get install libpam-keyring

Despues puedes encontrarte con dos posibles casos al iniciar Gnome mediante GDM, esto es para editar el archivo correspondiente y agregar una linea especial para el libpam-keyring

– Tienes el inicio de sesión de GDM automaticamente, entonces ocupas entrar al archivo: /etc/pam.d/gdm-autologin
– Tienes el inicio de sesión desactivado de GDM, osea que cada usuario escribe su contraseña y nombre de usuario, entonces ocupas entrar al archivo: /etc/pam.d/gdm

Una vez identificado como entras a Gnome entras al archivo correcto (siempre como root) y al final agregar la siguiente linea

@include common-pamkeyring

En el caso de equivocarte del inicio automático, te va a pedir la clave después de GDM y antes de Gnome, pero bueno!, algo es algo.

Y listo!! ya no mas molestias, excepto en el caso automatico de GDM B-)

DenyHosts: Cómo prevenir ataques de diccionario o fuerza bruta contra SSH

Si estamos preocupados por la seguridad de nuestros servidores y mas del servicio/protocolo Secure Shell cuando esta relacionado con ataques de fuerza bruta ya sea por medio de diccionarios, entonces debemos de utilizar DenyHosts, esta aplicación nos permitirá detectar posibles ataques antes de que estos hagan efecto.

La manera en que funciona DenyHosts es que monitorea el archivo /var/log/auth.log (en el caso de Debian – Ubuntu…) para detectar errores de autentificación al sistema y despues bajo ciertas reglas bloquer la IP o servicio que queramos mediante el archivo /etc/hosts.deny

Bueno, ahora que conocemos como funciona DenyHosts, es hora de empezar con la instalación, y para variar!! la forma mas sencilla (mas que en windows) es con un simple:

apt-get install denyhosts

Despues procedemos con la configuración que se encuentra en /etc/denyhosts.conf algunos de los parametros importantes son:

# Lugar donde se encuentra nuestro archivo de Log, en este caso para Debian
SECURE_LOG = /var/log/auth.log
# Lugar donde se encuentra nuestro archivo de bloqueo de hosts
HOSTS_DENY = /etc/hosts.deny
# El periodo en el que la IP va a ser eliminada de la lista de bloqueo, puede ser en hora (h), dias (d)…
PURGE_DENY = 12h
# Cual servicio queremos que sea bloqueado, puede ser sshd, o ALL para todos
BLOCK_SERVICE = ALL
# Numero de veces de error cuando se ingresa con un usuario NO existente
# Se supone que el root conoce a sus usuarios y no debe de equivocarse
DENY_THRESHOLD_INVALID = 2
# Numero de veces de error con un usuario SI existente en el sistema
DENY_THRESHOLD_VALID = 10
# Numero de veces de error con el usuario ROOT
DENY_THRESHOLD_ROOT = 2
DENY_THRESHOLD_RESTRICTED = 1
WORK_DIR = /var/lib/denyhosts
# Reportar entradas sospechosas
SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES
# Buscar el nombre del host del atacante si este esta disponible
HOSTNAME_LOOKUP=YES
LOCK_FILE = /var/run/denyhosts.pid
# Email para notificar los bloqueos
ADMIN_EMAIL = cliente@servidor.com
SMTP_HOST = localhost
SMTP_PORT = 25
SMTP_FROM = DenyHosts
SMTP_SUBJECT = DenyHosts Reporte
SMTP_DATE_FORMAT = %a, %d %b %Y %H:%M:%S %z
AGE_RESET_VALID=5d
AGE_RESET_ROOT=25d
AGE_RESET_RESTRICTED=25d
AGE_RESET_INVALID=10d
DAEMON_LOG = /var/log/denyhosts
DAEMON_SLEEP = 30s
DAEMON_PURGE = 1h

Y listo, reiniciamos el servicio DenyHosts / etc/init.d/denyhosts restart ahora solo falta esperar los correos los cuales llegan con el siguiente formato:

Added the following hosts to /etc/hosts.deny:

66.189.86.152 (66-189-86-152.static.oxfr.ma.charter.com)
212.227.97.129 (s15260807.onlinehome-server.info)
85.25.149.125 (static-ip-85-25-149-125.inaddr.intergenia.de)

A lo cual nos ha bloqueado 3 direcciones IP., ahora ya podemos dormir tranquilos, por lo menos algunas noches :-)

ssh_exchange_identification: Connection closed by remote host

He tenido algunos problemas con un servidor Debian y al momento de querer entrar mediante SSH me aparece un mensaje indicándome que la conexión ha sido cerrada por el host remoto, ingesu!! ahora ni como entrar al servidor, así que tengo que reiniciarlo y volver a intentar entrar (supongo que al reiniciar se borra la configuración de bloqueo) y bueno! ya no mas mensajes de:

ssh_exchange_identification: Connection closed by remote host

Y realizando un debug al ssh me aparece la siguiente información:

user@my-laptop: $ ssh -v servidor-remoto.com
OpenSSH_4.6p1 Debian-5build1, OpenSSL 0.9.8e 23 Feb 2007
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to servidor-remoto.com [64.233.167.99] port 22.
debug1: Connection established.
debug1: identity file /home/user/.ssh/id_rsa type -1
debug1: identity file /home/user/.ssh/id_dsa type -1
ssh_exchange_identification: Connection closed by remote host

Ahora bien, para solucionar este problemilla, solo necesitan agregar SSHD: ALL a su archivo /etc/hosts.allow

echo ‘SSHD: ALL’ >> /etc/hosts.allow

Y listo!!!, ya no mas mensajes de ssh_exchange_identification: Connection closed by remote host

Bloquear ataques DoS en apache con mod_evasive

Si deseas prevenir un ataque de Denegación de servicio (DoS) cuyo objetivo es colapsar el servidor durante un periodo de tiempo para que este no esté en funcionamiento, ahora bien, si nuestro servidor es Apache podemos contar con el módulo llamado mod_evasive.

El módulo de seguridad para Apache, mod_evasive cuyo propósito no es otro que el de prevenir o anular ataques de Denegación de Servicio o de fuerza bruta basados en peticiones masivas al servidor de páginas web (HTTP DoS). A través del módulo tendremos la posibilidad de redirigir el tráfico malicioso hacia otra aplicación de control que terminará de filtrar las peticiones (firewalls, scripts personalizados, …).

El funcionamiento de mod_evasive se basa en la prevención de ataques mediante la comparación de la IP solicitante con una tabla dinámica que registra las páginas accedidas a nuestro servidor que provienen de dicha IP y la frecuencia de accesos. En el preciso instante en que una máquina solicita una dirección del servidor Apache, mod_evasive filtrará cualquier dirección IP que cumpla con los siguientes requisitos:
* La IP está en la lista de direcciones a filtrar.
* La IP cliente ha solicitado la misma dirección más veces que la cantidad máxima especificada en el fichero de configuración.
* El número de peticiones de la IP cliente excede del máximo permitido en un intervalo de tiempo predeterminado en la configuración.

Si una IP resulta filtrada por cumplir con alguna de las condiciones anteriores, recibirá un código 403 (Forbidden) en respuesta a su petición y le será denegado el acceso durante un periodo de tiempo configurable.

Ahora viene la parte interesante que es la instalación y configuración, antes de empezar debemos de contar con las herramientas necesarias para compilar programas en Linux y en especial para Apache, en este caso estamos usando una versión estilo apt (Debian, Ubuntu…)

apt-get install apache2-prefork-dev gcc

Despues procedemos a descargar el codigo fuente que encontramos en la página oficial del proyecto mod_evasive: http://www.zdziarski.com/projects/mod_evasive (al momento de escribir esta nota la versión es la 1.10.1)

Ahora procedemos a descargar y descompactar el codigo, de preferencia en la carpeta temporal /temp

wget http://www.zdziarski.com/projects/mod_evasive/mod_evasive_1.10.1.tar.gz
tar xvzf mod_evasive_1.10.1.tar.gz
cd mod_evasive
/usr/bin/apxs2 -i -c mod_evasive20.c

Ahora vamos a crear el archivo de configuración de Apache2 dentro de la carpeta mods-enabled

nano /etc/apache2/mods-available/evasive.load

Y dentro del archivo ponemos la siguiente linea, que es donde esta nuestro modulo compilado (mod_evasive20.so)

LoadModule evasive20_module /usr/lib/apache2/modules/mod_evasive20.so

Despues sigue ligar la carpeta mods-available con los mods-enabled

ln -s /etc/apache2/mods-available/evasive.load /etc/apache2/mods-enabled/evasive.load

Y listo, solo falta configurar los parametros, tomando en cuenta la siguiente descripción:

* DOSHashTableSize – Establece el número de nodos a almacenar para cada proceso de peticiones de la tabla hash (contenedor asociativo de recuperación de peticiones por medio de claves que agiliza las respuestas del servidor). Si aplicamos un número alto a este parámetro obtendremos un rendimiento mayor, ya que las iteraciones necesarias para obtener un registro de la tabla son menores. Por contra, y de forma evidente, aumenta el consumo de memoria necesario para el almacenamiento de una tabla mayor. Se hace necesario incrementar este parámetro si el servidor atiende un número abultado de peticiones, aunque puede no servir de nada si la memoria de la máquina es escasa.
* DOSPageCount
– Indica el valor del umbral para el número de peticiones de una misma página (o URI) dentro del intervalo definido en DOSPageInterval. Cuando el valor del parámetro es excedido, la IP del cliente se añade a la lista de bloqueos.
* DOSSiteCount
– Cuenta cuántas peticiones de cualquier tipo puede hacer un cliente dentro del intervalo definido en DOSSiteInterval. Si se excede dicho valor, el cliente queda añadido a la lista de bloqueos.
* DOSPageInterval
– El intervalo, en segundos, para el umbral de petición de páginas.
* DOSSiteInterval
– El intervalo, en segundos, para el umbral de petición de objetos de cualquier tipo.
* DOSBlockingPeriod
– Establece el tiempo, en segundos, que un cliente queda bloqueado una vez que ha sido añadido a la lista de bloqueos. Como ya se indicó unas líneas atrás, todo cliente bloqueado recibirá una respuesta del tipo 403 (Forbidden) a cualquier petición que realice durante este periodo.
* DOSEmailNotify – Un e-mail será enviado a la dirección especificada cuando una dirección IP quede bloqueada.
* DOSSystemCommand – El comando reflejado se ejecutará cuando una dirección IP quede bloqueada. Se hace muy útil en llamadas a herramientas de filtrado o firewalls. Usaremos %s para especificar la dirección IP implicada. Por ejemplo, podemos establecer su uso con iptables de la forma siguiente para bloquear el acceso al puerto 80

DOSSystemCommand “/sbin/iptables -I INPUT -p tcp –dport 80 -s %s -j DROP”

O bien!! bloquear todooo el acceso al servidor, esto esta mejor.

DOSSystemCommand “sudo -u root /sbin/iptables -A INPUT -s %s -j DROP”

* DOSLogDir – Establece una ruta para el directorio temporal. Por defecto, dicha ruta queda establecida en /tmp, lo cual puede originar algunos agujeros de seguridad si el sistema resulta violado.
* DOSWhitelist – La dirección IP indicada como valor del parámetro no será tenida en cuenta por el módulo en ningún caso. Para cada dirección IP a excluir ha de añadirse una nueva línea con el parámetro. Por ejemplo, dejaremos fuera del chequeo del módulo a un posible bot (el de Google) que use los siguientes rangos de direcciones:

DOSWhitelist 66.249.65.*
DOSWhitelist 66.249.66.*

Y bien, ya que conocen que significa cada parametro, aquí esta una configuración opcional que se debe de guardar en el archivo /etc/apache2/conf.d/evasive


DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 600
#DOSEmailNotify cliente@servidor.com
#DOSSystemCommand “/sbin/iptables -I INPUT -p tcp –dport 80 -s %s -j DROP”
DOSSystemCommand “echo %s >> /tmp/mod_doesevasive.log”

#GoogleBot
DOSWhitelist 66.249.65.*
DOSWhitelist 66.249.66.*

Y para probar si realmente funciona todo, en la carpeta donde descompactamos el tar.gz viene un archivo llamado test.pl, solo es cosa de ejecutarlo con:

perl test.pl

Y despues de ciertas peticiones vamos a ver el famoso error HTTP/1.1 403 Forbidden y listo!!, eso significa que todo funciona a la perfección, ahora ya tenemos un Apache un poco mas protegido!..