WorkshopCyberAI / workshop1.md
sallani's picture
Upload 10 files
2223769 verified
# Workshop 1 : Analyse de Journaux Système avec un Modèle NVIDIA LLM
## Utilisation des Modèles LLM pour la Détection d'Anomalies en Cybersécurité
## Introduction
Ce TP a pour objectif de vous initier à l’utilisation des modèles de langage (LLM) open-source dans le domaine de la cybersécurité. Nous allons utiliser le modèle **LLaMA-3.1-Nemotron-70B-Instruct** fourni par NVIDIA pour analyser des journaux système, détecter des anomalies et générer des recommandations de sécurité.
---
## Objectifs
1. Comprendre comment utiliser l’API NVIDIA pour exploiter un modèle de langage avancé.
2. Apprendre à analyser des journaux système avec un modèle LLM.
3. Automatiser la génération de rapports de sécurité.
---
## Prérequis
1. **Compte NVIDIA NGC** : Créez un compte [ici](https://www.nvidia.com/ngc).
2. **Clé API NVIDIA** : Générez une clé API dans votre tableau de bord NVIDIA NGC.
3. **Google Colab** : Utilisez une instance Colab pour exécuter ce TP.
4. **Documentation de l'API NVIDIA** : Consultez [ce lien](https://build.nvidia.com/nvidia/llama-3_1-nemotron-70b-instruct).
---
## Étape 1 : Configuration de l’API NVIDIA
### 1.1 Installation des Bibliothèques
Exécutez la cellule suivante dans Google Colab pour installer les dépendances :
```python
!pip install openai
```
### 1.2 Configuration de l’API
Créez un client pour interagir avec l’API NVIDIA.
```python
from openai import OpenAI
# Configurer le client NVIDIA
client = OpenAI(
base_url="https://integrate.api.nvidia.com/v1",
api_key="VOTRE_API_KEY" # Remplacez par votre clé API NVIDIA
)
print("API NVIDIA configurée avec succès.")
```
**Remarque** : Remplacez `VOTRE_API_KEY` par votre clé API NVIDIA.
---
## Étape 2 : Chargement des Journaux Système
### 2.1 Simulation de Journaux
Créez une liste contenant des journaux système simulés :
```python
# Journaux système simulés
logs = [
"2025-01-10 12:00:01 User 'admin' logged in from IP 192.168.1.10",
"2025-01-10 12:15:23 Failed login attempt for user 'root' from IP 10.0.0.15",
"2025-01-10 12:20:45 User 'john' downloaded sensitive file 'confidential.pdf'",
"2025-01-10 12:35:50 Unusual traffic detected from IP 10.0.0.20",
"2025-01-10 12:50:10 User 'admin' performed a password reset for user 'guest'"
]
print("Journaux système chargés :")
for log in logs:
print(log)
```
---
## Étape 3 : Analyse des Journaux avec NVIDIA LLM
### 3.1 Préparer le Prompt
Le prompt est une instruction que nous envoyons au modèle pour effectuer une analyse.
```python
# Créer un prompt pour le modèle
prompt = f"""
Voici une liste de journaux système :
{chr(10).join(logs)}
1. Identifiez les événements suspects ou inhabituels.
2. Expliquez pourquoi ces événements sont problématiques.
3. Proposez des recommandations pour éviter ces problèmes à l'avenir.
"""
print("Prompt créé pour le modèle.")
```
### 3.2 Envoyer le Prompt à l’API
Utilisez l’API NVIDIA pour analyser les journaux.
```python
# Envoyer la requête à l’API NVIDIA
completion = client.chat.completions.create(
model="nvidia/llama-3.1-nemotron-70b-instruct",
messages=[{"role": "user", "content": prompt}],
temperature=0.5,
top_p=1,
max_tokens=1024,
stream=True
)
# Afficher la réponse en continu
print("\n### Résultat d'analyse ###")
for chunk in completion:
if chunk.choices[0].delta.content is not None:
print(chunk.choices[0].delta.content, end="")
```
---
## Étape 4 : Sauvegarder le Rapport
### 4.1 Enregistrer le Rapport
Les résultats générés par le modèle peuvent être sauvegardés pour une analyse ultérieure.
```python
# Sauvegarder le rapport généré
rapport = ""
for chunk in completion:
if chunk.choices[0].delta.content is not None:
rapport += chunk.choices[0].delta.content
with open("rapport_securite.txt", "w") as file:
file.write(rapport)
print("\nLe rapport a été sauvegardé sous 'rapport_securite.txt'.")
```
---
## Discussions et Questions
### Questions pour les étudiants
1. Quels événements ont été identifiés comme suspects ?
2. Les recommandations sont-elles pertinentes ?
3. Comment pourrait-on améliorer l’analyse pour des systèmes réels ?
### Suggestions d’amélioration
1. Ajouter des journaux système réels pour tester la robustesse.
2. Personnaliser les modèles avec des données d’entraînement spécifiques.
3. Automatiser la classification des événements par gravite : critique, moyenne, faible.
---
## Conclusion
Ce TP vous a permis de :
- Configurer un modèle LLM NVIDIA.
- Analyser des journaux système et détecter des anomalies.
- Générer un rapport automatisé de sécurité.
Si vous avez des questions ou souhaitez explorer d’autres cas d’usage, n’hésitez pas à les poser à la fin du workshop.