Sécurisation de Windows NT


Pour partir le bal, je vais commencer avec un article sur Windows NT et comment le sécuriser (en partie) et le fonctionnement de sa sécurité. Cet article ne couvre seulement que le système de base, et non les programmes qui lui sont associés comme IIS (Internet Information Server) ou Ms Exchange Server. Cet article vient d'une bonne collecte d'information, et de quelque année d'expérience sur le terrain, il est dommage qu'il n'y ait pas de documentation efficace en français sur la procédure à suivre pour sécuriser Windows NT et avoir un aperçu des ses options de sécurité, cet article va essayer de diminuer quelque peu cette pénurie. Cette information est dans la mesure de mes connaissances, et de mon expérience pratique, exact, si vous notez quelques points douteux ou que vous avez des suggestions pour une nouvelle version de cet article, n'hésitez pas à me les communiquer. Cet article est le premier d'une série de trois, le premier article traite les bases de la sécurité sur le système d'exploitation Windows NT, le second traitera du fonctionnent interne de NT pour ce qui est de la sécurité et finalement le troisième portera sur la programmation de module externe pour augmenter la sécurité de votre système.


Ceci n’est qu’un aperçu des options de sécurité de Windows NT et n’aborde pas énormément le coté de la programmation, l’aspect technique iront dans les deux prochains articles qui paraîtront dans le prochain SécuriMag. Ce document ne touche pas non plus au autres versions de Windows, cependant la majeure partie de ce document sera valide pour NT 5 (Windows 2000) car pour la partie que j’ai vérifiée, il semble être similaire.


La sécurité sous NT tourne autour de cinq piliers : Le système même, le système de fichier, la base de registre, les utilisateurs, et la journalisation (auditing).


1.Le système même


Peut importe la qualité de la sécurité des logiciels et de votre systèmes d’exploitation. Une faille sécurité est souvent oublié il s’agit de votre ordinateur même. Il v’a sans dire que ca demande un accès directe sur l’ordinateur (ce qui est plus rare sur un serveur) cependant il arrive souvent que certain de vos ordinateurs peuvent être accessible à un plus grande partie du monde (ordinateurs dans une salle de formation, station d’accueil, etc..). Note : Cette section n’est pas du tout spécialiste à Windows NT cependant j’ai décider de l’inclure car elle fait partie d’une procédure de sécurisation d’ordinateur.


1.BIOS 




2.Matériel

Dans le meilleur des mondes voici a quoi devrait ressembler votre serveur (pour les poste de travail c’est vraiment abusif) Cependant si un jour vous désirez être conforme avec les législation de la protection de l’information cela deviendras peut-être obligatoire (je ferais peut-être un article pour vous expliquer cette législation en détail un jour, mais si entre temps vous désirez plus d’information vous pouvez communiquer avec moi pour plus d’informations sur ce sujet ou pour la création d’une politique de sécurité d’entreprise)



Windows NT permet de bloquer le lecteur CD-ROM et les lecteur de disquettes en modifiant deux clé au niveaux de la base de registre (nous allons revenir plus loin sur la base de registre). Pour contrôler les lecteurs de disquettes :

CLÉ : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon
ÉLÉMENT :AllocateFloppies
TYPE :REG_SZ
VALEUR  :0 pour les rendre inaccessible ,.1 pour les rendre accessible

Et pour le cdrom vous devez modifier cette clé :


CLÉ : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon
ÉLÉMENT :AllocateCDRoms
TYPE :REG_SZ
VALEUR  :0 pour les rendre inaccessible ,.1 pour les rendre accessible

Il bloque ses lecteurs pour un accès RÉSEAU, pas pour un accès LOCALE ce qui n’est quand même énormément utiles mais mieux que rien.

2.Réseau

Windows NT a reçu une confirmation C2 à condition qu’il soit autonome et non en réseau, donc il est généralement bien de placer vos serveurs derrière un coupe-feu (firewall) pour éviter certaine attaque. Ou si votre serveur n’est qu’un serveur de donné de le connecter sur votre serveur d’application avec une autre méthode (câble série, connexion réseau serveur à serveur, etc.)


Une autre chose à penser lors de l’élaboration d’un réseau est la possibilité qu’à un individu de capter (sniffer). Ce qui est souvent utiliser pour intercepter des mot de passe ou de l’informations privilégié. C’est pourquoi il vaut mieux installer des switch (pas trouver le terme français) à la place de concentrateur (hub), car l’architecture d’une switch fait qu’elle n’envois l’information que sur le port spécifié alors qu’un concentrateur renvois l’information sur tout les ports, donc cela évite qu’une tierce personne intercepte les donné. Il a aussi l’utilisation de l’encryption pour faire circuler les donné confidentiel sur le réseau avec moins de risque d’interception (ssh2 par exemple)


Il a d’autres solutions qui amoindrissent se problème mais il s’agit souvent de solution réseau tique beaucoup plus dispendieuse qui demande une étude cas par cas (infrarouge, fibre optique, etc.)


1.Divers



Une autre chose qui est un peu plus spécifique a NT, c’est le services AT qui permet d’exécuter des taches a des heures précises, dans l’installation standard il est configurer avec le compte SYSTEM ce qui permet d’exécuter des taches avec tout les droits du systèmes, il serait judicieux d’enlever ce services ou du moins le faire exécuter avec un accès moindre


3.Le système de fichier


Le système Windows NT 4.0 supporte initialement seulement deux systèmes de fichier, la VFAT16 (celle de Windows 95) et la NTFS (uniquement pour NT). La première offre que très peu d'option et aucune sécurité donc il devrait être rejeté de vos choix (sauf si vous avez Windows 95 et NT sur la même partition), le second est un système de fichier un peu plus sophistiqué qui supporte les droit d'accès (ACL) et la journalisation des actions (auditing). Malgré ce que Microsoft annonce, il n'est cependant pas vrai que la NTFS est inviolable (comme tous autres systèmes de fichier). Il existe plusieurs logiciels ou drivers permettant un accès en lecture et en écriture à ce système de fichiers (linux le permet par exemple). Néanmoins, ce système reste sécuritaire dans la mesure que personne ne peut démarrer le système à partir d'une disquette et que la personne y accède seulement via NT. De plus il reste sécuritaire dans une certaine mesure via réseau.


Le système de fichier NTFS est beaucoup plus performant que le système de fichier FAT, dans ses améliorations nous comptons :


Donc une des première choses à faire lors de l’installation est de mettre votre partition principale avec ce système de fichier, NT va vous le proposer lors de l’installation. Note : Si votre système de fichier est déjà en FAT et que vous désirez le transformer en NTFS, il existe un utilitaire qui se nomme convert.exe qui permet de faire ce changement. Il est dans les utilitaires qui vienne avec Windows NT. Cependant avant de démarrer la conversion il est préférable de faire une copie de secours de vos données importantes.



\ : racine de la partition contenant NT

WINNT : dossier de Windows NT

REPAIR : Dossier de sauvegarde des clé de la base de registre

(Note : Ce répertoire contient les copie de la base de registre, il est très important que seulement l’administrateur puisse lire le contenu et non les utilisateurs)

SYSTEM : Dossier système pour les applications 16 bits

SYSTEM32 : Dossier système de Windows NT

CONFIG : Contient les fichiers de la base de registre

(Note : les .log représente les modifications a apporté s’il se passe une perte de donné ou une erreur de lecture/écriture, il a une clé qui montre ou sont lié ses fichiers, théoriquement il serait possibble de déplacer ses fichers dans un autres répertoire dans le but de brouiller les piste, mais je n’ai pas encore essayer de le faire dans la pratique, je devrais donner avoir tester ca d’ici le prochain numéro de SécuriMag)

PROFILES : contient les profiles des utilisateurs (lpréférences, leurs données, etc..)

(Note : panneau de configuration -> Système , onglet profils d’utilisateurs, est une bonne façon de manipuler se répertoires)

Note : pour les administrateurs aimant la console , il existe un utilitaires cacls pour modifier les droits d’accès a partir de la ligne de commande


Note: l'utilitaire copy normal de Windows NT ne copie pas les ACL (droit d'accès), il copie seulement les fichiers, il existe un utilitaire à l'intérieur du « NT ressource kit « qui se nomme scopy.exe, qui lui copie les droits d'accès en plus des fichiers, ce qui peut être utile lors de procédure batch de copie de répertoire.



4.La base de registre


La base de registre est le cœur de configuration du système, elle correspond au classique répertoire /etc de votre clone Unix favori, cependant a la place d'être séparer dans une multitude de fichier (ce que nous avions avant avec les .ini), Microsoft la centralisé dans plusieurs fichiers principaux.


Sans vous faire un exposé sur la base de registre, (je vais y revenir dans un article un article qui n’a pas pu être fini pour le numéro 1 mais qui le sera pour le 2) elle constitue une arborescence dans lequel nous trouvons d'autre sous-clé, et à l'intérieur de ses sous-clé nous y retrouvons différents type de valeur. Chaque clé et valeur sont protéger de la même façon que le système de fichier (Lecture, Écriture, Suppression, etc. ) et son encore dans une certaine mesure.


Les droit d’accès :



Leurs définitions exactes se trouvent dans le fichier «  winnt.h » dans la section des ACL.


Maintenant, nous allons rentrer dans le vif du sujet, que modifier dans la base de registre, quelles clés parmis quelques milliers de clé vont nous permettre d'augmenter la sécurité de notre serveur.




1.Identification


Voici quelques clé qui vont vous permette d’augmenter la sécurité pour le volet identification au serveur. Sur les systèmes *nix il est possible d’afficher un message lors de la connexion au serveur (le fichier /etc/issue sert généralement a cela). Windows NT offre une possibilité de faire quelque chose de similaire, il s’agit d’afficher une boite de message contenant votre message. (Pour le MOTD vous devrez par contre vous tourner vers une solution tierce ). Ca n'ajouter rien a la sécurité de votre système mise à part un petit effet dissuasif.


CLÉ: HKEY_LOCAL_MACHINE\SOFTWARE\microsoft\windows NT\Current Version\Winlogin

ÉLÉMENT : LegalNoticeCaption

TYPE : REG_SZ

VALEUR : Texte que vous désirez comme titre de la fenêtre


CLÉ: HKEY_LOCAL_MACHINE\SOFTWARE\microsoft\windows NT\Current Version\Winlogin

ÉLÉMENT: LegalNoticeText

TYPE: REG_SZ

VALEUR : Texte qui apparaît à l'intérieur de la fenêtre.


Et si vous désirez modifier le texte qui apparaît dans la fenêtre de connexion au serveur vous devez modifier ceci :


Clé: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon

Élément: LogonPrompt

Type: REG_SZ

Data: Texte que vous désirez voir apparaître dans la fenêtre d’identification


Généralement, Si vous attendez quelques minutes lors de l’identification un écran de veille devrait apparaître (login.scr), le problème est que cet écran de veille est lancer avec les droits SYSTEM et qu’un individu pourrait remplacer l’écran de veille par un programme de sa conception (trojan) qui aurait plein pouvoir sur le système. Pour désactiver l’écran de veille il suffit de modifier la clé suivante :


CLÉ: HKEY_USERS\.DEFAULT\Control Panel\Desktop

ÉLÉMENT: ScreenSaveActive

TYPE: REG_SZ

VALEUR: 0 pour désactiver l’écran de veille, 1 pour l’activer


Un autre problème qui survient à l’identification est que Windows NT garde en mémoire le mot de passe et les informations. Donc si vous changer un des mots de passe d’un de vos employés, il peut quand même démarrer l’ordinateur s’il désactive sa connexion réseau en enlevant le fil par exemple. Ce qui est très peu sécuritaire dans un environnement protéger ou qu’il se trouve des donnés confidentiel. Vous pouvez heureusement désactiver cette fonctionnalité ( Note : Ceci est aussi valide pour Windows 95/98)


CLÉ : HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Network

ÉLÉMENT : DisablePwdCaching

TYPE : REG_DWORD

VALEUR : 0 pour désactiver cette fonction, 1 pour l’activer


Une autre variante de cela serait de mettre le nombre de cache à 0 pour lui spécifier que nous en désirons aucun.


CLÉ:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon

ÉLÉMENT : CachedLogonsCount

TYPE: REG_DWORD

VALEUR: le nombre de compte à garder en cache, 0 pour aucun


2.Le shell

Il existe des tonnes d’options configurables pour le shell explorer.exe de windows, leurs explications serait longues et peut-être pas très utiles. A la place je vous conseil d’utiliser le logiciele poledit.exe (Policy Editoir) qui vient avec Windows NT et d’apprendre en vous en servir il est très bien fait et configurable.

Une chose qui est cepandant intéressante est pour désactivé le bouton Changer le mot de passe de la fenêtre qui apparaît lorsque vous faites ctrl+alt+delete

CLÉ : HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System

ÉLÉMENT : DisableChangePassword

TYPE : REG_DWORD

VALEUR : 1 pour rendre accessible le bouton, 0 pour le rendre innaccessible


Autre chose qui est digne d’intérèt est la possibilité d’empècher un utilisateur d’exécuter certain logiciels, il suffit de les rajouter dans la clé :

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\RestrictRun,

et de créer des valeurs textes avec les exécutables que nous désirons pas voir fonctionné.


3.Système

La mémoire virtuel n’est pas effacer lors de la fermeture de l’ordinateur ce qui signifie que si vous aviez des informations confidentielles dans le fichier d’échange de Windows, alors il serait possible d’aller lire son contenues après un redémarrage de l’ordinateur avec une disquette système. (Note : cette procédure fonctionne avec une fermeture standard de l’ordinateur, pas une fermeture manuelle via reset )

Clé: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory

Management

Élément: ClearPageFileAtShutdown

Type: REG_DWORD

Valeur: 0 pour désactiver cette option, 1 pour activer cette option.



4.Réseau

Vous trouverez ici quelques clés qui sont utiles pour augmenter la sécurité de votre serveur d’un point de vue de sécurité réseautique.


Souvent certains serveurs n’ont pas besoin d’être vue sur le réseau, pour cause que se sont seulement des serveurs de donné pour les serveurs d’applications ou car vous ne désirez pas attirer l’attention sur votre serveur. Il est possible de « masquer «  l’ordinateur dans la liste des ordinateurs dans le réseau global, cependant l’ordinateur reste accessible si vous y accéder par son nom directement.


clé: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters

Élément :Hidden

Type: REG_DWORD

Valeur : 0 pour le rendre visible, 1 pour le rendre invisible


Vous devez redémarrer votre ordinateur et attendre que les autres stations aille renouveler leur cache pour prendre cela en compte.


Il peut aussi arriver que vous désiriez que les membres d’un domaine ne puisse pas avoir accès à la liste des groupes de travail qui se trouve sur le réseau (par exemple que l’e groupe FORMATION ne vois pas le groupe EMPLOYÉ) vous devez modifier la clé de registre


clé: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Network

Élément: NoEntireNetwork

Type: REG_DWORD

Valeur: 0 pour ne pas voir le réseau, 1 pour le voir


Il a quelque temps, la mode était (et l'est encore ) de se connecter sur des ordinateurs distants via Internet en utilisant le protocole Netbeui, cependant sur NT cela se fait automatiquement par défaut (liaison entre la carte d’accès distante et le protocole Netbeui), pour supprimer cette liaison, il faut faire comme suit,


Comme il s’agit d’un merveilleux système Windows vous allez devoir redémarrer votre ordinateur !


Comme dernier petit point intérressant c’est la possibilité de faire directement disparaître l’icône réseau d’un poste de travail, il suffit de modifier la clé suivante :


CLÉ: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer

ÉLÉMENT : NoNetHood

TYPE: REG_DWORD

VALEUR: 0 pour le rendre visible, 1 pour le rendre invisible


5.Administration distante

Microsoft Windows NT Possède plusieurs options qui permette d’accéder à des informations sur le serveur à distance, c’est « options «  peuvent être dans un environnement sécuritaire une façon de ramasser des informations utiles sur le serveur. Une de ses options permet de visualisé le journal des évènements à distances (heureusement pas le journal sécurité)

CLÉ : HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\EventLog\[nom journal]

ÉLÉMENT : RestrictGuestAccess

TYPE : REG_DWORD

VALEUR: 1


La base de registre peut être aussi accessible à distance (mais pas dans sa totalité), ce qui peut être parfois dérangeant car certains logiciels écrivent leur mot de passe dans la base de registre ou encore modifier quelque clé par exemple le démarrage automatique de certaine application.


CLÉ : HKEY_LOCAL_MACHINE\System\CurrentcontrolSet\Control\SecurePipServers

ÉLÉMENT : winreg

VALEUR : Les droit d'accès appliquer sur cette clé contrôle qui a le droit d'accéder à la base de donné via réseau


Autre chose très importante ! Il existe une façon d’avoir accès à distance la liste des utilisateurs et des partages d’un serveur (le programme ntis.exe de je ne sais plus trop qui permet de le faire, je devrais p-e le rajouter sur le site ou en faire un similaire si j’ai le temps). Cela va s’en dire est très peu sécuritaire. Heureusement , nous pouvons arrangerez ça en modifiant une clé de la base de registre.


CLÉ :HKEY_LOCAL_MACHINE\SYSTEM\System\CurrentControlSet\Control\LSA

ÉLÉMENT: RestrictAnonymous

TYPE: REG_DWORD

VALEUR: 1 pour restreindre l’accès , 0 pour la permettre


5.Les utilisateurs

Peut importe la sécurité d’un système informatique la faille et en même temps le danger le plus grand est les utilisateurs. Car ils peuvent en divulguant des informations permettre l’accès de votre système à une tierce personne ou l’humain étant l’humain, certain employé cherche à accéder à des informations privilégiées. Pour éviter cela il vous faut bien configurer les groupes et les droits d’accès des accès et pour ca il n’a pas de recette magique a part de bien faire attention.

Une erreur qui survient souvent dans les entreprise est qu’il ne faut pas oublier de placer un mot de passe sur le compte administrateur des poste de travail, car sinon un individu peut se connecter localement sur l’ordinateur avec les droits administrateurs, sans avoir besoin de se connecter sur le serveur.

Il a une autres options qui est celles des heures d’accès, un attaquant va souvent, tenter de s’infiltrer de nuits sur le systèmes, si vous configuré vos heures d’accès il sera moins facile d’accéder a voter systèmes lorsque vous êtes absent. Il a aussi une autre options qui est celle des Work Stations sur lequel un utilisateur peut se connecter, les essais de cette technique n’ont jamais donné grand résultat, et il sont OS spécifiques (seulement NT prend cette options) alors ne vous y fiez pas trop pour votre sécurité.

1.Utilisateurs par défaut



2.Stratégie de compte

La stratégie de compte est ce qui configure les options globales des comptes utilisateurs, par exemple la longueur des mots de passe et son expiration. Voici ce qui devrait être fait pour ce volet :

6.La journalisation

La journalisation (Auditing) est le fait de garder une trace des actions qui ont été pausé sur le système. Cependant, ce n’est pas tout de garder des fichiers journaux, il faut aussi les lire pour apercevoir s’il a oui ou non des violations de sécurité. Nous pouvons journaliser la majeure partie des évènements sur Windows NT : l’accès aux objets, l’accès des utilisateurs, l’accès au système de fichiers NTFS et l’accès a la base de registre.

Ces informations s’écrivent dans le journal des évènements (accessible via l’application eventvwr.exe ) dans la catégorie Sécurité (Menu journal -> Sécurité)



1.Base de registre


Les règles de journalisation de la base de registre sont les mêmes que les ACL que vous pouvez leurs assigné, voir plus haut le chapitre sur la base de registre.


Voici par exemple ce que dirait le journal des évènements suite l’accès a la clé SAM, ce qui peut être important de journalisé vu que c’est à l’intérieur de cette clé que se trouve les droit d’accès, les noms d’utilisateurs, etc..

Voici à quoi ressemble un message du journal des évènements pour une journalisation éffectués sur la base de registre :

Objet ouvert :

Serveur objet : Security
Type d'objet : Key
Nom d'objet : \REGISTRY\Machine\SAM\SAM
Nouveau nº du handle : -
Nº de l'opération : {0,1019523}
Nº de processus : 2155350240
Nom de l'utilisateur principal : Administrateur
Domaine principal : SERVBOX
Nº de session principale : (0x0,0xCB443)
Nom de l'utilisateur client : -
Domaine client : -
Nº de la session cliente : -
Accès READ_CONTROL
Requête valeur de clé

Enumération des sous-clés

Notification de modifications aux clés

Privilèges -



2.NTFS

A faire (Ma partition NT sur l’ordinateur ou j’ai fait cet article est en FAT a cause que je travail avec Windows 95 parfois) Cette section va être complétée dans la version finale de ce numéro de SécuriMag et mis sur le site, désolé pour cette inconvénient.

3.Utilisateur

Il est très important de gérer la journalisation au niveau des utilisateurs et des accès, c’est grâce à cela que vous allez pouvoir intercepter la majeure partie des tentatives d’accès a votre système et des évènements anormaux.

4.Autre objets

Il existe une façon de journalisr d’autres événements et d’activé des options de journalisation supplémentaires en activant deux clés dans la base de registre


CLÉ: HKEY_LOCAL_MACHINE\System\ CurrentControlSet\Control\Lsa:

ÉLÉMENT : FullPrivilegeAuditing

TYPE: REG_BINARY

VALEUR : 1 pour activer la journalisation, 0 pour la désactivé


CLÉ: HKEY_LOCAL_MACHINE\System\ CurrentControlSet\Control\Lsa:

ÉLÉMENT : AuditBaseObjects

TYPE: REG_BINARY

VALEUR : 1 pour activer la journalisation, 0 pour la désactivé


7.Conclusion

Voilà, c’était le premier article d’une série de trois, j’aurais pu faire un emag complet sur ce sujet mais j’ai du abréger cela. Il existe encore des tas de petites fonctions pas très documentées qui augmente encore la sécurité de votre serveur, mais il a plusieurs programmes qui fonctionnent mal dans un environnement trop protéger. Le prochain article sera sur le fonctionnement interne de l’implantation de la sécurité et le dernier sera la création de module maison pour augmenter la sécurité de votre serveur (pour les programmeurs principalement). Si vous avez des commentaires, des questions ou une demande de sécurisation de votre parc informatique n’hésitez pas à communiquer avec moi.



Francois Harvey

Consultant en sécurité

Securiweb enr.

Securiweb@pandore.qc.ca

http://www.securiweb.net