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.