Durcicement du système d’exploitation
Les systèmes informatiques subissent de plus en plus d'attaques. On le voit lors des audits de sécurité stations de travail ou de serveurs, ou Active Directory, ou web, ou bases de données, Il s'agit ici de sécuriser un système pour qu'il soit le plus "hacker proof" possible.
Première séance: introduction
Quoi et pourquoi le durcissement des systèmes d’exploitation
Identification des menaces
Cas pratique d’un SE vulnérable
Deuxième séance: Stratégie de durcissement et bonnes pratiques
Planification d’une stratégie de durcissement
Implémentation
Guides des bonnes pratiques
Critères d’évaluation des SEs
Troisième séance: Les systèmes Linux/Unix
Historique et fonctionnement
Sécurisation du noyau
Sécurisation du Boot et chiffrement du disque
Gestion des droits et des accès
Gestion des flux réseaux
Protection de la mémoire
Quatrième séance: Les systèmes Windows
Historique et fonctionnement
Sécurisation du Boot /UEFI
Sécurisation du Boot et chiffrement du disque
Gestion des droits et des accès
Gestion des flux réseaux
Protection de la mémoire
système d’exploitation contrôle:
Le partage des ressources entre les sujets (utilisateurs ou processus)
L'accès à travers une interface de contrôle d’accès
L’identification et l’authentification sont nécessaires
Les permissions sont gérées par une politique
Durcir quoi et pourquoi?
Le durcissement du système d’exploitation consiste à mettre en place un ensemble de mesures pour atteindre un niveau de sécurité le plus élevé possible en réduisant la surface des vulnérabilités (surface d’attaque).
L’objectif de ce cours est :
L’identification des menaces visant les SEs
Apprendre à développer une bonne stratégie de durcissement des SEs
Apprendre les outils
Les standards et les normes en termes de qualifications des SEs
Identification des menaces
Les menaces physiques:
Accès physique au matériel (salle machine, serveurs, postes de travail)
Vol ou perte de matériel (machine personnelle, supports de stockage,…)
Accès physique aux interfaces d’entrée sortie (USB, e-SATA,..)
Configuration physique du matériel (RAZ cmos, clear password sur carte mère)
Écoute sur les mediums de communication (câblé Ethernet, concentrateur, TAP…)
Les menaces venant depuis le réseau
Écoute et altération des échanges
Corruption du cache ARP
Corruption des réponses DNS
Déni de service (distribué)
TCP Syn flooding
ICMP flooding
HTTP
Les menaces logiciels
Défauts de conception des SEs
Schéma d’exécution non prévu par le concepteur
Porte dérobée introduite d’une manière intentionnelle ou non
Malwares : virus, vers , Spywares, Rootkits (LKM), Keylogger, Ransomware
Applications tiers mal sécurisées
Attaques sur les environnements virtualisés (hyperviseurs, VMs, Conteneurs)
Le social engineering
Le phishing
L’arnaque au PDG
Une question? Posez-la ici
Aide au développement d'applications
Stratégies de durcissement
Planification
Planifier avant de déployer un nouveau système d’exploitation
Évaluation de la sécurité de l’organisation pour maximiser la sécurité et optimiser les coûts.
Le processus d’évaluation doit déterminer les exigences de sécurité pour:
Le système,
Les applications,
Les données,
Les utilisateurs
La planification doit identifier le personnel approprié et la formation pour installer et gérer le système
Planification NIST[08]
Définir les besoins du SE, les informations stockées, les services et applications fournis et leurs exigences de sécurité
Identifier les catégories d’utilisateurs du système, les privilèges dont ils disposent et les types d'informations auxquels ils peuvent accéder
Quels sont les mécanismes d’authentification des utilisateurs
Quelle politique de gestion des accès aux informations stockées sur le SE
Quels sont les accès du système aux informations stockées sur d'autres hôtes, tels que les serveurs de fichiers ou de bases de données, et comment cela est géré
Qui administrera le système, et par quel moyen d’accès (via un accès local ou à distance)
Toute mesure de sécurité supplémentaire requise sur le système, y compris l'utilisation de pare-feu d'hôte, d'antivirus ou d'autres mécanismes de protection contre les logiciels malveillants, la journalisation et l’archivage
Implémentation: première installation et correctifs
la sécurité du système commence avec l'installation du SE
Dans un environnement sécurisé (réseau, supports,…)
Finalisation de l’installation et durcissement du SE avant déploiement
Installer le minimum de paquets requis pour le SE
Sécurisation du processus de démarrage (ex. Secure boot)
Valider l’intégrité et l’origine des ressources externes (ex. pilotes)
Maintenir une politique de mise à jour rigoureuse et continue
Valider les mises à jour sur des systèmes de test avant application sur des SE en prod
Implémentation: supprimer tout ce qui est inutile
Le risque est proportionnel au nombre de paquets (services) à installer
Le processus de planification du système doit identifier ce qui est réellement requis pour un système donné
Lors de l'installation initiale, les valeurs par défaut ne doivent pas être utilisées
La configuration par défaut est définie pour optimiser la facilité d'utilisation et la fonctionnalité plutôt que la sécurité
Si des paquets supplémentaires sont nécessaires plus tard, ils peuvent être installés quand ils sont nécessaires
Ne pas installer de logiciels indésirables
De nombreux scripts de désinstallation échouent à supprimer complètement tous les composants
Un service désactivé peut être activé par un attaquant
implémentation: configuration des utilisateurs et des accès
Tous les utilisateurs ayant accès à un système n'auront pas le même accès à toutes les données et ressources de ce système
les privilèges élevés doivent être limités aux seuls utilisateurs qui en ont besoin, et seulement lorsqu'ils sont nécessaires pour effectuer une tâche
Le processus de planification du système devrait prendre en compte:
catégories d'utilisateurs sur le système
privilèges qu'ils ont
types d'informations auxquelles ils peuvent accéder
comment et où ils sont définis et authentifiés
les comptes par défaut inclus dans l'installation du système doivent être sécurisés
ceux qui ne sont pas requis doivent être supprimés ou désactivés
les stratégies qui s'appliquent aux informations d'identification d'authentification configurées
implémentation: Contrôler les ressources
Une fois les utilisateurs et les groupes définis, les autorisations appropriées peuvent être définies sur les données et les ressources
la plupart des guides de renforcement de sécurité fournissent des listes de modifications recommandées à la configuration d'accès par défaut
implémentation: Contrôles de sécurité supplémentaires
Augmenter le niveau de sécurité en installant et en configurant des outils de sécurité supplémentaires:
Antivirus, Antimalwares
Pare-feu basés sur l'hôte (Netfilter/iptables, windows firewall,…)
Logiciel IDS ou IPS
Application du principe de la sécurité positive (white-listing)
Le chiffrement des données stockées et des données en transit
Chiffrement du disque dur ou des supports de stockage externes
Utilisation des tunnels (Ipsec, TLS, SSH) pour assurer la confidentialité et l’intégrité des échanges
implémentation: Test de sécurité
Dernière étape dans le processus de la sécurisation initiale de l'OS de base est un test de sécurité
assurez-vous que les étapes précédentes de la configuration de sécurité sont correctement implémentées
identifier les vulnérabilités possibles
Les listes de vérification sont incluses dans les guides de renforcement de la sécurité
Il existe des programmes spécialement conçus pour:
examiner un système pour s'assurer qu'un système répond aux exigences de sécurité de base
analyser les vulnérabilités connues et les mauvaises pratiques de configuration
Devrait être fait après le durcissement initial du système
Répété périodiquement dans le cadre du processus de maintenance de la sécurité
Maintenance de la sécurité
Le processus de maintien de la sécurité est continue
Maintenance de sécurité selon le NIST:
surveiller et analyser les informations de journalisation
effectuer des sauvegardes régulières
récupérer des compromis de sécurité
tester régulièrement la sécurité du système
en utilisant des processus de maintenance logicielle appropriés
pour patcher et mettre à jour tous les logiciels critiques, et
surveiller et réviser la configuration au besoin
Normes et Qualifications de la sécurité des systèmes d’exploitation
Normes d’Évaluation de la sécurité
US : Trusted Computer Security Evaluation Criteria (TCSEC)
– Niveau D « minimal protection »
– Niveau C (C1, C2) "discretionary protection"
Exemple : Niveau C2
Login obligatoire et ACL sur ressources + Protection mémoire et audit
– Niveau B (B1, B2, B3) "mandatory protection"
C2 plus niveau d ’habilitation (secret, top secret)
– Niveau A (« militaire » « verified protecion »)
Normes d’Évaluation de la sécurité
Standards européens : ITSEC
Niveau d ’assurance : E0 à E6
Exemple : E3 équivalent à C2
Les critères communs CC standard fédérateur ISO 15408
Niveaux de confiance (d’assurance)
prédéfinis : Evaluation Assurance Level
(EAL1-EAL7) :
Niveau d’assurance de l’évaluation 2 (EAL2) :
testé structurellement
Niveau d’assurance de l’évaluation 4 (EAL4) :
conçu, testé et revu méthodiquement
Une question? Posez-la ici
Aide au développement d'applications
Quelques exemples:
Linux Redhat:
Red Hat Enterprise Linux Version 6.2 on 32 bit x86 Architecture achieved EAL4+ in December 2014.[3] Red Hat Enterprise Linux Version 6.2 with KVM Virtualization for x86 Architectures achieved EAL4+ in October 2012.
Windows:
Windows 2008 Server (64-bit), Enterprise (64-bit) and Datacenter, as well as Windows Vista Enterprise (both 32-bit and 64-bit) attained EAL 4 Augmented (colloquially referred to as EAL 4+) ALC_FLR.3 status in 2009.
Renforcement de la sécurité DE LA RAM
Structure
Stack
Heap
Eip
Risques
Buffers Overflow
Attaques Hardwares
Rowhammer
Meltdown & Spectre
Renforcement de la scurité de la RAM
ASLR
kernel.randomize_va_space = 2 (sous Linux) sous Windows activé par défaut
Certaines attaques tentent de bypasser le ASLR (réécriture des EIP et RET, force brute, NOP blocks)
DEP (Data Execution Prevention )
NX (No eXecute définit par AMD) XD (Execute Dissbled définit par Intel)
Activation de la PAE (Physical Address Extension)
kernel.exec-shield = 1 (sous Linux)
Sous Windows plusieurs stratégies
/noexecute=niveau_stratégie (AlwaysOn, AlwaysOff, OptIn ou OptOut)
Renforcement de la sécurité des systèmes linux
rappels
L’authentification avec PAM
Historique:
1995: développé par SUN pour Solaris
1997: intégré dans les distribution de SUN
1997: Linux-PAM Project
1997: consortium Open Group pour le XSSO
20xx: sur toutes les distributions Linux
L’authentification avec PAM
Historiquement:
/etc/passwd n’est accessible qu’au root et contient les mots de passe des utilisateurs
/bin/login tourne en root sur chaque terminal, attendant la saisie de mot de passe
Un utilisateur saisie son mot de passe, login lit /etc/passwd et le vérifie.
Premier Problème: si les mots de passe sont en clair dans /etc/passwd, ils sont alors accessible en offline.
D’où l’utilisation de la cryptographie pour le protéger, et séparation des empruntes dans /etc/shadow
Possibilité d’attaques sur les mécanismes de cryptographie: jhon the ripper, Rainbow crack
L’authentification avec PAM
Mécanismes:
auth « l’authentification »
account « gestion de compte »
session « gestion de session »
password « gestion de mot de passe »
L’authentification avec PAM
Exemple: configuration du sudo pour une authentification à deux facteurs (Radius)
dans le fichier /etc/pam.d/sudo
auth sufficient pam_radius_auth.so on peut mettre required pour exiger Radius
@include common-auth
@include common-account
@include common-session-noninteractive
Le système de hooks dans le noyau
Les iptables avec Netfilter
Iptables:
Iptables est l’outil en ligne de commandes qui permet d’écrire des règles pour Netfilter.
Format d’une règle dans iptables:
Les iptables avec Netfilter
Exemple Filtrage Web
Autoriser un client à se connecter sur un serveur web équipé d’un pare-feu.
Exemple Filtrage Web:
Autoriser un client à se connecter sur un serveur web équipé d’un pare-feu.
/sbin/iptables -F
## On supprime toutes les chaînes utilisateurs.
/sbin/iptables -X
## On drop tout le trafic entrant.
/sbin/iptables -P INPUT DROP
## On drop tout le trafic sortant.
/sbin/iptables -P OUTPUT DROP
## On drop le forward.
/sbin/iptables -P FORWARD DROP
Exemple Filtrage Web:
Autoriser un client à se connecter sur un serveur web équipé d’un pare-feu.
sbin/iptables -A INPUT -p tcp --sport 1024:65535 --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --sport 80 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
Les iptables avec Netfilter
Exercice: filtrage de l’attaque ShellShock avec les iptables:
Ce filtrage est réalisé au niveau du noyau « attention »
Penser au protocole IPV6 aussi
# iptables -A INPUT -m string --algo bm --hex-string '|28 29 20 7B|' -j DROP
# ip6tables -A INPUT -m string --algo bm --hex-string
Hardening linux
Au début de l’installation
Chiffrement du disque dur
Disponible dans la plupart des distributions (sinon truecrypte par exemple )
Séparation et dimensionnement des partitions
/ /boot /usr /home /tmp /var /opt
L’installation ne doit pas inclure des services non sécures:
X Window, telnet, inetd, RPC services, R-services, SMTP daemons…
Pendant l’installation
Choisir un mot de passe root
Création d’un compte non-root
Activer toutes les mesures de sécurité proposées par l’assistant d’installation
Activer le pare-feu et de l’antivirus si proposés
Après l’installation
1) Sécurisation du boot
Contient des infos critiques (paramètres du noyau)
Protection contre l’écriture sans permissions:
chown root:root /etc/fstab
chown root:root /etc/grub.conf
2) Restreindre l’utilisation de certains périphériques
Ex. désactiver le montage du stockage USB
/etc/modprobe.d/blacklist.conf
/etc/rc.local
3)Vérification des paquets et des services installés
Désinstaller les applications et services inutiles ou vulnérables
Telnet server, RSH server, NIS server, TFTP server, TALK server,…
4) Gestion des mises à jours et des correctifs
Automatisation des mises à jours par des outils dédiés
up2date, YaST, apt-get … (apt-get update –y)
Ne pas les appliquer directement sans phase de test
5) Gestion des permissions sur les fichiers et les processus
Positionner les droits et les permissions étendues (suid, guid, stickybit, chmod, chown)
Confinement des processus ou des serveurs dans leurs propres répertoires (sur lesquels ils ont des droits) avec chroot
Rajoute de la complexité
Après l’installation:
6) Contrôle des accès au réseaux
Le réseau est le talon d'Achille de la sécurité des SEs
avant d’autoriser les connexions
Si la demande d'hôte est explicitement dans hosts.allow est ok
Si l'hôte de demande explicitement dans hosts.deny est bloqué
Si pas dans l'un ou l'autre est ok
Vérifications des accès par service, l'adresse IP source, le nom d'utilisateur,…
netstat -antp
7) configuration des paramètres des protocoles de communications
Désactiver IPV6 (si pas besoin) /etc/sysctl.conf
Désactiver le IP Forwarding
Désactiver le Send Packet Redirects
Désactiver l’ICMP Redirect Acceptance
Activer le Bad Error Message Protection
8) Sécurisation de l’accès distant
Bien configurer SSH
Ne pas autoriser un login en tant que root
Autoriser uniquement la version 2 du protocole
Activer les mesures anti brute force
Définir les bonnes Cypher-suites
Utiliser PAM
Personnalisation des règles du Firewall (Netfilter/iptables)
Privilégier une politique en liste blanche (white-liste)
10) Gestion de la politique des mots de passes (dans PAM)
Limiter le nombre de tentative (vérouillage après)
Renouvellement obligatoire (expiration après 90 jours)
Interdiction de réutilisation d’un certain nombre de mots de passe
Exiger un mot de passe « fort » et un algorithme de hashage fort SHA512
Limiter l’accès à su de certain utilisateurs /etc/sudoers
11) Renforcement de la sécurité du noyau et de la mémoire
Désactiver le dumping du noyau sur disque
hard core 0 dans “/etc/security/limits.conf”
fs.suid_dumpable = 0 dans “/etc/sysctl.conf”
Activer Kernel Exec Shield
kernel.exec-shield = 1 to the “/etc/sysctl.conf”
Randomisation de la zone mémoire virtuelle du noyau
kernel.randomize_va_space = 2 dans “/etc/sysctl.conf”
12) Installation d’un antivirus (ClamAV)
13) Installation d’un HIDS (OSSEC OSSIM)
14) configuration d’un système de gestion de logs système
Syslogd
Syslog-NG « possibilité de chiffrement sur TCP »
SElinux
Produit par NSA Utilisant le MAC pour Linux à base de DAC
Les DAC Linux s'appliquent toujours, mais s'il autorise l'action, SELinux l'évalue par rapport à ses propres stratégies de sécurité
Les "sujets" sont des processus (exécutées par les utilisateurs)
Les actions sont des "autorisations"
Les objets non seulement les fichiers et les répertoires
Pour gérer la complexité SELinux :
"ce qui n'est pas expressément autorisé est refusé"
Possède des groupes de sujets, des autorisations et des objets
exemple processus #31337 veut lire /etc/passwd
Chaque objet dans SELinux est régi par un contexte de sécurité:
utilisateur - utilisateur individuel (humain ou démon)
SELinux maintient sa propre liste d'utilisateurs
les étiquettes d'utilisateur sur les sujets spécifient les privilèges du compte
les étiquettes des utilisateurs sur les objets spécifient leur propriétaire
rôle - comme un groupe, assumé par les utilisateurs
un utilisateur ne peut assumer qu'un seul rôle à la fois,
ne peut changer de rôle que s'il est autorisé à le faire
Domain (Sanddox) une combinaison de sujets et d'objets pouvant interagir les uns avec les autres
Ce modèle est appelé Type Enforcement (TE)
Deux types de décisions:
décisions d'accès
lorsque les sujets font des choses à des objets qui existent déjà, ou créent de nouvelles choses dans le domaine attendu
décisions de transition
invocation de processus dans des domaines différents de celui dans lequel s'exécute le processus sujet
création d'objets de différents types (domaines) que leurs répertoires parents
les transitions doivent être autorisées par la politique SELinux
Le contrôle d'accès basé sur les rôles (RBAC)
les règles spécifient les rôles qu'un utilisateur peut assumer
d'autres règles spécifient les circonstances dans lesquelles un utilisateur peut passer d'un rôle à un autre
Le modèle de sécurité à plusieurs niveaux (MLS)
concerne le traitement des données classifiées
"Pas de lecture, pas d'écriture"
MLS est appliqué via l'étiquetage du système de fichiers
la création et la maintenance des politiques SELinux sont compliquées et longues
une seule politique SELinux peut consister en des centaines de lignes de texte
RHEL a une politique "ciblée" par défaut
définit les types pour les applications réseau sélectionnées
permet à tout le reste d'utiliser les contrôles DAC
Possède une gamme de commandes SELinux
voir des références supplémentaires pour plus de détails
Cas pratique: SElinux sur Ubuntu
La distribution Ubuntu utilise AppArmor par défaut.
apt-get install selinux
3 modes : /etc/selinux/config
1 Enforcing: La politique est chargée. Votre machine est activement protégée. "En mode forcé, les actions illégitimes sont empêchées et toutes les tentatives de violation sont enregistrées par le noyau dans dmesg et logcat."
2 Permissive: Le fichier de stratégie est chargé, mais SELinux ne l'applique pas. Les accès seront enregistrés mais pas empêchés. Ce mode est destiné au test et au débogage.
3 disabled: L'infrastructure SELinux n'est pas activée. Aucun fichier de la politique n’est chargé. Les fichiers journaux ne sont pas générés.
AUTRES SYSTEMES DE RENFORCEMENT:
AppArmor
GrSecurity
SCAP (OpenScap)
Lynis
Une question? Posez-la ici
Aide au développement d'applications
Hardening des systèmes Windows
Un effort de sécurisation des systèmes Microsoft Windows à partir la version 2000
Au niveau du noyau
Windows Kernel-Mode Security Reference Monitor (SRM)
un composant en mode noyau qui effectue des vérifications d'accès, génère des entrées de journal d'audit et manipule les droits d'utilisateur (privilèges)
Local Security Authority Subsystem Service (lsass.exe)
Renforce la sécurité locale : identification, traitement des mots de passe, jetons, journalisation
Cible de nombreuse attaques (Ver sasser 2004)
Gestion des comptes
Security Account Manager (SAM)
une base de données qui stocke les comptes d'utilisateurs et les informations de sécurité des utilisateurs et des groupes locaux
les connexions locales effectuent une recherche sur la base de données SAM
les mots de passe sont stockés hachés
Format de hachage LM (obsolète et désactivé par défaut à partir de Vista)
Format NTLM (NTLMv2)
Gestion des comptes
Microsoft Active Directory (AD)
L’annuaire LDAP de Microsoft découlant de la norme X.500
Tous les clients Windows peuvent utiliser AD pour effectuer des opérations de sécurité, y compris la connexion au compte
Authentifier en utilisant AD lorsque l'utilisateur ouvre une session en utilisant un domaine plutôt qu'un compte local
Les informations d'identification de l'utilisateur sont envoyées d’une façon sécurisée sur le réseau pour être vérifiées par AD (Ex. Kerberos au lieu de NTLM)
Peut être distribué et répliqué
Gestion des comptes
Joindre un domaine
Un ordinateur peut se connecter avec des comptes de domaine ou locaux
si local ne peut pas accéder aux ressources de domaine
centralisé et beaucoup plus sécurisé
Joindre un groupe de travail (Workgroup)
une collection d'ordinateurs connectés ensemble
seuls les comptes locaux dans le SAM peuvent être utilisés
aucune infrastructure pour prendre en charge le domaine AD
Gestion des comptes : exemple d’identification (login)
L’administrateur de domaine ajoute les informations de compte de l'utilisateur (nom, compte, mot de passe, groupes, privilèges)
compte est représenté par un Security ID(SID)
unique à chaque compte dans un domaine
de forme: S-1-5-21-AAA-BBB-CCC-RRR
nom d'utilisateur sous l'une des deux formes suivantes:
Format SAM: DOMAIN \ Nom d'utilisateur
User Principal Name (UPN)@domaine.entreprise.com
se connecter en utilisant le nom d'utilisateur et mot de passe ou carte à puce
émis avec jeton (SID, groupes, privilèges)
affecté à chaque processus géré par l'utilisateur
Gestion des comptes :SSO
Un client du domaine veut utiliser un service du domaine
Les utilisateurs et les services sont authentifié sur un AD
Le SSO est assuré par Kerberos
Le AS (Authentication Service)
Le KDC (Key Distribution Center)
Port 88 (TCP/UDP) entre client et KDC
Émission du ticket pour accéder au serveur mail
KDC :Tiers digne de confiance connu sous le nom de Centre de
distribution de tickets (KDC) afin d'authentifier les utilisateurs auprès d'un
ensemble de services réseau
Ticket : ticket spécifique à une session. Tout service kerberisé peut rechercher ce ticket pour accéder à un serveur sans demander à l'utilisateur de s'authentifier à l'aide de son mot de passe
Gestion des privilèges
Sont des autorisations à l'échelle du système attribuées aux comptes d'utilisateurs
certains sont jugés "dangereux" tels que:
agir dans le cadre du privilège du système d'exploitation
privilège des programmes de débogage
sauvegarde de fichiers et de privilèges de répertoires
d'autres sont jugés "bénins" tels que
contourner le privilège de vérification de cheminement
Contrôle d’accès basé sur des ACLs
ACL discrétionnaire (DACL)
accorde ou refuse l'accès à des ressources protégées telles que des fichiers, de la mémoire partagée, des canaux nommés, etc.
Système ACL (SACL)
utilisé pour l'audit à partir de Windows Vista pour appliquer la politique d'intégrité obligatoire
Contrôle d’accès basé sur des ACLs
les objets nécessitant une protection reçoivent une liste DACL (et éventuellement SACL) comprenant
Le Security ID (SID) du propriétaire de l'objet
liste des entrées de contrôle d'accès (ACE)
chaque ACE inclut un SID et un masque d'accès
le masque d'accès pourrait inclure:
lire, écrire, créer, supprimer, modifier, etc
les masques d'accès sont spécifiques à un type d'objet
par exemple, les services (l'équivalent Windows des démons UNIX) sont des objets protégés et prennent en charge un masque d'accès pour créer un service (SC_MANAGER_CREATE_SERVICE) et un masque permettant l'énumération des services (SC_MANAGER_ENUMERATE_ SERVICE).
Security Descriptor (SD)
Structure de données incluant le propriétaire de l’objet, DACL, & SACL
Exemple:
Propriètaire (Owner): CORP\Blake
ACE[0]: Allow CORP\Paige Full Control
ACE[1]: Allow Administrators Full Control
ACE[2]: Allow CORP\Cheryl Read, Write and Delete
Security Descriptor (SD)
En cas d'accès implicite, s'il n'y a pas d'ACE pour demander l'utilisateur, alors l'accès est refusé
les applications doivent demander le type d'accès exact et correct
si la demande est "tout accès" (par exemple lire uniquement) certains utilisateurs qui devraient avoir accès seront refusés
Security Descriptor (SD)
chaque ACE dans la liste DACL détermine l'accès
un ACE peut être un ACE autoriser ou refuser
Windows évalue chaque ACE dans la liste de contrôle d'accès jusqu'à ce que l'accès soit accordé ou explicitement refusé
donc refuser ACE viennent avant permettre ACEs
par défaut si défini à l'aide de l'interface graphique
ordonner explicitement si créer par programme
Lorsqu’un utilisateur tente d'accéder à un objet protégé, le système d'exploitation effectue une vérification d'accès
comparaison d'informations utilisateur / groupe avec ACE dans ACL
Mandatary Acces Control (MAC) sous Windows
Pour le contrôle d'intégrité à partir de Windows Vista
Cela limite les opérations modifiant l'état d'un objet
les objets et les principaux sont étiquetés (en utilisant SID) comme:
Faible intégrité (S-1-16-4096)
Intégrité moyenne (S-1-16-8192)
Haute intégrité (S-1-16-12288)
Intégrité du système (S-1-16-16384)
lorsque l'opération d'écriture se produit, le niveau d'intégrité du sujet domine le niveau d'intégrité de l'objet
une grande partie de l'intégrité du système d'exploitation est marquée moyenne ou supérieure
Au niveau de la gestion des comptes
les comptes d'utilisateurs peuvent avoir des SID privilégiés
le moindre privilège dicte que les utilisateurs opèrent avec juste assez de privilèges pour les tâches
Utilisateurs de Windows XP dans les administrateurs locaux
pour des raisons de compatibilité d'application
pouvez utiliser "Connexion secondaire" pour exécuter des applications
les jetons restreints réduisent également les privilèges par thread
À partir de Windows Vista utilisation du UAC User Account Control
les utilisateurs invités à valider une opération nécessitant des privilèges administrateur
sauf admin sur le serveur
UAC utilise le MAC
Gérer les privilèges (moindre privilège)
Certains services Windows sont des processus de longue durée démarrés après le démarrage (ex. DNS)
Sont exécutés avec des privilèges élevés
mais beaucoup n'ont pas besoin de ces privilèges
Retirer les privilèges d'un compte peu après le début d'une application
par exemple. Le processus du serveur d'index s'exécute en tant que système pour accéder à tous les volumes de disque
mais abandonne tous les privilèges inutiles dès que possible
utilisant AdjustTokenPrivileges
Windows peut définir les privilèges requis par un service
en utilisant ChangeServiceConfig2
Gérer du réseau
Activer et configurer le parefeu intégré à Windows
Définir une politique de filtrage basée sur les services (applications) en white-liste
Préviligier le protocole IPV6 (pour authentifier les paquets) IPV4 est très vulnerable au DoS sous Windows.
Ipsec si possible
Désactiver les protocoles vulnérables
SMB v1 (3 bugs exploités par les RasomeWares)
LM pour les anciens systèmes
NTLM v1
Gérer la mémoire ( Buffer Over Run)
No eXecuteNamed (NX) / Prévention de l'exécution des données (DEP) / eXecution Disable (XD)
empêcher l'exécution du code dans les segments de données
comme couramment utilisé par les exploits de dépassement de tampon
applications liées à l'option / NXCOMPAT (no = non compatible avec le DEP)
Stack Randomization
randomise les adresses de base de la pile de threads
Protection contre le dépassement de la mémoire tampon basées sur le tas:
ajouter et vérifier une valeur aléatoire sur chaque bloc tas
vérification de l'intégrité du tas
randomisation du tas
Randomisation d'image
Le système démarre avec une des 256 configurations du Boot
Contre le reverse-engineering
Politique de redémarrage des service
les services peuvent être configurés pour redémarrer en cas d'échec
excellent pour la fiabilité mais vulnérable en termes de sécurité
Windows définit certains services critiques, donc ne peut redémarrer que deux fois, puis redémarrage manuel nécessaire
donne à l'attaquant seulement deux tentatives
Chiffrement du Système de Fichier (EFS)
permet le chiffrement des fichiers / répertoires de manière transparente pour les utilisateurs autorisés
génère une clé aléatoire, protégée par DPAPI
API de protection des données (DPAPI)
gère la protection et le maintien des clés de chiffrement
clés dérivées en partie du mot de passe de l'utilisateur
BitLocker Chiffrement du disque
chiffre un volume entier avec AES
clé sur puce USB ou dans TPM
Cas pratique (checklist pour Windows sever 2016/2012)
Voir document Word
Securing Windows and Windows Vista First Edition, by William Stallings and Lawrie Brown, Lecture slides by Lawrie Brown.
Operating System Security Principles and practices, William Stallings and Lawrie Brown.
Hardening Debian:
https://www.computerworld.com/article/3144985/linux/linux-hardening-a-15-step-checklist-for-a-secure-linux-server.html
Hardening Windows server 2016:
https://hichamkadiri.wordpress.com/tag/os-hardening/
Ce transcript reflète exclusivement l'opinion de ses auteurs et n’engage en aucune façon Consultingit
Allez, c'est à, vous: vous pouvez voter et mettre 5 étoiles!
Voilà, j'espère que ça vous a plu. Vos commentaires/remarques sont les bienvenus