ORKA CS. Représenter avant de piloter

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 Préparer
02 Sécuriser SSH
03 Filtrer le réseau
04 Protéger le Web
05 Contrôler

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é.

Temps 5 minutes
Objectif Comprendre l’architecture
Impact Aucune modification
Internet Utilisateurs et robots Le point d’entrée extérieur
NGINX Serveur Web Reçoit et filtre les requêtes
PHP-FPM Moteur PHP Exécute le backend Symfony
ORKA Application Traite les données métier
MariaDB Base de données Conserve les informations
i

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.

01

Réduire

Désactiver ce qui n’est pas nécessaire et fermer les accès inutiles.

02

Limiter

Donner uniquement les droits indispensables à chaque service.

03

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.

Temps 5 à 15 minutes
Objectif Installer les correctifs
Impact Redémarrage parfois requis

Rechercher et installer les mises à jour

Terminal

Commandes

$ sudo apt update
$ sudo apt upgrade -y
Résultat attendu
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

Terminal

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.

Temps 5 minutes
Objectif Éviter l’usage quotidien de root
Impact Nouveau compte administrateur

Créer l’utilisateur

Terminal

Commandes

$ sudo adduser orkaadmin
$ sudo usermod -aG sudo orkaadmin

Vérifier l’appartenance au groupe sudo

Résultat attendu
$ groups orkaadmin

orkaadmin : orkaadmin sudo
i

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.

Temps 10 à 15 minutes
Objectif Limiter les accès distants
Risque Perte d’accès si mal configuré
!

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

/etc/ssh/sshd_config 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
i

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

Terminal

Commande de contrôle

$ sudo sshd -t

Si la commande ne retourne aucun message, la syntaxe est valide.

Redémarrer SSH

Terminal

Commande

$ sudo systemctl restart ssh
$ sudo systemctl status ssh --no-pager
Résultat attendu
● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded
     Active: active (running)

Tester une seconde connexion

Depuis votre poste

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é.

Temps 10 minutes
Objectif Ouvrir uniquement SSH et le Web
Outil UFW
2222 SSH Administration distante
80 HTTP Redirection vers HTTPS
443 HTTPS Accès sécurisé à ORKA
3306 MariaDB Doit rester inaccessible

Installer UFW

Terminal

Commande

$ sudo apt install -y ufw

Définir les règles

Terminal

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

Terminal

Commandes

$ sudo ufw enable
$ sudo ufw status numbered
Résultat attendu
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.

Temps 10 minutes
Objectif Bloquer le bruteforce SSH
Impact Aucun arrêt d’ORKA
01 Tentative refusée
02 5 échecs détectés
03 Adresse IP bloquée
04 Déblocage après 1 heure

Installer Fail2Ban

Terminal

Commande

$ sudo apt install -y fail2ban

Configurer la protection SSH

/etc/fail2ban/jail.local Configuration Fail2Ban
[sshd]
enabled = true
port = 2222
logpath = %(sshd_log)s
maxretry = 5
findtime = 10m
bantime = 1h

Redémarrer et contrôler

Terminal

Commandes

$ sudo systemctl restart fail2ban
$ sudo fail2ban-client status sshd
Résultat attendu
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.

Temps 10 minutes
Objectif Chiffrer les échanges
Prérequis Nom DNS fonctionnel
Utilisateur Navigateur
🔒
Connexion HTTPS chiffré
Serveur NGINX + ORKA

Installer Certbot

Terminal

Commande

$ sudo apt install -y certbot python3-certbot-nginx

Générer le certificat

Terminal

Commande

$ sudo certbot --nginx -d orka.mondomaine.fr
Résultat attendu
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

Terminal

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.

Temps 10 minutes
Objectif Réduire les informations exposées
Impact Rechargement NGINX

Masquer la version de NGINX

/etc/nginx/nginx.conf Bloc http
http {
    server_tokens off;

    # autres paramètres...
}

Limiter la taille des fichiers téléversés

/etc/nginx/sites-available/orka VirtualHost
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

/etc/nginx/sites-available/orka Protection des fichiers
location ~ /\.(?!well-known).* {
    deny all;
    access_log off;
    log_not_found off;
}
i

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

Terminal

Commandes

$ sudo nginx -t
$ sudo systemctl reload nginx
Résultat attendu
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.

Temps 10 minutes
Objectif Appliquer le moindre privilège
Contrôle Aucun fichier en 777
!

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

Terminal

Commandes de contrôle

$ sudo find /var/www/orka -type f -perm -0002 -print
$ sudo find /var/www/orka -type d -perm -0002 -print
Résultat attendu
Aucun résultat.

Réappliquer les droits recommandés

Terminal

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
i

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.

Temps 5 minutes
Objectif Limiter MariaDB à localhost
Port 3306

Vérifier l’adresse d’écoute

Terminal

Commande

$ sudo ss -lntp | grep 3306
Résultat attendu
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

/etc/mysql/mariadb.conf.d/50-server.cnf MariaDB
[mysqld]
bind-address = 127.0.0.1

Redémarrer MariaDB

Terminal

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.

Temps 5 minutes
Objectif Identifier les ports ouverts
Action Désactiver l’inutile

Lister les ports en écoute

Terminal

Commande

$ sudo ss -lntup
Exemple attendu
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

Terminal

Commande

$ sudo systemctl list-units \
  --type=service \
  --state=running
i

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.

Temps 5 minutes
Objectif Identifier les sources utiles
Impact Lecture seule
NGINX

Erreurs Web

Échecs de connexion, erreurs de proxy, fichiers introuvables et requêtes refusées.

PHP-FPM

Exécution PHP

Erreurs de processus, saturation et problèmes liés au moteur PHP.

ORKA

Journal applicatif

Erreurs Symfony et événements générés par l’application.

Fail2Ban

Tentatives bloquées

Adresses interdites et nombre de tentatives détectées.

Commandes utiles

Terminal

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
i

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.
Base Guide actuel

SSH, pare-feu, Fail2Ban, HTTPS, permissions et mises à jour.

Renforcé Étape suivante

Clés SSH obligatoires, MFA, supervision et centralisation des logs.

Avancé Environnement sensible

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.

Serveur renforcé Contrôles essentiels appliqués