Spaces:
Running
Running
File size: 4,866 Bytes
2223769 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 | # 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.
|