¿TOR?, ¡ No en mi servidor !

  • 2 Respuestas
  • 3077 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado HATI

  • *
  • Moderador Global
  • Mensajes: 453
  • Actividad:
    3.33%
  • Reputación 13
    • Ver Perfil

¿TOR?, ¡ No en mi servidor !

  • en: Septiembre 25, 2016, 06:31:18 pm
Sin duda las redes TOR han adquirido un protagonismo considerable en estos últimos años. Ya debemos saber que no siempre TOR, se usa para realizar actos delictivos sino también para evadir censuras en países autoritarios y dónde la democracia y libertad de expresión es un lujo escaso.

No obstante, nosotros siempre nos centramos en las posibilidades que puedan dar las redes TOR, tanto ofensivamente como defensivamente.

Hoy toca ser defensivos, y vamos a ver como poder parar de forma simple, visitas desde redes TOR a un servicio apache nuestro, publicado en Internet. Las reglas pararán cualquier intento de conexión pero utilizaremos apache como sonda de prueba.

La idea me surgió hace tiempo pero hoy he podido plasmarla en el artículo. Y es que entrando en pequeños debates de como mejorar servicios de Firewalls conocidos, con un gran profesional al que aprovecho y le mando saludos, me propuse hacer algo básico para trasladar mi idea y/o ponerla en práctica.

Empecemos pues.

La idea: No permitir accesos desde redes TOR a nuestro servidor y de paso, bloquear IPs que hayan sido reportadas o estén listadas en repositorios dedicados a recopilar esto.

¿Qué vamos a usar?

  • IPTables
  • IPSet
  • Feeds de IPs/Maliciosas y TOR
  • Script base de trick77(Github: You are not allowed to view links. Register or Login)





Lo primero que haremos será instalarnos IPSet. IPSet es un “añadido” del kernel de Linux. Permite configurar diferentes IPs, MACs, puertos, etc… para cargarlas desde IPTables. El por qué de usarlo es porque permite cargar miles de direcciones IP y solamente cargarla con una línea de IPTables. Sino usáramos esto, tendría que ser el proceso a “manopla” y es inviable a no ser que tengáis mucho tiempo u os montéis un script, que es lo que hacemos nosotros.

El proceso es el de siempre para instalar en Debian/Kali:
Código: You are not allowed to view links. Register or Login
apt-get install ipset
Una vez hecho esto, procederemos a la descarga de un script que funciona a las mil maravillas, además de completo, de trick77. Con este programita solucionaremos gran parte del “problema” por lo que seguiremos parte del README aunque haremos algunas aclaraciones para que sea todo 100% operativo así como alguna modificación del código inicial.

Código: You are not allowed to view links. Register or Login

Guardamos en una ruta “popular” de nuestro equipo o VM aunque lo ideal para ponerlo en producción es meterlo en la ruta /usr/local/sbin/.Es un script de Shell de Bash por lo que la extesión será .sh.

Una vez decidido dónde queremos tener alojado nuestro script vamos a otorgarle permisos de ejecución con:
Código: You are not allowed to view links. Register or Login
chmod +x /ruta/torblock/script.sh
Creamos una carpeta nueva dónde alojaremos la carpeta principal de IPSet:
Código: You are not allowed to view links. Register or Login
mkdir -p /etc/ipset-blacklist
A continuación procedemos a descargar el fichero de configuración que contiene las premisas en las que se basarán nuestros bloqueos.

Podemos descargarlo de: You are not allowed to view links. Register or Login y lo situaremos en /etc/ipset-blacklist/

Decir que el fichero de configuración ipset-blacklist.conf contendrá feeds de diferentes tipos de IPs (maliciosas, TOR, spam, etc…)



Estas líneas pueden comentarse para que no realicen la descarga del listado de IPs que queramos excluir. Personalmente, creo que no está de más tener toda la lista en funcionamiento para bloquear la mayoría de IPs que su origen sea dudoso. Nosotros vamos a dejarlo como está, aunque si queréis cambiar o añadir otros servicios, también es válido.

Hecho esto, procederemos a ejecutar el script para que empiece a descargar listados de IPs y trasladarlos a nuestro fichero ipset-blacklist.restore

Usaremos:
Código: You are not allowed to view links. Register or Login
./torblock.sh /etc/ipset-blacklist/ipset-blacklist.conf


En la anterior captura se aprecia la ejecución del script que, como decimos, descarga listados de IPs tanto TOR, maliciosas, de SPAM, etcétera… También se ocupa automáticamente de crear el contenedor IPSet, que es un almacenamiento que albergará dichas IPs. Básicamente emplea un comando para crear este contenedor parecido a:
Código: You are not allowed to view links. Register or Login
ipset create blacklist hash:net hashsize 4096
También el script si analizáis el código, añade automáticamente esto:
Código: You are not allowed to view links. Register or Login
iptables -I INPUT 1 -m set –match-set blacklist src -j DROP
Qué es la regla IPTables que llama al contenedor “blacklist” y hace un bloqueo total del contenedor, el cual, como venimos diciendo, contiene las miles de IPs maliciosas.



En esta captura se aprecia una pequeña muestra de la cabecera del fichero que contiene las IPs que hemos descargado de los repositorios.

Hemos llamado el script de trick77 como torblock.sh para que sea más identificativo a la hora de identificarlo y/o configurarlo de forma automática. No obstante hemos modificado algunas premisas para adaptarse mejor a los aplicativos en dónde tenemos esto testeando. La siguiente ruta que aparece junto a la llamada del script, es indicarle la configuración que tomará el script para su ejecución.

Importante: Una de las modificaciones que hemos hecho en el código es añadir una simple línea llamada:
   
Código: You are not allowed to view links. Register or Login
ipset restore < /etc/ipset-blacklist/ip-blacklist.restore
¿Por qué?¿Qué hace esto?

Por la sencilla razón de que si lo integramos, al cronearlo, automáticamente también se actualiza el “contenedor” IPSet. Lo que hace esta línea de código es coger del fichero .restore las nuevas IPs y refrescar la lista.

¿Y si quiero anular el efecto de bloqueo?

iptables –D INPUT X donde X es el número del listado de las reglas que tengas. Nosotros en el servidor de pruebas tenemos 1, pues sería 1 solo. Otros servidores pueden tener cientos.


Recopilemos:

Tenemos un script llamado torblock.sh que nos actualiza las IPs maliciosas (TOR, Spam, etc…) nos genera el contenedor IPSet donde irán dichas IPs y generará una regla IPTables para bloquear.


Mejoras:

  • Meter el script de actualización en /etc/rc.local para asegurar su ejecución al inicio del sistema.
  • Crontab: Meterle una línea al Cron para que cada X tiempo se ejecute y tenga actualizadas las listas de IPs


Directorio de pruebas:




Visitando el sitio con Firefox con IP Pública:




Visitando el sitio con TorBrowser:




Con esto ya no hay excusa para impedir accesos a nuestros servidores o sitios publicados en Internet. Si no necesitamos/interesa visitas desde redes de anonimato ¿por qué permitirle el acceso?

Estamos, de paso, realizando uno de los pasos importantes a la hora de securizar cualquier dispositivo/servidor, que es reducir la superficie de exposición de ataques.

Espero que os haya gustado y sobre todo, espero que podáis utilizar este artículo para consultas si os interesa tener algo así.



Autor:ManoloGaritmo
Fuente:hacking-etico.com
« Última modificación: Septiembre 26, 2016, 05:59:37 pm por EPSILON »


Jugar o perder

Desconectado hum4n3xpl01t

  • *
  • Underc0der
  • Mensajes: 43
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil

Re:¿TOR? ¡ No en mi servidor !

  • en: Septiembre 25, 2016, 08:44:31 pm
Se agradece la información, excelente post.
Saludos

Desconectado shadkz.

  • *
  • Underc0der
  • Mensajes: 107
  • Actividad:
    0%
  • Reputación 3
  • Fly your own flag.
  • Twitter: https://twitter.com/cmind33
    • Ver Perfil
    • shkz.
    • Email

Re:¿TOR? ¡ No en mi servidor !

  • en: Septiembre 25, 2016, 09:31:28 pm
Muy buen post, solo un comentario a tener en cuenta, que habria que tener un control de los feedbacks de esas ips que se reciben, las fuentes, como tambien la posibilidad de evitar un falso positivo, o que una persona malintencionada no intente generar una entrada falsa del mismo rango que el servidor a la fuente de alimentacion de ips.

Saludos, buen post.
Security Researcher / Reverse Engineer
You are not allowed to view links. Register or Login

 

Configura un servidor SSH en Ubuntu para acceder a tu equipo de forma remota

Iniciado por 54NDR4

Respuestas: 2
Vistas: 4163
Último mensaje Abril 10, 2013, 04:11:48 pm
por Adastra
¿Como debo empezar para auditar un servidor web? - Nivel Intermedio

Iniciado por BrowserNet

Respuestas: 12
Vistas: 12003
Último mensaje Octubre 09, 2016, 02:24:36 am
por ceroMee
Crear nuestro servidor Onion en Kali Linux 2016

Iniciado por BrowserNet

Respuestas: 3
Vistas: 5137
Último mensaje Mayo 23, 2016, 03:13:26 pm
por baron.power
Instalar servidor proxy caché Squid en Ubuntu server

Iniciado por CodePunisher

Respuestas: 0
Vistas: 4475
Último mensaje Julio 25, 2013, 05:30:02 pm
por CodePunisher
Verificar si el servidor web onion esta disponible con Onioff

Iniciado por BrowserNet

Respuestas: 1
Vistas: 3187
Último mensaje Octubre 02, 2016, 11:39:54 pm
por shadkz.