“MyDrugs” Hidden Service – Sicurezza, Anonimato e Setup iniziale
Introduzione
Dopo aver visto (e rivisto) la serie “How to Sell Drugs Online (Fast)”, mi è balenata in mente l’idea di costruire qualcosa di simile, ma orientato al mondo IT. Così nasce questo progetto: una simulazione tecnica della creazione di uno store accessibile dal Dark Web, ospitato su un dominio .onion, basato su WordPress e configurato seguendo best practice di sicurezza.
L’obiettivo? Testare un Proof of Concept (PoC) professionale, con un setup realistico che potrebbe essere adattato con le dovute competenze anche a un ambiente reale. Questa guida è pensata come risorsa per esperti di cybersecurity, sistemisti e appassionati che vogliono esplorare la costruzione di un’infrastruttura resiliente su Tor.
La macchina virtuale utilizzata per questo progetto è ospitata su una piattaforma Proxmox e configurata per essere visibile esclusivamente tramite la rete Tor. Tutti gli accessi dall’esterno sono bloccati, rendendo la VM invisibile in chiaro. Il servizio è raggiungibile unicamente tramite il dominio .onion generato. Questa impostazione può essere replicata anche su VPS remoti, assicurandosi di limitare drasticamente la visibilità esterna tramite firewall, NAT restrittivo e regole di routing mirate: è proprio la mancanza di accorgimenti come questi che ha permesso in passato il tracciamento e la chiusura di numerosi Hidden Service.
❗ Disclaimer: questo documento è a scopo puramente informativo ed educativo. Non mi assumo alcuna responsabilità per l’uso improprio o illegale delle informazioni fornite. Il progetto descritto è un test tecnico.
ℹ️ Nota: aspetti come cifratura del disco, snapshot, gestione backup e anti-forensics verranno trattati in una guida separata.
🔐 1. Generazione dominio .onion personalizzato
🎯 Crea un Vanity Address .onion
apt update && apt upgrade -y
reboot
apt install -y build-essential libssl-dev htop psmisc
git clone https://github.com/cathugger/mkp224o.git
cd mkp224o
./autogen.sh
./configure
make
./mkp224o -d MyDrugKey MyDrug
📌 Nota personale: inizialmente volevo generare esattamente MyDrugs
(7 lettere), ma anche dopo 30 minuti con 8 CPU e 8 GB RAM non avevo ottenuto risultati. Ho quindi provato con MyDrug
(6 lettere) e con una grande botta di fortuna ho ottenuto:

mydrugs3oe3a7o6izy6j4u5jjfm3r52ldgf4cwp2dh6pvqr2rbccjnad.onion
📁 File generati
/root/mkp224o/MyDrugKey/mydrugs3oe3a7o6izy6j4u5jjfm3r52ldgf4cwp2dh6pvqr2rbccjnad.onion/
├── hostname
├── hs_ed25519_secret_key
└── hs_ed25519_public_key
🧅 2. Installazione e configurazione Tor
⚙️ Installa Tor
apt install -y apt-transport-https gnupg wget
wget -qO- https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc \
| gpg --dearmor | tee /usr/share/keyrings/deb.torproject.org-keyring.gpg > /dev/null
echo "deb [signed-by=/usr/share/keyrings/deb.torproject.org-keyring.gpg] https://deb.torproject.org/torproject.org bookworm main" \
| tee /etc/apt/sources.list.d/tor.list
echo "deb-src [signed-by=/usr/share/keyrings/deb.torproject.org-keyring.gpg] https://deb.torproject.org/torproject.org bookworm main" \
| tee -a /etc/apt/sources.list.d/tor.list
apt update
apt install -y tor deb.torproject.org-keyring
systemctl status [email protected]
🔑 Copia chiavi onion generate
cp -R /root/mkp224o/MyDrugKey/mydrugs3oe3a7o6izy6j4u5jjfm3r52ldgf4cwp2dh6pvqr2rbccjnad.onion /var/lib/tor/
chown -R debian-tor:debian-tor /var/lib/tor/mydrugs3oe3a7o6izy6j4u5jjfm3r52ldgf4cwp2dh6pvqr2rbccjnad.onion/
chmod 600 /var/lib/tor/mydrugs3oe3a7o6izy6j4u5jjfm3r52ldgf4cwp2dh6pvqr2rbccjnad.onion/*
📝 Modifica torrc
HiddenServiceDir /var/lib/tor/mydrugs3oe3a7o6izy6j4u5jjfm3r52ldgf4cwp2dh6pvqr2rbccjnad.onion/
HiddenServiceVersion 3
HiddenServicePort 80 127.0.0.1:27484
🔄 Riavvia Tor
systemctl restart tor
cat /var/lib/tor/mydrugs3oe3a7o6izy6j4u5jjfm3r52ldgf4cwp2dh6pvqr2rbccjnad.onion/hostname
🔐 3. Configurazione Nginx blindata
⚙️ Installa e configura Nginx
apt install nginx
rm /etc/nginx/sites-enabled/default
🔧 Modifica nginx.conf
server_tokens off;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header Strict-Transport-Security "max-age=31622400; includeSubDomains; preload";
etag off;
🛡️ Protezione User-Agent
Crea /etc/nginx/blockuseragents.rules
map $http_user_agent $blockedagent {
default 0;
~*malicious 1;
~*bot 1;
~*backdoor 1;
~*crawler 1;
~*bandit 1;
}
🌐 Virtual Host Onion
mkdir -p /var/log/mydrugs3oe3a7o6izy6j4u5jjfm3r52ldgf4cwp2dh6pvqr2rbccjnad.onion_vhost
mkdir -p /var/www/mydrugs3oe3a7o6izy6j4u5jjfm3r52ldgf4cwp2dh6pvqr2rbccjnad.onion
Crea /etc/nginx/sites-available/mydrugs3oe3a7o6izy6j4u5jjfm3r52ldgf4cwp2dh6pvqr2rbccjnad.onion
limit_req_zone $binary_remote_addr zone=all:10m rate=10r/s;
include /etc/nginx/blockuseragents.rules;
server {
listen 127.0.0.1:27484;
server_name mydrugs3oe3a7o6izy6j4u5jjfm3r52ldgf4cwp2dh6pvqr2rbccjnad.onion;
port_in_redirect off;
allow 127.0.0.1;
deny all;
if ($blockedagent) { return 403; }
if ($request_method !~ ^(GET|HEAD|POST)$) { return 444; }
root /var/www/mydrugs3oe3a7o6izy6j4u5jjfm3r52ldgf4cwp2dh6pvqr2rbccjnad.onion;
index index.html index.php;
access_log /var/log/mydrugs3oe3a7o6izy6j4u5jjfm3r52ldgf4cwp2dh6pvqr2rbccjnad.onion_vhost/access.log;
error_log /var/log/mydrugs3oe3a7o6izy6j4u5jjfm3r52ldgf4cwp2dh6pvqr2rbccjnad.onion_vhost/error.log error;
location / {
try_files $uri $uri/ /index.php?$args;
limit_req zone=all burst=10;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
🔗 Abilita e ricarica
ln -s /etc/nginx/sites-available/mydrugs3oe3a7o6izy6j4u5jjfm3r52ldgf4cwp2dh6pvqr2rbccjnad.onion /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
⚙️ 4. Installazione PHP
apt install -y php php-fpm php-mysql php-cli php-curl php-gd php-mbstring php-xml php-zip unzip
systemctl enable php8.2-fpm
systemctl start php8.2-fpm
✅ 5. Test Hidden Service e PHP
🔍 File di test /var/www/mydrugs3oe3a7o6izy6j4u5jjfm3r52ldgf4cwp2dh6pvqr2rbccjnad.onion/index.php
<?php
echo "<!DOCTYPE html>
<html>
<head>
<title>💊 MyDrug Hidden Service</title>
<style>
body { background:#0d0d0d; color:#00ff99; font-family:monospace; text-align:center; padding-top:10%; }
.pill { font-size:50px; margin:10px; animation: float 2s infinite ease-in-out alternate; }
@keyframes float { from { transform: translateY(0); } to { transform: translateY(-10px); } }
</style>
</head>
<body>
<div class='pill'>💊 💊 💊</div>
<h1>MyDrugs Hidden Service è online!</h1>
<p>Stai accedendo correttamente tramite <strong>Tor Browser</strong>.</p>
<p>Benvenuto nel tuo nuovo spazio sicuro.</p>
</body>
</html>";
?>
chown -R www-data:www-data /var/www/mydrugs*
🔄 6. Riavvio rapido dei servizi
dpkg-reconfigure dash
cat <<'EOF' > /root/restart-service.sh
#!/bin/bash
systemctl restart nginx
sleep 1
systemctl restart tor
EOF
chmod +x /root/restart-service.sh
🧪 7. Verifica finale con Tor Browser
🔗 Apri http://mydrugs3oe3a7o6izy6j4u5jjfm3r52ldgf4cwp2dh6pvqr2rbccjnad.onion
da Tor Browser per verificare che tutto funzioni correttamente.

✅ L’ambiente è pronto per ospitare WordPress
➡️ Nella Parte 2 verrà affrontata l’installazione completa di WordPress come Hidden Service .onion, con configurazione avanzata di PHP e MariaDB, protezioni di base per il CMS e accesso sicuro via Tor. Una base solida per l’integrazione futura di cifratura dei dati e pagamenti anonimi.