From 65fde7640bed62cfd275673f0e8c0b1964bf5a19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9drix?= Date: Sat, 7 Mar 2026 10:51:14 +0100 Subject: [PATCH] adminSys update - add config firewall web --- servers/linux/README.md | 31 +++++++ servers/linux/config_adminSys.sh | 109 ++++++++++++++++++++++ servers/linux/firewall.php | 140 +++++++++++++++++++++++++++++ servers/linux/setup_firewall_ui.sh | 113 +++++++++++++++++++++++ 4 files changed, 393 insertions(+) create mode 100644 servers/linux/README.md create mode 100755 servers/linux/config_adminSys.sh create mode 100644 servers/linux/firewall.php create mode 100755 servers/linux/setup_firewall_ui.sh diff --git a/servers/linux/README.md b/servers/linux/README.md new file mode 100644 index 0000000..1ed293d --- /dev/null +++ b/servers/linux/README.md @@ -0,0 +1,31 @@ +# 🛠️ Server Admin Setup (Debian/Ubuntu) + +Ce dépôt contient un script d'automatisation pour la configuration initiale et la surveillance de serveurs Linux (Debian/Ubuntu). + +## 🚀 Fonctionnalités + +Le script `config_adminSys.sh` déploie les briques suivantes : + +* **Sécurité Réseau** : Configuration de `UFW` (bloque tout sauf SSH/22) et installation de `Fail2Ban`. /!\ A personnaliser si c'est un serveur Web, postgres.... +* **Maintenance** : Activation des `unattended-upgrades` pour les patchs de sécurité automatiques. +* **Alertes Mail** : Configuration de `msmtp` pour l'envoi de rapports système via SMTP. +* **Monitoring de Santé** : Script de surveillance (`sys_check.sh`) installé dans `/usr/local/bin/`. a paramétrer + * Alerte si **Disque > 90%** + * Alerte si **Inodes > 90%** + * Alerte si **RAM > 90%** +* **Automatisation** : Tâche Cron horaire pour le check de santé. + + + +## 📋 Prérequis + +1. Un serveur sous **Debian** ou compatible. +2. Un compte mail dédié (ex: `srv.hostname@domain.tld`). +3. Un **App Password** (Mot de passe d'application). + +## 💻 Utilisation Rapide (One-Liner) + +Connectez-vous à votre nouveau serveur et lancez la commande suivante : + +```bash +wget -qO- [https://raw.githubusercontent.com/VOTRE_USER/VOTRE_REPO/main/config_adminSys.sh](https://raw.githubusercontent.com/VOTRE_USER/VOTRE_REPO/main/config_adminSys.sh) | sudo bash \ No newline at end of file diff --git a/servers/linux/config_adminSys.sh b/servers/linux/config_adminSys.sh new file mode 100755 index 0000000..5246209 --- /dev/null +++ b/servers/linux/config_adminSys.sh @@ -0,0 +1,109 @@ +#!/bin/bash + +# --- 0. VÉRIFICATION DES DROITS --- +if [ "$EUID" -ne 0 ]; then + echo "❌ Erreur : Ce script doit être lancé avec sudo." + exit 1 +fi + +# --- 1. CONFIGURATION DYNAMIQUE --- +HOSTNAME=$(hostname) +SMTP_HOST="mail.acemail.fr" +SMTP_PORT="587" +SMTP_USER="srv.${HOSTNAME}@a5l.fr" +DEST_EMAIL="cedric+${HOSTNAME}@abonnel.fr" + +echo "==========================================================" +echo " VÉRIFICATION SMTP & DÉPLOIEMENT - ${HOSTNAME}" +echo "==========================================================" + +# --- 2. TEST DU MOT DE PASSE SMTP --- +AUTH_OK=false +while [ "$AUTH_OK" = false ]; do + echo -n "🔑 Entrez le mot de passe SMTP pour ${SMTP_USER} : " + read -s SMTP_PASS + echo -e "\n⏳ Test de connexion en cours..." + + # Config temporaire pour le test + cat > /tmp/.msmtp_test </dev/null + + if [ $? -eq 0 ]; then + echo "✅ Authentification SMTP réussie !" + AUTH_OK=true + rm /tmp/.msmtp_test + else + echo "❌ Échec. Vérifiez le mot de passe ou la connexion réseau." + rm /tmp/.msmtp_test + fi +done + +# --- 3. INSTALLATION --- +echo "--- Installation des paquets ---" +DEBIAN_FRONTEND=noninteractive apt update +DEBIAN_FRONTEND=noninteractive apt install -y msmtp msmtp-mta bsd-mailx ufw fail2ban unattended-upgrades curl + +# --- 4. CONFIGURATION MSMTP --- +echo "--- Configuration MSMTP ---" +cat > /etc/msmtprc < /usr/local/bin/sys_check.sh </dev/null | grep -v "sys_check.sh" ; echo "0 * * * * /usr/local/bin/sys_check.sh") | crontab - + +# --- 7. RAPPORT FINAL --- +echo "Le déploiement est terminé avec succès sur $HOSTNAME." | mail -s "[OK] Setup Admin : $HOSTNAME" "$DEST_EMAIL" + +echo "✅ Terminé avec succès !" \ No newline at end of file diff --git a/servers/linux/firewall.php b/servers/linux/firewall.php new file mode 100644 index 0000000..3ea6f0b --- /dev/null +++ b/servers/linux/firewall.php @@ -0,0 +1,140 @@ + + + + + + + + UFW Manager Local + + + + +
+
+
+
+

🔥 UFW Manager

+
+
+ Status: +
+
+ + +
+ + +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+ + + + + + + + + + + + + + + + + "; + } + } + if (!$rules_found) echo ""; + ?> + +
#VersActionDepuisAction
{$matches[1]}{$matches[2]}{$matches[3]}{$matches[4]}"; + if (!$is_critical) { + echo "Supprimer"; + } else { + echo "Protégé"; + } + echo "
Aucune règle active.
+
+

Lancé en mode local. Ctrl+C dans le terminal pour quitter.

+
+
+ + \ No newline at end of file diff --git a/servers/linux/setup_firewall_ui.sh b/servers/linux/setup_firewall_ui.sh new file mode 100755 index 0000000..5eef237 --- /dev/null +++ b/servers/linux/setup_firewall_ui.sh @@ -0,0 +1,113 @@ +#!/bin/bash + +# --- 0. VERIFICATION DES DROITS --- +if [ "$EUID" -ne 0 ]; then + echo "❌ Erreur : Ce script doit être lancé avec sudo." + exit 1 +fi + +# Récupérer le vrai nom de l'utilisateur qui a lancé le sudo +REAL_USER=${SUDO_USER:-$USER} + +echo "--- 1. Installation de PHP ---" +apt update && apt install -y php-cli + +# --- 2. CONFIGURATION SUDOERS --- +echo "--- 2. Autorisation UFW pour l'utilisateur $REAL_USER ---" +SUDOERS_FILE="/etc/sudoers.d/ufw-php-manager" +if [ ! -f "$SUDOERS_FILE" ]; then + echo "$REAL_USER ALL=(ALL) NOPASSWD: /usr/sbin/ufw" > "$SUDOERS_FILE" + chmod 440 "$SUDOERS_FILE" + echo "✅ Sudoers configuré." +fi + +# --- 3. OUVERTURE DU PORT 8080 --- +echo "--- 3. Configuration du Firewall pour l'interface ---" +ufw allow 8080/tcp +echo "✅ Port 8080 ouvert dans UFW." + +# --- 4. CREATION DU FICHIER PHP --- +echo "--- 4. Création de firewall.php ---" +cat > firewall.php <<'EOF' + + + + + + UFW Remote Manager + + + +
+

🔥 UFW Remote Manager

+ $message
"; ?> +
+
+ +
+ +
+
+ + + + + + + + + + + + +
#VersActionDepuisAction
Supprimer
+ + + +EOF + +chown $REAL_USER:$REAL_USER firewall.php + +# --- 5. LANCEMENT --- +echo "--- 5. Lancement du serveur ---" +echo "🚀 L'interface est disponible sur : http://$(hostname -I | awk '{print $1}'):8080/firewall.php" +echo "Pressez Ctrl+C pour arrêter le serveur." + +# Lancer en tant qu'utilisateur normal (pas root) pour plus de sécurité +sudo -u $REAL_USER php -S 0.0.0.0:8080 \ No newline at end of file