Files
ENI-projet-piscine/docs/livrables/EC04/preuves/12-constats-machine.txt
T
Johan LEROY 182a2f4a6c docs(livrables): verse le rapport collectif EC02 et le rapport de sécurisation EC04
Sources Markdown et versions figées PDF, relevés du 24/09 sur le commit gelé
9f343e9, et les quatorze preuves anonymisées du rapport de sécurisation,
chacune avec la commande qui la rejoue. Porte la déclaration d'usage de l'IA
et la section anonymisation et RGPD demandées par #154.
2026-09-24 15:55:17 +02:00

100 lines
6.8 KiB
Plaintext

# Constats sur la machine du groupe, en lecture seule · 24/09/2026 15h20 à 15h30 CEST · commit déployé en production 9f343e9
# Commande : ssh root@<IP-VM-G3> 'bash -s' < constats-machine-enervision.sh, puis constats-complement-enervision.sh, lancés par l'auteur
# Anonymisation : adresse et nom de la machine masqués, identifiants de cluster Vault et adresses internes des réseaux Docker retirés.
## Virtualisation (systemd-detect-virt)
lxc
## Ports TCP en écoute (ss -tlnpH, adresse locale et processus)
Sur toutes les interfaces :
0.0.0.0:22 et [::]:22 sshd
0.0.0.0:80, 0.0.0.0:443 frontal SNI (enervision-front)
*:6443 k3s-server
0.0.0.0:8200, *:8201 vault
0.0.0.0:8202, *:8203 vault
0.0.0.0:8204, *:8205 vault
Sur la boucle locale seulement :
proxys des stacks 127.0.0.1:10080, 10443, 10444 (prod) · 8081, 8443, 8444 (rec) · 8083, 9443, 9444 (dev)
bases des stacks 127.0.0.1:5433 (prod), 5434 (rec), 5435 (dev)
Mailpit 127.0.0.1:8025, 8026, 8027
API Airflow 127.0.0.1:8080, 8082, 8084
Garage (S3, admin) 127.0.0.1:3900, 3903 (prod) · 3910, 3913 (rec) · aucun pour dev
Grafana, Prometheus, Alertmanager (prod) 127.0.0.1:3001, 9090, 9093
PostgreSQL 18 de l'hôte 127.0.0.1:5432, [::1]:5432
Postfix de l'hôte 127.0.0.1:25, [::1]:25
k3s (interne) 127.0.0.1:6444
containerd 127.0.0.1:34303
résolveur systemd 127.0.0.53:53, 127.0.0.54:53
## Pare-feu (nft list ruleset, iptables -S)
table inet filter : chaînes input, forward et output vides, politique accept.
table ip raw : 24 règles posées par Docker, qui rejettent tout paquet destiné à un port publié sur 127.0.0.1 (ou à un conteneur) s'il n'arrive pas par lo (ou par le pont Docker du projet).
iptables : -P INPUT ACCEPT, -P FORWARD DROP, -P OUTPUT ACCEPT, et les chaînes DOCKER, DOCKER-USER, DOCKER-FORWARD de Docker.
## SSH effectif (sshd -T)
permitrootlogin yes
pubkeyauthentication yes
passwordauthentication yes
kbdinteractiveauthentication no
## Stacks (docker ps par projet Compose)
### enervision-prod : 15 services démarrés, airflow-init terminé (0)
airflow-apiserver (healthy), airflow-dag-processor, airflow-scheduler, alertmanager, backend (healthy), cadvisor (healthy), db (healthy), frontend, garage (healthy), grafana, mailpit (healthy), node-exporter, postgres-exporter, prometheus, proxy
### enervision-rec : 9 services démarrés, airflow-init terminé (0)
airflow-apiserver (healthy), airflow-dag-processor, airflow-scheduler, backend (healthy), db (healthy), frontend, garage (healthy), mailpit (healthy), proxy
### enervision-dev : 8 services démarrés, airflow-init terminé (0), pas de Garage
airflow-apiserver (healthy), airflow-dag-processor, airflow-scheduler, backend (healthy), db (healthy), frontend, mailpit (healthy), proxy
### enervision-front
front, démarré depuis 26 heures
### Hors projets EnerVision
19 conteneurs arrêtés entre le 16 et le 21/09 ou jamais démarrés, dont 3 hello-world ; aucun en fonctionnement.
## Sondes de santé par le nom public, certificat vérifié (curl sans -k)
prod http=200 verification_tls=0
rec http=200 verification_tls=0
dev http=200 verification_tls=0
## Certificats servis par le frontal (openssl s_client -servername)
prod : issuer=C = US, O = Let's Encrypt, CN = YE1 · notAfter=Dec 22 09:40:38 2026 GMT
rec : issuer=C = US, O = Let's Encrypt, CN = YE1 · notAfter=Dec 22 09:11:04 2026 GMT
dev : issuer=C = US, O = Let's Encrypt, CN = YE1 · notAfter=Dec 22 09:17:54 2026 GMT
## En-têtes servis en production sur / (curl -sI)
server: nginx
strict-transport-security: max-age=31536000; includeSubDomains
content-security-policy: default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self' data:; connect-src 'self'; frame-ancestors 'none'; base-uri 'self'; form-action 'self'
## Droits des secrets sur disque (stat)
600 enervision /srv/enervision/dev/.env
600 enervision /srv/enervision/prod/.env
600 enervision /srv/enervision/rec/.env
600 enervision /srv/enervision/dns.token
## Runner GitHub Actions (systemctl)
actions.runner.<depot>.<machine-G3>.service loaded active running
## Journal d'audit de la production (select action, count(*) from audit_log group by action)
user.created|5
user.password_changed|3
## Supervision de la production (API Prometheus, 127.0.0.1:9090)
cibles : alertmanager, backend, cadvisor, garage, node, postgres, prometheus · toutes health=up
règles chargées : ApiErreursServeur, ApiIndisponible, ApiLatenceElevee, BaseConnexionsSaturees, BaseIndisponible, CibleInjoignable, HoteCpuSature, HoteDisquePlein, HoteMemoireSaturee (groupes api, base, hote, supervision)
## Services hors plateforme
k3s : binaire /usr/local/bin/k3s du 17/09/2026 14:07 UTC · systemctl show k3s : ActiveState=activating, SubState=start, NRestarts=51678 · k3s kubectl get pods -A : No resources found, API refusée pendant un redémarrage
vault.service : active (running), « HashiCorp Vault »
Vault, seal-status sans authentification (champs utiles) :
8200 : version 2.1.1, shamir t=2 n=5, initialized=true, sealed=false, storage_type=file, démarré le 22/09 12:28 UTC
8202 : version 2.1.1, shamir t=3 n=5, initialized=true, sealed=false, storage_type=file, démarré le 22/09 07:27 UTC
8204 : version 2.1.1, shamir t=4 n=5, initialized=true, sealed=false, storage_type=file, démarré le 22/09 07:28 UTC
postgresql@18-main : active (running), boucle locale seulement
postfix@- : active (running), boucle locale seulement
Lecture :
- La plateforme livrée tient sa promesse : de ses composants, seul le frontal SNI écoute hors de la boucle locale, en 80 et 443. Les trois noms publics répondent 200 avec un certificat Let's Encrypt vérifié, HSTS et CSP sont servis, les .env sont en 600, le runner tourne, les sept cibles Prometheus sont up.
- La machine, elle, expose davantage : SSH en root avec mot de passe accepté, l'API k3s sur 6443 et trois serveurs Vault descellés sur 8200 à 8205, tous sur toutes les interfaces, sans pare-feu hôte (table nftables vide, politique accept).
- k3s et Vault ne viennent pas du code livré : git grep vault ne trouve rien sur le commit gelé. Vault est visé par le Terraform d'une branche de travail non fusionnée (provider vault, adresse de la machine en 8200). k3s redémarre en boucle depuis son installation du 17/09 (51 678 redémarrages) et ne porte aucun pod : il consomme sans servir.
- L'environnement dev tourne encore le commit du 23/09 : pas de Garage. Il suit la dernière branche lancée à la main (ADR 0017), et aucune ne l'a été depuis.
- Le journal d'audit ne compte que les événements d'administration des comptes (5 créations, 3 changements de mot de passe) : les connexions vont à login_attempt.