Bonjour tout le monde !

Les Chroniques de la Couscoussière : scripts, audits et grains de savoir

Bienvenue dans les Chroniques de la Couscoussière ! Aujourd’hui, je vous propose un petit script pour surveiller vos VPS/serveurs GNU/Linux. Ce script génère un rapport complet sur l’état du système, incluant les ressources, la sécurité, les tentatives de connexion SSH suspectes et bien plus encore. Ce type de surveillance est parfait pour mes serveurs en production, aussi bien personnels que professionnels.

Objectif

L’objectif est de fournir un rapport HTML complet envoyé par email. Ce script est particulièrement utile pour les administrateurs système qui souhaitent surveiller les performances et la sécurité de leurs serveurs de manière automatisée.

Paquets nécessaires

Voici les outils nécessaires pour faire fonctionner le script :

  • sendmail : Pour l’envoi d’emails. Tutoriel d’installation ici.
  • iotop : Pour surveiller les I/O disques.
  • vnstat : Pour les statistiques réseau.
  • rkhunter et chkrootkit : Pour détecter les rootkits.
  • fail2ban : Pour la gestion des IP bannies.
  • nmap : Pour scanner les ports ouverts localement.

Installez-les avec cette commande :

sudo apt update && sudo apt install -y sendmail iotop vnstat rkhunter chkrootkit fail2ban nmap

Le script

Voici le script complet. Pensez à remplacer les informations sensibles comme les emails et les identifiants SMTP :

#!/bin/bash
################################################################################
# full_sys_audit.sh
#
# Script avancé pour:
#  1) Vérifier/installer les outils requis
#  2) Générer un rapport HTML complet (métriques, sécurité, logs critiques)
#  3) Envoyer ce rapport par e-mail avec sendmail
#
# Auteur : Les Chroniques de la Couscoussière
# Date   : $(date '+%Y-%m-%d')
################################################################################

# ------------------------------------------------------------------------------
# 1) CONFIGURATION DES VARIABLES
# ------------------------------------------------------------------------------
EMAIL_TO="destinataire@example.com"
EMAIL_FROM="VPS_Couscoussiere <contact@example.com>"
EMAIL_SUBJECT="Audit Complet du VPS - $(date '+%Y-%m-%d')"

REPORT_FILE="/tmp/vps_full_audit.html"
LOG_FILE="/var/log/vps_report.log"
TMP_LOG_FILE="/tmp/sendmail_output.log"
DATE="$(date '+%Y-%m-%d %H:%M:%S')"

MYSQL_ROOT_PWD="PASSWORD_MYSQL"

# ------------------------------------------------------------------------------
# 2) INSTALLATION / VÉRIFICATION DES OUTILS NÉCESSAIRES
# ------------------------------------------------------------------------------
echo "Vérification des paquets requis..."
apt-get update -qq

REQUIRED_PKGS=(
  fail2ban
  vnstat
  iotop
  sysstat
  rkhunter
  chkrootkit
  net-tools
  nmap
  mailutils
)

for pkg in "${REQUIRED_PKGS[@]}"; do
  if ! dpkg -l | grep -q "^ii\s\+$pkg"; then
    echo "Installation de $pkg..."
    apt-get install -y "$pkg" >/dev/null 2>&1
  fi
done

if command -v rkhunter &>/dev/null; then
  rkhunter --update >/dev/null 2>&1
fi

systemctl enable fail2ban >/dev/null 2>&1
systemctl start fail2ban >/dev/null 2>&1

# ------------------------------------------------------------------------------
# 3) RÉALISATION DES ANALYSES SYSTÈME & SÉCURITÉ
# ------------------------------------------------------------------------------

echo "Exécution de rkhunter (analyse rootkits)..."
RKHUNTER_REPORT="$(rkhunter --check --sk --nocolors 2>/dev/null | tail -n 50)"

echo "Exécution de chkrootkit (analyse rootkits)..."
CHKROOTKIT_REPORT="$(chkrootkit 2>/dev/null | tail -n 50)"

echo "Exécution d'un scan nmap local..."
NMAP_LOCAL="$(nmap -sS -Pn 127.0.0.1 2>/dev/null | tail -n 30)"

# ------------------------------------------------------------------------------
# 4) GÉNÉRATION DU RAPPORT HTML
# ------------------------------------------------------------------------------
cat < "$REPORT_FILE"
    
    

Audit Complet du VPS

Date : $DATE

1. Informations Système & Ressources

1.1 Uptime

$(uptime)

1.2 Charge CPU

$(top -bn1 | grep "load average")

1.3 Utilisation de la RAM

$(free -h)

1.4 Utilisation des disques

$(df -h)

1.5 Monitoring I/O (iotop – bref snapshot)

$(iotop -b -n 1 | head -n 15)

1.6 Statistiques réseau (vnStat)

$(vnstat --oneline)

2. Journaux & Événements critiques

2.1 Logs critiques (syslog, messages)

$(grep -iE "error|crit|alert|emerg" /var/log/messages /var/log/syslog 2>/dev/null | tail -n 20)

2.2 Tentatives de connexion SSH suspectes

$(grep "Failed password" /var/log/auth.log | tail -n 20)

3. Services Clés & Processus

3.1 Statut de Fail2Ban

$(fail2ban-client status 2>/dev/null)

3.2 IP bannies récemment

$(fail2ban-client status | grep -A 100 "IP list" | tail -n +2)

3.3 Services critiques (MySQL, Apache, SSH)

MySQL

$(systemctl status mysql | grep -E "Active:|loaded")
$(echo "SHOW PROCESSLIST;" | mysql -u root --password=$MYSQL_ROOT_PWD 2>/dev/null)

Apache

$(systemctl status apache2 | grep -E "Active:|loaded")
Connexions actives : $(netstat -anp | grep ':80 ' | wc -l)

SSH

$(systemctl status ssh | grep -E "Active:|loaded")

4. Sécurité & Ports Ouverts

4.1 Analyse rootkits (rkhunter)

$RKHUNTER_REPORT

4.2 Analyse rootkits (chkrootkit)

$CHKROOTKIT_REPORT

4.3 Scan des ports locaux (nmap sur 127.0.0.1)

$NMAP_LOCAL

5. Processus gourmands

5.1 Top 5 mémoire

$(ps aux --sort=-%mem | head -n 6)

5.2 Top 5 CPU

$(ps aux --sort=-%cpu | head -n 6)

Conclusion

Ce script est un outil efficace pour surveiller vos serveurs GNU/Linux, qu’ils soient personnels ou semi-professionnels. Il génère un rapport HTML complet, facile à lire et envoyé automatiquement par email, pour vous aider à détecter rapidement les anomalies et surveiller les performances de vos systèmes.

Cependant, pour les environnements professionnels critiques, je recommande vivement d’utiliser une infrastructure de sécurité avancée. Voici quelques outils et technologies à envisager :

  • ELK Stack : Pour une gestion centralisée des logs et une analyse en temps réel.
  • HarfangLab : Une solution française d’EDR (Endpoint Detection and Response) pour la sécurité des endpoints.
  • Darktrace : Un outil de NDR (Network Detection and Response) basé sur l’IA pour détecter les menaces réseau.
  • Cowrie : Un honeypot connu pour piéger et analyser les tentatives d’intrusion.

Ces solutions permettent de compléter une stratégie de défense avec une supervision avancée et une analyse des menaces. Ce script, bien qu’utile, est une première ligne de défense adaptée pour des usages simples ou des environnements à moindre risque.

Pour plus de détails sur l’installation des outils nécessaires au script, je vous invite à consulter IT-Connect, une excellente ressource pour apprendre et approfondir vos connaissances en administration système.

Pour toute question ou suggestion, n’hésitez pas à commenter ou partager votre expérience sur cyber-couscous.fr. Gardez vos serveurs sous contrôle et que votre couscous reste toujours chaud !

 

Les commentaires sont fermés.