Searx: Buscar sin ser traceado Blackhold

Tabla de contenido

Hace unas semanas instalé searx, una solución para hacer búsquedas en los principales buscadores de internet sin ser traceado, es decir, sin dar tu identidad directamente a los buscadores, cosa que hará que cuando aparezca publicidad no te salga nada relacionado con lo que has buscado previamente. ¿Te preguntas como es que en internet los proveedores saben tanto de ti? pues uno de los sitios es por aquí. Searx es una opción para ocultar un poco tus intereses en internet 😉

Searx consta de 3 partes, searx, filtron y morty.

Searx es la interfaz y el programa como tal, filtron es un servicio para limitar el número de búsquedas para evitar que robots se sablen con tu instancia y morty es el proxy que oculta tu información a los buscadores.

Para hacer la instalación seguiremos la documentación de searx

Empezamos con la instalación:

Primero las dependencias

[email protected]:~# apt -y upgrade && apt -y dist-upgrade && apt -y install git curl nginx sudo

A continuación clonamos el código de searx y ejecutamos los scripts de instalación

[email protected]:/usr/local# git clone https://github.com/searx/searx searx
[email protected]:/usr/local# cd searx
[email protected]:/usr/local/searx# sudo -H ./utils/searx.sh install all
[email protected]:/usr/local/searx# sudo -H ./utils/filtron.sh install all
[email protected]:/usr/local/searx# sudo -H ./utils/morty.sh install all

Una vez instalado la cosa nos quedará así:

[email protected]:/usr/local# netstat -lanp |grep 'LISTEN '
tcp 0 0 0.0.0.0:8888 0.0.0.0:* LISTEN 391/uwsgi tcp 0 0 127.0.0.1:3000 0.0.0.0:* LISTEN 122/morty tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 395/master tcp 0 0 127.0.0.1:4004 0.0.0.0:* LISTEN 764/filtron tcp 0 0 127.0.0.1:4005 0.0.0.0:* LISTEN 764/filtron tcp 0 0 0.0.0.0:5355 0.0.0.0:* LISTEN 111/systemd-resolve tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 404/nginx: master p tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 111/systemd-resolve tcp6 0 0 ::1:25 :::* LISTEN 395/master tcp6 0 0 :::5355 :::* LISTEN 111/systemd-resolve tcp6 0 0 :::80 :::* LISTEN 404/nginx: master p tcp6 0 0 :::22 :::* LISTEN 1/init 

Ahora podremos acceder a la instancia de searx accediendo por el puerto 8888

En cualquier momento si queremos ver los logs o qué están haciendo los servicios por detrás hay la opción de parar el servicio

[email protected]:/usr/local/searx# service uwsgi stop # para parar searx
[email protected]:/usr/local/searx# service filtron stop # para parar filtron
[email protected]:/usr/local/searx# service morty stop # para parar morty

Para inspeccionar lo que hace y ver los logs:

[email protected]:/usr/local/searx# sudo -H ./utils/searx.sh inspect service
[email protected]:/usr/local/searx# sudo -H ./utils/filtron.sh inspect service
[email protected]:/usr/local/searx# sudo -H ./utils/morty.sh inspect service

A continuación nos interesará exponer searx por filtron o morty, en mi caso voy a usar filtron.

Como es de costumbre, tengo el contenedor de searx dentro de una red privada de servidores y tengo un frontal de nginx donde expongo todos los servicios y gestiono los certificados de letsencrypt

frontal nginx

[email protected]:/etc/nginx/sites-enabled# vi searx.lamardebits.org
server { listen 80; listen [::]:80; server_name searx.lamardebits.org; include snippets/certbot.conf; return 301 https://$host$request_uri;
} server { server_name searx.lamardebits.org; include snippets/certbot.conf; include snippets/lmdb-error-pages.conf; location / { proxy_pass http://172.31.0.120:80; #include proxy_params; proxy_set_header Host $host; proxy_set_header Connection $http_connection; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Scheme $scheme; proxy_buffering off; } listen 443 ssl http2; listen [::]:443 ssl http2; ssl_certificate /etc/letsencrypt/live/searx.lamardebits.org/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/searx.lamardebits.org/privkey.pem; include /etc/letsencrypt/options-ssl-nginx.conf; ssl_trusted_certificate /etc/letsencrypt/live/searx.lamardebits.org/chain.pem; }

nginx searx (contenedor)

[email protected]:/etc/nginx/sites-enabled# vi searx
server { listen 80; listen [::]:80; server_name searx.lamardebits.org; location / { proxy_pass http://127.0.0.1:4004/; proxy_set_header Host $host; proxy_set_header Connection $http_connection; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Scheme $scheme; proxy_set_header X-Script-Name /searx; } location /static { alias /usr/local/searx/searx-src/searx/static; } location /morty { proxy_pass http://127.0.0.1:3000/; proxy_set_header Host $host; proxy_set_header Connection $http_connection; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Scheme $scheme; } }

Para terminar de configurar morty tendremos que modificar el fichero settings.yml, además de configurar algunas cosas mas (configuraciones adicionales)

[email protected]:/usr/local/searx/searx/searx# vi settings.yml
server: secret_key : "***********" # change this! image_proxy : True # Proxying image results through searx result_proxy: url : https://searx.lamardebits.org/morty key : !!binary "**************************"

Al mirar los logs de nginx me encontraba que la IP que se estaba guardando era la IP del frontal de nginx. Hace unos meses publiqué un artículo de como pasar y procesar las IPs a un apache. Para hacer lo mismo pero para el backend nginx tenemos que modificar el fichero /etc/nginx/nginx.conf

[email protected]:~# vi /etc/nginx/nginx.conf
http { ## # Logging Settings ## log_format logsearx '$remote_addr forwarded for $http_x_real_ip - $proxy_add_x_forwarded_for - $http_host - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent"'; access_log /var/log/nginx/access.log logsearx; #access_log /var/log/nginx/access.log;
}

Igualmente tenemos que tener en cuenta también como trata filtron las IP, ya que es posible que haya varios usuarios que compartan una dirección IP, para ver que es lo que hace vamos a hacer un inspect de filtron

[email protected]:/usr/local/searx/searx/utils# source searx-pyenv/bin/activate
(searx-pyenv) [email protected]:/usr/local/searx/searx/utils# ./filtron.sh inspect service Jan 11 19:46:55 searx filtron[764]: [debug request] 2022-01-11 19:46:55.247 109.69.8.30, 172.31.0.106 POST searx.lamardebits.org/searx/search "q=blackhold&category_general=on&×_range=&language=ca-ES" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36" Jan 11 19:53:16 searx filtron[764]: [suspiciously Connection=close header] 2022-01-11 19:53:16.582 109.69.8.30, 172.31.0.106 GET searx.lamardebits.org/search?category_general=1&q=ok&pageno=1&×_range=None&language=en-US&format=json "" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36"

La primera petición corresponde a la búsqueda del término “blackhold”, la segunda a https://searx.lamardebits.org/search?category_general=1&q=ok&pageno=1&time_range=None&language=en-US&format=json para comprobar que filtron está funcionando correctamente.

Ahora con filtron activado, ya es posible publicar la instancia de searx en el listado público de instancias de searx.

Para que tu instancia no deje logs una recomendación es dejar la configuración de logging de nginx así:

http { # ... access_log /dev/null; error_log /dev/null; # ...
}

Lo último que nos interesará hacer es definir la instancia de searx como buscador por defecto en nuestro navegador. En chrome tendremos que ir a preferencias > configuración > motor de búsqueda y configurarlo así:

Y pulsamos a los 3 puntitos y lo definimos como motor de búsqueda por defecto.

Venga, happy privaced searching! 🙂

Fuente obtenida de: https://blackhold.nusepas.com/2022/01/11/searx-buscar-sin-ser-traceado/

INFORMACION DEL PUBLICADOR
Kamal Majaiti
Kamal Majaiti
Administrador de sistemas e informático por vocación.
COMPARTELO EN REDES
Publica un comentario

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.