User Rating: 5 / 5

Star ActiveStar ActiveStar ActiveStar ActiveStar Active
 

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

 

 

 

Consultingit suite fleche 299

 

  

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