03-comment-je-travaille/vps/securite-vps-reference.md

Référence — état de sécurité attendu du VPS

Décrit l'état de sécurité cible du VPS Telaria. Cette référence reste valide après Ansible — elle décrit le "quoi", Ansible implémentera le "comment". Auditée et appliquée le 2026-06-17.

Stack : Ubuntu 26.04 LTS · Apache 2.4 · PHP 8.5 FPM · MySQL 8 · Symfony · Postfix (relay OVH)


Modèle utilisateurs

User Shell SSH sudo RĂ´le
ubuntu bash oui (clé) restreint — apt, systemctl, ufw, journalctl OVH / Ansible système
adminvps bash oui (clé partagée ubuntu) complet avec mot de passe Interventions manuelles critiques
telaria nologin non (à terme : clé dédiée deploy) aucun Propriétaire des fichiers app
www-data nologin non wrapper sudo uniquement Runtime Apache + FPM

SSH

Port 9501
PasswordAuthentication no
PermitRootLogin no
AllowUsers ubuntu adminvps
PubkeyAuthentication yes

Fichiers :

  • /etc/ssh/sshd_config.d/60-cloudimg-settings.conf — PasswordAuthentication no (OVH)
  • /etc/ssh/sshd_config.d/70-telaria-hardening.conf — PermitRootLogin no, AllowUsers

fail2ban

Jail sshd : port 9501, maxretry 3, bantime 1h, findtime 10min.

Fichier : /etc/fail2ban/jail.d/sshd-telaria.conf


UFW

Politique : deny incoming, deny outgoing (tout bloqué par défaut).

Direction Port/Proto Usage
in 80, 443/tcp HTTP/HTTPS
in 9501/tcp SSH
out 443/tcp APIs externes + OVH CDN
out 587/tcp Postfix relay OVH (ssl0.ovh.net:587)
out 53 DNS
out 123/udp NTP

MySQL — moindre privilège

Bases : telaria_dev (staging), telaria_fr (prod).

User unique : telariauser@localhost — SELECT, INSERT, UPDATE, DELETE sur les deux bases. Aucun DROP, CREATE, ALTER.


Permissions /var/www

Chemin Owner Mode Raison
/var/www/<app>/ telaria:www-data 750 telaria deploy, www-data lit
/var/www/<app>/var/ www-data:www-data 775 cache/log Symfony
/var/www/<app>/.env.local telaria:www-data 640 secrets, www-data lit, autres rien

Apps : telaria/, telaria-fr/, adoption-ia-fr/, vps-ovh-net/.


Apache

# /etc/apache2/conf-available/security.conf
ServerTokens Prod
ServerSignature Off
TraceEnable Off

Modules désactivés : autoindex, status.

Dans chaque vhost actif :

Options -Indexes -FollowSymLinks
<FilesMatch "\.(env|log|git|htpasswd)">
    Require all denied
</FilesMatch>

Vhosts actifs

Fichier ServerName DocumentRoot Note
000-default (catch-all) — Require all denied — ferme les scans
telaria telaria.dev /var/www/telaria/public staging
telaria-fr telaria.fr + www.telaria.fr /var/www/telaria-fr/public prod
madrien-fr madrien.fr + www.madrien.fr /var/www/telaria-fr/public prod (NDD perso)
mathieuadrien-fr mathieuadrien.fr + www.mathieuadrien.fr /var/www/telaria-fr/public prod (NDD perso)
adoption-ia-fr adoption-ia.fr + www /var/www/adoption-ia-fr/public prod
adoption-ia-dev-parking adoption-ia.dev + www — 301 → adoption-ia.fr
adoption-ia-net adoption-ia.net + www — 301 → adoption-ia.fr
vps-ovh-net vps-cbc83e1f.vps.ovh.net /var/www/vps-ovh-net/public page accueil VPS

PHP 8.5 FPM

# /etc/php/8.5/fpm/conf.d/99-telaria-security.ini
open_basedir = /var/www:/tmp:/var/lib/php/sessions
disable_functions = exec,passthru,shell_exec

xdebug absent du FPM (seul cli l'a si besoin).


Mises Ă  jour automatiques

unattended-upgrades actif — patches sécurité uniquement.


Note Ansible

Ces configurations seront à terme gérées par tlr-ansible. Le gap entre cette référence et les rôles Ansible est assumé. Quand Ansible couvrira un point, la section sera annotée [→ voir rôle ansible X].

Voir aussi : How-to hardening — les commandes pour appliquer cet état.

Assistant documentaire

Posez une question sur la documentation. Les réponses citent leurs sources — un clic ouvre le document à gauche.

Loading…
Loading the web debug toolbar…
Attempt #