Lister la génération des machines virtuelles

Si vous avez besoin de liste vos machines virtuelles (VM) et de connaitre leur génération (generation 1 ou 2), vous pouvez le faire relativement simplement avec une commande Powershell.

Depuis l’hyperviseur

Vous pouvez lancer la commande suivante depuis votre serveur hôte Microsoft Windows Server, ou Hyper-V directement comme dans l’exemple ci-dessous.

Get-VM | Select Name, Generation | Sort Name -Descending
Depuis l’hyperviseur

Depuis la machine virtuelle

Vous pouvez également lancer la commande suivante dans votre machine virtuelle (guest) si vous n’avez pas, vous-même, accès à l’hyperviseur, comme dans l’exemple ci-dessous.

Get-WmiObject -Class Win32_BIOS | Select Manufacturer
  • La valeur American Megatrends Inc. correspond à génération 1
  • La valeur Microsoft Corporation correspond à génération 2
Depuis la machine virtuelle, dans ce cas, génération 2
Depuis la machine virtuelle, dans ce cas génération 1

La différence

Les VMs de génération 1 utilisent un émulateur de BIOS et supportent deux contrôleurs IDE émulés (Intel), alors que celles de génération 2 utilisent une construction UEFI en lieu et place du BIOS, ce qui permet notamment d’offrir le support pour le Secure Boot, les disques GPT bootables et présenter jusqu’à 4 contrôleurs SCSI au système.

La génération 1 permet d’émuler un lecteur de disquette, un port COM, ainsi qu’un adaptateur réseau d’ancienne génération. Ces fonctionnalitées ne sont pas possible avec la génération 2. Le lecteur DVD sur une génération 1 sera toujours présenté sous la même lettre logique.

Les VMs de génération 2 ne supportent que des disques VHDX, alors que celle de génération 1 supportent les disques VHD et VHDX. Les avantages des disques VHDX sont notamment de supporter les blocks de 4KB avec un alignent améliorés, une plus grande taille maximale de disque, une meilleure resistance en cas de perte de courant et de meilleures performances.

De manière générale, il convient d’utiliser la génération qui correspondra au système d’exploitation, ou aux contraintes spécifiques. De manière générale, si votre VM supporte la génération 2, vous feriez mieux de l’utiliser en lieu et place de la génération 1. Les performances et la fiabilité seront meilleures.

Pour plus de détails sur quels systèmes sont supportés sur quelle génération, voici la page officielle de Microsoft https://docs.microsoft.com/en-us/windows-server/virtualization/hyper-v/plan/should-i-create-a-generation-1-or-2-virtual-machine-in-hyper-v

Sécuriser un ordinateur

Introduction

Vous utilisez peut-être votre ordinateur pour une utilisation personnelle, ainsi que pour effectuer des tâches administratives techniques sur des environnements serveurs ou réseau sensible. Le meilleur conseil reste d’utiliser un ordinateur dédié, pleinement à jour et disposant au minimum d’un antivirus à jour, ainsi que d’une bonne gestion des privilèges et d’une micro-ségrégation réseau efficace.

Dans la réalité, il n’est pas toujours aussi simple de maintenir cet environnement et de le transporter avec soit en déplacement. C’est pourquoi, je souhaite dans cet article pour proposer quelques pistes et bonnes pratiques pour garantir un niveau de sécurité minimum, tout en gardant la flexibilité d’un environnement utilisable pour vos besoins personnels, ainsi que pour des tâches sporadiques d’administration lorsque vous êtes en déplacement ou que vous devez intervenir urgemment.

Le bon sens

Je vous conseille toutefois dans la mesure du possible, de différencier votre ordinateur personnel, de celui que vous utilisez professionnellement.

Les autres conseils « de bon sens », dont notamment : maintenir votre système d’exploitation à jour, éviter de vous connecter avec un compte à haut privilèges, ne pas télécharger de logiciels dont vous ne pouvez pas tracer l’origine fiablement, ainsi que de séparer vos réseaux personnels et professionnels, même à la maison, sont pour moi la base.

Ces conseils s’appliquent à tous les systèmes d’exploitation, les moyens peuvent légèrement varier en fonction du système d’exploitation.

Mes conseils

Pour chacune des mesures ci-dessus, je vais prochainement écrire un article afin de détailler comment j’ai effectué cela. Il n’y a rien de sorcier, mais cela pourrait vous donner des idées pour votre environnement sécurisé. J’utilise certaines de ces mesures depuis longtemps, j’en utilise quelques autres également que je ne vais pas documenter ici.

  1. Maintenir votre système et applications tierces à jour (chocolatey)
  2. Désactiver les services inutiles et inutilisés (services.msc)
  3. Configurer les applications autorisées (AppLocker)
  4. Installer un hyperviseur (Hyper-V, OracleVM, VMware)
  5. Installer une vm qui sert de firewall et proxy (OPNsense, pfSense)
  6. Configurer l’accès internet exclusivement via firewall / proxy
  7. Installer et configurer un firewall local
  8. Configurer un proxy avec authentification pour chaque application
  9. Installer un serveur proxy local
  10. Installer un logiciel de sandboxing (sandboxie)
  11. Utiliser un VPN lorsque vous êtes sur un réseau indigne de confiance
  12. Effectuer des sauvegardes de qualité et régulières

A bientôt pour la suite.

Photo d’illustration par Christiaan Colen

BGP avec Windows Server

Dans cet article, nous allons voir la configuration du protocole BGP avec la version Windows Server 2016 (également disponible sur Windows Server 2019) de Microsoft.

Ainsi, il est possible de configurer du routage BGP sur votre serveur et de partager des routes par le protocole de routage dynamique Border Gateway Protocol 4 (BGP4).

Ceci permet notamment de faire du routage sur l’hôte « routing on the host », ou sur les machines virtuelles installées sur votre hyperviseur Windows. Ceci permet d’ouvrir des horizons très intéressants pour vos topologies réseau.

À noter enfin que, selon mes recherches, Windows ne supporte pas le MD5 sur les sessions BGP.

Installation

Pour commencer, il faut installer les fonctionnalitées Remote Access, RSAT Remote Access Powershell et Routing en Powershell. Faites une élévation de privilège puis passez la commande Powershell suivante

Install-WindowsFeature RemoteAccess,RSAT-RemoteAccess-PowerShell,Routing

Activez le routage sur le serveur avec la commande suivante :

Install-RemoteAccess -VpnType RoutingOnly
Votre routeur BGP est prêt !

Configuration

Puis on créer un routeur BGP avec la commande suclivante

Add-BgpRouter -BgpIdentifier 172.16.30.11 -LocalASN 65534

Puis on ajoute un peer iBGP avec la commande suivante

Add-BgpPeer -LocalIPAddress 172.16.30.10 -PeerIPAddress 172.16.30.11 -PeerASN 65534 -Name SRV02
L’état est « Connecting » car l’autre serveur n’est pas encore configuré

Lorsque l’on configure le routeur et on ajoute la session BGP sur l’autre serveur la connexion s’établie

Add-BgpRouter -BgpIdentifier 172.16.30.11 -LocalASN 65534

Add-BgpPeer -LocalIPAddress 172.16.30.11 -PeerIPAddress 172.16.30.10 -PeerASN 65534 -Name SRV01
Connexion établie (depuis SRV02)
Connexion établie (depuis SRV01)

On peut ensuite ajouter des routes à annoncer. Contrairement à ce que vous connaissez certainement du BGP, il n’y a pas besoin de créer de null route dummy route pour que Windows annonce une route. Il annonce toutes les routes souhaitées sans même que celles-ci ne soient présentent dans sa table de routage.

Depuis SRV01, nous allons ajouter 8 routes /24, de 192.168.96.0 à 192.168.103.0/24

Add-BgpCustomRoute -Network 192.168.96.0/24
Add-BgpCustomRoute -Network 192.168.97.0/24
Add-BgpCustomRoute -Network 192.168.98.0/24
Add-BgpCustomRoute -Network 192.168.99.0/24
Add-BgpCustomRoute -Network 192.168.100.0/24
Add-BgpCustomRoute -Network 192.168.101.0/24
Add-BgpCustomRoute -Network 192.168.102.0/24
Add-BgpCustomRoute -Network 192.168.103.0/24

Nous allons vérifier depuis SRV02 si celles-ci sont bien reçues

Vérifications des routes depuis SRV02

Nous pouvons également résumer les routes ci-dessous avec cette commande et annoncer 192.168.96.0/21 plutôt que d’annoncer les 8 routes en /24 pour alléger la table de routage

Add-BgpRouteAggregate -Prefix 192.168.96.0/21 -SummaryOnly Enabled
SRV01 demande une confirmation

Vérifications de l’aggrégation de nos routes depuis SRV02

Vérifications de l’aggrégation depuis SRV02

Pour obtenir des informations sur votre routeur

Get-BgpRouter

Pour affichier vos peers BGP

Get-BgpPeer

Pour afficher les routes BGP

Get-BgpRouteInformation

Vous pouvez également créer des policy que vous pouvez appliquer sur des peers en ingress ou en egress en deux étapes selon l’exemple.

Pour illustrer cette policy, nous allons d’abord ajouter une route BGP, vérifier la table de routage BGP sur SRV02, puis ajouter un filtre de sortie sur la session BGP du côté SRV01 et vérifier à nouveau la table de routage côté SRV02

Ajout d’une route sur SRV01

Add-BgpCustomRoute -Network 10.10.10.10/32
Ajout d’une route sur SRV01

Vérification de la table de routage sur SRV02

Vérification de la table de routage sur SRV02

Ajout d’une policy (règle) de filtrage pour n’autoriser que le préfixe 192.168.96.0/21 à être communiqué

Add-BgpRoutingPolicy -Name SRV01_IP -MatchPrefix 192.168.96.0/21 -PolicyType Allow

Et appliquation de cette policy (règle) au peer SRV02

Add-BgpRoutingPolicyForPeer -PeerName SRV02 -PolicyName SRV01_IP -Direction Egress
Ajout de la policy (règle) et appliquation de la règle sur le peer

Vérification avant et après appliquations de la policy

Avant / après appliquations la policy

Exemple

Imaginons que nous ajoutons l’adresse IP 192.168.96.5/32 sur notre serveur SRV01 et que nous essayons de le joindre par le serveur SRV02.

Adresse IP 192.168.96.5/32 ajoutée
Vérification de la table de routage et de connectivité

Conclusion

Pouvoir faire du routage directement sur votre serveur, ou sur un serveur virtuel permet de complètement repenser votre réseau et vous affranchir d’un domaine de broadcast, risqué et contraignant à maintenir.

Imaginez un réseau ou votre serveur peer et échange ses routes directement avec votre firewall ou un routeur, sans passer par une configuration contraignante de switchs. C’est sans doute, une grande avancée pour le réseau avec Windows Server, Hyper-V et pour vos futurs utilisations dans le Cloud.

La flexibilité de pouvoir annoncer des routes en /32 vous permet une mobilité quasi infinie de votre infrastructure. Vous pouvez, par exemple, mettre en place un système de anycast BGP pour vos DNS ou pour d’autres services assurant de la haute disponibilité.

Toutes les commandes

Pour aller plus loin, voici toutes les commandes BGP existantes sur Windows Server

Add-BgpCustomRoute
Add-BgpPeer
Add-BgpRouteAggregate
Add-BgpRouter
Add-BgpRoutingPolicy
Add-BgpRoutingPolicyForPeer
Clear-BgpRouteFlapDampening
Disable-BgpRouteFlapDampening
Enable-BgpRouteFlapDampening
Get-BgpCustomRoute
Get-BgpPeer
Get-BgpRouteAggregate
Get-BgpRouteFlapDampening
Get-BgpRouteInformation
Get-BgpRouter
Get-BgpRoutingPolicy
Get-BgpStatistics
Remove-BgpCustomRoute
Remove-BgpPeer
Remove-BgpRouteAggregate
Remove-BgpRouter
Remove-BgpRoutingPolicy
Remove-BgpRoutingPolicyForPeer
Set-BgpPeer
Set-BgpRouteAggregate
Set-BgpRouteFlapDampening
Set-BgpRouter
Set-BgpRoutingPolicy
Set-BgpRoutingPolicyForPeer
Start-BgpPeer
Stop-BgpPeer

Photo d’illustration par serzhile

Démarrer avec Git sur Windows configuration

Après avoir vu la partie installation de Git sur Windows, nous allons désormais nous intéressé à la configuration de ce dernier et quelques exemples qui vous permettront de commencer à utiliser l’outil.

Configuration

La configuration initiale est assez simple. Nous allons renseigner votre nom, votre adresse email et la coloration syntaxique. J’ai créé un dossier C:\Network que je vais initialiser pour mes exemples.

Tout d’abord, lancez l’applications Git Bash puis configurez votre nom et adresse email, nécessaire pour le bon fonctionnement de Git avec les deux commandes ci-dessous :

Configuration de Git
git config --global user.name "Albert Camus"
git config --global user.email "[email protected]" 

Ensuite, nous allons « initialiser » le dossier C:\Network comme étant un dossier Git.

La commande git init créer un dossier .git, ainsi que trois sous-dossiers objects, refs/heads et refs/tags et ajoute un fichier HEAD.

cd C:\Network
git init

Un passage par l’antisèche de Git vous permettra de rapidement prendre en main l’outil Git et ses principales fonctionnalitées.

Antisèche Git

Après avoir vu la partie installation de Git sur Windows, nous allons désormais nous intéressé à la configuration de ce dernier et quelques exemples qui vous permettront de commencer à utiliser l’outil.

Branches

Les branches représentent une partie importante du fonctionnement de Git. Lorsque vous effectuez un commit, ces derniers sont fait dans la branche ou vous vous trouvez aussi dit « checked out » en langage Git.

Pour connaitre la branche dans laquelle vous êtes, faites un git status.

Pour connaitre la branche dans laquelle vous êtes :
git status

Pour créer une nouvelle branche :
git branch nouvelle-branche

Pour changer de branche :
git checkout nouvelle-branche

Pour fusionner une branche dans la branche actuelle :
git merge nouvelle-branche

Pour supprimer une branche :
git branch -d nouvelle-branche

Faire des changements

Pour tracer l’historique des changements de l’ensemble d’un projet
git log

Pour liste les versions de la branche en cours
git log --follow dossier/fichier.txt

Pour comparer deux branches
git diff master nouvelle-branche

Pour voir les meta données et changement d’un commit
git show 509e81ff6c6314fcef3a36ed8706d829a6ab8dc5

Pour ajouter un fichier à un commit
git add fichier

Pour créer un commit
git commit -m "Déscription de mon commit"

Démarrer un projet

Lorsque vous démarrez un projet, il y a deux manières de commencer. La première est de démarrer avec un dossier local, c’est ce que vous faites généralement quand vous êtes l’auteur du projet. Cette commande doit être lancée une seule fois

Convertir un dossier en projet Git :
git init

Alernativement, vous pouvez télécharger un projet Git sur votre ordinateur depuis un dépôt en ligne, par exemple Github. Dans ce cas, il n’y a pas besoin d’initialiser le dossier.

Télécharger un projet Git depuis un dépôt :
git clone https://github.com/facebook/create-react-app.git

Exclure des fichiers

Il est parfois désirable de ne pas synchroniser et tracker certains fichiers et de donc, ne pas les inclure lorsque vous faites en git add * par exemple.

Dans ce cas, vous pouvez créer un fichier texte nommé .gitignore qui contiendra, les dossiers, les fichiers, ou les extensions à ignorer.

Voici quelques exemples d’un fichier .gitignore :

# Ignorer le dossier configurations
configurations/

# Ignorer le dossier interfaces et Interfaces
[Ii]nterfaces/

# Ignorer le dossier .hidden
.hidden/

# Ignorer les extensions .exe .msi .msp
*.exe
*.msi
*.msp

Synchroniser vos changements

Pour synchroniser votre dépôt local depuis le dépot distant :
git fetch

Pour synchroniser les branches distantes avec vos branches locales :
git merge

Pour envoyer vos branches locales sur Github :
git push

Pour récupérer toutes les modification de la branche actuelle depuis Github dans votre branche actuelle :
git pull

La commande git pull combine les commandes git fetch et git merge.

Démarrer avec Git sur Windows installation

Git est un logiciel de gestion de versions décentralisé. C’est un logiciel libre créé par Linus Torvalds, auteur du noyau Linux, et distribué selon les termes de la licence publique générale GNU version 2. En 2016, il s’agit du logiciel de gestion de versions le plus populaire qui est utilisé par plus de douze millions de personnes.

https://fr.wikipedia.org/wiki/Git

Loin de maitriser toutes les fonctionnalités de Git, le but de cet article est de vous offrir rapidement la possibilité de démarrer à utiliser cet outil de gestion de code, ainsi que de pouvoir rapidement faire vos premiers pas et de comprendre les rudiments. C’est un outil très riche en fonctionnalités, il y a beaucoup à dire à ce sujet.

Prérequis

Installation

Nous allons d’abord télécharger et installer une version de Git sur Windows. Pour se faire rendez-vous à l’adresse https://git-scm.com/download/win et téléchargez l’installeur adapté à votre version de Windows, mais probablement 64-bit Git for Windows Setup.

Comme vous allez le voir, il y a beaucoup d’écrans de configuration sur Windows.

Démarrage de l’installation
Continuer
Les options de base sont suffisantes
Suivant
Choississez Notepad++ comme éditeur par défaut
Puis Git from the command line
Choississez OpenSSH
Puis la librairie OpenSSH
Choissisez les fin de ligne Windows-style
Choississez MinTTY
Cochez les trois options
Passez cette option pour le moment
Ne lisez pas les Release Notes, sauf si cela vous intéresse