Let’s encrypt Partout et même sur Windows

J’avais déjà écrit un billet sur cette solution sans être super satisfait de la chose. Pourquoi :
1° ça ne tournait pas sous nunux mais sous windows sans utiliser la solution native let’s ecrrypt
2° impossible de demander le renouvellement du certificat … un bug …euh ouais mais c’est le principe de la solution que d’avoir du renouvellement automatisé ?

Du coup, grand ménage et on repart sur des bases bien meilleures.
J’ai créé un Ubuntu sous VMware avec tout ce qu’il faut pour générer mes certificats en utilisant ACME :

apt-get install git
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh –install

un petit coup d’auto-upgrade:
./acme.sh --upgrade --auto-upgrade

Puis après j’ai utilisé les API OVH pour valider mon nom de domaine via DNS sur let’s encrypt (et franchement c’est top ce qui me fait dire que pour les noms de domaine … OVH est plus qu’utile entre les API et le ghostdns).
Il faut aller sur cette adresse https://eu.api.ovh.com/createApp/ ce qui vous permet de récupérer une application key et une application secrète.
Après cette commande :

acme.sh --issue -d mydomain.com --dns dns_ovh

Comme c’est la première fois, il faut utiliser les 2 clés pour s’authentifier aupres d’ovh et c’est bon :
https://eu.api.ovh.com/auth/?credentialToken=n0Qbjm6wBdBr2KiSqIuYSEnixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Il faut sélectionner illimité et accès autorisé.
et on recommence :
acme.sh --issue -d mydomain.com --dns dns_ovh

Je génère mon certificat :
./acme.sh --issue -d toto.com -d autodiscover.toto.com -d adfs.toto.com –d mail.toto.com --dns dns_ovh

J’ai aussi besoin d’un pfx et merci openssl
./acme.sh --issue -d cd /root/.acme.sh/sdskh.com && openssl pkcs12 -export -out toto.com.pfx -inkey toto.com.key -in toto.com.cer -name "le1.toto.com" -passout pass: passquetuveux

Boum certificat généré !!!!
Avec tous les fichiers qu’il faut pour Windows et Linux

Maintenant, un coup de fstab pour monter un répertoire commun (genre un répertoire du NAS) et copie de tous les fichiers vers ce répertoire (qui est donc celui d’un NAS).

Pour intégrer les certifs sous nginx ou apache (parce que j’ai pas mal de machine qui utilisent l’un ou l’autre), ce n’est pas très compliqué.
Un coup de fstab qui va taper sur le répertoire commun plus haut.
Vous donnez comme chemin SSL pour apache ou nginx les bon fichiers du commun et a minuit tous les jours on redémarre apache et/ou nginx.
Les fichiers mis à jour sont automatiquement et sans autre manipulation pris en compte.

Ce qui est pratique c’est que les fichiers certificats sont copiés tous les jours et prise en compte tous les jours. Dès qu’il y aura une vrai mise à jour des certificats (vers le 2eme mois dans mon cas en utilisant acme –force) Nginx et Apache en tiendront compte rapidement (pendant moins de 15min tous les 2 mois, il y aura un certificat valide mais obsolète sans être révoqué un nouveau certificat valide non pris en compte).
Par contre dans l’univers Windows, ça se corse.
J’opère une copie vers un répertoire spécifique d’Exchange pour faire une manip d’intégration.
D’abord je détruis l’ancien certificat :

certutil -delstore My toto.com

Ensuite j’importe le nouveau certificat :
certutil -f -p "" -importpfx toto.com.pfx

Enfin un coup de powershell pour stocker dans une variable le « thumbprint » (c’est-à-dire l’identifiant unique du certificat) et puis de l’activer sous exchange pour smpt,iis,pop et imap :
$Thumbprint = (Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {$_.Subject -match "toto.com"}).Thumbprint;
Enable-ExchangeCertificate -Thumbprint $Thumbprint -Services POP,IMAP,SMTP,IIS –force

Boum, j’ai donc une copie régulière du bon certificat en provenance de mon Ubuntu (via un support commun type NAS et en même temps cela pourrait être un montage direct fstab).
Je récupère le thumbprint (qui change à la mise à jour du certificat) et je le force sous Exchange.

Cette solution ne fonctionne pas tout à fait de la même manière pour web application proxy et ADFS. Tout simplement mon certificat ADFS contient toto.com et mon certificat let’s encrypt aussi du coup j’ai un peu galéré pour cette ligne powershell :

$Thumbprint = (Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {($_.Subject -match "toto.com") -and ($_.Subject -notmatch "adfs.toto.com")}).Thumbprint;

En gros je veux le thumbprint de toto.com mais pas adfs.toto.com et avec cette ligne powershell je la récupère.
Une fois récupéré j’injecte sous Web Application Proxy là encore en powershell :
Get-WebApplicationProxyApplication -Name autodiscover.toto.com | Set-WebApplicationProxyApplication -ExternalCertificateThumbprint $Thumbprint
Get-WebApplicationProxyApplication -Name mail.toto.com | Set-WebApplicationProxyApplication -ExternalCertificateThumbprint $Thumbprint

et ainsi de suite (peut etre qu’il y a un moyen d’imposer le certificat toto.com à toutes les entrée WAP mais je n’ai pas trouvé).

La solution fonctionne aussi sur le mêle principe pour le certificat pour le vpn sstp
Grosse astuce … je stock encore en variable le thumbprint

$Thumbprint = (Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {($_.Subject -match "sdskh.com") -and ($_.Subject -notmatch "adfs.sdskh.com")}).Thumbprint;

J’affecte le certificate via son thumbprint au remote access

netsh ras set sstp-ssl-cert hash=$Thumbprint

Et pour que ca fonctionne je le redémarre !

net stop RemoteAccess
net start RemoteAccess

Le tout dans un script powershell.
Maintenant il faut que tous ces scripts soit programmé. Rien de plus simple un petit .bat à créer pour Exchange, pour le WAP et pour le VPN qui invoque le script powershell :

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command ". "C:\chemindemonscript\monscript.ps1"

 

Une fois que tout cela est fini, j’ai :
Ubuntu génère/renouvelle les certificats let’s encryt
Copie vers un répertoire commun

le Serveur Exchange fait une copie du commun vers un répertoire ad hoc. Importation dans la librairie des certificats avec certutil. Powershell permet de récupérer le thumb du bon certificat. Il est force en affectation POP,IMAP,SMTP,IIS.

Le serveur WAP fait une copie du commun vers un répertoire ad hoc. Importation dans la librairie des certificats avec certutil. Powershell permet de récupérer le thumb du bon certificat. Il est force en affectation de toutes les adresses du reverse proxy.

Le serveur WAP fait une copie du commun vers un répertoire ad hoc. Importation dans la librairie des certificats avec certutil. Powershell permet de récupérer le thumb du bon certificat. Il est force en affectation du vpn sstp. Redémarrage du service VPN.

 

Tout étant programmé. Terminé je ne fais plus rien et j’ai toujours le bon certicat let’s encrypt sous linux ou Windows.
Elle est pas belle la vie ?

Personnal Cloud 2015

Petite mise à jour de mon LAN avant de faire un point sur ADFS et Jeedom (oui je sais … rien à voir)

mondomaine

 

En mai 2015 (ça date hein ?), j’ai mis à jour un de mes hotes ESXI.

Je me suis fabriqué une petite bête de course. Carte mère Supermicro et Xeon 12 cœurs avec 64 giga de RAM.
La carte mère est juste extraordinaire. Elle embarque un petite serveur web qui permet de gérer tout ce qui se passe sur la carte à distance dans un navigateur.
Quant au XEON … que de puissance.
64 giga du bonheur (et il ne me reste que 7 giga … attention à l’overcommit).

Alors vous allez me dire pourquoi faire tout ca ?

D’abord sur le premier hôte :

Un pFsense dernière mouture comme firewall, routeur et IPS.

Le même couple en cluster d’Active Directory 2012R2 (en attendant 2016). Ce couple gere le SSO dans le LAN, le DHCP IPV4/6, le DNS IPV4/6 et DNSSEC.
Petite nouveauté sur l’AD2 … la présence d’ADFS pour faire un beau reverse proxy/vpn sur un autre serveur.

Le toujours même Windows Update Server … pour les updates centralisé dans le LAN de tous les Windows et Office et économiser de la bande passante (quoiqu’avec la fibre …)

Un petit RDC. C’est peut-être mon serveur préféré. Il me permet en SSL (donc en passant même les firewall proxy les plus vicieux) de me connecter à mes machines (par exemple mon Windows 10 virtuel) et de quelque part transporter partout mes machines. Mais surtout de « diffuser » mes services et d’accéder juste à un Firefox à distance (et donc de passer outre les limitations de certaines entreprises).

Un Exchange 2016 … ma messagerie PIM en fait. C’est bien d’internaliser parfois pour ne pas perdre la main.

Un serveur de Streeam (avec Subsonic mon deezer perso) et Plex (pour consulter mes films, série et autres n’importe où dans le monde et aussi sur mon Apple TV4 dans le salon).

Un serveur VEEAM pour sauvegarde au mieux les petites machines virtuelles.

Puis le deuxième hôte :

Un pFsense dernière mouture comme firewall, routeur et IPS en mode « slave ». En gros, si l’hôte 1 s’arrête … ce firewall prend la main automatiquement. Pas de coupure d’internet. Pas de coupure de serveur (sauf ce qui sont sur l’hôte 1 évidemment. Je ferais du VMware HA bientôt).

Une machine CenTOS avec openVZ. C’est un peu « inception » ce truc. Donc une machine virtuelle sur une machine physique qui fait tourner 3 serveur virtualisés LAMP (sur un LAMP – un site, sur un autre mes petits services comme TTRSS, Fever et Full text RSS et infiniteWP. Ce dernier centralise la mise à jour des mes WordPress interne et chez OVH).

Un Freenas qui est un NAS open Source (pour test)

Un autre CentOS qui gère l’onduleur et qui permet d’envoyer des ordres d’extinctions aux ESXI si jamais la coupure de courant était un peu longue.

Evidemment un VCenter Server et un Nested ESXI (c’est-à-dire un ESXI virtualisé sur un ESXI … c’est utile parce que Nested ESXI est patché et que je ne veux pas patcher un ESXI sur un hote physique. On ne sait jamais. Le patch quant à lui permet de faire tourner OSX Server dans une machine virtuelle)

Un Ubuntu avec Zentyal … en gros un Windows Server open source. Très bon système.

Un Ubuntu avec Docker. Là encore c’est inception. Docker me sert à virtualiser non les machines mais les services.

Un Ubuntu Jeedom. Ma petite découverte de fin 2015. C’est un serveur open Source de domotique. J’en parlerais dans un autre billet.

Un Ubuntu MySQL. Ce serveur centralise toutes les bases de données de me différent service. J’ai préféré isoler MySQL sur sa propre machine virtuelle il y a 3 jours (avant le serveur MySQL était une machine openVZ)

Un Ubuntu NZBapp qui sert à télécharger avec Sabnzbd, NZBget, Couchpotato, Sickrage, Headphone et le serveur/client Torrent Transmission.

Une VM Synololgy pour faire des test de communication et de synchronisation entre mon NAS 1318+ de Synology et cette VM (qui à 10 T de stockage en direct sur la machine virtuelle).

Une Debian 7 (ca date) avec Newznab (c’est une machine qui vérifie tout ce qui est publié en newsgroup et en sort les releases pour téléchargement. C’est sur ce serveur que Sickrage et Couchpotato vérifient respectivement les sorties séries et films. Tout est automatisé évidemment avec une petite notification sur iOS via Prowl)

Un OSX El Capitan Server pour faire du Mobile Device Management de mes « iOS devices »

 

Et enfin un petit Windows 10 parce qu’l faut bien un petit client pour manager tout ca de temps en temps. Sans compter que grâce a Remote Desktop, cela me permet d’avoir un Windows 10 sur mon iPad.

Virtualisation OpenVZ (principe)

Enfin un petit billet (oui ça faisait longtemps)

 

Il y a peu j’ai changé l’hébergement des blogs.
Nous étions sur un dédié OVH (vieil Atom avec 2 giga de RAM et un disque dur « magnétique » poussif). Le tout assez cher donc et complétement obsolète.

J’ai testé le VPS OVH … prix bien plus raisonnable et à ma grande surprise sympathiquement plus véloce que l’ancien dédié.

Une fois les migrations de blog faite (et quand vous n’avez plus accès à la database … s’pas facile), je me suis penché sur le « mais comment ça fonctionne-t-il donc cet hébergement VPS chez OVH ».

 

Sans surprise OVH propose du VMWARE ESXI. De la bonne virtualisation en  « elastic cloud ». C’est-à-dire que les machines sont dans une sorte de cloud virtuel et qu’en ajoutant une machine, elle s’autoconfigure pour amener de la RAM et du CPU au cloud. Je présume que tout est stocké dans des bais fibrées (mais bon cette partie-là ne nous intéresse pas).

Et une autre forme de virtualisation bien sympathique : OpenVZ (conteneur Linux)

En quoi cela consiste-t-il ?

Vous installez (dans mon cas) un Cent OS et après plein de ligne de commande (que je vous donnerais après) vous avez installé une sorte de cloneur – containeur Linux.
Il suffit de créer une machine virtuelle au-dessus du Cent OS. La création est rapide puisqu’elle repose sur les fichiers du Cent OS qui sont « virtualisés ».
Cette virtualisation est bien plus limité que celle de VMware (que du Linux et pas toutes les versions) mais elle permet de  compartimenter des installations de Linux.
Dans mon cas :
une petite machine virtuelle avec ESXI, j’ai installé Cent OS dessus. Puis installation dans la VM d’OpenVZ.
Sur cette machine en virtualisation « noyaux », j’ai 4 Ubuntu : 1 MySQL et 3 AP (apache PHP).

Cela m’a permis de séparer 1 « machine » MySQL, 1 « machine » WordPress, 1 « machine » apache et plein de chose dedans et enfin un dernière « machine » WordPress.
Tout est bien séparer. Je peux rebooter un site sans toucher l’autre.
L’énorme avantage, c’est lorsque je fais une mise à jour du Cent OS … la plupart des machines virtualisées qui sont au-dessus sont elles aussi mise à jour.

VMware ESXI: Contenu du labo à la maison (part 4)

Alors, je résume encore : un ESXI, 2 Windows Server en AD Cluster, 1 Windows 2012 en Exchange 2010 et 1 Windows 2012 avec WSUS, 1 Windows 2012 avec VEEAM Backup & Replication.

L’ESXI est bien chargé non ?

MAIS, il manque l’accès réseau à tout ça non ?

Bah oui, il n’y a aucun routage ou firewall dans tout ça.
Et il y a une solution pour ça.

J’ai testé pas mal de firewall open-source. Je ne sais pas pourquoi j’ai plus confiance mais bon avec les backdoor de le NSA sous Windows, je dois être un peu bête 😉
Je m’étais arrêté sur Endian qui est assez sympa et bien intégré. Malheureusement, trop intégré, pas mis à jour avec une communauté peu active.
Finalement, je me suis arrêté à pFsense. Et là c’est la claque. Ce firewall est extraordinaire. Il supporte de nombreux plugin : SNORT (anti-intrusion), SQUID (proxy et surtout reverse proxy) et open-vm-tools (les outils pour VMWARE).

Là ou pFsense est énorme :

–          il est (et c’est un des rares) compatible IPv6 (notamment advertisement de la gateway meme avec un DHCP IPv6)

–          il est modulaire

–          il est un excellent firewall, nat et gateway

–          Il supporte le clustering en failover (c’est-à-dire que vous avez 2 firewalls et que si le maitre tombe … l’esclave prend la main et les 2 firewalls sont synchronisés)

 

Je ferais un billet spécial pFsense.

VMware ESXI: Contenu du labo à la maison (part 3)

« Il revient et il est pas content » 😉

Pour ceux qui n’aurait pas lu les premiers articles

Je suis passé d’un serveur monolithique sous Windows 2008R2 à un hyperviseur ESXI 4.x avec plusieurs machines virtuelles : 2 Windows 2012 en cluster d’Active Directory et 1 Windows 2012 en Exchange 2010 et 1 Windows 2012 WSUS.

Bah il manque deux machines essentielles : vSphere et surtout une solution de sauvegarde (non parce que là il y a pas mal de machines)

Pour vSphere pas compliqué, j’ai déployé via OVF (Open Virtual Machine Format) vCenter Server Appliance. C’est la brique  « logiciel de gestion de serveurs qui offre une visibilité centralisée, une gestion proactive et une capacité d’extension de vSphere, le tout depuis une console unique ».
En gros, vCenter permet de gérer l’hôte ESXI et surtout opérer des lives migrations. Bon ça permet de faire plein d’autres choses : virtualisation de switch distribué, live migration, etc …

Et la solution de sauvegarde alors ?
Je crée une nouvelle machine Windows 2012 et j’y installe Veeam Backup & Replication.
Ce soft est juste une MERVEILLE.
Il n’y aucun besoin d’installer un agent sur les machines virtualisée. VEEAM sauvegarde la machine directement à partir de l’hôte ou du vCenter. Le tout est sauvegardé directement sur un disque partagé de mon NAS Synology (j’en parlerais aussi dans un autre billet).
Et là ou VEEAM est juste enormissime … c’est qu’il est possible de démarrer directement un backup en tant que machine virtuelle et encore mieux de tester le backup dans un laboratoire VEEAM pour voir si le backup fonctionne en tant que machine virtuelle.

Manque l’essentiel à tout ca non ?

 

VMware ESXI: Contenu du labo à la maison (part 2)

… the Sequel 😉

Je récapitule les premiers billets :
Je suis passé d’un serveur monolithique sous Windows 2008R2 à un hyperviseur ESXI 4.x avec plusieurs machines virtuelles : 2 Windows 2012 en cluster d’Active Directory et 1 Windows 2012 en Exchange 2010.

Je ne me suis pas arrêté en si bon chemin !

J’ai fait un quatrième serveur Windows 2012 avec WSUS. Ca fait peur hein ?
Alors WSUS ou Windows Server Update Services, c’est un Windows Update mais en interne.

Le serveur WSUS se connecte à Windows Update pour télécharger les updates dans des catégories définies (dans mon cas, Windows Server 2012, Exchange 2010, Windows 7 et 8).
Tout l’intérêt de la manœuvre consiste à ne télécharger les updates qu’une seule fois puis de permettre de les appliquer à plusieurs machines et donc d’économiser de la bande passante et accélérer le processus de mise à jour.
Pour les machines à mettre à jour, WSUS se substitue à Windows Update.

 

C’est bien beau tout ca non ?

Mais il manque presque l’essentiel !

VMware ESXI: Contenu du labo à la maison

Donc me voilà avec un ESXI, un Windows 2012 AD et une vieille machine physique ex AD (oui il y a bien 2 hardware : l’ESXI et l’ancien serveur monolithique).

Sur l’ex AD, il y a MS Exchange 2010 (ne pas perdre la main ne pas perdre la main) et tous mes petits services (j’en parlerais dans un autre billet).

Bon ok, ESXI avec un Windows 2012 AD : j’ajoute DNS, DHCP (que j’enlève illico du WS 2008R2 «physique »). Tout fonctionne nickel.

Allez zou, je crée une nouvelle machine Windows 2012 … pour y installer Exchange 2010. Je me retrouve donc avec deux Exchanges, ce qui permet de « live » migrer les Boites aux Lettres (ok je n’en ai que 3, c’est un labo-jouet en même temps).
Je supprime post migration l’Exchange « physique ». Là encore avec un routage bien fichu, je n’ai un downtime de messagerie que de 15 secondes ;).
Et hop, Exchange est virtualisé.

Re-zou, sur ma lancée, je fais un 3eme Windows 2012 et j’y installe : AD (encore ?) pour faire un cluster entre mes deux serveurs AD, DNS, DHCP.

Et puis après des petits gadgets :

–          airport (pour gérer mes bornes, oui ca aussi j’en parlerais dans un autre billet),

–          air video server qui permet de streamer sur iOS des vidéos dans le réseau interne comme sur internet

–          Dropbox et Skydrive il n’y a dans le réseau que cette machine qui synchronise les services. Toutes les autres machines accèdent au partage de ces dossiers (pratique … ca évite la déduplication).

–          Dynsite pour actualiser automatiquement mon DNS chez OVH (eh oui, en Livebox Fibre … il n’y a pas d’IP Fixe. Ce programme va vérifier régulièrement l’IP externe et la met à jour directement sur le DNS d’OVH ce qui permet de joindre mes serveurs et leurs services)

–          Growl en mode serveur pour notifier d’autres Growl

–          Icloud pour synchroniser mes photos. Automatiquement, mes photos iOS sont sauvegardées sur mon serveur directement depuis iCloud. Puis un petit script copie les photos sur le Synology !

–          Emule et Vuze (pour télécharger … bah oui un)

–          Rainmeter pour avoir les metriques du serveur directement sur le bureau

–          Des media Server : PLEX, Serviio

–          Splashtop qui me permet de prendre la main à distance sur le serveur et surtout d’utiliser le serveur sur un iPad (oui je suis très tablette)

–          Zappiti Media Serveur (pour avoir les pochettes de mes films sur mon Dune dans le salon – je détaillerais dans …. Un autre billet – bravo pour ceux qui l’avait deviné)

Donc au total … 2 Windows 2012 en cluster Active Directory, 1 Windows 2012 en Exchange 2010.

(A suivre …)

VMware ESXI: un labo multi-serveur à la maison

J’avais dans un article de 2012 expliqué partiellement ma migration VMWARE qui constitue mon nouveau « jouet ».

Je reviens rapidement sur le contexte.

Depuis 2003, j’ai à mon domicile un serveur (oui je suis un fou) qui jusqu’ici était un Windows Server X (2003, 2003R2, 2008, 2008R2, 2012 … bientôt 2012R2. Merci à mon employeur pour les licences de test).

Au fur et à mesure de mes jeux, j’ai ajouté Exchange, Remote Desktop Gateway, Kerio Firewall, etc …

Le serveur monolithique a du bon mais ce n’est pas super pour faire évoluer le système et encore moins pour « jouer » et tester de nouvelles fonctionnalité.
En aout 2012, Microsoft a rendu public la RTM de Windows 2012.
Ni une ni deux, un coup de MSDN et … grande question :
Je change le hardware c’est sur !