# Homologation
- acceptance tests
- capacité à réaliser les fonctions attendues en sécurité
  - fiabilité (intégrité, disponibilité)
  - confidentialité
- cas de figures différents : nouveau système / système existant, COTS / dev spécifique
- Qui homologue  ? [Guide autorité homologation](https://hfds-bercy.alize.finances.rie.gouv.fr/files/live/sites/hfds-bercy/files/r%c3%a9pertoires/S%c3%a9curit%c3%a9%20des%20syst%c3%a8mes%20d'information/documents/Textes%20de%20r%c3%a9f%c3%a9rences/171026_guide_autorit%c3%a9_homologation_v2.pdf)
- Quelles décisions ? homologation, APE (=> label "Beta")

# Systèmes existants
- retex Incidents exploitation
- volumétries et revues de comptes
- MCO / MCS : dernières opérations de maintenance, de restauration, parité prod/preprod
- dérives et abus d'utilisation
- alignements par rapport aux états de l'art, nouvelles menaces
[Guide réhomologation](https://hfds-bercy.alize.finances.rie.gouv.fr/files/live/sites/hfds-bercy/files/r%c3%a9pertoires/S%c3%a9curit%c3%a9%20des%20syst%c3%a8mes%20d'information/documents/Textes%20de%20r%c3%a9f%c3%a9rences/190506_guide-re-homologation_v2.pdf)

# Composants sur étagère
- inventaire des composants
- revue des préconisations éditeur (dimensionnement, sécurité)
- abonnement aux fils de diffusion sécurité : qui assure le suivi ?

# Développements spécifiques
- respect des standards / état de l'art
- tests de charge réalistes
- audits d'intrusion ?


# Synoptique d'architecture
- A3 = 2 * A4
- Hexagone
  - focus sur les interfaces
  - Faces supérieures : interfaces UI et M2M
  - Côtés : approvisionnements et observabilité
  - Faces inférieures : stockages et API de traitement
- Dedans ou dehors
  - tout ce qui est à l'intérieur de l'hexagone relève d'une seule organisation
  - un SAN dédié à l'application est dedans ; un SAN mutualisé est dehors
  - inventaire des composants et des adresses (URL, email)

# YAGNI
"You Aren't Gotta Need It"
- principe Xtrem Programming, repris (mais souvent oublié) dans Agile
- privilégier des composants intégrés, à des briques supplémentaires PostGis ou FTS vs ElasticSearch, JSON in PG vs MongoDB, Redis, etc.
- avez-vous besoin de multi-machines, surcouches WebUI, micro-services, SPA ?

# UI
- http est un protocole "dangereux" parce qu'il est nativement stateless.
- Exposition / Authentification / Habilitation
- Injections

# Exposition (DNS TTL 15min, multihoming, haproxy)
- régulation des flux
  - "attaque DoS", intentionnelle ou pas (retex SIGNALE)
  - whitelist / greylists (rate-limiting) / blacklist
  - Internet << Internautes français << IP de confiance
  - greylisting : plus efficace qu'un WAF non-bloquant pour de multples attaques (du DoS => la blind injection)
  - par IP, par challenge (CAPTCHA)
- capacités de réaction
  - piloter les flux TTL DNS, multihoming
  - rajouter un filtre face à une faille 0-day

# Authentification (mTLS)
- reverse-proxy >> bouchon applicatif
- certificat >> 2fa >> login:pwd

# Habilitation (fonctions RBAC centralisées)
- factorisation des roles, des habilitations
- Test : ajouter une règle comme les accès Admin sont restreints de 9h à 17h du lundi au vendredi

# Injections (https + headers + csp + security.txt)
- http
  - https : protection de l'authenticité autant de la confidentialité
  - Cookie flags : HttpOnly, Secure
  - X-Frame-Options  : réponse à une menace ponctuelle (clickjacking) très symptomatique du niveau de sécurisation
  - Content-Security-Policy : sourcer le javascript (css/fonts), à défaut de l'autohéberger ; pas de règle unsafe-*
  - security.txt : pour joindre les équipes SSI
  [Standard entêtes HTTP](https://hfds-bercy.alize.finances.rie.gouv.fr/files/live/sites/hfds-bercy/files/r%c3%a9pertoires/S%c3%a9curit%c3%a9%20des%20syst%c3%a8mes%20d'information/documents/Textes%20de%20r%c3%a9f%c3%a9rences/200603_standard-HTTP-headers_v5.0.pdf)
  

- injections aval
  - SQL : requêtes paramètrées
  - commandes : fonctions désinfectantes (sanitizer)
  - HTML : gabarits (templates) et échappements (escaping)

# M2M (robots.txt | API manager)
- robots.txt pour les "gentils"
- API manager (request accounting, normalisation swagger / OpenAPI)
- Signature des requêtes > jeton Oauth
 
# Ressources et approvisionnements (deploiements reproductibles, vendoring)
- fenêtre de maintenance
- déploiements reproductibles et progressifs (preprod/prod, 10/100/1000)
  - source of truth: pre (Puppet ou Ansible), post (etckeeper, oxidized)
- vendoring (dépôts tampons)
  - packages OS
  - conteneurs App
  - librairies développement
- SBOM (software build of materials)

# Administration interactive (bastion)
- ssh : auth préalable par clé publique/privée, gestion de session
- carte RGS** : clé privée dans carte à puce et lien avec identité civile
- bastion : log entrées/sorties, dérogations explicites sur utilisation clés de secours, horaires inhabituels, etc
- TOFU serveur

# Tâches récurrentes (sentinelles)
- fichier trop vieux (certificat, rapport de sauvegarde)
- détection processus mort par ping/webhook

# Observabilité : métriques
- page de maintenance
- /health
  [URI monitoring](https://hfds-bercy.alize.finances.rie.gouv.fr/files/live/sites/hfds-bercy/files/r%c3%a9pertoires/S%c3%a9curit%c3%a9%20des%20syst%c3%a8mes%20d'information/documents/Textes%20de%20r%c3%a9f%c3%a9rences/180503_standard-URI-diagnostic-signalement_v2.1.pdf)
- /metrics (OS : consommation ressources disques, mémoire... mais aussi applicative)
- http : décomptes codes retours par classes 1xx / 2xx / 3xx / 4xx / 5xx, temps de réponse

# Observabilité : logs
- locaux (retention, logrotate) vs puits de logs
- apache log (ou autre std ad hoc),
- structured log (logfmt, json), retex forensic
- metriques dérivées des logs

# Stockages données
- FS filesystem
- dépôts de fichiers sans droit +x (php et langages interprétés)
- antivirus dans la chaine, bac-à-sable ?
- SQL : séparation des droits (system vs db), migrations (versioning des schémas)
- S3 : panier public, anti-enumaration d'objets (id aléatoires)

# Sauvegardes (3-2-1)
- se protèger de fausses manips, de pannes matérielles, de rançonnages
- corruption de données à court et long terme (rétention jours, semaines, mois)
- 3 copies, 2 systèmes indépendant, 1 copie distante
- chiffrement des sauvegardes
- restaurabilité : hash d'intégrité, fichier sentinelle, montage distant

[Sauvegardes 3-2-1](https://hfds-bercy.alize.finances.rie.gouv.fr/files/live/sites/hfds-bercy/files/r%c3%a9pertoires/S%c3%a9curit%c3%a9%20des%20syst%c3%a8mes%20d'information/documents/171026_politiques-sauvegardes_v3.1.pdf)


# API
- proxy web :  whitelist, blacklist ou néant

- LDAPS : TLS, pas de bind anonyme, stockage hash password
  [Gestion mmdp](https://hfds-bercy.alize.finances.rie.gouv.fr/files/live/sites/hfds-bercy/files/r%c3%a9pertoires/S%c3%a9curit%c3%a9%20des%20syst%c3%a8mes%20d'information/documents/Textes%20de%20r%c3%a9f%c3%a9rences/180503_authentification-mdp_v4.0.pdf)

- SMTPS : sousmission sécurisée des courriels et cachet DKIM
  [Relai SMTP](https://hfds-bercy.alize.finances.rie.gouv.fr/files/live/sites/hfds-bercy/files/r%c3%a9pertoires/S%c3%a9curit%c3%a9%20des%20syst%c3%a8mes%20d'information/documents/Textes%20de%20r%c3%a9f%c3%a9rences/200603_standard-relais-SMTP_v3.0.pdf)

# Tests !
- transactions complètes : automates "e2e" (PSIN)
- saturation volumes > 50%
- age fichiers certificats
- https://censys.io/ (nmap)
- https://observatory.mozilla.org/ (Firefox DevTools)
- https://cisofy.com/lynis/
- https://ssi.economie.gouv.fr/courriel
- EICAR file

# composition en couches
- les machines du SI
- l'hyperviseur et son système de management
- les machines physiques (contrôle d'accès aux salles, IPMI)


# Homologations en commançant par les nouvelles plateformes périphèriques
2022
- Bastion SSH et Noisette
- Gitlab
- B3
- WSO2
- Ansible & Rundeck
- Zone Protégée et hébergement sec
- Eco SQL ?

2023
- VMware et OpenStack (mTLS pour vSphere Web CLient et Horizon 😀)
- labnum.fr et ingress proxy (multihoming, haproxy)