Sécurité
Sécuriser votre plateforme ORKA
Une plateforme correctement installée est une plateforme fonctionnelle. Une plateforme correctement sécurisée est une plateforme durable.
Ce guide vous accompagne dans le renforcement progressif de votre serveur Debian ou Ubuntu afin de limiter les risques, protéger vos données et préparer votre infrastructure à un usage en production.
01
Comprendre ce que nous allons protéger
ORKA s’appuie sur plusieurs composants qui communiquent entre eux. Chacun remplit un rôle précis et chacun peut devenir une porte d’entrée s’il est exposé ou mal configuré.
Qu’est-ce que le durcissement ?
Le durcissement, ou hardening, consiste à réduire les possibilités d’attaque d’un serveur : moins de services, moins de ports ouverts, moins de privilèges et davantage de contrôles.
Il ne rend pas le serveur invulnérable. Il le rend plus difficile à compromettre et limite les conséquences d’une erreur.
Réduire
Désactiver ce qui n’est pas nécessaire et fermer les accès inutiles.
Limiter
Donner uniquement les droits indispensables à chaque service.
Surveiller
Contrôler les journaux et détecter rapidement les anomalies.
02
Mettre le serveur à jour
Les mises à jour corrigent des défauts de fonctionnement, mais aussi des vulnérabilités connues. Un serveur non maintenu devient progressivement plus facile à attaquer, même si sa configuration initiale était correcte.
Rechercher et installer les mises à jour
Commandes
$ sudo apt update
$ sudo apt upgrade -y
Reading package lists... Done
Building dependency tree... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed,
0 to remove and 0 not upgraded.
Contrôle
Le résultat idéal indique qu’aucune mise à jour ne reste à installer. Si des paquets ont été mis à jour, vérifiez si un redémarrage est demandé.
Vérifier si un redémarrage est nécessaire
Commande
$ test -f /var/run/reboot-required \
&& cat /var/run/reboot-required \
|| echo "Aucun redémarrage requis"
Ce que vous venez de faire
Vous avez installé les correctifs disponibles et réduit l’exposition du serveur à des vulnérabilités déjà connues.
03
Créer un compte d’administration dédié
Le compte root dispose de tous les droits sur le serveur.
L’utiliser quotidiennement augmente le risque d’erreur : une commande
mal saisie peut modifier ou supprimer n’importe quel fichier.
Créer l’utilisateur
Commandes
$ sudo adduser orkaadmin
$ sudo usermod -aG sudo orkaadmin
Vérifier l’appartenance au groupe sudo
$ groups orkaadmin
orkaadmin : orkaadmin sudo
Pourquoi sudo est-il plus sûr ?
L’utilisateur travaille avec des droits normaux et ne devient administrateur que pour une commande précise. Les actions privilégiées sont également plus faciles à tracer.
Ce que vous venez de faire
Vous avez séparé l’usage quotidien du serveur et les actions nécessitant des privilèges administrateur.
04
Sécuriser l’accès SSH
SSH est la porte d’administration du serveur. Il doit rester accessible aux personnes autorisées, tout en résistant aux tentatives de connexion automatisées qui parcourent Internet en permanence.
Gardez votre session actuelle ouverte
Ne fermez jamais votre connexion SSH en cours avant d’avoir testé la nouvelle configuration dans une seconde fenêtre de terminal.
Modifier la configuration SSH
# Interdire la connexion directe du compte root
PermitRootLogin no
# Conserver le port 22 ou choisir un autre port
Port 2222
# Limiter le nombre de tentatives
MaxAuthTries 5
# Désactiver les connexions sans mot de passe vide
PermitEmptyPasswords no
Changer le port SSH n’est pas une protection suffisante
Utiliser un autre port réduit surtout le bruit des robots qui testent automatiquement le port 22. Cela ne remplace ni une clé SSH, ni un pare-feu, ni Fail2Ban.
Vérifier la syntaxe avant redémarrage
Commande de contrôle
$ sudo sshd -t
Si la commande ne retourne aucun message, la syntaxe est valide.
Redémarrer SSH
Commande
$ sudo systemctl restart ssh
$ sudo systemctl status ssh --no-pager
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded
Active: active (running)
Tester une seconde connexion
Commande
$ ssh -p 2222 orkaadmin@adresse-du-serveur
Ce que vous venez de faire
Vous avez interdit l’accès direct au compte root, limité les tentatives et vérifié qu’un administrateur autorisé peut toujours se connecter.
05
Configurer le pare-feu
Un service peut fonctionner correctement tout en étant exposé inutilement sur le réseau. Le pare-feu applique une règle simple : tout ce qui n’est pas explicitement autorisé doit rester fermé.
Installer UFW
Commande
$ sudo apt install -y ufw
Définir les règles
Commandes
$ sudo ufw default deny incoming
$ sudo ufw default allow outgoing
$ sudo ufw allow 2222/tcp
$ sudo ufw allow 80/tcp
$ sudo ufw allow 443/tcp
Autorisez SSH avant d’activer UFW
Si le port SSH n’est pas autorisé, le pare-feu peut couper votre accès distant au serveur.
Activer et vérifier le pare-feu
Commandes
$ sudo ufw enable
$ sudo ufw status numbered
Status: active
[ 1] 2222/tcp ALLOW IN Anywhere
[ 2] 80/tcp ALLOW IN Anywhere
[ 3] 443/tcp ALLOW IN Anywhere
Ce que vous venez de faire
Vous avez fermé les accès entrants non nécessaires et conservé uniquement les ports utiles à l’administration et à ORKA.
06
Bloquer les attaques répétées avec Fail2Ban
Des robots essaient automatiquement des combinaisons de comptes et de mots de passe sur les serveurs accessibles depuis Internet. Fail2Ban observe les échecs et bloque temporairement les adresses trop insistantes.
Installer Fail2Ban
Commande
$ sudo apt install -y fail2ban
Configurer la protection SSH
[sshd]
enabled = true
port = 2222
logpath = %(sshd_log)s
maxretry = 5
findtime = 10m
bantime = 1h
Redémarrer et contrôler
Commandes
$ sudo systemctl restart fail2ban
$ sudo fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 0
| `- Total failed: 0
`- Actions
|- Currently banned: 0
`- Total banned: 0
Ce que vous venez de faire
Vous avez ajouté une protection automatique contre les attaques répétées visant l’accès SSH.
07
Activer HTTPS
Sans HTTPS, les identifiants, les sessions et les données échangées avec ORKA peuvent circuler sans chiffrement. Le certificat TLS permet au navigateur d’authentifier le serveur et de chiffrer les communications.
Installer Certbot
Commande
$ sudo apt install -y certbot python3-certbot-nginx
Générer le certificat
Commande
$ sudo certbot --nginx -d orka.mondomaine.fr
Successfully received certificate.
Certificate is saved at:
/etc/letsencrypt/live/orka.mondomaine.fr/fullchain.pem
Deploying certificate
Successfully deployed certificate for orka.mondomaine.fr
Tester le renouvellement automatique
Commande de contrôle
$ sudo certbot renew --dry-run
Ce que vous venez de faire
Les échanges entre les utilisateurs et ORKA sont désormais chiffrés, et le certificat peut être renouvelé automatiquement.
08
Durcir la configuration NGINX
NGINX constitue la première couche visible depuis le réseau. Quelques règles simples permettent de masquer des informations, de bloquer certains fichiers sensibles et de limiter les requêtes trop volumineuses.
Masquer la version de NGINX
http {
server_tokens off;
# autres paramètres...
}
Limiter la taille des fichiers téléversés
server {
client_max_body_size 50M;
# configuration ORKA...
}
La valeur doit rester cohérente avec la limite définie dans ORKA et dans PHP. Elle évite qu’un client envoie une requête démesurée au serveur.
Bloquer les fichiers cachés sensibles
location ~ /\.(?!well-known).* {
deny all;
access_log off;
log_not_found off;
}
Pourquoi conserver .well-known ?
Certbot peut utiliser ce répertoire pour vérifier que le domaine appartient bien au serveur. La règle bloque les autres fichiers cachés sans empêcher le renouvellement du certificat.
Vérifier et recharger NGINX
Commandes
$ sudo nginx -t
$ sudo systemctl reload nginx
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Ce que vous venez de faire
NGINX révèle moins d’informations, bloque les fichiers cachés et refuse les téléversements dépassant la limite définie.
09
Vérifier les permissions ORKA
Le serveur Web doit pouvoir écrire uniquement dans les répertoires prévus à cet effet. Donner des droits trop larges à l’ensemble de l’application facilite les modifications accidentelles ou malveillantes.
Pourquoi 777 est-il dangereux ?
Une permission 777 autorise tous les utilisateurs
du serveur à lire, modifier et exécuter le fichier. C’est rarement
nécessaire et cela supprime une barrière de sécurité importante.
Rechercher les fichiers ouverts à tous
Commandes de contrôle
$ sudo find /var/www/orka -type f -perm -0002 -print
$ sudo find /var/www/orka -type d -perm -0002 -print
Aucun résultat.
Réappliquer les droits recommandés
Exemple
$ sudo chown -R orka:www-data /var/www/orka
$ sudo find /var/www/orka -type d -exec chmod 2755 {} \;
$ sudo find /var/www/orka -type f -exec chmod 0644 {} \;
$ sudo chmod -R 2775 /var/www/orka/backend/var
Que signifie le chiffre 2 devant 775 ?
Le bit setgid appliqué à un répertoire permet
aux nouveaux fichiers d’hériter automatiquement du groupe
www-data. Cela évite des incohérences de droits
entre l’utilisateur ORKA et le serveur Web.
Ce que vous venez de faire
Vous avez limité les droits d’écriture et vérifié qu’aucun fichier ORKA n’est modifiable par tous les utilisateurs du serveur.
10
Protéger MariaDB
La base de données contient les informations fonctionnelles d’ORKA. Elle n’a généralement aucune raison d’être accessible directement depuis Internet.
Vérifier l’adresse d’écoute
Commande
$ sudo ss -lntp | grep 3306
LISTEN 0 80 127.0.0.1:3306 0.0.0.0:* users:(("mariadbd",pid=812,fd=19))
L’adresse 127.0.0.1 indique que MariaDB accepte
uniquement les connexions provenant du serveur lui-même.
Attention à 0.0.0.0:3306
Cette adresse indique que MariaDB écoute sur toutes les interfaces. La base peut alors devenir accessible depuis d’autres machines, selon les règles du pare-feu.
Exemple de configuration locale
[mysqld]
bind-address = 127.0.0.1
Redémarrer MariaDB
Commandes
$ sudo systemctl restart mariadb
$ sudo systemctl status mariadb --no-pager
Ce que vous venez de faire
La base de données est accessible par ORKA sur le serveur, mais elle n’est pas directement exposée au réseau.
11
Contrôler les services exposés
Chaque service réseau constitue une possibilité d’accès supplémentaire. La meilleure règle consiste à ne conserver que ce qui est réellement utile.
Lister les ports en écoute
Commande
$ sudo ss -lntup
tcp LISTEN 0 511 0.0.0.0:80 nginx
tcp LISTEN 0 511 0.0.0.0:443 nginx
tcp LISTEN 0 128 0.0.0.0:2222 sshd
tcp LISTEN 0 80 127.0.0.1:3306 mariadbd
Lister les services actifs
Commande
$ sudo systemctl list-units \
--type=service \
--state=running
Ne désactivez pas un service inconnu au hasard
Certains services système sont nécessaires au fonctionnement de Debian, du réseau ou de la journalisation. Documentez leur rôle avant toute désactivation.
12
Surveiller les journaux
Une protection efficace ne consiste pas uniquement à bloquer. Elle doit aussi permettre de comprendre ce qui se passe sur le serveur. Les journaux constituent souvent le premier indice d’une erreur ou d’une tentative d’intrusion.
Erreurs Web
Échecs de connexion, erreurs de proxy, fichiers introuvables et requêtes refusées.
Exécution PHP
Erreurs de processus, saturation et problèmes liés au moteur PHP.
Journal applicatif
Erreurs Symfony et événements générés par l’application.
Tentatives bloquées
Adresses interdites et nombre de tentatives détectées.
Commandes utiles
Surveillance
$ sudo tail -f /var/log/nginx/error.log
$ sudo journalctl -u php8.4-fpm -f
$ tail -f /var/www/orka/backend/var/log/prod.log
$ sudo fail2ban-client status sshd
Une erreur isolée n’est pas forcément une attaque
La sécurité repose sur le contexte et la répétition. Une tentative unique peut être une erreur humaine. Des centaines de tentatives rapprochées indiquent davantage une activité automatisée.
13
Valider la sécurisation
Avant de considérer le serveur comme prêt pour la production, vérifiez que chaque mesure importante est réellement active.
Le serveur est à jour.
Un compte administrateur dédié est disponible.
La connexion SSH root est interdite.
Le pare-feu UFW est actif.
Seuls SSH, HTTP et HTTPS sont exposés.
Fail2Ban protège l’accès SSH.
ORKA est accessible en HTTPS.
NGINX bloque les fichiers cachés sensibles.
Aucun fichier ORKA n’est accessible en écriture à tous.
MariaDB écoute uniquement sur localhost.
Les sauvegardes sont planifiées et externalisées.
Les journaux peuvent être consultés.
La sécurité est un processus continu
Un serveur parfaitement sécurisé n’existe pas. Un serveur régulièrement maintenu est en revanche beaucoup plus difficile à compromettre.
La configuration initiale constitue une base. Les mises à jour, la surveillance et les tests doivent ensuite devenir des habitudes.
14
Bonnes pratiques
À faire
- Installer rapidement les correctifs de sécurité.
- Utiliser des comptes nominatifs.
- Privilégier les clés SSH.
- Limiter les comptes administrateurs ORKA.
- Utiliser HTTPS en permanence.
- Vérifier régulièrement les ports exposés.
- Tester les sauvegardes et les restaurations.
- Surveiller les journaux importants.
À éviter
- Administrer quotidiennement avec root.
- Exposer MariaDB sur Internet.
- Donner des permissions 777.
- Conserver des mots de passe partagés.
- Désactiver le pare-feu pour résoudre un problème.
- Ignorer les erreurs répétées dans les journaux.
- Installer des services inutiles.
- Considérer la sécurité comme terminée.
SSH, pare-feu, Fail2Ban, HTTPS, permissions et mises à jour.
Clés SSH obligatoires, MFA, supervision et centralisation des logs.
Bastion, segmentation réseau, IDS/IPS, WAF et gestion centralisée.
15
Dépannage courant
Je ne peux plus me connecter en SSH
Utilisez la session SSH restée ouverte. Vérifiez le port configuré
dans sshd_config, la règle UFW et le résultat
de sudo sshd -t.
UFW bloque le nouveau port SSH
Ajoutez la règle avec
sudo ufw allow 2222/tcp, puis vérifiez
sudo ufw status numbered.
Fail2Ban ne démarre pas
Vérifiez la syntaxe du fichier
/etc/fail2ban/jail.local puis consultez
sudo journalctl -u fail2ban -n 50.
Certbot ne peut pas générer le certificat
Vérifiez que le domaine pointe vers le serveur et que les ports 80 et 443 sont ouverts dans UFW et chez l’hébergeur.
NGINX refuse de redémarrer
Exécutez sudo nginx -t. Le message indique
généralement le fichier et la ligne contenant l’erreur.
ORKA ne peut plus écrire dans backend/var
Vérifiez le propriétaire et le groupe du répertoire puis appliquez
sudo chmod -R 2775 /var/www/orka/backend/var.
MariaDB écoute sur toutes les interfaces
Configurez bind-address = 127.0.0.1, redémarrez
MariaDB et contrôlez à nouveau avec
sudo ss -lntp | grep 3306.
Guide terminé
Votre serveur ORKA dispose maintenant d’une base de sécurité solide
Vous avez réduit les accès inutiles, renforcé l’administration distante, protégé les échanges Web et vérifié les droits des principaux composants.
La prochaine étape consiste à intégrer ces contrôles dans une routine de maintenance régulière.