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.