Héberger son serveur chez soi

J’aime bien mettre les mains dans la technique, d’abord parce que ce n’est pas sale, mais aussi parce que je suis curieux et que j’aime tester des trucs.

Lorsque j’ai ouvert ce blog, il était hébergé sur une plateforme de blogs et je n’avais presque rien à faire. Mais j’étais très dépendant du bon vouloir de la plateforme de garder ce service ouvert, surtout qu’il s’agissait d’un service gratuit proposé par le « G » de GAFAM, habitué à fermer des services, y compris ceux rencontrant un certain succès.

C’est donc autant par curiosité, par envie d’apprendre, que par soucis de la maîtrise de ce blog, que je l’ai migré sur un serveur que j’héberge chez moi.

J’ai donc installé un serveur Debian sous forme de machine virtuelle sur mon NAS et un WordPress sur lequel j’ai migré mon blog. Debian parce que c’est la distribution GNU/Linux que j’apprécie le plus, et en place dans les différentes entreprises dans lesquelles j’ai travaillé comme RSSI, et WordPress parce qu’il s’agit du CMS le plus utilisé dans le monde, et que j’avais envie d’étudier sa sécurisation, également pour le travail.

J’ai donc configuré toutes les protections possibles sur ce WordPress, même si je sais qu’il sera piraté un jour. J’ai fait au mieux des connaissances que j’ai pu acquérir.

J’ai ensuite mis en place un système de sauvegarde du serveur et du WordPress, vers un autre NAS et vers un stockage en ligne.

Mais exposer un serveur sur internet depuis l’adresse IP attribuée par mon fournisseur d’accès à internet pose plusieurs problèmes :
– j’ai une fibre Free avec IP fixe (ce qui est pratique), mais sujette à quelques coupures de temps en temps.
– il est facile de retrouver mon identité réelle à partir de cette adresse IP, ce qui en soit n’est pas un problème car mon identité n’est pas secrète, mais je souhaite segmenter le plus possible mes activités de blogueur de mes activités professionnelles et personnelles.
– certains billets rencontrent parfois un succès, surtout si un « gros compte » des réseaux sociaux le met en valeur. Un gros afflux de visiteurs crée une sorte d’attaque DDoS qui met en difficulté ma liaison internet.

J’ai donc fait le choix d’utiliser le CDN Cloudflare, car celui-ci propose un compte gratuit pour un nom de domaine unique, avec presque toutes les fonctionnalités. Comme je suis curieux, cela m’a permis d’apprendre beaucoup de choses sur le paramétrage relativement complexe d’un CDN, et de régler les problèmes de coupure (grâce aux caches), d’anonymisation de mon adresse IP et d’attaque DDoS.

Il y a néanmoins plusieurs défauts dans ce choix : le premier (et le plus important) est de dépendre d’un acteur tiers supplémentaire (Cloudflare) en plus de mon FAI (Free), de mon registraire (BookMyName). Le deuxième est que je confie à ce partenaire beaucoup d’informations sur mes lecteurs. Le troisième est que ce partenaire peut changer très vite sa politique de service. Et enfin, tout le paramétrage se fait « sur la prod » puisque je n’ai pas d’environnement de tests (tester, c’est douter ^^).

Plusieurs lecteurs de ce « vieux » blog viennent lire les billets grâce à son flux RSS, et m’ont signalé des difficultés d’accès à ce flux RSS. Après enquête dans les logs fournis par Cloudflare, je me suis rendu compte que deux options anti-bots cochées par mes soins bloquaient aléatoirement le flux RSS des billets du blog :

Les deux options fautives

Normalement tout doit être rentré dans l’ordre maintenant, et vous devriez pouvoir utiliser vos lecteurs de flux RSS préférés.

Prochain objectif : abandonner le front WordPress pour le remplacer par un site statique, beaucoup plus rapide. Mais ça, c’est une autre histoire.

Simplifications techniques

Je suis curieux par nature, et par construction, aussi j’aime apprendre et comprendre des domaines qui ne sont pas de ma compétence métier première. C’est le cas de la gestion technique d’un réseau informatique. Au fil des années, la maîtrise d’un réseau informatique est devenue de plus en plus complexe, au point que les admin réseaux sont maintenant des experts indispensables à la mise au point, au fonctionnement, à l’entretien et à la sécurité d’un réseau informatique. Et je ne suis pas admin réseaux…

Je ne pouvais donc pas continuer à empiler des technologies dans mon réseau informatique personnel, et j’ai donc décidé de faire un grand nettoyage concernant son fonctionnement. C’est ce que je vais décrire sommairement ici, si cela peut aider un internaute à avoir une idée de ce dans quoi il s’embarque quand on touche aux réseaux.

Je ne suis pas certifié CISCO, ni HP, ni par aucun constructeur, mais j’ai apprécié le fonctionnement professionnel d’un bon nombre de leurs équipements, malgré le niveau de bruit des ventilateurs et la chauffe des composants. Je me suis tourné vers un constructeur d’équipement semi pro, avec une interface clicodrome qui me simplifie la vie. J’ai supprimé tous mes équipements réseaux hétérogènes (enfin presque).

Mes équipements réseaux sont tous de la marque Ubiquiti (ce billet n’est pas sponsorisé) : j’ai un cœur de réseau UDM Pro et quatre bornes Wifi UAP AC Pro. Le réseau filaire est de catégorie 5E en attendant de le remplacer par de la fibre optique, et pour m’éviter d’ajouter des câbles qui manquent parfois dans un coin de la maison, j’ajoute des petits switchs ER-X qui font le job silencieusement à un prix mini.

Les équipements filaires propagent 7 VLAN : Hébergement, Management, Bureau professionnel, Maison, IoT, Guest et FreePlayer. Les 4 derniers réseaux sont également propagés sur des réseaux Wifi associés.

La box de l’opérateur Free est en amont de l’UDM Pro que j’ai placé dans la DMZ de la box.

L’hébergement de ce blog est porté par une machine virtuelle Debian avec WordPress au sein d’un NAS Synology équipé de Virtual Machine Manager, et situé dans le réseau intitulé « Hébergement ». Ce réseau contient également une VM Debian avec mon serveur de flux RSS FreshRSS autohébergé.

Tous les réseaux sont étanches, avec des règles de firewall inspirées de cet excellent billet de Mikaël Guillerm. Pour l’anecdote, le réseau intitulé FreePlayer me permet de faire fonctionner correctement la télévision branchée dessus, en passant par un réseau Wifi dédié. En analysant les trames du FreePlayer, et en lisant un certain nombres d’articles sur le sujet, j’ai choisi un VLAN 100 avec un réseau IPv4 en 192.168.27.0/24 et un réseau IPv6 en mode SLAAC.

Plusieurs services sont accessibles depuis l’extérieur : ce blog, un serveur VPN Wireguard et un serveur VPN de secours OpenVPN. Ces trois services m’ont donné beaucoup de soucis car très attaqués. J’ai donc là aussi choisi la facilité : j’ai ouvert un compte gratuit chez Cloudflare et seules les adresses IP Cloudflare sont autorisées pour l’accès à ce blog. Pour le serveur VPN Wireguard, il est proposé nativement par l’UDM Pro et semble bien protégé. Pour le serveur OpenVPN du NAS Synology, je n’ai autorisé que les adresses IP françaises. Le monitoring de ces services est fait par UptimeRobot sur lequel j’ai ouvert un compte gratuit. J’ai un peu pesté contre Synology dont le parefeu ne permet pas d’autoriser la liste des adresses IP des sondes UptimeRobot sans bidouille.

Le réseau professionnel me sert pour le télétravail, pour ma machine de minage / cassage de mots de passe, et pour tous les tests que je peux faire sur mon Proxmox et sur mon poste d’attaque Kali.

J’ai encore mon NAS DIY basé sur un petit cube MicroServer Gen 8 HP sous OpenMediaVault pour mes sauvegardes dont je parlais ici en 2016. mais dans la simplification des technologies que je mène, j’ai acheté un espace « à vie » de 2To chez pcloud qui double mes sauvegardes distantes que je fais sur mon vieux Synology que j’ai placé dans ma coquette studette parisienne. L’application pcloud a simplifié également les transferts de photos entre nos différents téléphones.

J’ai encore beaucoup de choses à apprendre, en particulier sur IPv6 qui n’est autorisé chez moi pour l’instant que sur un seul réseau filaire. Bien sûr, le parefeu IPv6 de la Freebox est activé, ainsi que celui de l’UDM Pro. Je lis aussi avec attention les articles de Stéphane Bortzmeyer sur DNSSEC, mais j’avoue que je suis encore très tâtonnant sur le sujet. Les équipements et les ordinateurs de la maison utilisent les DNS sécurisés de Quad9, sauf ma machine perso qui héberge son propre serveur DNS non censuré.

Le plus dur reste à faire : ranger mon bureau, et jeter les câbles BNC et leurs bouchons de terminaison…

Se chauffer en minant des cryptomonnaies

Ce billet est la suite de celui-ci et me permet de faire un bilan de cette expérience.

Tout d’abord, je voulais utiliser du matériel d’occasion pour me faire une machine de cassage de mots de passe basée sur les anciennes cartes graphiques de mon gamer de fils. Puis est née l’envie de regarder un peu du côté des cryptomonnaies, pour découvrir cet univers. Enfin, l’idée était de remplacer mon chauffage électrique d’appoint qui me chauffe l’hiver. J’ai donc mené cette expérience tout l’hiver, prolongée jusqu’au mois de mai où j’ai éteint ce mini rig de minage.

La machine

Il s’agit d’un ancien PC dont la carte mère possède trois ports PCI-Express 1x qui me permettent de déporter les cartes graphiques loin du boîtier, grâce à des « Riser PCI » achetés pour mettre les cartes à la verticale.

Si au départ j’ai utilisé plusieurs alimentations séparées, « bricolées » pour démarrer sans être reliées à la carte mère, j’ai fini par récupérer une alimentation unique de 850W qui me permet d’alimenter la carte mère et les cartes graphiques. Notez que j’aurais pu simplement acheter un câble « double alimentation » à 12€ permettant de brancher deux alims ATX sur la même carte mère. Mais bon, les alims étaient vieilles, chauffaient beaucoup et je n’avais pas trop envie de mettre le feu à ma studette…

J’ai utilisé trois cartes graphiques : 2 GTX1080Ti (dont une achetée sur LeBonCoin) et 1 GTX1060, toutes branchées sur leur riser. J’ai ajoutée quelques radiateurs passifs qui traînaient dans mon bazar, afin d’extraire le plus vite possible la chaleur des GPU (en plus des ventilateurs d’origine) et les maintenir à environ 70°C en fonctionnement.

A vu de nez, l’ensemble consomme environ 700Wh, ce qui correspond à un petit chauffage d’appoint électrique. Attention toutefois, celui-ci va fonctionner 24h/24 et 7j/7 : il faut donc qu’il soit utile et permette de gagner quelques degrés par rapport au chauffage collectif de mon immeuble (ce qui est le cas : sans chauffage d’appoint, il fait 18°C dans ma studette l’hiver).

Le choix de la cryptomonnaie et de l’équipe de minage

Après avoir fait pas mal de tests, j’ai choisi de miner de l’Ethereum (ETH) et d’être payé sans frais en Bitcoin (BTC) en participant à l’équipe de minage eth.2miners.com. Il n’est pas nécessaire d’y créer un compte et les frais de participation sont corrects (1%). J’ai choisi d’être payé dès que possible, c’est-à-dire dès que la rémunération de mon système de minage arrive à 0.005 ETH, ce qu’il atteint tous les 4 jours. Cet hiver, cela correspondait environ à 14 euros tous les 4 jours.

J’utilise le logiciel Gminer qui utilise bien les ressources de ma configuration, là aussi à un coût raisonnable dû aux développeurs (1%).

Enfin j’utilise le logiciel Exodus comme portefeuille crypto pour obtenir une adresse BTC et y stocker mes Bitcoins obtenus pour les blocs ETH minés. J’ai fait le choix d’un portefeuille logiciel installé sur ma machine (et mon téléphone) pour éviter d’utiliser celui fourni par les plateforme (Binance, ZenGo…). Cela demande de bien faire attention à ses sauvegardes.

Le transfert en euros

Mon objectif initial n’était pas de faire des plus-values d’investissements, et donc je pensais transférer rapidement mes Bitcoins en Euros. Mais j’ai été relativement désappointé par l’application ZenGo que j’utilisais initialement (car sans obligation de créer un compte). En effet, il s’est passée 3 heures entre la demande de conversion de mes Bitcoins en Euros et sa réalisation effective par ZenGo, ce qui a fait que j’ai perdu 3% du montant attendu (le BTC avait baissé pendant ces 3h). Ça laisse une impression désagréable, loin de l’idée de l’ordre de vente à la corbeille que je vois dans les films.

J’ai donc fini par me créer un compte sur une plateforme d’échange, et j’ai choisi Binance. J’ai mis un peu de temps à trouver les menus des seules actions qui m’intéressent, mais j’ai fini par comprendre (la plateforme est surtout conçue pour ceux qui veulent trader).

Je transfère donc de temps en temps mes Bitcoins avec Exodus vers Binance, puis je choisis sur Binance le moment de la cotation du BTC la plus intéressante pour faire la conversion en euros vers mon compte bancaire. C’est amusant comment on en arrive à regarder les cours du BTC tous les jours en « espérant » que ça monte (bull market ou marché taureau). Autant dire qu’en ce moment, je ne transfère pas grand chose (bear market ou marché ours).

Au passage, j’ai appris qu’en bourse, on appelle un marché à la baisse « bear market » et un marché à la hausse « bull market », à cause de la façon dont ces deux animaux se battent : l’ours attaque avec ses griffes de haut en bas, alors que le taureau utilise ses cornes de bas en haut 🙂

Ma machine de minage est maintenant éteinte jusqu’à l’hiver prochain, sauf bien sur de temps en temps pour un petit cassage de mots de passe avec hashcat… et ça, c’est une autre histoire.

La chaleur, ce fléau

Sécuriser son serveur WordPress

Il existe de nombreux tutoriels consacrés à ce sujet, je ne vais donc faire que survoler le sujet. Mon objectif est surtout de rappeler des règles simples.

Le serveur

Si vous faites de l’autohébergement complet, le serveur est chez vous. Il faut donc sécuriser la machine d’un point de vue physique et logiciel. J’ai fait le choix d’une machine virtuelle dédiée uniquement au fonctionnement du service WordPress. Elle est située sur un NAS Synology permettant de faire fonctionner des machines virtuelles. Ce NAS est en hauteur (pour échapper aux coups de balais ou de serpillières) et branché sur un onduleur électrique pour l’isoler des micro-coupures, des variations de tension et des coupures électriques de moins d’une demi heure.

Continuer la lecture

Retour à l’anormale

J’ai définitivement quitté mon hébergeur, qui persiste à nier le problème survenu le 2 avril dernier. J’ai pourtant contacté le service support, signalé les heure et date, décrit la nature du problème, exploré les logs qui me sont accessibles, demandé l’escalade dans le suivi de ma demande, pour me permettre de reprendre confiance, rien n’y a fait.

Le plus drôle est que le support s’est plusieurs fois étonné que je signale un problème alors que le blog fonctionne parfaitement. A chaque fois, j’ai du leur expliquer que si ce blog fonctionne de nouveau, c’est qu’il est hébergé ailleurs que sur leur plateforme…

Continuer la lecture

Restauration d’un serveur WordPress

Voici en partage ma fiche de procédure en cas de crash de mon serveur WordPress et que je viens d’utiliser pour le remettre en service.

Le contexte :
Je loue un serveur WordPress « clef en main » chez un hébergeur. Comme tout serveur WordPress, j’ai un compte administrateur qui me permet de le paramétrer et de choisir des extensions. Parmi les extensions que j’ai choisies, celle qui gère la sauvegarde de mon site s’appelle UpdraftPlus. Elle est paramétrée pour faire une sauvegarde complète (base de données WordPress, extensions, thèmes, etc.) régulièrement. Je transfère manuellement les fichiers de sauvegarde par ftp chez moi pour disposer de sauvegardes externalisées et respecter la règle 3-2-1.

Continuer la lecture

Miner des cryptos en 2022

J’ai d’abord envisagé d’écrire un billet complet sur les crypto-monnaies, en partant de la définition des blockchains jusqu’à la description des équipes de mineurs, mais finalement, vous trouverez beaucoup d’informations sur ces sujets dans des billets écrits par des personnes bien plus expertes que moi. Ceux qui voudraient des informations vraiment utiles peuvent aller par exemple parfaire leurs connaissances sur https://www.bortzmeyer.org/search?pattern=blockchain, ou sinon, j’ai trouvé l’ouvrage du CIGREF clair, même si je n’ai pas la prétention d’en juger le contenu (pdf gratuit) Blockchain : passer de la théorie à la pratique dans les grandes entreprises

Continuer la lecture

VPN Wireguard site to site EdgeRouter X

Je suis l’heureux propriétaire de plusieurs routeurs EdgeRouter ER-X de la marque Ubiquiti, robustes et peu chers (environ 60 euros). Je me sers de ce routeur pour isoler mon réseau personnel de la box fournie par mon fournisseur d’accès à internet.

D’autre part, il se trouve que j’habite à 450 km de mon lieu de travail, et donc que je loue un studio près de mon entreprise où je suis en présentiel 3 jours par semaine. J’ai donc un deuxième abonnement internet fibre dans ce studio où j’héberge une partie de mon matériel informatique (mon « PC dans le Cloud« , mon serveur de sauvegardes externalisées et un serveur FreshRSS).

Continuer la lecture

Créer une porte dérobée chez soi

Pour accéder à mon réseau domestique depuis l’extérieur, j’ai mis en place un serveur VPN privé. C’est pratique, cela me permet d’accéder depuis l’extérieur à mes ressources autohébergées (serveur de flux RSS, serveurs de sauvegarde, partages familiaux, etc.) mais aussi de me protéger quand j’utilise un réseau Wifi, lorsque je me déplace avec mon matériel personnel (téléphone, tablette ou ordinateur portable).

Continuer la lecture

Retex sur une alerte cyber ratée

Dans mon univers professionnel, Retex signifie « Retour d’expérience » (on dit aussi Rex). Je vais donc vous faire le retour d’expérience d’une alerte cyber ratée. Ce blog me permet en effet de partager mes expériences, et en particulier mes peines.

A 12h22 ce jour là, je reçois une alerte curieuse en provenance de ma supervision « Microsoft Defender for Cloud Apps » : une adresse IP suspecte détourne du trafic de mes utilisateurs.

Aussitôt, je procède à quelques vérifications : cette adresse IP est repérée par Microsoft comme utilisée par un « Serveur C&C pour la propagation de programmes malveillants ».

Pour le lecteur profane en la matière, il faut comprendre qu’aujourd’hui les pirates attaquent souvent leurs cibles avec l’aide de botnets, c’est-à-dire avec l’aide de réseaux de machines qu’ils contrôlent à l’insu de leurs propriétaires. Et pour contrôler ces ensembles de machines, ils utilisent des serveurs de commande et de contrôle (les serveurs C&C ou C2). Ces botnets sont utilisés pour des actions malveillantes, comme par exemple des exfiltrations de données, des envois de spam ou de malwares, ou des attaque DDOS…

Je poursuis mes investigations : avec l’interface de Microsoft Defender for Cloud Apps, je filtre les journaux d’activité de mes utilisateurs reliés à ce serveur piraté. Le constat est grave : plusieurs dizaines de comptes de mes utilisateurs sont utilisés avec des authentifications valides, et cela depuis plusieurs applications Microsoft (Teams, Outlook, Sharepoint…)

Le pirate contrôle et utilise plusieurs dizaines de comptes de mon entreprise !

Je remonte un peu dans le temps, et je constate que le pirate a pénétré l’entreprise depuis au moins un mois ! Mon sang se glace.

Être RSSI (Responsable de la Sécurité du Système d’Information), c’est être en permanence sur le qui-vive. Tous les RSSI le savent, leur entreprise n’est pas à l’abri d’une attaque cyber de grande ampleur. Non seulement ils s’y préparent, mais ils savent que cette attaque majeure, celle qui mettra tout le système d’information par terre, ARRIVERA.

Nul ne sait quand, ni comment, ni l’aspect qu’elle prendra. Mais tout s’arrêtera.

Le RSSI est donc comme Giovanni Drogo, personnage central du « Désert des Tartares », roman de Dino Buzzati : il se prépare toute sa vie à la grande attaque finale…

Me voici donc en train d’observer de l’intérieur cette prise de contrôle des comptes de mes utilisateurs.

Après quelques minutes de sidération, je prends la décision de faire cesser l’attaque : je demande à l’équipe en charge des parefeux d’isoler les flux en provenance et vers ce serveur C&C, à l’équipe d’admin de modifier tous les mots de passe des utilisateurs concernés, à l’équipe support de s’attendre à un grand nombre d’appel d’utilisateurs en détresse et j’active la pré-alerte pour les participants à la cellule de crise cyber.

Tous mes messages sont conditionnels par précaution, mais je ne cache à personne la gravité potentielle de la situation.

Je révise mes fiches de procédure dans mon classeur de gestion de crise fraîchement créé, je retrouve les numéros de téléphone des personnes à appeler pour les différentes phases de la crise.

L’un des ordinateurs compromis est rapidement récupéré par le support grâce à la rapidité d’un des utilisateurs. Je m’apprête à en faire une image disque pour analyse ultérieure.

Il est 12h30, j’ai déclenché tout ce que j’avais à déclencher.

Non : je contacte l’hébergeur gérant l’adresse IP compromise, via son formulaire « abuse » pour qu’il agisse afin d’isoler ce serveur C&C.

12h45, les ingénieurs réseaux commencent à me remonter de l’information. Nous faisons un point en conférence téléphonique pour évoquer toutes les causes possibles. Le SIEM on prem n’a pas réagi, mais le serveur de logs montre bien la présence de l’adresse IP du serveur C&C.

Et elle est présente en nombre.

Je me prépare à un week-end difficile.

13h, les ingénieurs réseaux m’informent que parmi les ordinateurs concernés, le mien en fait partie. Ils me donnent la date et la plage horaire exacte pendant laquelle tout le flux de mon poste est passé par le serveur C&C. J’arrête mon ordinateur.

Depuis mon ordinateur de secours (un vieil Apple perso que je garde vivant et à jour via ma 4G perso et sans mes comptes professionnels), je vérifie ce que j’ai fait au moment indiqué par les équipes réseaux.

J’étais en train de travailler dans le train.

Avec cette information cruciale, et après quelques vérifications techniques, voici donc le message que j’ai envoyé à toutes les personnes impactées par cette alerte :

[...explications sur le contexte de l'attaque...]
Suite aux investigations techniques plus approfondies, menées avec diligence par l’équipe  Réseaux, il s’avère que Microsoft s’est trompé en indiquant que l’adresse IP XXX est malveillante.

Il s’agit en fait d’une adresse IP utilisée par le service Wifi de la SNCF.

L’alerte était donc un faux positif : je peux donc vous annoncer que votre compte n’a pas été compromis, ni piraté.

La rapidité est un élément clé dans une attaque informatique, et j’assume seul la responsabilité de cette décision. Néanmoins, j’ai conscience du dérangement important occasionné et je vous présente mes excuses les plus sincères.
[Zythom]

Fin du Retex, vous pouvez relire le billet avec la solution en tête et vous moquer autant que vous voulez, mais le soir, toute honte bue, j’ai ouvert une bouteille de champagne.

PS:
– Toujours utiliser le conditionnel quand on explique aux utilisateurs que leur compte a été compromis.
– Ne pas faire confiance aveuglément aux classifications des outils d’alerte.
– Garder à l’esprit que nos raisonnements restent faillibles, surtout sous la pression.
– Lorsque les utilisateurs ont pu lire mon message après avoir récupéré le contrôle de leur compte suite au changement de mot de passe, la plupart m’ont remercié et encouragé.
– Je pense que si quelqu’un lit les remontées des formulaires « abuse », et s’il fait les vérifications, il doit parfois bien rire…