
**Date** : 26 Juillet 2024
**Auteur** : cyberhunter443
# Configurer un Raspberry Pi de manière sécurisée
Ce petit ordinateur polyvalent, bien que puissant et versatile, peut devenir une porte d'entrée pour les cyberattaquants s'il n'est pas correctement protégé. Que vous l'utilisiez comme serveur domestique, centre multimédia, dispositif IoT, ou pour vos projets de cybersécurité avancés, chaque Raspberry Pi connecté à Internet est potentiellement exposé à des risques. Ce guide exhaustif vous accompagnera ainsi pas à pas dans la mise en place d'une configuration sécurisée pour votre Raspberry Pi. Nous aborderons des aspects cruciaux tels que :
- La mise à jour et le renforcement du système d'exploitation
- La sécurisation des connexions SSH pour prévenir les accès non autorisés
- La configuration d'un pare-feu robuste pour filtrer le trafic réseau
- L'implémentation de bonnes pratiques de gestion des utilisateurs et des permissions
- L'utilisation d'outils de surveillance et de détection d'intrusions
---
### Mise à Jour et Préparation du Système
La première étape pour sécuriser votre Raspberry Pi est de vous assurer que le système d'exploitation et tous les logiciels installés sont à jour.
```
sudo apt update
sudo apt upgrade -y
sudo apt dist-upgrade -y
sudo apt autoremove -y
## Changer le mots de passe par défault
passwd
```
---
#### Utilisation de raspi-config
L'outil `raspi-config` vous aide à configurer votre Raspberry Pi. Les options disponibles peuvent différer entre les modèles Raspberry Pi. Pour ouvrir l'outil de configuration, exécutez la commande suivante :
```
sudo raspi-config
```
> ***Astuce*** : Les utilisateurs de Raspberry Pi Desktop peuvent accéder à une version graphique de cette application via **Préférences > Configuration Raspberry Pi**. Cependant, certaines configurations avancées ne sont disponibles que dans `raspi-config`.
**Modifications automatiques :** `raspi-config` automatise les modifications à `/boot/firmware/config.txt` et divers fichiers de configuration Linux. Certaines options nécessitent un redémarrage pour prendre effet. Si vous avez changé l'un de ces paramètres, `raspi-config` vous demande de redémarrer lorsque vous quittez.
---
### Sécurisation de SSH
SSH est une méthode courante pour accéder à distance à votre Raspberry Pi. Sécuriser SSH est crucial pour empêcher les accès non autorisés.
1. Ouvrez le fichier de configuration SSH :
```bash
sudo nano /etc/ssh/sshd_config
```
2. Modifiez le port par défaut de 22 à un autre port, par exemple :
```plaintext
Port 2200
```
3. Désactivez l'accès root via SSH :
```plaintext
PermitRootLogin no
```
4. Redémarrez le service SSH pour appliquer les modifications :
```bash
sudo systemctl restart ssh
```
### Configurer Fail2Ban
Fail2Ban est un outil qui aide à protéger votre Raspberry Pi contre les tentatives d'accès non autorisées en bloquant les adresses IP après un certain nombre de tentatives échouées.
1. Installez Fail2Ban :
```bash
sudo apt-get install fail2ban
```
2. Modifiez le fichier de configuration de Fail2Ban :
```bash
sudo nano /etc/fail2ban/jail.local
```
3. Ajoutez les configurations suivantes pour SSH :
```plaintext
[sshd]
enabled = true
port = 2200
logpath = %(sshd_log)s
maxretry = 5
bantime = 10m
```
4. Redémarrez Fail2Ban :
```bash
sudo systemctl restart fail2ban
```
## Configuration du Pare-feu avec UFW
Le pare-feu UFW (Uncomplicated Firewall) permet de gérer les règles de trafic réseau de manière simplifiée.
### Installer UFW
1. Installez UFW :
```bash
sudo apt-get install ufw
```
### Configurer les Règles de Pare-feu
1. Configurez les règles de pare-feu :
- Bloquez tout le trafic entrant par défaut et autorisez le trafic sortant :
```bash
sudo ufw default deny incoming
sudo ufw default allow outgoing
```
- Autorisez les ports nécessaires (par exemple, SSH sur le port 2200) :
```bash
sudo ufw allow 2200/tcp
```
- Activez UFW :
```bash
sudo ufw enable
```
- Vérifiez le statut du pare-feu :
```bash
sudo ufw status
```
---
## Configuration d'un VPN
Configurer un VPN peut ajouter une couche supplémentaire de sécurité en chiffrant votre connexion internet.
### Installer OpenVPN
1. Installez OpenVPN :
```bash
sudo apt-get install openvpn
```
### Configurer OpenVPN
1. Téléchargez et placez les fichiers de configuration dans le répertoire `/etc/openvpn/` :
```bash
sudo cp /chemin/vers/votre/config.ovpn /etc/openvpn/client.conf
```
2. Démarrez le service OpenVPN :
```bash
sudo systemctl start openvpn@client
```
3. Activez OpenVPN au démarrage :
```bash
sudo systemctl enable openvpn@client
```
4. Vérifiez l’état de la connexion VPN :
```bash
sudo systemctl status openvpn@client
```
---
## Configuration d'un Proxy
Un proxy peut aider à anonymiser votre trafic internet ou à filtrer le contenu.
### Installer Squid
1. Installez Squid :
```bash
sudo apt-get install squid
```
### Configurer Squid
1. Modifiez le fichier de configuration de Squid :
```bash
sudo nano /etc/squid/squid.conf
```
2. Configurez les règles de base (exemple) :
```plaintext
http_port 3128
acl localnet src 192.168.1.0/24
http_access allow localnet
http_access deny all
```
3. Redémarrez Squid pour appliquer les changements :
```bash
sudo systemctl restart squid
```
4. Activez Squid au démarrage :
```bash
sudo systemctl enable squid
```
---
## Configuration DNS Sécurisé avec DNSCrypt
DNSCrypt aide à sécuriser les requêtes DNS en les chiffrant, ce qui empêche les attaques telles que l'empoisonnement DNS.
### Installer DNSCrypt
1. Installez DNSCrypt :
```bash
sudo apt-get install dnscrypt-proxy
```
### Configurer DNSCrypt
1. Modifiez le fichier de configuration de DNSCrypt :
```bash
sudo nano /etc/dnscrypt-proxy/dnscrypt-proxy.toml
```
2. Configurez le serveur DNS et les options selon vos préférences, par exemple :
```plaintext
server_names = ['cloudflare', 'google']
```
3. Redémarrez DNSCrypt pour appliquer les modifications :
```bash
sudo systemctl restart dnscrypt-proxy
```
4. Activez DNSCrypt au démarrage :
```bash
sudo systemctl enable dnscrypt-proxy
```
## Les Répertoires Principaux
Voici un aperçu des répertoires principaux d'un système Linux typique, tels que vous les trouverez sur votre Raspberry Pi :
| Répertoire | Description |
|-------------|--------------------------------------------------------------------------------------------------|
| `/` | **Racine** : Contient tous les autres répertoires du système. |
| `/bin` | **Commandes Essentielles** : Contient les commandes de base nécessaires pour les utilisateurs et les scripts (ex. `ls`, `cp`, `mv`). |
| `/boot` | **Démarrage** : Fichiers nécessaires pour démarrer le système, y compris le noyau Linux et les fichiers de configuration du chargeur de démarrage (ex. `config.txt`). |
| `/dev` | **Périphériques** : Fichiers de périphériques permettant l'interaction avec le matériel (ex. disques, périphériques USB). |
| `/etc` | **Configuration** : Contient les fichiers de configuration pour le système et les applications (ex. `passwd`, `fstab`). |
| `/home` | **Répertoires Utilisateurs** : Répertoires personnels des utilisateurs (ex. `/home/pi` pour l'utilisateur `pi`). |
| `/lib` | **Bibliothèques Partagées** : Bibliothèques nécessaires pour les programmes dans `/bin` et `/sbin`. |
| `/media` | **Support Amovible** : Points de montage pour les supports amovibles comme les clés USB et les cartes SD. |
| `/mnt` | **Montage Temporaire** : Points de montage pour les systèmes de fichiers temporaires ou les montages manuels (ex. partages réseau). |
| `/opt` | **Applications Tierces** : Contient des applications tierces installées manuellement ou via des packages. |
| `/proc` | **Système Virtuel** : Fournit des informations sur les processus et le noyau (ex. `/proc/cpuinfo`, `/proc/meminfo`). |
| `/root` | **Répertoire Root** : Répertoire personnel de l'utilisateur `root`. |
| `/run` | **Runtime** : Contient les fichiers de runtime pour les services en cours d'exécution. |
| `/sbin` | **Commandes Système** : Contient les commandes essentielles pour l'administration du système (`fdisk`, `reboot`). |
| `/srv` | **Données de Services** : Contient les données utilisées pour les services fournis par le système (ex. données de serveur web). |
| `/sys` | **Système Virtuel** : Fournit des informations sur les périphériques matériels et les pilotes. |
| `/tmp` | **Fichiers Temporaires** : Contient des fichiers temporaires utilisés par les applications, souvent nettoyés au redémarrage. |
| `/usr` | **Utilisateurs** : Contient les programmes, bibliothèques, et fichiers destinés aux utilisateurs. |
| `/var` | **Données Variables** : Contient les fichiers dont le contenu varie pendant le fonctionnement du système (ex. journaux, caches). |
---
#### Détails des Sous-Répertoires de `/usr`
| Sous-Répertoire | Description |
|-----------------|---------------------------------------------------------------------------------------|
| `/usr/bin` | **Programmes Utilisateur** : Contient les exécutables pour les applications des utilisateurs. |
| `/usr/lib` | **Bibliothèques** : Contient les bibliothèques partagées utilisées par les programmes dans `/usr/bin`. |
| `/usr/share` | **Données Indépendantes de l'Architecture** : Contient des données partagées, de la documentation, et des fichiers de manuels. |
#### Détails des Sous-Répertoires de `/var`
| Sous-Répertoire | Description |
|-----------------|---------------------------------------------------------------------------------------|
| `/var/log` | **Journaux** : Contient les journaux système et des applications pour le suivi et le diagnostic. |
| `/var/tmp` | **Fichiers Temporaires** : Contient des fichiers temporaires qui sont conservés entre les redémarrages. |
---
**Raspberry Pi Projets**
Voici une liste organisée de projets que j'ai utilisés, appréciés et que je recommanderais à tous ceux qui cherchent à utiliser leur Pi. Pour les liens vers chaque projet GitHub repo, voir: https://github.com/stars/Lissy93/lists/raspberry-pi
#### Script pour automatiser la sécurisation de SSH !!
J'ai également créer un script afin d'automatiser la sécurisation de SSH sur votre Raspberry Pi (système linux), soit en modifiant le port par défaut, en désactivant l'accès root, en désactivant l'authentification par mot de passe, et en redémarrant le service SSH.
Projet disponible sur ma page Github: [github.com/cyberhunter443/Script-SSH](https://github.com/cyberhunter443/Windows-Security-Script/blob/master/script-ssh)
---
***Rédigé par @cyberhunter443***