Transparencias de clase sobre “Hacking con buscadores”

Continúo con la “saga” de publicaciones de viejas transparencias de clase de Administración e Instalación de Redes de Computadores. Hoy toca el turno de la clase que dedicaba a Hacking con buscadores y que cuya principal fuente de información es el libro “Hacking con buscadores: Google, Bing & Shodan” de Enrique Rando publicado por Informática64 (ahora, 0xword)

¡Espero que os sea útil!


Thepiratebay.se, bloqueo y técnicas para evadirlo

Creo que casi todos conocemos ya que un juez ha ordenado bloquear el acceso a The piratebay desde España. Esta orden afecta a los proveedores de servicio españoles que suelen cumplirlo mediante:

  • Las resoluciones DNS
  • Inspección de paquetes

(El que no usen un filtro contra la IP es porque esa IP puede estar asignada para más de un sitio web y estos no deberían “pagar” por el hecho denunciado si no son los responsables)

Si se aplica el bloqueo en el DNS, con indicarle a nuestros sistemas que usen otros que no se hayan visto afectados por la orden sobra para que podamos seguir accediendo a dicho sitio. Por ejemplo, podemos usar openDNS o los de Google (8.8.8.8).

Si se realiza inspección de paquetes, con conectarnos mediante HTTPS sobra para acceder al sitio. En la inspección de paquetes lo que se busca es información relevante para realizar la tarea encomendada (normalmente, se busca en el nivel de aplicación). Para este caso, lo normal es que se busque la cabecera host del protocolo HTTP ya que se encarga de identificar el sitio al que nos queremos conectar. Si usamos HTTPS esta información va cifrada y “no la encontrará el analizador”.

Si se usaran combinadas las 2 técnicas, tendríamos que combinar las 2 “soluciones”. No es necesario ni VPNs ni TOR como se menciona en este artículo sobre cómo saltarse el bloqueo, aunque, evidentemente, son buenas opciones que, además, nos dan otras ventajas añadidas a simplemente conectarnos a ThepirateBay.se

¡Espero que os sea útil!

PD: No soy usuario de este sitio, pero he probado desde mi PC, con Vodafone como ISP, y  funciona perfectamente  la conexión con HTTPS y no con HTTP.

PD2: Conseguir el efecto que pretende la orden del juez es muy complicado tal y como funciona y se organiza Internet

 

 


ownCloud y Raspberry PI

Tras un aviso de Dropbox para que reduzca los muchísimos GB que me sobran al haber “caducado la oferta” por pertenecer a la UA, he decidio crearme mi “ownCloud” con un disco duro de 1TB que tenía y una Raspberry PI.

Sobre como instalarlo hay muchas entradas en la red (I, II, III, IV,  …) así que poco más que añadir o comentar, salvo:

Leer más


Transparencias de clase sobre DHCP

Tal y como comentaba ayer en esta entrada, voy a ir dejando todas mis transparencias de clases, ponencias, conferencias y cursos en Slideshare.

Hoy toca el turno del servicio DHCP, clase que impartía en la asignatura de Administración e Instalación de Redes de Computadores en las titulaciones de Informática.

De las diferentes versiones (en función de los años) que tengo, he decidido publicar estas:


Transparencias de la clase sobre DNS en el Grado de Informática

Revisando el material de clase que tengo, he comprobado que creé transparencias de temas que, casi seguramente, no vuelva a utilizar y antes de que se pierdan en la profundidad de mi sistema, las he dejado (o dejaré ya que tengo que revisar muchas de ellas) en Slideshare.

De la asignatura de Administración de Redes de Computadores, he dejado, por ahora, la dedicada al servicio DNS.

Aquí la tenéis:

¡¡¡Espero que os sean útiles!!!


list open files (lsof)

lsof es una utilísima orden que nos muestra la información relacionada con los descriptores de archivo de nuestro sistema. Por ejemplo, cuando queremos desmontar un sistema de archivo y la respuesta es “Error: sistema ocupado”, con ‘lsof +D /punto_de_montaje‘ podemos saber todos los procesos (la primera columna de la fila, o filas, que obtenemos como respuesta) que están utilizando dicho sistema de archivos (y actuar en consecuencia).

¿Qué más podemos saber con él? Pues conocer/obtener el listado de:

Leer más


Contraseñas, esas grandes desconocidas e ignoradas…

La forma en la que nos identificamos ante los gestores de nuestra identidad digital hará que esta sea más o menos fiable y, además, que no puedan “robárnosla” fácilmente. Aunque nada es imposible, como en muchos otros ámbitos de nuestra vida, nuestra seguridad digital reside en una serie de obstáculos que debemos situar entre los posibles atacantes y nosotros; complicarles en trabajo, sin complicárnoslo a nosotros mismos.

Al acceso a casi todos nuestros servicios reside, como mínimo, en una contraseña y la seguridad de esta empieza en una correcta selección de la misma:

Una buena contraseña:

  • Debe tener, al menos, seis caracteres alfanuméricos y uno o dos signos de puntuación, carácter numérico o especial o una mezcla de letras mayúsculas y minúsculas. Es decir, longitud más variedad.
  • Si se está cambiando una contraseña, la nueva debería tener al menos tres caracteres que no estuvieran en el password anterior.
  • Puede basarse en la concatenación de dos o más palabras o partes de palabras. Puede basarse en la inclusión de una palabra dentro de otra palabra. Por ejemplo, cladificilve que tiene la palabra difícil dentro de la palabra clave. Puede basarse en el intercalado de las letras de una o más palabras: por ejemplo, ‘glaotroo’ intercala ‘loro’ y ‘gato’.
  • Por supuesto, NO usar la misma contraseña para distintos servicios.
  • Importante: que siga un patrón fácil de recordad para nosotros y que implique el cumplimiento de las características anteriores y ninguna de las siguientes.

Y lo que no debe ser es:

  • Cualquier parte del nombre del usuario o el nombre de algún miembro de su familia o amigos.
  • No debe ser un número significativo para el usuario o para alguien cercano al usuario como números de la seguridad social, matricula del coche, número de teléfono, fechas de nacimiento, etc.
  • No debe formar parte de un diccionario.
  • No debe estar escrita en ningún sitio, solo debe residir en nuestra memoria y por supuesto, nunca, pero nunca, nunca, deberíamos comunicársela a otra persona.

Si tenemos dudas de lo buena que es, existen comprobadores como este

Si estamos interesados en mejorar nuestra seguridad digital, además, deberemos exigir, configurar y utilizar mecanismos MFA además de cambiar, periódicamente, de contraseña.

¡Ah! Y cuidado con los mecanismos de recuperación de contraseñas. Si la fortaleza de nuestra identidad recae en un elemento, debemos fortificar lo.

PD: Si no queremos calentarnos la cabeza, siempre podemos usar una aplicación de gestión de contraseñas. Haberlas, haylas…


Otra protección más con iptables y módulo recent

Al hilo de esta entrada, si lo que queremos es controlar, incluso, un posible escaneo de puertos desde una IP, y no solo peticiones abusivas a uno de nuestros servicios que es de lo que trataba la entrada anterior, tenemos:

iptables -I INPUT  --m state --state NEW -m recent  --set
iptables -I INPUT  --m state --state NEW -m recent  --update --seconds 60 --hitcount 5 -j DROP

Con la ejecución de estas 2 órdenes, cualquier intento de realizar más de 5 conexiones (destinados a cualquiera de nuestros puertos) desde una misma IP, producirá un bloqueo de las conexiones desde esta IP durante 60 segundos.

Este es un mecanismo fácil, rápido y eficiente de control de las peticiones que recibimos en nuestros servidores y más ligero que opciones como la comentada aquí, ya que detectamos y protegemos con el módulo recent de iptables, en un nivel más bajo y que apenas introduce carga al sistema.

Como ya comenté, lo podemos hacer también en routers, solo que afecta a otras tablas/cadenas (filter/FORWARD, nat/PREROUTING,…) y opciones a considerar.

¡Espero que os sea útil!

 Referencias

  1. man iptables

Más sobre fortificación de SSH

En cuanto ponemos un servicio SSH accesible desde cualquier parte de Internet, los ataques de fuerza bruta y demás se suceden casi al instante (es una licencia, evidentemente, hay un tiempo de “descubrimiento”). Nos llegan desde todo el globo terráqueo por lo que, hablando de protección y suponiendo que nunca accederá un usuario desde determinados continentes o países, aplicar la Geolocalización IP para deshabilitar conexiones se convierte en una opción muy interesante. Aún reconociendo la importancia de realizar buenos filtros y de implementar mecanismos de autenticación multifactor, en esta entrada nos vamos a centrar solo en las opciones de SSH básicas para su protección. He tomado como base, la clase que impartía en Administración de Servicios de Internet dedicada a SSH y su fortalecimiento.

Las opciones con las que vamos a intentar mejorar y adaptar la configuración de nuestro servicio a nuestra política de seguridad y a nuestras necesidades, las encontraremos en el fichero /etc/ssh/sshd_config.

Empecemos….

Leer más


Fortificando el acceso con SSH: 2FA con Google Authenticator

Como comentaba al final de la entrada anterior, quien disponga de un hosting propio al que se conecte con sesiones de trabajo también debería estar interesado en fortificar este acceso utilizando un mecanismo 2FA en el servicio SSHGoogle Authenticator es una buena opción, entre otros argumentos, nos centraliza en la misma herramienta el acceso a múltiples servicios: los de Google, Redes Sociales,…

Para el caso que nos ocupa, debemos, para CentOS:

  • Instalar en el servidor el software necesario para la autenticación.
yum install pam-devel make gcc-c++ wget 
wget http://google-authenticator.googlecode.com/files/libpam-google-authenticator-1.0-source.tar.bz2
tar xvf libpam-google-authenticator-1.0-source.tar.bz2 && cd libpam-google-authenticator-1.0
make
sudo make install
  • Este sistema está basado en el tiempo y, por tanto, debemos asegurarnos que la fecha y hora de nuestros sistemas estén sincronizadas. Es un paso MUY IMPORTANTE y, si no lo hacemos, NO FUNCIONARÁ. Para ello, debemos instalar el servidor ntp y configurarlo para que se sincronice con algún servicio accesible desde nuestra red:
yum install ntp
En el fichero /etc/ntp.conf añadimos la información de nuestro servidor de tiempos: server servidor_ntp
service ntpd start
  • Ejecutamos google-authenticator con el usuario que queremos proteger (no tienen que ser todos) Nos generará un enlace al sitio de Google donde encontraremos el código QR con el que debemos, en nuestro móvil y con la app Google Authenticator, crear una cuenta para nuestro acceso SSH igual que comentamos en la entrada anterior para WordPress. Además, nos proporcionará los códigos de un solo uso que debemos usar cuando no tengamos disponible dicha app.
  • Además de la ejecución, deberemos responder a 4 preguntas: mejor ‘Y’ a todas ;).
    • Con la primera, le estamos indicando que queremos que los tokens estén basados en el tiempo y que actualice el fichero HOME/.google_authenticator que es donde almacenará información importante como el enlace y los código mencionados en el punto anterior.
    • En la segunda nos pregunta si queremos deshabilitar el uso del mismo token por diferentes usuarios
    • En la tercera nos indica el tiempo por defecto (30″) para compensar posibles diferencias temporales entre cliente y servidor
    • Y en la última, limita el número de intentos a 3 cada 30″ para evitar ataques de fuerza bruta
  • En el siguiente paso, debemos configurar el módulo PAM del servicio SSH. En el fichero /etc/pam.d/sshd debemos añadir
auth   required  pam_google_authenticator nullok secret=/home/${USER}/.google_authenticator

nullok permite que los usuarios para los que no tengamos configurado el segundo factor de autenticación, puedan entrar al sistema sin solicitarles el código. Con secret le indicamos dónde está el fichero con la información de autenticación.

  • En el fichero /etc/ssh/sshd_config debemos activar (escribir  YES) la opción ChallengeResponseAuthentication.
  • También debemos asegurarnos, en el mismo fichero, que esté UsePAM yes y PubKeyAuthentication no
  • Y finalmente, reiniciar el servicio ejecutando:
service sshd restart

Existen más opciones que nos pueden interesar para afinar el sistema 2FA. Por ejemplo una idea es que cuando accedamos desde determinados sitios (nuestra red local), no nos solicite el segundo factor. Esto se consigue con la instalación (si no está ya) del módulo pam_access y configurando las PAM:

auth [success=1 default=ignore] pam_access.so accessfile=/etc/security/access-local.conf
auth       required     pam_google_authenticator.so nullok secret=/home/${USER}/.google_authenticator

Además, en el fichero /etc/security/access-local.conf debemos escribir algo parecido a esto (donde 10.0.0.0/24 es la red local):

# only allow from local IP range
+: ALL :10.0.0.0/24
+: ALL : LOCAL
-: ALL : ALL

Si queremos que el 2FA NO se aplique a los usuarios de un grupo determinado:

auth [success=1 default=ignore] pam_succeed_if.so user ingroup sudo
auth       required     pam_google_authenticator.so nullok secret=/home/${USER}/.google_authenticator

Si quisiéramos que se aplicara solo a ese grupo, basta con sustituir “user ingroup” por “user notingroup

La información de esta entrada sirve también para proteger otros servicios de sesión de usuario como login, su, sudo, lightdm

¡Espero que os sea útil!

Referencias

  1. https://code.google.com/p/google-authenticator/wiki/PamModuleInstructions

 


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