Tips : Supervision d’un serveur OpenSSH Windows


  1. Introduction
  2. Activation du serveur OpenSSH
  3. Ajustement de la collecte
  4. Modification du DSM QRadar
  5. Conclusion
  6. Bibliographie
  7. Annexe

1. Introduction

Bonjour à tous, je vous présente dans cet article comment mettre en place un serveur SSH sur votre machine Windows mais également comment le superviser à l’aide d’un agent WinCollect et de l’outil d’IBM QRadar.

Pour pouvoir effectuer les différentes actions de cet article, il va vous falloir les prérequis suivants pour pouvoir tester :

  • Une machine Windows avec un agent WinCollect en mode “managed
  • Un collecteur QRadar (typiquement le All-in-One QRadar CE donc je vous ai présenté l’installation ici)

2. Activation du serveur OpenSSH

Dans un premier nous allons activer le serveur SSH sur la machine Windows, il existe plusieurs de techniques pour arriver à nos fins que vous trouverez partout sur internet. Je vous partage ici la solution en ligne de commande.


Attention

Avant d’effectuer les différentes commandes et surtout l’activation du serveur je vous conseille très fortement de vérifier que la machine n’est pas exposée sur internet (machine en DMZ, redirection de port…). En effet, une machine exposée va se retrouver scannée massivement et si votre mot de passe est trop faible ou que votre machine est vulnérable, elle va vite se faire compromettre.


Maintenant que nous avons pris toutes les précautions, voici les commandes à exécuter dans un terminal PowerShell avec les droits élevés :

  • On ajoute la “Capability” à notre machine
PS C:\> Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
  • On configure le démarrage du serveur en “Automatic“, il y a la possibilité ici de mettre en “Manual” si on ne souhaite pas que le serveur SSH démarre automatiquement
PS C:\> Set-Service -Name sshd -StartupType 'Automatic'
  • On démarre le service pour qu’il soit opérationnel
PS C:\> Start-Service sshd

Pour vérifier que tout fonctionne, nous allons effectuer une connexion en local, pour ce faire tapez la commande ci-dessous en remplaçant “<USERNAME>” par le nom d’utilisateur de votre machine (récupérable en faisant un “net user” dans votre terminal) :

PS C:\> ssh <USERNAME>@localhost

Ensuite il faut mettre le mot de passe de ce compte quand il vous est demandé, puis vous allez avoir votre session SSH.

Remarque :

Si vous avez un code PIN pour votre compte, vous pouvez le mettre en lieu et place de votre mot de passe, cela devrait également fonctionner.

3. Ajustement de la collecte

Dans un deuxième temps, nous allons mettre en place la collecte pour avoir les logs nous informant des connexions, déconnexions… sur le serveur SSH. Pour cela, il faut déjà qu’il y ait un agent WinCollect sur la machine Windows. Si ce n’est pas le cas, je vous invite à faire un petit détour par cette procédure pour l’installer en mode “Managed“.

Une fois qu’il est installé, nous allons modifier la configuration de l’agent par le biais du Log Source Management. Nous allons utiliser la technologie XPath qui est expliquée ici, pour trouver le filtre XML qui correspond à nos besoins il faut ouvrir l’observateur d’événements sur votre machine Windows.

En déroulant les différents journaux, on constate qu’il y a un dossier “OpenSSH“, de plus, en cliquant sur le fichier “Operational“, on peut retrouver les tests de connexion de local faits dans la première partie.

Pour obtenir le filtre XML il existe plusieurs méthodes, nous allons opter ici pour la plus simple :

  • Faites clic droit sur le fichier “Operational
  • Cliquez sur “Filtrer le journal actuel“, une nouvelle fenêtre va s’ouvrir
  • Cliquez sur l’onglet “XML
  • Copiez collez le filtre et vous obtiendrez quelque chose de très similaire voire identique au filtre ci-dessous
<QueryList>
  <Query Id="0" Path="OpenSSH/Operational">
    <Select Path="OpenSSH/Operational">*</Select>
  </Query>
</QueryList>

Maintenant que nous avons le filtre, il ne reste plus qu’à l’ajouter dans le paramètre correspondant dans QRadar.

  • Ouvrez le Log Source Management de votre instance QRadar
  • Cliquez sur votre log source Windows Security
  • Allez dans l’onglet “Protocol
  • Cliquez sur le bouton “Edit
  • Collez le filtre XML dans le champ “XPath Query
  • Cliquez sur “Save

Remarque :

En fonction de la fréquence de synchronisation de la configuration de votre agent, la mise en place de cette modification peut prendre plus ou moins de temps.

4. Modification du DSM QRadar

Troisièmement, nous allons modifier quelque peu la configuration du DSM “Microsoft Windows Security Event Log” pour qu’il prenne en charge les logs venant de notre serveur SSH car oui, ce n’est pas pris en charge par défaut 😢

Je vous ai mis à disposition un fichier qui va contenir tous le mapping des événements, vous le retrouverez sur mon Github juste ici.

Pour l’installer sur votre instance QRadar :

  • Téléchargez le fichier
  • Allez sur l’onglet “Admin” de votre instance QRadar puis cliquez sur “Extensions Management“, une nouvelle fenêtre va s’ouvrir
  • Cliquez sur “Add“, une nouvelle fenêtre va s’ouvrir
  • Cliquez sur “Browse“, une fenêtre d’explorateur de fichiers va s’ouvrir
  • Sélectionnez le fichier téléchargé au début puis cliquez sur “Ouvrir
  • Cochez l’option “Install immediatly
  • Cliquez sur “Add

Une fois l’installation effectuée, vous aurez les événements (QID) correspondants aux connexions, déconnexions… d’un serveur OpenSSH Windows.

Avant que tout fonctionne parfaitement, il faut effectuer un peu de parsing pour le log source type “Microsoft Windows Security Event Log“.

  • Allez sur l’onglet “Admin” de votre instance QRadar puis cliquez sur “DSM Editor“, une nouvelle fenêtre va s’ouvrir
  • Choisissez le type “Microsoft Windows Security Event Log
  • Cliquez sur le bouton en forme de crayon en haut à droite de la fenêtre
  • Collez le contenu que vous retrouverez en annexe 1
  • Cliquez ensuite sur le bouton en forme “v” en haut à droite de la fenêtre

Dernière ajustement avant de modifier les propriétés :

  • Cliquez sur la molette à droite au milieu de la fenêtre
  • Cochez uniquement les propriétés suivantes :
    • Event Category
    • Event ID
    • Event Name*
    • Source IP
    • Source Port
    • Username

Maintenant nous allons modifier les propriétés suivantes :

  • Event ID
  • Source IP
  • Source Port
  • Username

Pour ce faire, il faut faire dans le panel à gauche de la fenêtre :

  • Cliquez sur l’onglet “Properties
  • Recherchez la propriété que vous souhaitez
  • Cliquez sur la propriété
  • Cochez l’option “Override system behavior
  • Sélectionnez l’option “Regex” dans le menu déroulant
  • Copiez collez la valeur de l’expression de votre regex en fonction du tableau ci-dessous
PropriétéExpressionFormat String
Event IDMessage=sshd:.*(Accepted password|Connection closed|Connection reset|Disconnected from|Failed password|Received disconnect)$1
Source IPMessage=sshd:.*\s((?:[0-9]{1,3}.){3}[0-9]{1,3}|::1|localhost)$1
Source Portport\s+(\d{1,5})$1
Usernamesshd:.for\s+(.)\s+from$1

Une fois le tout configuré, vous devrez obtenir le tableau suivant :

Il faut bien penser à sauvegarder le tout en cliquant sur “Save” pour que le rendu dans les logs soient bon.

5. Conclusion

Nous voici donc à la conclusion de ce tips sur la collecte des logs d’un Server OpenSSH sous Windows. J’ai souhaité le faire pour présenter la puissance de l’utilisation du XPath avec l’agent WinCollect mais également le fait qu’il est important de collecter ce type d’informations dans un système d’informations.

N’hésitez pas à me faire part de d’autres technologies qu’il serait intéressant de collecter.

6. Bibliographie

7. Annexe

#1 : Exemple de logs OpenSSH

<13>May 20 11:43:19 TEST-COMPUTER AgentDevice=WindowsLog	AgentLogFile=OpenSSH/Operational	PluginVersion=7.3.1.22	Source=OpenSSH	Computer=TEST-COMPUTER	OriginatingComputer=TEST-COMPUTER	User=Système	Domain=AUTORITE NT	EventID=4	EventIDCode=4	EventType=4	EventCategory=0	RecordNumber=22	TimeGenerated=1684575796	TimeWritten=1684575796	Level=Informational	Keywords=0x4000000000000000	Task=None	Opcode=Info	Message=sshd: Disconnected from ::1 port 49637

<13>May 20 11:43:19 TEST-COMPUTER AgentDevice=WindowsLog	AgentLogFile=OpenSSH/Operational	PluginVersion=7.3.1.22	Source=OpenSSH	Computer=TEST-COMPUTER	OriginatingComputer=TEST-COMPUTER	User=Système	Domain=AUTORITE NT	EventID=4	EventIDCode=4	EventType=4	EventCategory=0	RecordNumber=21	TimeGenerated=1684575796	TimeWritten=1684575796	Level=Informational	Keywords=0x4000000000000000	Task=None	Opcode=Info	Message=sshd: Received disconnect from ::1 port 49637:11: disconnected by user

<13>May 20 11:43:04 TEST-COMPUTER AgentDevice=WindowsLog	AgentLogFile=OpenSSH/Operational	PluginVersion=7.3.1.22	Source=OpenSSH	Computer=TEST-COMPUTER	OriginatingComputer=TEST-COMPUTER	User=Système	Domain=AUTORITE NT	EventID=4	EventIDCode=4	EventType=4	EventCategory=0	RecordNumber=20	TimeGenerated=1684575781	TimeWritten=1684575781	Level=Informational	Keywords=0x4000000000000000	Task=None	Opcode=Info	Message=sshd: Accepted password for TestUser from ::1 port 49637 ssh2

<13>May 20 11:42:37 TEST-COMPUTER AgentDevice=WindowsLog	AgentLogFile=OpenSSH/Operational	PluginVersion=7.3.1.22	Source=OpenSSH	Computer=TEST-COMPUTER	OriginatingComputer=TEST-COMPUTER	User=Système	Domain=AUTORITE NT	EventID=4	EventIDCode=4	EventType=4	EventCategory=0	RecordNumber=18	TimeGenerated=1684575756	TimeWritten=1684575756	Level=Informational	Keywords=0x4000000000000000	Task=None	Opcode=Info	Message=sshd: Disconnected from ::1 port 49454

<13>May 20 11:42:58 TEST-COMPUTER AgentDevice=WindowsLog	AgentLogFile=OpenSSH/Operational	PluginVersion=7.3.1.22	Source=OpenSSH	Computer=TEST-COMPUTER	OriginatingComputer=TEST-COMPUTER	User=Système	Domain=AUTORITE NT	EventID=4	EventIDCode=4	EventType=4	EventCategory=0	RecordNumber=19	TimeGenerated=1684575777	TimeWritten=1684575777	Level=Informational	Keywords=0x4000000000000000	Task=None	Opcode=Info	Message=sshd: Failed password for TestUser from 192.168.192.168 port 49637 ssh2

Merci d’avoir suivi ce petit tuto, en espérant que cela vous ait été utile. N’hésitez pas à me communiquer vos ressentis, tips…etc via le formulaire ci-dessous.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *