Surveillance de disque
1. Installer l'outils :
# Debian/Ubuntu : apt install smartmontools
# RHEL/CentOS : dnf install smartmontools
# Arch : pacman -S smartmontools
2. Vérification manuelle de la santé :
sudo smartctl -H /dev/sda
Chercher la ligne : "SMART overall-health self-assessment test result: PASSED"
3. Script de monitoring global :
# Récupérer la santé globale
health=$(smartctl -H /dev/sda | grep "test result" | awk '{print $6}')
# Récupérer la température
temp=$(smartctl -A /dev/sda | grep "Temperature_Celsius" | awk '{print $10}')
Pour surveiller en temps réel (toutes les 5s) :
watch -n 5 './check-disk-temp.sh'
Automatisation avec Cron
1. Installation et activation :
sudo apt install cron
sudo systemctl enable --now cron
2. Comprendre la syntaxe (Les 5 étoiles) :
* * * * * commande │ │ │ │ │ │ │ │ │ └── Jour de la semaine (0-6) │ │ │ └──── Mois (1-12) │ │ └────── Jour du mois (1-31) │ └──────── Heure (0-23) └────────── Minute (0-59)
3. Script de sauvegarde (Tous les dimanches à 3h) :
0 3 * * 0 /home/adm-nc/rsync.sh >> /var/log/repo-sync.log 2>&1
Note : "2>&1" redirige les erreurs (stderr) vers le même fichier que les logs standards (stdout).
crontab -e
Éditer vos tâches
crontab -l
Lister vos tâches
Connexion SSH via Clé & Alias
1. Générer la paire de clés (ED25519) :
ssh-keygen -t ed25519 -C "votre_email@exemple.com"
Le commentaire peut etre sous n'importe quel forme
2. Envoyer la clé sur le serveur :
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@ip_du_serveur
3. Configurer l'alias (~/.ssh/config) :
Host nas
HostName ip_du_nas
User votre_utilisateur
IdentityFile ~/.ssh/id_ed25519Succès : Désormais, tapez simplement ssh nas
Fail2Ban : Protection contre les intrusions
Surveille les logs système et bannit les IPs suspectes via le pare-feu.
1. Configuration SSH (/etc/fail2ban/jail.local)
[sshd] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 3 bantime = 1h ignoreip = 127.0.0.1/8 192.168.1.0/24
2. Cas d'usages avancés
HA Proxy
Bannit les IPs qui génèrent trop d'erreurs HTTP 404 ou 403 (scanners de vulnérabilités).
3. Commandes d'administration
fail2ban-client status sshd
Voir les IPs
bannies
fail2ban-client set sshd unbanip <IP>
Débannir une IP
Attention : Toujours ajouter votre IP dans
ignoreip pour éviter de vous auto-bannir par erreur
lors de tests !
Registrar – Configurer les DNS records
1. Types de records essentiels :
A example.com. 3600 IN A 192.168.1.10
CNAME www.example.com. 3600 IN CNAME example.com.
MX example.com. 3600 IN MX 10 mail.example.com.
TXT example.com. 3600 IN TXT "v=spf1 mx ~all"
2. Vérifier la propagation d'un record :
dig A example.com @8.8.8.8
Chercher "ANSWER SECTION" — si vide, le record n'est pas encore propagé.
3. Script de vérification multi-records :
DOMAIN="example.com"
for TYPE in A MX TXT; do
echo "--- $TYPE ---"
dig $TYPE $DOMAIN +short
done
Surveiller la propagation toutes les 30s :
watch -n 30 'dig A example.com +short'
Serveur DNS – Unbound (résolveur)
1. Installer Unbound :
# Debian/Ubuntu : apt install unbound
# RHEL/CentOS : dnf install unbound
# Arch : pacman -S unbound
2. Configuration minimale
/etc/unbound/unbound.conf :
server:
interface: 127.0.0.1
port: 53
access-control: 127.0.0.0/8 allow
access-control: 192.168.0.0/16 allow
hide-identity: yes
hide-version: yes
harden-dnssec-stripped: yes
use-caps-for-id: yes
Activer puis démarrer :
systemctl enable --now unbound
3. Script de vérification du résolveur :
# Tester la résolution locale
result=$(dig example.com @127.0.0.1 +short)
if [ -z "$result" ]; then
echo "ERREUR : Unbound ne répond pas"
else
echo "OK : $result"
fi
# Vérifier le statut du service
systemctl is-active unbound
Tester DNSSEC et les stats en temps réel :
watch -n 5 'unbound-control stats_noreset | grep -E "total|cache"'
DNS local – /etc/hosts
1. Format du fichier /etc/hosts :
127.0.0.1 localhost
192.168.1.10 nas.local nas
192.168.1.20 proxmox.local proxmox
192.168.1.1 router.local
2. Vérifier la résolution d'un nom local :
getent hosts nas.local
Si vide : vérifier que files est bien présent
avant dns dans /etc/nsswitch.conf à la ligne
hosts:.
3. Script d'audit des entrées locales :
echo "=== Entrées /etc/hosts (hors loopback) ==="
grep -v "^#\|^$\|127\.\|::1" /etc/hosts
echo "=== Test de résolution ==="
while read -r ip host _; do
result=$(getent hosts "$host" | awk '{print $1}')
[ "$result" = "$ip" ] && echo "OK $host -> $ip" \
|| echo "ERR $host (attendu $ip, obtenu $result)"
done < <(grep -v "^#\|^$\|127\.\|::1" /etc/hosts)
Éditer rapidement sans risquer de casser le fichier :
sudo cp /etc/hosts /etc/hosts.bak && sudo nano /etc/hosts
HAProxy – Bases
1. Installer HAProxy :
# Debian/Ubuntu : apt install haproxy
# RHEL/CentOS : dnf install haproxy
# Arch : pacman -S haproxy
2. Structure de base
/etc/haproxy/haproxy.cfg :
global
log /dev/log local0
maxconn 2000
defaults
mode http
timeout connect 5s
timeout client 30s
timeout server 30s
log global
frontend mon_frontend
bind *:80
default_backend mes_serveurs
backend mes_serveurs
balance roundrobin
server web1 192.168.1.10:80 check
server web2 192.168.1.11:80 check
balance roundrobin distribue les requêtes à tour
de rôle entre les serveurs.
3. Vérifier la configuration et redémarrer :
haproxy -c -f /etc/haproxy/haproxy.cfg
Si "Configuration file is valid" :
systemctl reload haproxy
Surveiller l'état des backends en temps réel :
watch -n 3 'echo "show stat" | socat stdio /run/haproxy/admin.sock | cut -d, -f1,2,18'
HAProxy – Avancé (ACL & HTTPS)
1. ACL – Routage conditionnel par nom de domaine :
frontend mon_frontend
bind *:80
bind *:443 ssl crt /etc/haproxy/certs/example.pem
# Définition des ACL
acl host_app1 hdr(host) -i app1.example.com
acl host_app2 hdr(host) -i app2.example.com
# Routage selon l'ACL
use_backend backend_app1 if host_app1
use_backend backend_app2 if host_app2
default_backend backend_app1
backend backend_app1
balance leastconn
server app1a 192.168.1.20:8080 check
server app1b 192.168.1.21:8080 check
backend backend_app2
balance roundrobin
server app2a 192.168.1.30:8080 check
leastconn envoie vers le serveur avec le moins de
connexions actives — adapté aux longues sessions.
2. Redirection HTTP → HTTPS et stats :
frontend mon_frontend
bind *:80
# Rediriger tout le HTTP vers HTTPS
redirect scheme https code 301 if !{ ssl_fc }
listen stats
bind *:8404
stats enable
stats uri /stats
stats refresh 5s
stats auth admin:motdepasse
Interface web de stats accessible sur
http://ip:8404/stats
3. Script de vérification des backends :
echo "=== État des backends ==="
echo "show stat" | socat stdio /run/haproxy/admin.sock \
| awk -F, 'NR>1 && $2 != "BACKEND" {
printf "%-20s %-10s %s\n", $1, $2, $18
}'
# $18 = status (UP/DOWN)
Tester une ACL sans recharger la config :
echo "show acl" | socat stdio /run/haproxy/admin.sock
Apache2 – Configuration
1. Installer Apache2 :
# Debian/Ubuntu : apt install apache2
# RHEL/CentOS : dnf install httpd
# Arch : pacman -S apache
2. Créer un VirtualHost
/etc/apache2/sites-available/monsite.conf :
<VirtualHost *:80>
ServerName monsite.example.com
DocumentRoot /var/www/monsite
<Directory /var/www/monsite>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/monsite_error.log
CustomLog ${APACHE_LOG_DIR}/monsite_access.log combined
</VirtualHost>
Activer le site :
a2ensite monsite.conf && systemctl reload apache2
3. Modules utiles à activer :
a2enmod rewrite # Réécriture d'URL (.htaccess) a2enmod ssl # HTTPS a2enmod headers # Manipulation des en-têtes HTTP a2enmod proxy proxy_http # Reverse proxy systemctl reload apache2
Lister les modules actifs : apache2ctl -M
Tester la config et suivre les erreurs en temps réel :
apache2ctl configtest && tail -f /var/log/apache2/error.log
RAID – Redondance avec mdadm
1. Installer mdadm :
# Debian/Ubuntu : apt install mdadm
# RHEL/CentOS : dnf install mdadm
# Arch : pacman -S mdadm
2. Niveaux RAID et redondance apportée :
RAID 0 — Aucune redondance. Données réparties sur N disques.
Perte d'1 disque = perte totale des données.
Avantage : performances maximales en lecture/écriture.
RAID 1 — Miroir complet. Chaque disque est une copie exacte.
Tolère la panne de N-1 disques.
Avantage : lecture rapide, reconstruction simple.
RAID 5 — Parité distribuée sur au moins 3 disques.
Tolère la panne d'1 disque sans perte de données.
Avantage : bon compromis espace / redondance.
RAID 6 — Double parité sur au moins 4 disques.
Tolère la panne simultanée de 2 disques.
Avantage : sécurité accrue pour les grands volumes.
Le RAID ne remplace pas une sauvegarde — il protège contre la panne matérielle, pas contre la suppression accidentelle.
3. Créer un RAID 5 et surveiller la reconstruction :
# Créer le RAID 5 sur 3 disques
mdadm --create /dev/md0 --level=5 --raid-devices=3 \
/dev/sdb /dev/sdc /dev/sdd
# Suivre la progression de la reconstruction
watch -n 2 'cat /proc/mdstat'
# Vérifier l'état détaillé
mdadm --detail /dev/md0
Chercher State : clean — tant que c'est
degraded ou recovering, la reconstruction est en
cours.
Simuler une panne et ré-ajouter un disque :
mdadm /dev/md0 --fail /dev/sdd && mdadm /dev/md0 --remove /dev/sdd && mdadm /dev/md0 --add /dev/sdd





