À faire :
se connecter aux services via SOCKS5 Tor
bloquer les Ports inutiles
ajouter un script iptables
chiffrer le disque dur
stocker les clés dans le CPU plutôt que dans la RAM (qui peut être copiée) par exemple via TRESOR
SSH par clé avec accès selon IP ou par PortKnocking
Concernant les logs, 2 solutions, sur des machines dites « sécurisées » :
Dans ce tutoriel, on part du principe que l’on commence avec les logiciels et versions suivantes :
Dernière mise à jour le 15 août 2021
Sommaire
Qu’est-ce que Tor et un Hidden Service ?
Configuration du serveur
Installation d’un serveur LAMP
Apache
PHP
MariaDB
Accéder aux tables SQL
Installation et configuration de Tor
Configuration du Hidden Service
Partie Tor
Partie Apache
Partie Serveur
Facultatif
Configuration de la langue
Configuration de la date
Rediriger le trafic réseau du serveur vers Tor
Réécrire la RAM avant un arrêt / redémarrage du serveur
On supprime ses traces
Alias utiles (~/.bashrc)
Désactiver le transfert IP et le multi-hébergement
Désactiver IPv ⁶
Quelques tutoriels utiles

Tor est un réseau informatique superposé mondial et décentralisé. Il se compose d’un certain nombre de serveurs, appelés nœuds du réseau et dont la liste est publique. Ce réseau permet d’anonymiser l’origine de connexions TCP. Cela peut entre autres servir à anonymiser la source d’une session de navigation Web ou de messagerie instantanée. Cependant, l’anonymisation du flux n’est pas suffisante, car l’application peut potentiellement transmettre des informations annexes permettant d’identifier la personne : c’est pourquoi le projet Tor développe également un navigateur Web basé sur Firefox, Tor Browser, ainsi que d’autres applications spécialement modifiées pour préserver l’anonymat de leurs usagers. L’implémentation de référence du protocole s’appelle Tor, c’est un logiciel libre sous licence BSD révisée.
Le projet Tor reçoit le prix du logiciel libre 2010, dans la catégorie projet d’intérêt. Le nom Tor est capitalisé comme un nom propre, bien qu’il s’agisse originellement d’un acronyme pour The onion router, littéralement « le routeur oignon ».

Cartographie des utilisateurs Tor, par pays.
Tor est utilisé pour se protéger contre une certaine forme de surveillance sur Internet, connue sous le nom d’analyse de trafic. Cette analyse est utilisée pour déterminer qui communique avec qui sur un réseau public. Connaître la source et la destination de votre trafic peut permettre à des personnes de traquer votre comportement et vos intérêts.
Cartogramme de l’usage de Tor à l’international.
Tor est aussi un outil de contournement de la censure sur Internet. Il permet aux personnes l’utilisant d’accéder à des sites, contenus ou services bloqués dans certaines zones du monde.
Tor fait circuler le trafic de ses utilisateurs et utilisatrices via une série de relais. Ce procédé permet de ne pas être tracé par les sites web consultés, d’accéder à des services, contenus ou sites bloqués par un FAI. Il est aussi possible pour chaque utilisateur ou utilisatrice de publier des contenus via les services « onion » de Tor, sans révéler la position de ces services.
Ces avantages peuvent être utiles pour chaque personne qui souhaite maîtriser ses traces laissées en ligne. Ils sont notamment mis en œuvre dans les échanges entre lanceurs d’alerte, journalistes, avocats, dissidents politiques, organisations non gouvernementales, pour échanger en maîtrisant la sécurité de leurs données, de leur connexion, de leurs destinataires et de leur position.
Pour faire simple, un hidden service est un service caché. Cela va vous permettre d’avoir un serveur Jabber, serveur SSH, d’héberger un site, etc. le tout en masquant complètement l’adresse IP et les informations du VPS / serveur aux utilisateurs, bots, aux gouvernements, etc.
Plusieurs choses :
les utilisateurs Chinois bloqués par le Grand Firewall de Chine peuvent accéder à l’internet sans censure
les utilisateurs Iraniens / Turques, etc. bloqués par leur gouvernement peuvent accéder à l’internet sans censure
être anonyme à 99.99% pendant la navigation sur internet
accéder aux sites cachés via les adresses en .onion
discuter sur des messageries utilisant le proxy Tor
etc.
Malheureusement, qui dit anonymisation des utilisateurs, dit criminalité en tout genre, vente de drogue, d’arme, trafic d’être humain, de fausse monnaie, etc. et j’en passe. Il a des côtés positifs et des côtés négatifs. Que ça soit dans la vraie vie ou sur internet, on sera toujours embêté par les vilains… Le but de ce tutoriel n’est pas de vous montrer comment acheter de la drogue mais d’apprendre le fonctionnement d’un serveur web utilisant le service de cryptage de Tor.
Merci d’apprendre par cœur ces quelques règles fondamentales avant de commencer !
Toujours se connecter à vos services (SSH, sFTP, FTP, etc) via un proxy SOCK ⁵ de Tor
Ne JAMAIS installer de logiciel / script (PHP, Python, Bash, etc.), dont vous n’êtes pas certain de la source
Ne JAMAIS exécuter de logiciel / script / commande dont vous n’êtes pas certain de la source
Ne JAMAIS réaliser des tâches dont vous n’êtes pas certain de la source
Démarrer votre installation / configuration avec un VPS / serveur dont vous êtes certain de la source
Démarrer votre installation / configuration sur un système d’exploitation fraichement installé
Utiliser un courriel anonyme pour le service sur lequel vous allez louer votre VPS / serveur
> quelques services de courriel très sécuritaires
Payer votre VPS / serveur en Cryptomonnaie (Bitcoin, Monero, etc.)
> une liste complète des crypto-monnaies anonymes et privées
> quelques services de VPS / serveur offshore
Ne JAMAIS fournir votre véritable identité
Ne JAMAIS faire fonctionner un relais Tor sur le VPS / serveur, car ces adresses IPs sont rendues publiques
Ne JAMAIS envoyer de courriel via le VPS / serveur (donc désactiver tous les logiciels / fonctions liées aux courriels)
Ne JAMAIS autoriser l’envoie de fichier sur le VPS / serveur où va être hébergé votre site
Ne JAMAIS autoriser l’ajout d’image distante (exemple, avec la balise [ img ] comme sur ce forum)
JavaScript est à BANNIR sur les applications Web que vous allez développer / héberger
Désactiver toutes les fonctions Apache 2, nginx, PHP, etc. qui sont susceptibles de renvoyer des erreurs aux visiteurs et peuvent afficher votre adresse IP (une liste non-exhaustive sera fournie)
Ne pas inclure des fichiers distants via des CDNs, par exemple : jQuery, Bootstrap, etc.
Effectuer un audit de vos applications Web pour éviter toute faille potentielle
Effectuer un audit de vos scripts pour éviter toute faille potentielle
Garder votre VPS / serveur à jour (amélioration des logiciels, correction de faille de sécurité, etc.)
Utiliser toujours un mot de passe fort
> Pour générer un mot de passe fort, rendez-vous sur Strong Password Generator
Si une règle vous semble incorrecte, si vous souhaitez proposer une amélioration, ajouter un oubli, n’hésitez pas à le proposer.
On se connecte au serveur via SSH et on change directement le mot de passe root :
passwd
Je vous conseille de lire le début de ce tutoriel pour apprendre à vous connecter à SSH.
On met à jour notre fichier sources.list :
nano --backup /etc/apt/sources.list
On change pour :
deb http://deb.debian.org/debian bullseye main contrib non-free
deb http://deb.debian.org/debian bullseye-updates main contrib non-free
deb http://security.debian.org/debian-security bullseye-security main
deb http://ftp.debian.org/debian bullseye-backports main contrib non-free
On met à jour les paquets et on installe nano (éditeur de texte) et sudo (permet d’effectuer des tâches administratives en "root").
Ces deux logiciels ne sont pas installés par défaut sur certains VPS, cela dépend du fournisseur et de la distribution, donc par sécurité, on installe, si ils sont déjà présents sur le serveur, ça ne changera rien.
apt update && apt install apt-transport-https lsb-release ca-certificates nano sudo
On met à jour le serveur :
apt update && apt upgrade -y
On crée notre utilisateur principal :
adduser salameche
Pour plus de clarté dans ce tutoriel, j’utiliserai comme nom d’utilisateur : salameche
La création d’un utilisateur est relativement simple, la seule remarque importante est de renseigner un mot de passe fort, on pourra utiliser le site indiqué plus haut (Strong Password Generator).
Une fois notre utilisateur créé, on l’ajoute au groupe "sudo", cela permettra d’exécuter les commandes "root", sans être "root", cela améliore grandement la sécurité et évitera de faire des bêtises :
adduser salameche sudo
Cela renverra :
Adding user `salameche' to group `sudo' ...
Adding user salameche to group sudo
Done.
Une fois l’utilisateur ajouté au groupe "sudo", on se connecte sur notre compte utilisateur "salameche" :
su salameche
On paramètre / sécurise SSH :
sudo nano /etc/ssh/sshd_config
On change le port SSH :
Port _PORT_
C’est une forme de sécurité simple, mais étonnamment efficace.
Si votre serveur SSH n’est pas sur le port 22, il est beaucoup moins susceptible d’être trouvé par des robots qui analysent les adresses IPs à la recherche de mot de passe faible sur les comptes par défaut. Si vous numérisez tout le réseau, vous ne pouvez pas vous permettre de vérifier tous les ports possibles (65 535 ports disponibles) pour trouver le serveur SSH.
Cependant, si quelqu’un vous ciblera activement, cela ne fournit aucun bénéfice, car une simple analyse nmap unique révélera le port sur lequel il fonctionne réellement (on utilisera PortSentry pour bloquer ces attaques, voir plus bas).
Le port doit être compris entre 0-65535.
Le port utiliser ne doit pas être déjà utilisé par une application.
On vérifie que le protocole de connexion SSH est en version 2 :
Protocol 2
On désactive la connexion root en SSH :
PermitRootLogin no
Nous n’utiliserons pas le protocole FTP, cela pour des raisons évidentes de sécurités, mais sFTP. (Repris sur : https://mondedie.fr/d/5302)
On commente et / ou supprime cette ligne :
#Subsystem sftp /usr/lib/openssh/sftp-server
On ajoute en dessous :
Subsystem sftp internal-sftp
À la fin de la page, on ajoute : ( on vérifie que les paramètres ne sont pas présents pour éviter les doublons )
ClientAliveInterval 600
ClientAliveCountMax 0
UseDNS no
UsePAM yes
DebianBanner no
AllowUsers salameche
ClientAliveInterval : envoie un message au client ssh après x secondes sans activité (0 = jamais). Si le client répond au serveur, la connexion est maintenue
ClientAliveCountMax : nombre maximal de requêtes ClientAliveInterval sans réponse que tolérera le serveur avant de fermer la connexion
UseDNS : par défaut le serveur cherche à établir la résolution DNS inverse depuis votre IP. Cette requête peut être assez longue, c’est pour cela que nous désactivons cette fonctionnalité, plutôt inutile
UsePAM : PAM doit être désactivé si vous utilisez des clés d’authentifications, ce qui n’est pas notre cas, donc il doit être activé
DebianBanner : permet d’éviter que le serveur SSH n’affiche la distribution Linux Ubuntu ou Debian
AllowUsers : ajoute les utilisateurs autorisés à se connecter à SSH, pour notre cas, on ajoutera simplement "salameche"
On quitte et on redémarre SSH :
sudo /etc/init.d/ssh restart
On fait la mise à jour nécessaire au bon fonctionnement du serveur :
sudo apt update && sudo apt upgrade && sudo apt dist-upgrade
On installe et désinstalle quelques logiciels pour la pratique et la sécurité, on recharge le cache de recherche et on met les liens symboliques à jours :
sudo apt install locate localepurge && sudo apt purge ntp rsyslog exim* postfix* sendmail* samba* && sudo updatedb && sudo ldconfig
Ajouts
locate : updatedb génère un index de fichiers et répertoires. GNU locate peut être utilisé pour effectuer des requêtes rapides sur cet index.
localepurge : Il s’agit d’un script simple qui récupère l’espace sur le disque gaspillé par des fichiers de locales, de régionalisations de GNOME ou KDE et des pages de manuel régionalisées, non nécessaires. En fonction de l’installation il est possible de gagner des centaines de mégaoctets d’espace disque occupés par des régionalisations jamais utilisées. Il sera automatiquement invoqué à la fin de chaque installation avec APT.
Suppressions
ntp : NTP, le Network Time Protocol (protocole de temps réseau) est utilisé pour garder les horloges des ordinateurs à la bonne heure, en les synchronisant par Internet ou un réseau local, ou en suivant un récepteur matériel qui interprète les signaux de temps GPS, DCF-77, NIST ou similaires.
rsyslog : Rsyslog est une implémentation à unités d’exécution multiples de syslogd (un outil système qui fournit une journalisation de message), avec des fonctionnalités qui comprennent :
un syslog fiable par TCP, SSL/TLS et RELP ;
une mise en tampon sur disque à la demande ;
une alerte par courriel ;
une écriture vers des bases de données MySQL ou PostgreSQL (via des greffons de sorties séparés) ;
des listes d’expéditeurs autorisés ;
un filtrage sur n’importe quelle partie du journal système ;
une compression de message à la volée ;
un contrôle précis du format de sortie ;
un basculement vers des destinations de sauvegardes en cas de problèmes ;
un chiffrement de niveau entreprise des relais syslog
C’est le démon syslogd par défaut sur les systèmes Debian.
exim4 : Exim (version 4) est un agent de transport de courrier. Exim4 est le métapaquet sur lequel dépendent les composants essentiels d’une installation de base d’exim4.
postfix : Postfix est l’agent de transport de courriel de Wietse Venema qui a commencé son existence comme une alternative au très utilisé programme Sendmail. Postfix vise à être rapide, facile à administrer et sécuritaire, tout en restant assez compatible avec Sendmail pour ne pas frustrer ses utilisateurs. Ainsi, l’externe ressemble à Sendmail, alors que la structure interne est complètement différente.
sendmail : Sendmail est un agent de transport de courrier alternatif (MTA) pour Debian. Il convient au traitement de configurations de courrier sophistiquées, bien que cela signifie que sa configuration peut également être complexe.
samba : Samba est une mise en œuvre du protocole SMB/CIFS pour les systèmes Unix, fournissant une interopérabilité de partage de fichiers et d’imprimantes entre Microsoft Windows, OS X et les systèmes basés sur UNIX. Samba offre la possibilité de fonctionner comme un contrôleur de domaine du genre NT4, et permet d’intégrer à la fois les domaines NT4 et les services « Active Directory » en tant que serveur membre.
On installe Apache 2 :
Avant toutes choses, on désinstalle Apache 2 s’il est déjà installé, pour éviter tout conflit.
sudo apt purge apache*
Puis on réinstalle Apache 2 :
sudo apt install apache2 apache2-utils
On cache quelques informations d’Apache 2 :
sudo nano /etc/apache2/apache2.conf
On vérifie que ces lignes correspondent à :
<Directory />
#Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride None
#Require all granted
Require all denied
</Directory>
<Directory /var/www/>
Options FollowSymLinks
AllowOverride None
Require all granted
</Directory>
On ajoute ces 3 lignes à la fin de la page :
ServerSignature Off
ServerTokens Prod
TraceEnable Off
On sauvegarde.
On supprime le dossier /var/www/html :
sudo rm -rf /var/www/html
On applique les droits Apache 2 sur le dossier du site :
# Le groupe www-data devient propriétaire
sudo chown -R www-data:www-data /var/www
# Avoir tous les droits sur le répertoire
sudo chmod 775 /var/www
# Ajouter l’utilisateur salameche au groupe www-data
sudo usermod -a -G www-data salameche
On bloque l’accès direct à l’IP du serveur :
On crée un fichier direct.conf
sudo nano /etc/apache2/sites-available/direct.conf
On insère :
<VirtualHost *:80>
ServerName **.**.**.**
Redirect 403
DocumentRoot /dev/null
</VirtualHost>
On remplace les astérisques par l’IP du serveur.
On active le VirtualHost :
sudo a2ensite direct
On désactive le mod_autoindex :
sudo a2dismod autoindex status
On active différents modules utiles pour Apache 2 :
sudo a2enmod deflate headers rewrite ssl
On quitte et on redémarre Apache 2 :
sudo service apache2 restart
PHP 8 n’étant pas disponible sur Debian 11, on va l’installer via le dépôt de Ondřej Surý.
Qui est Ondřej Surý ?
C’est un développeur Debian depuis les années 2000, et il empaquette PHP pour Debian depuis PHP 5, ce qui signifie que les paquets officiels dans Debian et Ubuntu sont soit son travail, soit ils sont basés sur son travail. Les paquets PHP de son Ubuntu PPA et Debian DPA correspondent aux paquets officiels de Debian.
PHP : Hypertext Preprocessor, plus connu sous son sigle PHP (acronyme récursif), est un langage de programmation libre, principalement utilisé pour produire des pages Web dynamiques via un serveur HTTP, mais pouvant également fonctionner comme n’importe quel langage interprété de façon locale. PHP est un langage impératif orienté objet.
PHP a permis de créer un grand nombre de sites web célèbres, comme Facebook, Wikipédia, etc. Il est considéré comme une des bases de la création de sites web dits dynamiques mais également des applications web.
[ Site Officiel ] – [ Wikipédia.org ] – [ Nouveautés de PHP 8 ]
Avant toutes choses, on désinstalle PHP s’il est déjà installé, pour éviter tout conflit.
sudo systemctl stop php*
sudo apt autoremove --purge php*
sudo a2dismod php5 php7.0 php7.1 php7.2 php7.3 php7.4
Des erreurs apparaîtront si une version de PHP n’est pas installée.
On ajoute la clé GPG & le dépôt :
wget -O - https://packages.sury.org/php/apt.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/php.gpg >/dev/null
echo "deb [signed-by=/usr/share/keyrings/php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php8.list
sudo apt-get update
On installe PHP et quelques dépendances utiles :
sudo apt install --no-install-recommends php8.0 libapache2-mod-php8.0 php8.0-mysql php8.0-curl php8.0-json php8.0-gd php-msgpack php8.0-intl php8.0-gmp php8.0-mbstring php-redis php8.0-xml php8.0-zip php8.0-cli php8.0-common php8.0-opcache php8.0-readline
On active PHP pour Apache 2 :
sudo a2enmod php8.0
On configure PHP :
sudo nano /etc/php/8.0/apache2/php.ini
On remplace et / ou rajoute :
# Mettre à Off si possible
# Les shorts open tags sont les balises d'ouvertures courtes de php <?
# Elles posent des problèmes de compatibilité avec XML, puisque c’est justement la syntaxe des balises XML.
short_open_tag = Off
# Le safe_mode est déprécié dans PHP 5.3 et a été supprimé de 5.4, par conséquent, laissez cette option à Off
safe_mode = Off
# L’open basedir permet de limiter les dossiers dans lequel php va pouvoir interpréter des données, cela est plus sur car un attaquant ne pourra pas utiliser php pour lire des données en dehors de dossier spécifié
; http://php.net/open-basedir
open_basedir = /var/www
# Désactiver des fonctions PHP
# Il y en a certaines de désactiver par défaut, toutefois, certaines fonctions sont souvent utilisées pour, exploiter une faille dans l’application et mettre en place des backdoors, ainsi, si votre application ne, les utilise pas, il est judicieux de les désactiver.
# À celle par défaut listées ci-dessous, on peut ajouter :
# exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;
# Ces options concernent les performances de PHP, les réglages par défaut doivent normalement suffire pour la plupart des cas
# Temps maximum d'exécution après lequel un script sera arrêté sauf cas particulier, vos scripts ne devraient jamais mettre plus de quelques secondes à s’exécuter
max_execution_time = 30
# Temps maximum qu’un script peut mettre pour recevoir des données input au-delà de ce laps de temps, le traitement est stoppé, il peut-être ici judicieux d’augmenter ce temps si vous proposer l'upload de fichier
max_input_time = 60
# Taille de mémoire qu’un script peut consommer, de même, si vous avez un formulaire d'upload de gros fichiers, il se peut que vos scripts aient besoin de plus de mémoire
memory_limit = 512M
# Affiche les erreurs PHP, mettre à On pendant le dev, Off en production
display_errors = Off
# Affiche les erreurs qui ont cours durant la séquence de démarrage de PHP, mettre à Off en production. Il peut être intéressant de les mettre à On en développement pour le débogage
display_startup_errors = Off
# Consigne les erreurs dans les fichiers de log, je conseille de toujours laisser à On
log_errors = On
;;;;;;;;;;;;;;;;;
; Data Handling ;
;;;;;;;;;;;;;;;;;
# Taille maximale que PHP accepte pour les données en POST, dans le cas d’un upload de fichier par POST, cette valeur sera aussi à modifier si vous voulez uploader des fichiers de plus de 8M
post_max_size = 8M
;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;
# Peut-être désactivé si vous ne comptez pas autoriser l'upload de fichiers
file_uploads = On
# Définis la taille maximale de fichiers que l’on peut uploader, cette taille ne peut toutefois pas dépasser celle de post_max_size
upload_max_filesize = 2M
;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;
# Règle le fuseau horaire
date.timezone = Europe/Paris
# Expose à tous les clients le fait que PHP est installé sur le serveur. Ceci inclut la version de PHP dans les en-têtes HTTP de la réponse (X-Powered-By : PHP/5.3.7). Avant PHP 5.5.0, les logos sont aussi activés, donc ajouter leur chaine aux urls de votre script PHP affichera le logo approprié (» https://www.php.net/?=PHPE9568F34-D428-11d2-A769-00AA001ACF42). Ceci affecte aussi la sortie de phpinfo(). Lorsque les logos sont désactivés, le logo PHP et les crédits ne s’afficheront pas.
expose_php = Off
# Cette option active les versions étendues des fonctions d’accès aux fichiers, qui savent exploiter les URL. Les extensions par défaut permettent d'accéder aux fichiers distants avec les protocoles FTP ou HTTP. Certaines extensions comme zlib, peuvent ajouter d'autres fonctionnalités.
allow_url_fopen = Off
# Cette option permet l'utilisation des gestionnaires d’URL avec les fonctions suivantes : include, include_once, require, require_once. Note : Ce paramètre nécessite que le paramètre allow_url_fopen soit activé avec "On".
allow_url_include = Off
# Cette directive vous permet de désactiver certaines fonctions pour des raisons de securité. Elle prend une liste de noms de fonction délimités par une virgule. Cette directive n’est pas affectée par le Safe Mode
disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal,exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,highlight_file,show_source,mail,phpinfo,passthru,eval,proc_get_status,proc_nice,proc_open,proc_terminate,ftp_alloc,ftp_cdup,ftp_chdir,ftp_close,ftp_connect,ftp_delete,ftp_exec,ftp_fget,ftp_fput,ftp_get,ftp_put,ftp_nlist,imap_open
Ces fonctions sont à titre d’information, vous pouvez activer / désactiver celles que vous souhaitez. Nous désactivons uniquement les plus sensibles.
On sauvegarde "php.ini" et on redémarre Apache 2 :
sudo service apache2 restart
MariaDB est un système de gestion de base de données édité sous licence GPL. Il s’agit d’un fork communautaire de MySQL : la gouvernance du projet est assurée par la fondation MariaDB, et sa maintenance par la société Monty Program AB, créateur du projet. Cette gouvernance confère au logiciel l’assurance de rester libre.
MariaDB est maintenant la variante par défaut de MySQL, en version 15.1. Avec la publication de Buster, un nouveau mécanisme est introduit pour choisir la variante par défaut. Celui-ci utilise les méta-paquets créés à partir du paquet source default-mysql-server.
Par exemple, l’installation du méta-paquet default-mysql-server installera mariadb-server-10.1. Si les paquets mysql-server-5.5 ou mysql-server-5.6 étaient installés, ils seront supprimés et remplacés par leur équivalent MariaDB. De la même façon, l’installation du méta-paquet default-mysql-client installera mariadb-client-10.1.
[ Site Officiel ] – [ Wikipédia.org ]
On installe MariaDB :
Avant toutes choses, on désinstalle MySQL s’il est déjà installé, pour éviter tout conflit.
sudo systemctl stop mysql*
sudo apt autoremove --purge mysql* maria*
Des erreurs apparaîtront si une version de MySQL n’est pas installée.
sudo apt install default-mysql-server default-mysql-client
Ensuite, on sécurise l’installation, le script ci-dessous nous guidera à travers certaines procédures qui élimineront les valeurs par défaut qui ne sont pas adaptées à un environnement de production.
On lance la commande, pour configurer, sécuriser et finaliser l’installation :
sudo mysql_secure_installation
- tapez entrer (pas de mot de passe requis)
- ensuite, on tape le mot de passe root souhaitez
- on retire l’utilisateur anonyme
- on désactive l’utilisation de la connexion via root (on peut pas la laisser)
- on retire les bases de données de tests
- on recharge les tables
On redémarre MariaDB :
sudo service mysql restart
Si vous rencontrez ce problème : Access denied for user 'root'@'localhost'
On va réinitialiser le plugin.
service mysql stop
mysqld_safe --skip-grant-tables &
mysql -u root
use mysql;
UPDATE user SET plugin = "";
exit;
service mysql start
Redémarrer le serveur.
Pour accéder à vos données enregistrer dans vos tables SQL, il va nous falloir un outil de gestion de base de données complet, simple et efficace.
Nous utilisons généralement phpMyAdmin (d’autres choix sont disponibles ici : http://sql.sh/logiciels). Malheureusement, ce gestionnaire n’est pas adapté à cette configuration.
Pourquoi ?
phpMyAdmin est lourd pour Tor et il utilise pleinement JavaScript, qui je le rappelle, est à proscrire lorsque que l’on navigue sur le réseau Tor
on lui trouve souvent des failles importantes de sécurité, par exemple la faille CSRF trouvée le 20 décembre 2017, qui pour intituler PMASA-2017-9
phpMyAdmin est surtout utilisé pour gérer des hébergements mutualisés, ce n’est pas notre cas
Je vous propose l’utilisation d’un petit script qui se nomme « Adminer ». Il vous suffira de transmettre le fichier unique lorsque vous aurez besoin d’accéder à votre base de données et de le supprimer une fois vos opérations terminées.
Les Pré Requis
Fonctionne avec MySQL, PostgreSQL, SQLite, MS SQL, Oracle, Firebird, SimpleDB, Elasticsearch et MongoDB
Support de PHP 5+
Disponible en Thai, Tamil, Romanian, Korean, French, Ukrainian, Dutch, Persian, Polish, Lithuanian, Slovene, Czech, Finnish, Italian, Hebrew, Catalan, Bengali, Vietnamese, English, Portuguese, Serbian, Slovak, Chinese (Traditional), Estonian, Turkish, Indonesian, Norwegian, Brazilian Portuguese, Chinese (Simplified), Danish, Bosnian, German, Japanese, Spanish, Russian, Arabic, Hungarian
Gratuit pour un usage commercial et non commercial (Apache License ou GPL 2)
Pour la configuration, rien de plus simple, il vous suffit de télécharger Adminer et de renommer le fichier, par exemple :
cd /var/www/admin
sudo wget https://github.com/vrana/adminer/releases/download/v4.7.6/adminer-4.7.6.php
mv "adminer-4.7.6.php" "herd8754f1tf54rsy1gh54.php"
On renomme le fichier adminer.php, pour éviter, si vous oubliez de le supprimer, qu’un méchant robot attaque votre site.
Astuce
Pour plus de sécurité, on peut copier le fichier Adminer (herd8754f1tf54rsy1gh54.php) dans un dossier spécifique et le (tuto @openclassrooms) protéger un avec un .htaccess.
Adminer est personnalisable :
Liens :
Voilà, Adminer me parait une bonne alternative à phpMyAdmin.
Tor est un réseau informatique superposé mondial et décentralisé. Il se compose d’un certain nombre de serveurs, appelés nœuds du réseau et dont la liste est publique. Ce réseau permet d’anonymiser l’origine de connexions TCP. Cela peut entre autres servir à anonymiser la source d’une session de navigation Web ou de messagerie instantanée. Cependant, l’anonymisation du flux n’est pas suffisante, car l’application peut potentiellement transmettre des informations annexes permettant d’identifier la personne : c’est pourquoi le projet Tor développe également un navigateur Web basé sur Firefox, Tor Browser, ainsi que d’autres applications spécialement modifiées pour préserver l’anonymat de leurs usagers. L’implémentation de référence du protocole s’appelle Tor, c’est un logiciel libre sous licence BSD révisée.
Le projet Tor reçoit le prix du logiciel libre 2010, dans la catégorie projet d’intérêt. Le nom Tor est capitalisé comme un nom propre, bien qu’il s’agisse originellement d’un acronyme pour The onion router littéralement « le routeur oignon ».
[ Site Officiel ] – [ Wikipédia.org ]
Avant toutes choses, on désinstalle Tor si il est déjà installé, pour éviter tout conflit.
sudo systemctl stop tor*
sudo apt autoremove --purge tor*
Des erreurs apparaîtront si une version de Tor n’est pas installée.
On crée le fichier pour avoir les sources du dépôt Tor Project aux sources de Debian :
sudo touch /etc/apt/sources.list.d/tor.list
sudo nano /etc/apt/sources.list.d/tor.list
On ajoute la liste des dépôts :
# Dépôts du Tor Project
deb https://deb.torproject.org/torproject.org bullseye main
deb-src https://deb.torproject.org/torproject.org bullseye main
On ajoute la clé GPG du dépôt :
cd /tmp
curl https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | gpg --import
gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | apt-key add -
rm A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc
Astuce
Si vous rencontrez un problème avec GPG :
sudo apt remove gnupg
sudo apt install --reinstall gnupg2
sudo apt install dirmngr
Clé PGP officielle du projet Tor
On met à jour les dépôts :
sudo apt update
On installe Tor :
sudo apt install tor deb.torproject.org-keyring
On configure Tor :
sudo nano /etc/tor/torrc
On dé commente ces lignes :
DataDirectory /var/lib/tor
HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 80 127.0.0.1:80
On limite l’accès à Tor SOCKS sur 127.0.0.0.1 :
On recherche et ajoute / dé commente ces lignes :
SocksPolicy accept 192.168.0.0/16
SocksPolicy reject *
On redémarre Tor :
sudo service tor reload
Redémarrer Tor va créer le répertoire /var/lib/tor/hidden_service ainsi que deux fichiers très importants :
hostname : le nom de votre hidden service : e8rd9e4f2edrw54edry.onion, par exemple
private_key : la clé privée de votre hidden service
Notez le contenu de hostname quelque part, on l’utilisera plus tard !