Les outils pour gérer et sécuriser IIS

Gérer des sites web et serveurs

Une fois IIS installé et en cours de fonctionnement, il peut-être administré avec IIS Manager. Le moyen le plus rapide de lancer cet outil et de saisir la commande inetmgr.exe. Si vous avez besoin de relancer le service IIS, vous pouvez utiliser les commandes suivantes:

net stop w3svc
net start w3svc

Ou vous pouvez travailler avec Stop-Service, Start-Service, ReStart-Service via Powershell.

Dans Windows Admin Center, vous pouvez utiliser la section des services pour effectuer cette opération. Le moyen pour avoir accès aux services sur une machine windows et d'utiliser la commande services.msc qui ouvrira la console d'administration des services.

Il est possible aussi d'utiliser les commandes iisreset et iisreset /noforce en supplément pour démarrer ou arréter l'ensemble des sites web sur le serveur. Mais il est également possible de temporairement désactiver des sites spécifiques. Alors, tous les autres sites web du serveur ne seront pas affectés. Pour cela il faut ouvrir la console IIS Manager et cliquer sur le site web voulu pour arréter ou redémarrer le site. Ce sont aussi des opérations accessibles en ligne de commande :

appcmd stop site /site.name:contoso
appcmd start site /site.name:contoso

Ainsi uniquement le site contoso sera impacté. Toutefois, ces outils ne sont pas accessible par défaut dans le chemin des commandes. De ce fait, ce n'est pas un outil accessible directement. Pour rendre cela possible, vous devrez ajouter le répertoire \Windows\System32\inetsrv dans la variable d'environnement PATH. Si vous avez besoin d'aide sur cet outil en ligne de commande il est possible de saisir appcmd /?

Voir les requêtes et créer des backups

La commande appCmd permet d'afficher les requêtes courantes effectuer sur le serveur web et d'effectuer des backups des données. Pour cela il faudra saisir ceci:

appcmd list request
appcmd add backup <nom>

Créer un backup est une bonne idée avant de commencer à effectuer des changements. Il est possible de voir les backup existant et les restaurer ainsi :

appcmd list backups
appcmd restore backup <nom>

Cependant, si vous effectuez un backup avant les changements sur une configuration distributée, puis une restauration. Il ne faudra pas oublier de restaurer la configuration local ensuite. Bien sur, vous pourrez lancer un backup à partir d'une tâche planifiée windows. Selon le principe suivant :

%WinDir%\system32\inetsrv\appcmd.exe add backup "<nom backup>"
#puis pour effacer les backup
%WinDir%\system32\inetsrv\appcmd.exe delete backup "<nom backup>"

Outils de développement sur Edge (IE on a passé l'âge hein...)

Les outils développeurs sur edge sont des outils d'administrateurs système également. Et oui, il n'y a pas que les développeurs qui utilisent ce type d'outils. Pour y avoir accès, il faut appuyer sur la touche F12. Cela permet d'afficher par défaut les sources html de la page et d'aider à poser une analyse des erreurs possible (Temps de chargement trop long par exemple) et en allant dans l'onglet Network, il est alors possible de voir facilement les ressources qui prennent du temps à être obtenu.

Windows Admin Center et la gestion IIS

Microsoft a fournit une extension pour Windows Admin Center afin de faciliter l'administration IIS. Cela reprends les fonctions du IIS Manager. L'avantage c'est que cette administration est d'une part plus simple et d'autres part il est possible de l'effectuer à distance :

Cette extension est disponible sur github. Une fois que l'extension s'est connecté sur le IIS voulu, cela vous autorise à sélectionner les sites web à administrer, configurer le binding, limites, applications pools, etc. L'onglet monitoring permet de gérer les performances de manière dédiée.

Ajuster la configuration de la sécurité

Vous pouvez également utiliser ce genre d'outils pour configurer les paramétres associés à la sécurité. Utiliser cet outil au lieu des outils standard offre plus de souplesse notamment pour la configuration du parefeu qui peut alors être administrer en ligne de commande de la sorte :

New-NetFirewallRule -DisplayName "ICMP block" -Direction Inbound -Protocol icmp4 -Action Block

Comme vous pouvez le voir, vous aurez besoin de spécifier le nom du protocole, définir le nom de la régle ainsi que l'action associé. Toutefois, c'est souvent plus simple de copier à partir d'une règle existante : Copy-NetFirewallRule. Si vous utilisez IPSec, le principe est tout autant valable : Copy-NetIPSecRule. Bien sur après avoir copier la régle, il faut la renomer avec un Rename-NetFirewallRule

Sécurisé les accès

L'adresse IP, les fonctionnalités de limitations par domaines, sont des régles permettant de bloquer les accès. Pour commencer, il faut activer ces fonctionnalités en utilisant le composant IP and Domain Restrictions role Service. Cela signifie que les redirections HTTP seront automatiquement redirigé à une autre URL. Par exemple, vous pouvez rediriger les requêtes d'une page d'un spécifique vers une autre page. Après, il est également possible d'effectuer cela via la fonctionnalité HTTP Redirection. Cependant, vous devez en permier installer la fonctionnalité. Il est également possible alors d'action cela par la configuration. Le fait d'effectuer les redirections sur les sous répertoires est aussi configurable.

Vous pouvez également gérer les binding SSL afin de sécuriser les flux entre les clients et le serveur web. Cela permet d'encrypter les échanges entre les deux parties et éviter des accès non cryptés en forçant par exemple la redirection sur le flux SSL, lorsqu'une tentative est effectué sur le port non sécurisé HTTP par exemple. Il est également possible d'interdire de naviguer dans l'arborescence et faire en sorte d'afficher une erreur 403.

Activer et configurer les traces  

En plus du tracking des requêtes qui ont échouées, il est aussi possible de sauvegarder les activités effectués au travers d'IIS. Pour cela il faut aller sur la section Logging du IIS Manager et activer la fonctionnalité. Il est possible d'activer par pages ce mécanisme. Par défaut, le logging est activé sur le serveur lui-même et pour les sites web. Ces traces peuvent être sauvegardé n'importe ou. Par défaut, elles se trouvent dans \inetsvr\logs\logfiles. Il est préférable de laisser l'encodage en UTF8 pour éviter des problémes à l'usage.

  • W3C (Default) : Ce sont des fichiers stockés au format texte. Ils permettent de sélectionner les champs voulus qui seront séparés par des espaces.
  • IIS                        : Cette sélection permet de sauvegarder les traces au format texte. Cependant, le formation utilise les ; comme séparateur.
  • NCSA                  : (National Center For SuperComputing Applications) Ici également, les champs sont fixes et moins d'informations sont disponible qu'avec d'autres protocoles.

Il est également possible de définir la durée de sauvegarde, taille etc. afin de limiter le stockage occupé sur le serveur.

Optimisation des performances

La compression peut améliorer les temps de réponses et sauvegarder la bande passante lorsqu'il faut transmettre les pages. Vous pourrez gérer cette partie avec la fonctionnalité de même nom sous IIS Manager. Quelques paramétres sont également disponible au niveau serveur. Cependant beaucoup sont également disponible au niveau des applications web. Pour les performances, une partie peut également être gérer via le cache qui permet d'éviter de recalculer le rendu en conservant l'ancienne version un certain temps. Pour cela, il faut utiliser la fonctionnalité Output Caching sur IIS Manager. Le cache est activé par défaut et il est possible d'ajuster les limites selon les besoins. Cependant, cette notion est surtout utile sur des serveurs de production.

Gérer IIS à distance

En powershell et avec Windows Admin Center, il est possible d'accèder à IIS d'un serveur au travers du réseau. Pour utiliser IIS Manager, c'est un peu plus compliqué à configurer et à utiliser. Il faut utiliser la commande :

Enter-PSSession -ComputerName <servername>

La commande Get-WebSite permet d'afficher les sites web sur le serveur. Cela incluera également les bindings et l'ensemble des paramétres de configuration. D'autres commandes sur ce principe sont disponibles comme : Get-WebBinding. Il est alors bien sur possible de modifier la configuration à distance selon le même principe.

Certificat auto-signé

Pour la sécurité, IIS supporte également la notion de certificat auto-signé. Une Cmdlet permet de les créer facilement : New-SelfSignedCertificate. Le certificat permet alors de se connecter au site web toutefois, cela requiert que le client accepte ce certificat car il n'est pas signé par une autorité de certification valable. Pour cela, il faudra que le client ajouter le certificat dans son magasin.

Conclusion

IIS peut-être configuré de nombreuses façons. Il n'est pas surprenant que Powershell soit une de ces méthodes qui nous autorise à relancer régulièrement les mêmes opérations, et si nécessaire automatiquement. La seconde approche vient de Windows Admin Center, puis IIS Manager qui n'est plus l'outil recommandé. Quelque soit les outils utilisés, votre mot d'ordre devrait être "sécurité avant tout!".


Rejoindre la conversation