Archives de catégorie : HOW-TO

Active Directory

Un Active Directory est un annuaire de type LDAP pour Windows, avec deux fonctions principales : identifier des façon unique les ressources (matérielles ou humaines) et les authentifier.

Structure

Une classe est un ensemble d’objets ayant les mêmes attributs. Cela peut être un ordinateur, un utilisateur, une organisation, etc. Parmi les objets nécessaires, les unités d’organisations sont indispensables pour une administration efficace.

Un schéma contient la définition de toutes les classes et de tous les attributs disponibles et autorisés au sein de votre annuaire. C’est un élément dont toute modification est critique, d’où l’existence d’administrateurs spécifique (de schémas).

La base de données de l’AD est divisée en trois partitions :

  • La partition de schéma (définition des classes et objets, unique dans une forêt) ;
  • La partition de configuration (topologie de la forêt, à savoir les informations sur les domaines, les liens entre les contrôleurs de domaines, les sites, etc. ; elle est également unique au sein d’une forêt) ;
  • La partition de domaine (base de données pour un domaine, chaque domaine ayant sa partition propre).

Différence entre WORKGROUP et domaine

Un WORKGROUP permet de relier des ordinateurs dans un groupe de travail mais sans aucune centralisation ou administration. Les ordinateurs d’un même WORKGROUP se parlent mais c’est tout. Dans un WORKGROUP, chaque machine dispose de sa base d’utilisateurs (base SAM) non partagée.

A l’inverse, dans un domaine, la base des utilisateurs et des objets est centralisée, permettant un gestion efficace et centralisée des objets. Chaque contrôleur de domaine contient une copie de l’annuaire et s’assure de la synchronisation de celui-ci.

Contrôleur de domaine

Le serveur sur lequel on crée un domaine devient le premier contrôleur du domaine, contenant la base de données NTDS.dit. Une bonne gestion implique d’ajouter des contrôleurs supplémentaires à ce domaine, les contrôleurs de domaine répliquant les informations entre eux à intervalle régulier (avec versionnage, pour gérer les problèmes de synchronisation). Le dossier partagé SYSVOL sert à distribuer les stratégies de groupe et les scripts de connexion.

Arbres et forêts

De façon assez intuitive, un arbre est une hiérarchie de domaines (chaque feuille étant un sous-domaine de son supérieur), et une forêt est un ensemble d’arbres. La différence majeure est que dans une forêt, chaque arbre est indépendant, même en étant groupés dans une même structure. L’idée est garder cette indépendance tout en gardant un schéma d’annuaire commun, d’avoir un catalogue global et de simplifier l’administration.

cours-active-directory-9
Schéma d’une forêt simple (IT-Connect)

Domaine fonctionnel

Un domaine fonctionnel est grosso modo la version de l’OS ou de l’AD (ex : Windows Server 2012). Dans une forêt, on peut trouver des domaines ayant des domaines fonctionnels différents (ça fonctionne), mais alors la forêt (qui a aussi un domaine fonctionnel).

Ainsi, plus la version est élevée (récente), plus on aura de fonctionnalités. Par contre, au niveau de la forêt, le domaine fonctionnel est la version minimale supportée par l’ensemble des arbres. Logique : il ne peut pas avoir plus de fonctionnalités qu’un de ses membres. Cela implique aussi que pour augmenter le domaine fonctionnel d’une forêt, il faut que tous les arbres supportent au moins la même chose, et un upgrade devra être réalisé si besoin.

Protocoles

Pour fonctionner, un AD utilise divers protocoles. Les plus importants sont LDAP, DNS et Kerberos.

L’annuaire LDAP est l’annuaire de l’AD à proprement parler, comprenant l’ensemble des données. Chaque entrée de LDAP est un objet unique ayant des attributs spécifiques (dont un GUID et un nom unique appelé Distinguished Name).

Le DNS est également indispensable car il permet de retrouver dans le réseau les objets, notamment les plus importants (Primary Domain Controller, catalogue global, KDC, contrôleurs de domaines, etc.).

Kerberos est un service d’authentification, et qui ne sert qu’à cela (il n’intervient pas dans le LDAP ou le DNS). Le gros avantage de Kerberos est de permettre qu’un client C puisse accéder à un serveur (ressource) S sans rien connaître de S. Tout passe par des serveurs tiers.

Moyens d’authentification

Source : https://sparrow365.de/index.php/en/2024/04/22/all-roads-to-entra-id-sso/

Sources

Active Directory Federation Services

Outils

Voir aussi

S3

S3 (Amazon Simple Storage Service) est un service de stockage d’objets en ligne d’Amazon Web Services (AWS). Bien que très pratique, il peut être très mal utilisé. Résultat : on assiste en ce moment à un florilège de divulgation de données via des S3 fonctionnant très bien mais mal paramétrés.

Il existe des variantes avec d’autres produits mal configurés, comme le service ElasticSearch, qui peut se révéler tout aussi fatal aux informaticiens peu consciencieux (ou débordés), ou la base MongoDB mal sécurisée par défaut.

frame

Responsabilité partagée

La presse se fait souvent l’écho de fuite d’informations liées à S3, allant parfois jusqu’à annoncer une faille sur S3. Or il s’agit d’un service d’infrastructure (IaaS), dont la sécurité est partagée entre le fournisseur d’accès et le client utilisateur du service : le fournisseur est responsable de la sécurité du cloud, le client est responsable de la sécurité dans le cloud.

Le fournisseur est responsable du bon fonctionnement du service, rien de moins mais rien de plus : il doit juste répondre au contrat de service. Par exemple, s’il y a un mécanisme d’autorisation d’accès, il doit s’assurer qu’il est efficace et qu’il fonctionne comme attendu, sans erreur, sans interruption, etc.

De l’autre côté, le client paramètre ce mécanisme d’autorisation d’accès comme il le souhaite. S’il laisse son compartiment S3 ouvert à tout vent (par erreur, par mégarde, par bêtise), c’est de sa faute.

Les failles S3, à qui la faute ?

Et bien jusqu’à présent, toutes les failles sur S3 sont dues à un mauvais paramétrage par le client. Pourtant AWS indique en grand le risque encouru, lors du paramétrage.

Tant et si bien qu’à partir de février 2018, AWS ajoute gratuitement le contrôle sur les droits d’accès sur S31 dans son service Trusted Advisor (ce contrôle était jusqu’alors réservé aux clients ayant un niveau de support payant). Début 20182, on estimait que 7% des buckets S3 étaient accessibles en lecture sans restriction (ce qui est parfois voulu, pour l’hébergement d’éléments web statiques), et que 2% étaient également accessible en écriture sans contrôle (là je suis moins sûr que ça soit normal).

frame

Aujourd’hui ?

Il faut vraiment être neuneu pour laisser un bucket ouvert : AWS a rajouté plein d’outils, de procédures, d’informations affichées pour qu’on ne se prenne plus les pieds dans le tapis.

Quelques exemples

  • Mars 2018
    • 1,3 millions de données client de Walmart (bijouterie) exposés3.
    • Keeper, un gestionnaire de mots de passe, laisse traîner des fichiers en lecture-écriture4.
  • Avril 2018
    • 1,2 To de données correspondant à 48 millions de personnes, non protégées par LocalBox, une société de profilage publicitaire au profil douteux5.
  • Mai 2018
    • Divulgation de données de 15 ou 20 000 joueurs de cricket indiens67.
    • Divulgation de données du service social de Los Angeles8.
    • Mots de passe de l’application TeenSafe en clair9.
    • Une société d’assurance (AgentRun) laisse des milliers de données de souscripteurs10 en accès libre
    • Honda laisse à disposition les informations de 50 000 véhicules et de leur propriétaires11.
  • Juillet 2018
    • Des milliers de données électorales américaines ont été exposées publiquement par une petite société (Robocall) qui les commercialisait12.
    • Une société israélienne expose des données de 14 millions de clients13 de l’opérateur téléphonique Verizon.
  • Août 2018
    • GoDaddy, un célèbre hébergeur web, laisse des informations d’infrastructures de 24 000 machines sur un bucket S3 mal configuré14.
  • Septembre 2018
    • Une société disons de surveillance (= qui produit un logiciel d’espionnage, surfant sur la vague de peur pour alimenter celle de l’insécurité) a laissé une quantité astronomique15 de données récoltées auprès des utilisateurs surveillés accessibles sur S316.
  • Avril 2019
    • Intéressant : 146 Go de données d’utilisateurs Facebook laissés en accès ouvert par des éditeurs tiers17.
  • Juin 2019
    • 1 Tb de données de sauvegardes (comprenant des clés privées) exposées par Attunity (qui a des clients de l’envergure de Netflix ou Ford).

La faute d’Amazon ?

Il n’y a pas qu’Amazon qui soit touché puisque la plupart des fournisseurs de services nuagiques proposent des services permettant le partage de façon publique ; on a vu que Google via Groups recelait de très nombreux documents18 qui n’ont pas à être exposés au grand public. Or les personnes ayant le rôle d’administrateur Google Groups n’ont pas toujours de hauts compétences en administration19, ce qui est normal vu le public visé par le service de Google.

Répétons : le problème ne vient pas du fournisseur de services, ni du service, mais de son utilisation.

Faut-il utiliser S3 ?

A mon humble avis, il faut l’éviter autant que faire se peut. Certes les usages potentiels sont nombreux, certains sont justifiés, d’autres non.

Hébergement de site web statique

AWS met en avant cet usage qui est parfaitement stupide. En effet, avec AWS, comme rien n’est gratuit, on paye à la bande passante utilisée mais aussi en fonction du nombre d’accès. Et ça va très vite…

Le seul usage raisonnable que je vois est de stocker des objets de livraison, qui doivent être accessibles facilement et dont on ne se sert qu’épisodiquement (pour construire une machine virtuelle, déployer une application, etc.).

Alors pourquoi AWS met en avant des usages du type site web statique ou fichiers statiques ? Simple : vous imaginez AWS vous dire d’économiser votre budget et de ne rien dépenser sur leurs infrastructures ?

Innovons dans les attaques

Parfois, il est normal et voulu que des fichiers soient stockés sur un bucket public : on peut même faire un site web statique rien qu’avec S3. Dans ce cas, les fichiers sont disponibles publiquement et c’est le comportement désiré.

Alors les attaquants se sont tournés vers ces fichiers publics pour les compromettre et tenter d’injecter du code ou n’importe quelle cochonnerie, par exemple sur Magecart20. Dans ce cas là, il s’agit d’un problème de gestion des droits, mais de façon plus fine, dans le contrôle d’accès de S3.

Voir aussi

Articles externes

MySQL

Quoiqu’on dise sur le rachat de MySQL par Oracle, cela reste un des systèmes de gestion de bases de données les plus courants dans le monde web.

Sécurisation de l’installation

Il faut lancer l’utilitaire installé par défaut, qui permet déjà de corriger certains points.

sudo mysql_secure_installation

  • A la 1ère question, sur le plugin des mots de passe, vous pouvez l’activer ou pas : ce plugin sert à vérifier que les mots de passe utilisés sont suffisamment fort. Utile en production, cela peut apporter des contraintes trop importantes en développement. Et rien ne vous empêche de vous forcer à mettre des mots de passe forts par vous-même.
  • Ensuite il vous demandera un mot de passe pour root. A renseigner avec un mot de passe fort impérativement.
  • Puis il demandera la suppression des utilisateurs anonymes, à approuver également.
  • Désactivation d’accès distant pour root : sage précaution encore, à accepter.
  • Dernière chose : suppression des bases de test, évitant ainsi un accès trop facile au SGBD.

Avant de terminer, dites oui au rechargement des privilèges (qui ne seront pas effectifs tout de suite, sinon).

Sauvegarde

Pour réaliser la sauvegarde d’une base de données MySQL, une commande peut suffire :

mysqldump table -u user -p >> fichier_destination

Attention : cela vous demandera le mot de passe de l’utilisateur correspondant, de façon interactive.

Serveur FTP

Pour mettre en œuvre un serveur FTP, il faut penser à quelques éléments de sécurité. Par exemple :

  • Cloisonner les utilisateurs
  • Interdire les shells
  • Contrôler la provenance des requêtes

Pure-FTPd

Il existe plusieurs serveurs FTP possibles. J’ai choisi pure-ftpd qui m’a l’air léger (~800 ko) et robuste.

Pour créer un utilisateur sous Linux :

Créer l’utilisateur Linux lui-même, de préférence sans accès au shell

$ sudo useradd ftpusr -g ftpaccess -s /usr/sbin/nologin -d /home/ftp
$ sudo pure-pw useradd ftpusr -u ftpusr -g ftpaccess -d /home/ftp
$ sudo pure-pw mkdb

Dans la commande pure-pw useradd, utilisez l’option -r si possible, laquelle indique l’hôte depuis lequel l’utilisateur peut se connecter. Il faut aussi penser à ajouter le nologin dans la liste des shells (merci), sinon on obtient une erreur 530 bien difficile à corriger…

$ echo '/usr/sbin/nologin' >> /etc/shells

Pour pure-ftpd, on peut configurer le serveur via différents fichiers présents dans le répertoire /etc/pure-ftpd/conf.

$ ll 
total 56
drwxr-xr-x 2 root root 4096 Aug 29 18:40 ./
drwxr-xr-x 5 root root 4096 Aug 29 18:35 ../
-rw-r--r-- 1 root root 36 Oct 29 2012 AltLog
-rw-r--r-- 1 root root 4 Aug 29 17:57 Daemonize
-rw-r--r-- 1 root root 4 Aug 29 17:57 DontResolve
-rw-r--r-- 1 root root 6 Oct 29 2012 FSCharset
-rw-r--r-- 1 root root 4 Aug 29 17:55 IPV4Only
-rw-r--r-- 1 root root 4 Aug 29 17:56 KeepAllFiles
-rw-r--r-- 1 root root 2 Aug 29 17:56 MaxClientsNumber
-rw-r--r-- 1 root root 5 Oct 29 2012 MinUID
-rw-r--r-- 1 root root 4 Oct 29 2012 NoAnonymous
-rw-r--r-- 1 root root 4 Aug 29 18:36 PAMAuthentication
-rw-r--r-- 1 root root 28 Oct 29 2012 PureDB
-rw-r--r-- 1 root root 4 Aug 29 18:40 UnixAuthentication

Pour pure-ftpd, chaque fichier contient des informations de configurations. Par exemple, mettre yes dans le fichier NoAnonymous si vous voulez interdire les accès anonymes, ce qui est souvent préférable.

Passage en FTPS

Paramétrage TLS

Il faut d’abord forcer le passage par SSL/TLS via la commande :

$ echo 2 | sudo tee /etc/pure-ftpd/conf/TLS

Vérifiez ensuite les protocoles autorisés, et si vous utilisez ce serveur pour un usage personnel, visez haut et récent dans les protocoles autorisés.

$ cat TLSCipherSuite 
ALL:!aNULL:!SSLv3
Certificat
$ sudo apt install letsencrypt 
$ sudo letsencrypt certonly --agree-tos --email mail -d domaine

Le certificat et la clé privée utilisés doivent être placés dans un fichier unique nommé pure-ftpd.pem et placé dans le répertoire /etc/ssl/private/.

$ sudo cat /etc/letsencrypt/archive/domaine/cert.perm \ 
/etc/letsencrypt/live/ftp.iku.fr/privkey.pem > /etc/ssl/private/pure-ftpd.pem

Le serveur pure-ftpd doit ensuite être redémarré.
xx

  • https://www.howtoforge.com/how-to-configure-pureftpd-to-accept-tls-sessions-on-ubuntu-10.10
  • https://www.linuxbabe.com/linux-server/secure-ftp-server-pure-ftpd-ubuntu-16-04

Sources

  • https://doc.ubuntu-fr.org/pure-ftp
  • https://www.pureftpd.org

Ingénierie sociale

L‘ingénierie sociale  est une forme de délinquance astucieuse consistant à manipuler une personne, en lui faisant croire qu’elle a affaire à un interlocuteur légitime,  pour qu’elle réalise une action ou divulgue une information.

Le phénomène est ancien mais il est en plein expansion, notamment contre les entreprises françaises (indépendamment de leur banque). Les scenarii utilisés sont de plus en plus perfectionnés et font appel aux moyens techniques modernes.

Les fraudes financières

Le but est généralement de faire réaliser un virement à son profit, d’obtenir de l’information confidentielle (bancaire, financière, technique, etc) ou de détourner des services à son profit (vol de session, de compte de réseaux sociaux).

L’escroc essaiera de se faire passer pour une personne légitime (usurpation d’identité), à distance et en utilisant tous les moyens possibles (fax, mail, et même lignes téléphoniques détournées). Il usera de menace ou d’empathie pour convaincre son interlocuteur, en montrant également assez souvent une bonne connaissance de l’entreprise et de ses processus afin de rendre son discours crédible. 

Toute demande inhabituelle dans son contenu ou dans sa forme doit être considérée comme suspecte :

  • Urgence ou confidentialité extrême ;
  • Demande de virement bancaire sortant du cadre normal (montant important, opération avec un pays ou un tiers inhabituel) ;
  • Demande de prise de contrôle du poste ;
  • Non respect des procédures internes (appel direct du président, d’un service technique).

La fraude au président

Forme élaborée d’ingénierie sociale, elle est précédée très souvent par une longue phase de reconnaissance de la part de l’attaquant (ou de l’équipe d’attaquants). Tous les moyens sont bons : registre de commerce, Kbis, sites web des entreprises, réseaux sociaux, appels téléphoniques, etc. Le coût reste très raisonnable pour une équipe motivée et organisée, et la dissimulation reste facile (cartes bancaires prépayées, standards téléphoniques IP, essais gratuits de produits comme des fax par internet ou des outils de prise de contrôle à distance d’ordinateurs, etc.).

Une fois les informations engrangées, un ou plusieurs scénarios d’attaques sont élaborés. L’attaque en elle-même consiste en un ou plusieurs coup de téléphone à une personne ciblée, afin de la pousser à réaliser un virement au profit des attaquants. Au total, le coût de l’attaque reste très faible par rapport au gain potentiel.

L’élément le plus délicat dans ce schéma de fraude est le circuit de transfert puis de blanchiment de l’argent : il doit partir au plus vite du compte bancaire de la société victime et doit être difficile à rapatrier en cas de contestation.

Les bons réflexes

En cas de sollicitation de ce type, la personne doit :

  • Ne pas céder à la pression et garder son sens critique ;
  • Continuer à respecter les processus internes ;
  • Vérifier la légitimité de la demande ;
  • Vérifier l’identité du demandeur (contre-appel sur un numéro d’appel validé, ou toute méthode validée à l’avance) ;
  • Ne pas se laisser isoler : faire appel à un collègue ou son responsable.

Tendance

Grace aux progrès de l’informatique, il ne faut désormais plus que 20 minutes d’écoute1 pour reproduire correctement la voix de quelqu’un.

Cela va grandement faciliter le travail de ces pauvres fraudeurs au président, qui avaient bien du mal avant à trouver une voix ressemblante.

Autres fraudes

La liste est infinie : escroquerie à la fausse facture, à la facture falsifiée, changement de RIB, intervention sur un système informatique de paiement ou de gestion de trésorerie pour voler une session utilisateur, etc.

Un schéma possible est que le fraudeur tente de contrôler la session utilisateur d’une victime (une personne ayant l’autorisation de faire des paiements), en prétextant être un service technique devant faire des manipulations sur l’ordinateur de la victime, à distance. Si la victime est abusée et qu’elle laisse l’accès au pirate (comme il le ferait à un helpdesk informatique, par exemple), ce dernier cherchera généralement à détourner l’attention de sa cible (en lui faisant envoyer un fax, ou poser une question à un autre collaborateur, etc) afin d’installer à demeure un moyen d’accès à l’ordinateur ciblé sans être vu.

Voir aussi

NFS

NFS est un protocole couramment utilisé pour partager des fichiers entre deux machines distantes, avec pour avantage principal d’apparaitre, une fois que le système de fichier est monté via NFS, comme n’importe quel autre répertoire local sur la machine cliente.

Ainsi, une machine cliente peut écrire sur un répertoire situé physiquement sur une machine serveur, de façon assez transparente.

Création d’un montage NFS

Première chose à savoir : NFS ne fonctionne qu’avec rpcbind (ou équivalent ; dans le temps on utilisait portmap) qui sert à faire le lien sur la machine serveur entre les outils de NFS et les ports logiciels (tcp ou udp) nécessaires pour communiquer via TCP/IP.

Installation des outils

A minima, il faut installer les outils suivants (pour une distribution style Debian) :

sudo apt-get install nfs-common nfs-kernel-server rpcbind

Paramétrage NFS

Il faut en premier indiquer dans le fichier /etc/exports quel répertoire doit etre partagé :

# /etc/exports : the access control list for filesystems which may be exported to NFS clients.
#
# Example (NFS4)
# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
#
/jean 192.168.0.0/255.255.0.0(rw,no_root_squash,subtree_check)

Le premier paramètre est l’emplacement du répertoire à partager. Jusque là, ça va. Ensuite, on indique vers quelles machines le partage est autorisé (pour NFS, indépendamment de tout autre mécanisme de sécurité tel qu’un pare-feu).
Les options possibles sont assez nombreuses, et parfois complexes.

???

Il faut également paramétrer ou mettre à jour la liste des ordinateurs (hotes) autorisés à accéder au serveur NFS. Donc deux fichiers à modifier : /etc/hosts.deny et /etc/hosts.allow.

# /etc/hosts.deny : list of hosts that are _not_ allowed to access the system.
#
portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL

Le fichier /etc/hosts.allow doit lui etre également en cohérence avec ce qu’on a indiqué plus haut. Pour simplifier, la syntaxe n’est pas identique (ça n’est plus du CIDR).

# /etc/hosts.allow : list of hosts that are allowed to access the system. 
#
portmap:ALL
lockd:192.168.
mountd:192.168.
rquotad:192.168.
statd:192.168.

Lancement des services nécessaires

service rpcbind start 
service nfs-common start
service nfs-kernel-server reload
service nfs-kernel-server start

Utilisation d’un pare-feu

Choix des ports logiciels

Par défaut, les ports utilisés peuvent etre assez aléatoires.

Règles de pare-feu

Il suffit d’ouvrir les ports assignés à rpcbind (111) et NFS (2049).

Montage coté client

​mount -t cifs //MACHINEDISTANTE/Multimedia /media/MédiasPartagés -o  guest,rw,nosetuids,sec=ntlmv2 
mount.cifs //MACHINEDISTANTE/Multimedia /media/MédiasPartagés -o user=xxx

Vérification

rpcbind -e 
exportfs

Coté serveur :

showmount -e

Coté client :

showmount -a adresse_serveur

Et ?

Sécurisation d’un partage NFS

  • http://www.tldp.org/HOWTO/NFS-HOWTO/security.html
  • https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/3/html/Reference_Guide/s1-nfs-security.html
  • http://www.linuxsecurity.com/content/view/117705/49/
  • http://www.sans.org/reading-room/whitepapers/linux/nfs-security-trusted-untrusted-environments-1956

Liens

  • http://www.sunhelp.org/faq/nfs.html
  • http://www.iana.org/assignments/service-names-port-numbers

Nginx

Nginx est un serveur web relativement léger qui est désormais assez répandu.

Passer en https

Un excellent article sur le sujet (en anglais) est disponible chez DigitalOcean. Un résumé se trouve ci-dessous.

Installer Certbot

Certbot est un utilitaire permettant d’avoir rapidement un certificat SSL reconnu par la plupart des navigateurs. Un petit tour sur le site officiel https://certbot.eff.org/ et c’est joué.

Sans détailler toutes les possibilités, un simple certbot certonly suffit la plupart du temps à créer les certificats. Pour cela, il faut qu’un serveur web correspondant au nom de domaine voulu soit installé et accessible pour l’utilitaire. Les éléments du certificat seront créés et il sera alors possible de les utiliser pour tous les services associés à ce domaine, même sur d’autres ports que les classiques 80 et 443 du web.

Basculer nginx en https

Sur certaines distributions, cela se fait presque tout seul. Si ça n’est pas le cas, voici les étapes pour les distributions debian-like.

Il faut commencer par modifier le fichier .conf correspondant votre site (/etc/nginx/sites-available/default pour le site par défaut). Cela doit ressembler à ceci :

# Default server configuration 
#
server {
        listen 80 default_server;
        listen [::]:80 default_server;
        server_name www.;
        return 301 https://$request_uri;
}
server {
        # SSL configuration
        listen 443 ssl default_server;
        listen [::]:443 ssl default_server;
        server_name www.;
        ssl_certificate         /etc/letsencrypt/live//fullchain.pem;
        ssl_certificate_key     /etc/letsencrypt/live//privkey.pem;
...

Pensez bien à séparer les deux serveurs, sous peine d’avoir des redirections infinies sur le site en https !

Renouvellement

Comme les certificats Let’s Encrypt n’ont qu’une durée de vie assez courte (3 mois), il faut les renouveler régulièrement. C’est extrêmement difficile et complexe, car il faut lancer la commande :

$ certbot renew

Cela ne renouvelle vos certificats que s’il y en a vraiment besoin. Donc vous pouvez même lancer la commande tous les jours, vos certificats ne seront renouvelés qu’à l’approche de l’échéance de ceux-ci. Un petit crontab et hop, le tour est joué.

Après, il reste à recopier vos éléments de certificats là où vous les utilisez, si par exemple vous vous en servez pour des services hors http/https.

OpenVZ (Sauvegarde)

La sauvegarde d’une machine virtuelle OpenVZ se fait très simplement, en étant administrateur (root) de la machine.

Préparation de la partition

Pour minimiser le downtime (le temps où le serveur est indisponible), il faut utiliser un paramètre spécial de sauvegarde (cf script ci-dessous) lequel nécessite un partionnement particulier.

En effet, il faut que les machines virtuelles soient créées sur une partition de type LVM mais également il est nécessaire qu’une partie de cette partition reste disponible pour le processus de sauvegarde. Si le partionnement est généralement réalisé à l’installation, il faudra quelques commandes pour libérer de la place sur la partition LVM (par défaut, elle est montée sur /var/lib/vz.

Paramétrage du partitionnement pour une distribution de type PROXMOX

root@host:~# /etc/init.d/vz stop (arrêt du service de virtualisation) 
root@host:~# df -h (pour voir l'allocation de la partition LVM)
Sys. de fich. Tail. Occ. Disp. %Occ. Monté sur
/dev/sda1 12G 886M 11G 8% /
tmpfs 1000M 0 1000M 0% /lib/init/rw
udev 10M 2,6M 7,5M 26% /dev
tmpfs 1000M 0 1000M 0% /dev/shm
/dev/mapper/pve-lv1 74G 952M 69G 2% /var/lib/vz (on voit que la partition fait 74 Go).

root@host:~# umount /var/lib/vz (on démonte la partition)
root@host:~# e2fsck -f /dev/mapper/pve-lv1 (on vérifie son état, pour ne rien abimer)

root@host:~# resize2fs /dev/mapper/pve-lv1 73G (on diminue la taille de 1 ou 2 Go, ce qui est généralement suffisant)
root@host:~# lvresize --size -2G /dev/mapper/pve-lv1 (on libère 2 Go qui pourra être utilisé par le processus snapshop)

root@host:~# e2fsck -f /dev/mapper/pve-lv1 (on re-vérifie la partition, après ces manipulations)
root@host:~# resize2fs /dev/mapper/pve-lv1 (on met en conformité la partition et le système de fichiers)
root@host:~# mount /dev/mapper/pve-lv1 /var/lib/vz (on remonte la partition)
root@host:~# /etc/init.d/vz start (on redémarre le service de virtualisation)

Script de sauvegarde

Le seul paramètre important est le numéro de machine virtuelle. La première porte souvent l’identifiant 101, c’est ce que j’ai utilisé dans mon exemple.

L’option --snapshot permet de minimiser le temps d’indisponibilité de la machine virtuelle.

#!/bin/sh# 
#
# Svg machine virtuelle
nohup vzdump --snapshot --compress--dumpdir /svg --tmpdir /tmp 101
#
NOM_FICH1=vzdump-101.$(date +%Y%m%d)-$1.tgz
cp /svg/vzdump-101.tgz /répertoire_sauvegarde/$NOM_FICH1

Script ou commande de restauration

vzrestore <fichier_de_sauvegarde> 101

SQL Express (Sauvegarde)

SQL Express

Tout d’abord il faut un script SQL du genre :

BACKUP DATABASE jean TO DISK=N'G:SQLMaBase.bak'GO

On peut faire un peu plus complexe, avec cet exemple généré par SQL Exress :

BACKUP DATABASE [base] TO  DISK = N'C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLBackupbase.bak' WITH NOFORMAT, NOINIT,  NAME = N'base-Complète Base de données Sauvegarde', SKIP, NOREWIND, NOUNLOAD,  STATS = 10GO

Ensuite il faut automatiser ce script. Pour lancer un script SQL sous Windows, il faut utilisre osql :

sqlcmd -S nom_instance -E -i requete.sql -o fichier_sortie.txt

Par exemple :

@echo off 
: copie
sqlcmd -S .SQLEXPRESS -E -i svg_base.sql -o svg.log
rename "C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLBackupbase.bak" svg_%date:~6,4%%date:~3,2%%date:~0,2%.bak
: supp
if not exist "C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLBackupbase.bak" goto fin
del "C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLBackupbase.bak"
: fin

Plus d’infos :

  • http://fadace.developpez.com/mssql/sauve/
  • http://www.asp-php.net/tutorial/sql-server/sauvegarder-bases-de-donnees-sql-express.php?page=1

Plesk (Sauvegarde)

Backup/Restore sur Plesk.
Les utilitaires permettant les sauvegardes/restauration sont dans /usr/local/psa/bin/pleskbackup.

Sauvegarde

C’est simple, une seule commande pour tout sauvegarder :

./pleskbackup all  

Restauration

Je n’indique ici que la restauration complète. Il est possible de ne restaurer qu’une partie de la machine (domaine, client, etc). Il y a deux étapes, une première où est créé un fichier indiquant ce qu’il y a à restaurer (map file name, qui est donc un nouveau fichier créé par pleskrestore), puis la restauration elle-même.

./pleskrestore --create-map   -map 

./pleskrestore --restore  -map  -level all