PfSense 2.3.x – Obtener lista de Pike project para bloquear Tor con pfBlockerNG
-
Hola
El proyecto Pike project, provee una lista de nodos Tor activos las últimas 48hrs y actualizada cada 10 minutos (entre otras listas, como de proxies anonimos, etc).
Tor nodes list with the active nodes in the last 48h updated 10 minutes ago.
Para implementar esta lista en una lista IPv4 de pfBlockerNG, hay que descargarla y “parsearla” al formato del paquete pfBlockerNG.
El proyecto Pike brinda un código en PhP para bajarse la lista en formato Json y pasarla a un array . He modificado ese código para que se pueda ejecutar como un cli php script en pfSense 2.3.x (testeado en 2.3.1_5), se baje la lista, la parsee y la aloje en /usr/local/www/pikeTor.dat .
Alojandoo el script pikeTor.php en un directorio, como por ejemplo /scripts ( /scripts/pikeTor.php ), y definiendo un Cron para que ejecute ese script, por ejemplo, cada x horas, tendremos la lista actualizada cada x horas.
Simplemente habrá que añadir en pfBlockerNG en su IPv4 una lista con la ruta :
/usr/local/www/pikeTor.dat
Y efectuar un Update en pfBlockerNG.
El código: download: http://www.javcasta.com/?smd_process_download=1&download_id=33230
//ref http://pike.hqpeak.com/ // Tor nodes list with the active nodes in the last 48h updated 10 minutes ago. // Code modified to pfSense 2.3.1_5 // by Javier Castañon - 2016 - https://javcasta.com/ // ------------------------------------------------ // add cron every hour exec: /usr/local/bin/php /scripts/pikeTor.php // In pfBlockerNG add IPv4 list: /usr/local/www/pikeTor.dat or https://127.0.0.1/pikeTor // ------------------------------------------------ $url = "http://pike.hqpeak.com/api/tor"; $ch = curl_init(); $timeout = 15; /* //in case you need to use corporate proxy curl_setopt($ch,CURLOPT_VERBOSE,1); curl_setopt($ch,CURLOPT_PROXYTYPE,CURLPROXY_HTTP); curl_setopt($ch,CURLOPT_PROXY,'http://proxy.address:port'); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false); //*/ curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); $data = curl_exec($ch); $ce = curl_errno($ch); curl_close($ch); if ( $ce != 0 ) die("error oppening service"); //decode output as array $service_data = json_decode($data, true); $j = 0; foreach ($service_data as $sec) $j++; unlink("/usr/local/www/pikeTor.dat"); $size = $j; //print_r($size); if ( is_array($service_data) && $size > 0 ){ for ( $i=0; $i<=$size; $i++ ){ if (preg_match("/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}/", $service_data[$i])){ //$service_data[$i] to pikeTor.dat //print_r($service_data[$i] . "\n"); file_put_contents("/usr/local/www/pikeTor.dat", $service_data[$i] . "\r\n", FILE_APPEND | LOCK_EX); } } }else{ die("bad output"); } ?>
Salu2
–-
Referencias:
pfSense 2.3.x – Obtener lista de Pike project para bloquear Tor con pfBlockerNG
https://www.javcasta.com/pfsense-2-3-x-obtener-lista-de-pike-project-para-bloquear-tor-con-pfblockerng/Download pikeTor.php: http://www.javcasta.com/?smd_process_download=1&download_id=33230
pfSense – Bloqueando Tor con pfBlockerNG: https://www.javcasta.com/pfsense-bloqueando-tor-con-pfblockerng/
Pike project: http://pike.hqpeak.com/ -
Reported by ernanijr on Today at 09:48:21 am. They left the following message:
Sempre da um erro na line 5 ao executar o php
-
Hola.
La linea 5 es un comentario // …
1 2 //ref http://pike.hqpeak.com/ 3 // Tor nodes list with the active nodes in the last 48h updated 10 minutes ago. 4 // Code modified to pfSense 2.3.1_5 5 // by Javier Castañon - 2016 - https://javcasta.com/ 6 // ------------------------------------------------ 7 // add cron every hour exec: /usr/local/bin/php /scripts/pikeTor.php 8 // In pfBlockerNG add IPv4 list: /usr/local/www/pikeTor.dat or https://127.0.0.1/pikeTor 9 // ------------------------------------------------ 10 $url = "http://pike.hqpeak.com/api/tor"; 11 $ch = curl_init(); 12 $timeout = 15; 13 /* 14 //in case you need to use corporate proxy 15 curl_setopt($ch,CURLOPT_VERBOSE,1); 16 curl_setopt($ch,CURLOPT_PROXYTYPE,CURLPROXY_HTTP); 17 curl_setopt($ch,CURLOPT_PROXY,'http://proxy.address:port'); 18 curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false); 19 //*/ 20 curl_setopt($ch, CURLOPT_URL, $url); 21 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //....
El script funciona (testeado en pfSensense 2.3.1_5 amd64)
Yo que ernanijr , adjuntaria pantallazo de la shell al ejecutar el script con el error y postearia el código php del script que esté ejecutando. a ver si hay alguna pequeña diferencia (a veces los detalles son el diablo :) )
Salu2