Le blog technique

Toutes les astuces #tech des collaborateurs de PI Services.

#openblogPI

Retrouvez les articles à la une

Retirer l’utilisation du SSLv3 sur un site ASP.NET suite à la faille POODLE

Contexte

La faille POODLE (découverte par une équipe de Google fin Septembre) permet d’extraire depuis une transaction sécurisée en SSLv3 des informations secrètes (cookies, password) lors d’une attaque de type “Man in the middle”.

Suite à la découverte de cette faille, le protocole SSLv3 est maintenant obsolète, il est conseillé sur un serveur WEB, d’interdire l’utilisation de SSLv3 ce qui peut présenter des problèmes de compatibilité.

Explications

Lors d’une connexion à un site WEB, le navigateur et le serveur WEB vont négocier un protocole de chiffrement, le protocole négocié doit correspondre au protocole le plus à jour implémenté par le serveur et le client.

Bien qu’actuellement la grande majorité des navigateurs et des sites WEB implémentent des protocoles plus sécurisées que le SSLv3, il est possible que le protocole SSLv3 soit choisi par “fallback”. Il est également possible pour un utilisateur malveillant qui contrôlerait le réseau entre le client et le serveur de forcer la négociation d’un protocole antérieur au protocole le plus à jour implémenté par le client et le serveur afin d’en exploiter les failles.

Avec la faille POODLE touchant le SSLv3 et contrairement aux failles précédentes rencontrées sur SSLv3, aucun contournement n’est possible. Il faut donc bannir l’utilisation du protocole SSLv3.

C’est dans cette optique que les principaux navigateurs dont Firefox et Google Chrome, annoncent le retrait du support de SSLv3 sur leurs prochains produits.

Résolution sur IIS & ASP.NET

Sur un serveur web utilisant le framework .NET et qui est compatible avec TLS 1.0, il est possible de forcer l’utilisation d’algorithmes de cryptographie compatibles FIPS.

Cela se fait via l’activation de la stratégie locale située dans :

“Paramètres de sécurité locaux/Stratégies locales/Option de sécurité/Stratégie/Chiffrement Système”

image

Après cette modification les protocoles non compatibles FIPS (dont SSLv3) ne pourront être utilisés.

Par défaut, ASP.NET utilise des algorithmes non-compatibles avec FIPS, l’erreur 1309, visible dans le logs des évènements Web, est donc susceptible d’apparaitre :

image

Afin de modifier ce comportement, il faut spécifier au niveau du fichier Web.Config de l’application ASP.NET l’algorithme de cryptographie à utiliser.

Pour ce faire il faut dans la partie <system.web> du fichier Web.Config, ajouter la ligne suivante :

<machineKey validationKey="AutoGenerate,IsolateApps" decryptionKey="AutoGenerate,IsolateApps" validation="3DES" decryption="3DES"/>

Sources :

http://support.microsoft.com/kb/911722

https://blog.mozilla.org/security/2014/10/14/the-poodle-attack-and-the-end-of-ssl-3-0/

PowerShell – Générer un rapport au format HTML (2/2)

Contexte

Cet article a pour objectif de fournir les principales commandes PowerShell afin de créer un rapport, qui, exécuté avec une tâche planifiée, permet de générer automatiquement un rapport HTML envoyé par mail.

Dans cette série de deux articles, nous verrons comment créer deux scripts PowerShell qui permettent de remonter les principales informations pour :

  • Une liste d’un ou plusieurs serveurs HYPER-V,
  • Les machines virtuelles présentes sur un ou plusieurs serveurs HYPER-V.

Compatibilité :

Les scripts présentés dans cette série ont étés testés sur :

  • HYPER-V pour Windows Server 2012R2
  • HYPER-V pour Windows Server 2012

Dans l’article précédent nous avons vu comment utiliser PowerShell pour générer un fichier HTML. Cet article présenteras les principales commandes PowerShell pour la génération d’un rapport affichant les principales informations des VMs ainsi que des Hyperviseurs.

Créer la liste des serveurs

Afin de préciser le noms des hyperviseurs qui seront interrogés, sans entrer leur noms en dur dans le script – ce qui obligerais à modifier lors de l’ajout ou la modification de serveurs cible – nous passerons par un fichier texte qui seras utilisé par le script. Chaque ligne du fichier contient le nom d’un serveur :

image

 

 

 

 

 

Afin de charger le contenu du fichier texte, il suffit d’en spécifier l’emplacement dans une variable :

image

 

Pour utiliser le fichier dans une boucle, il faut utiliser la commande “Get-Content” :

image

Récupérer les informations des VMs

La fonction “retrieve_virtualmachine_informations” permet pour une VM ($vmname_) et un hyperviseur ($server_) donné de récupérer les informations suivantes :

  • Nom de la VM,
  • Nom de l’hyperviseur,
  • Nombre de vcpu,
  • Informations de la RAM,
  • Nombre d’interfaces réseau,
  • Nombre de disques,
  • Temps d’activité de la VM,
  • Etat de la VM,
  • Délai de démarrage de la VM.

Voici la fonction :

image

Récupérer les informations des hyperviseurs

 

Informations générales :

Récupérer le temps d’activité de la machine :

image

Récupérer les informations de la commande “Systeminfo” et convertir au format CSV avec la fonction “Get-SystemInfo” :

image

Cette fonction seras ensuite utilisée pour récupérer le nom de la machine et son modèle :

image

RAM :

La fonction “Get-SystemInfo” est également utilisée pour récupérer les informations de mémoire disponible et maximum :

image

Disques :

Cette commande permet de récupérer tous les disques :

image

Une fois tous les disques récupérés, il faut pour chaque disque récupérer ses informations :

imagev

Créer les bornes d’avertissement

Afin de disposer d’un rendu visuel permettant de rapidement identifier un problème sur un serveur, il est possible (à l’aide de balises HTML) de colorier des cellules en fonction de la valeur contenue. Cela permet par exemple de rapidement identifier un serveur avec un faible stockage restant ou bien peu de RAM :

image

Tout d’abords, il faut créer les variables contenant la valeur des bornes :

image

Ensuite, lors de la génération du code HTML, il faut sous PowerShell, avec le switch “if” vérifier les trois différents cas (OK, Warninig et Critique), puis à l’aide de la balise HTML “bgcolor” préciser la couleur de la cellule :

image

PowerShell – Générer un rapport au format HTML (1/2)

Contexte

Cet article a pour objectif de fournir les principales commandes PowerShell afin de créer un rapport, qui, exécuté avec une tâche planifiée, permet de générer automatiquement un rapport HTML envoyé par mail.

Dans cette série de deux articles, nous verrons comment créer deux scripts PowerShell qui permettent de remonter les principales informations pour :

  • Une liste d’un ou plusieurs serveurs HYPER-V,
  • Les machines virtuelles présentes sur un ou plusieurs serveurs HYPER-V.

Compatibilité :

Les scripts présentés dans cette série ont étés testés sur :

  • HYPER-V pour Windows Server 2012R2
  • HYPER-V pour Windows Server 2012

Dans ce premier article nous verrons les principales commandes à maitriser pour générer un rapport HTML à l’aide de PowerShell, ce prérequis est commun aux scripts de rapport des VMs ainsi qu’au script de rapport des Hyperviseurs.

Générer un rapport HTML en utilisant PowerShell

Afin de mieux nommer le fichier HTML l’idéal est de récupérer dans des variables la date et l’heure afin nommer le fichier de manière unique lors de chaque exécution :

image

Pour ajouter le code HTML depuis PowerShell, j’utilise la même variable tout au long du code dans laquelle le code HTML est ajouté à l’aide de l’operator “+=”. Une fois le script terminé, la variable contenant le code HTML est écrite vers le fichier HTML créé.

La ligne suivante permet de créer le fichier HTML vide sur lequel le code HTML vas être écrit :

image

Une fois le fichier HTML créé, il faut – comme pour toute page HTML – commencer par ouvrir les principales balises (html, head) ainsi que préciser l’encodage utilisé. On peut également en profiter pour définir le style désiré pour certaines balises types, ce qui évite d’avoir à préciser les mêmes éléments lors de l’utilisation de ces balises :

image

On peut remarquer l’utilisation de l’expression @ » et de « @ qui nous permettent pour une variable au format string d’utiliser plusieurs lignes, ce qui permet d’avoir un code HTML correctement agencé.

Afin d’ajouter le contenu de la variable dans le fichier HTML, il faut utiliser la commande “Add-Content” :

image

Maintenant que le début du fichier HTML est créé, le script doit maintenant récupérer les informations que l’on souhaite faire apparaitre dans le rapport HTML (nous verrons ce point dans la partie suivante de ce post) dans des tableaux que l’on génère au fur et à mesure dans une boucle qui parcoure toutes les ressources (VM ou Hoster) à interroger afin de créer ce type de vue :

image

Le rapport présenté ci-dessus contient 4 tableaux des ressources qui sont regroupés dans un tableau pour des raisons d’affichage.

Afin de maitriser la taille en largeur des tableaux HTML des ressources, on commence par récupérer le nombre de tableau que l’on va générer que l’on divise par la taille du bloc. De cette manière, les tableaux des ressources auront la même taille :

image

La génération des tableaux des ressources est faite à l’aide d’une boucle qui va pour chaque machine de la liste récupérer ses informations puis créer un tableau pour chaque ressource. Avant la boucle, un tableau vide est créé, il faut bien veiller à fermer ce tableau après la sortie de la boucle :

image

Conclusion

Dans cet article, nous avons vu comment faire à l’aide de PowerShell pour générer des rapport HTML.

Le plus important est de bien maitriser l’ordre de génération du code HTML de manière à ce que les balises respectent les règles du format HTML.

Dans l’article suivant, nous verrons comment récupérer les principales informations pour une VM et un hôte HYPER-V afin de les ajouter aux tableaux composant le rapport HTML.