Exclusions antivirus pour IIS / Antivirus exclusions for IIS

English version

Dans le cadre d’un audit IIS ou d’un IIS RaaS, l’un des points de vérification et la présence d’un antivirus et le cas échéant de sa configuration. Un antivirus peut être un allié précieux dans la sécurisation de votre serveur  mais peut également être votre pire ennemi en termes de performances

Une configuration inappropriée (souvent par défaut) réduira significativement la performance de votre serveur. Je propos dans cette article de lister quelques bonnes pratiques et de voir les exclusions à mettre en pkace pour optimiser votre serveur. Bien sûr toutes ces reommendations doivent être replacées dans votre contexte et discutées avec votre équipe sécurité ou votre RSSI.

Les emplacements spécifiés ici sont les emplacements par défaut (il est parfois recommandé d’utiliser un autre emplacement : fichiers de logs, contenu web ..)

Solution Anti-Virus

Les anti-virus, utiles dans la prévention des malwares et autres virus sur vos serveurs Web, peuvent également fonctionner en mode de détection et de suppression. Il est recommandé de disposer d’un antivirus sur les serveurs de production pour analyser régulièrement les dossiers de contenu et le système en général, à la recherche de programmes malveillants qui pourraient s'y trouver. L'antivirus doit toutefois être configuré avec soin afin d'éviter toute surcharge inutile du système. L’absence d’anti-virus offre un avantage en termes de performances mais rendre votre système vulnérable aux attaques et aux logiciels malveillants.

Scan en temps réel

Un scan en temps réel assure une protection continue du serveur contre le contenu mal intentionné qui pourrait affecter votre système. Toutefois, il est recommandé de le configurer de manière approprié afin de réduire la surcharge associée sur les serveurs.

Scan en lecture

L'analyse en temps réel rajoute une surcharge parfois non négligeable sur votre serveur. L'une des optimisations possibles consiste à désactiver l'analyse en lecture. Toutefois, la problématique d’une clé USB branchée (ou tout lecteur amovible) sur le serveur demeure. Elle pourrait être la source d’exécution de programmes potentiellement dangereux et ceux-ci ne seraient pas interceptés par l’anti-virus. Il est donc recommandé de ne pas connecter de périphériques externes aux serveurs pour atténuer ce problème.

Scan en écriture

L'une des principales actions pouvant rendre un serveur vulnérable, est l'introduction de logiciels malveillants dans le système. Cette opération est généralement réalisée en copiant le contenu infecté sur le serveur. Effectuer un scan en temps réel des écritures sur le serveur vous aidera à protéger le serveur contre de tels vecteurs d’attaque (intentionnels ou non). Etant donné que les écritures ne sont pas fréquentes dans les dossiers de contenu et les dossiers système, il est recommandé de l'activer sur ces emplacements.

Exclusions

  • Worker processes

Le contenu web est servi par les processus des “Application Pools”. Ils sont appelés “worker processes” (w3wp.exe). Si vous êtes confiant dans le contenu généré par votre code vous pouvez ajouter ces binaires  dans les exclusions de votre antivirus :

    • 64-bit worker process : %SYSTEMROOT%\system32\inetsrv\w3wp.exe
    • 32-bit worker process : %SYSTEMROOT%\SysWOW64\inetsrv\w3wp.exe
  • Fichiers de Log

L’un des répertoires les plus actifs sur un serveur Web d’un point de vue écriture est le répertoire des logs des applications et sites hébérgés sur le serveur. Idéalement, ces emplacements doivent être déplacés sur un disque/partition en dehors du dissque système. Il est d’ailleurs recommandé d’exclure ces répertoire du scan en écriture en temps réel afin de ne pas surcharger inutilement le serveur.

    • Default Logging Location : %SYSTEMDRIVE%\Inetpub\Logs\LogFiles
    • Default FREB Logging Location : %SYSTEMDRIVE%\inetpub\logs\FailedReqLogFiles
    • Default HTTP.SYS Logging Location : %WINDIR%\System32\LogFiles\HTTPERR
  • Temporary Compressed Files

Le répertoire IIS Temporary Compressed Files est constamment utilisé en écriture par le le worker process lors de la gestion du contenu statique. La surcharge engendrée sur le système peut être réduite en excluant les écritures sur ce dossier (en particulier sur un système déjà chargé).

%SYSTEMDRIVE%\Inetpub\temp\IIS Temporary Compressed Files

  • Temporary ASP.NET Files

Lorsque vous utilisez ASP.NET, le dossier “Temporary ASP.NET Files” est utilisé par .NET Framework pour stocker la sortie compilée des pages servies par l'application. En fonction de la configuration de l'application et de son utilisation, ce dossier risque de générer beaucoup de trafic en écriture. La surcharge induite pourrait être réduite en excluant les écritures sur ce répertoire dans la configuration de la solution anti-virus.

    • Default folder for x86 compiled ASP.Net Code : %WINDIR%\Microsoft.NET\Framework\{version}\Temporary ASP.NET Files
    • Default folder for x64 compiled ASP.Net Code : %WINDIR%\Microsoft.NET\Framework64\{version}\Temporary ASP.NET Files
  • Temporary ASP Files

Lors de l’utilisation de code ASP classique (vs. .Net), le répertoire “ASP Compiled Templates” est utilisé pour stocker les pages compilées servies par l’application. En fonction de la configuration de l'application et de son utilisation, ce dossier risque de générer beaucoup de trafic en écriture. La surcharge induite pourrait être réduite en excluant les écritures sur ce répertoire dans la configuration de la solution anti-virus.

    • %SYSTEMDRIVE%\Inetpub\temp\ASP Compiled Templates
  • Répertoires d’installation des binaires IIS

Les binaires IIS binaries sont localisés dans les deux répertoires suivants :

    • 64-bit binaries : %WINDIR%\System32\Inetsrv
    • 32-bit binaries : %WINDIR%\SysWOW64\Inetsrv
  • Répertoire de Configuration IIS

IIS7 + utilise un système de configuration basé sur XML pour stocker les paramètres IIS qui remplace la métabase utilisée dans IIS 6.0 et versions antérieures. Ce nouveau système de configuration a été introduit avec ASP.NET et repose sur un système hiérarchique de système de gestion qui utilise des fichiers * .config. Les fichiers de configuration pour IIS 7 et versions ultérieures se trouvent dans votre dossier% WinDir% \ System32 \ Inetsrv \ Config.

    • %WINDIR%\System32\Inetsrv\Config
  • Schema pour la Configuration IIS

Le schéma des paramètres IIS constitue la base de la configuration d'IIS 7.0. La plupart des propriétés de métabase que vous utilisiez dans les versions précédentes d'IIS ont été converties en éléments ou en attributs dans le schéma.

    • %WINDIR%\System32\Inetsrv\Config\Schema
  • Emplacement du contenu (par défaut)

Par défaut le contenu de vos sites est stocké dans le répertoire ci-dessous (Il est d’ailleurs recommandé de le mettre sur un disque, une paritition ou une LUN dédiée)

    • %SYSTEMDRIVE%\Inetpub\WWWRoot
  • Default History Location

This folder keeps a running history of changes to your configuration files. This history is especially useful for recovering from mistakes made when manually editing your configuration files.

    • %SYSTEMDRIVE%\Inetpub\History
  • Emplacement des backup de configuration (par défaut)

Depuis IIS 7, vous pouvez créer et gérer les sauvegardes de vos configurations en utilisant l’outil Appcmd.exe. Par défault, ces sauvegardes sont stockés dans des sous-répertoires de %SystemDrive%\Inetpub\History.

    • %WINDIR%\System32\Inetsrv\backup
  • Emplacement de l’isolation de configuration (par défaut)

L’isolation des Application Pool est une nouvelle fonctionnalité apparue avec IIS7. Un fichier de configuration dédié à chaque application pool est automatiquement crée lors du démarrage de chaque Application Pool. L’emplacement par défaut de ces fichiers est :

    • %SYSTEMDRIVE%\Inetpub\temp\appPools
  • Répertoires de pages d’erreur (par défaut)

IIS7+ stocke les pages d’erreurs personalisées dans

    • %SYSTEMDRIVE%\Inetpub\custerr

Lectures recommandées

Recommandations d’analyse antivirus pour les ordinateurs d’entreprise qui exécutent des versions de Windows prises en charge

Un fichier de 0 octet peut être renvoyé lorsque la compression est activée sur un serveur qui exécute IIS

Antivirus software may cause IIS to stop unexpectedly


Version française

In the context of IIS audit or IIS RaaS, one of the verification points is the presence of an antivirus and, if applicable, its configuration. This can be a valuable ally in securing your server but can also be your worst enemy in terms of performance.

An inappropriate configuration (often by default) will significantly slow down your IIS server. I propose in this article to list some good practices and see the exclusions to set up to optimize your server. Of course all these recommendations must be put in context and discussed with your security team or CISO

The locations specified here are the default locations (Sometimes it is a best practices to use alternate location : log files, web content …)

Anti-Virus Solution

Anti-Virus solutions can help in preventing malware from infecting web servers, and can also work in a detection and removal mode when appropriate. It is recommended to have an Anti-Virus solution on the production servers to regularly scan the content folders and the system in general, for any malware that might have made it on there. The anti-virus when present, however, needs to be configured carefully so as to avoid adding unnecessary overhead to the system while protecting it. Not having an anti-virus solution altogether, while providing a performance benefit potentially, can also make the web servers susceptible to unknown malware attacks.

Real-time Scanning

Having the antivirus solution monitor the servers in real-time provides for constant protection of the web server from malformed content that might make it to the system by accident or intentionally. However, if and when this is enabled, it is recommended to be configured in a way that reduces the overhead associated with it on the servers.

Read Operation Scan

When real-time scanning is enabled on the web server, care has to be taken to not add overhead to the system due to the scanning operations. One of the optimizations that can be done is to disable reads from being scanned. However, this does entertain the possibility that any removable disk drives attached to the system, can run potentially harmful programs and these would not be caught by the Anti-virus program. It is recommended to not attach external devices to the servers to mitigate this problem.

Write Operation Scan

One of the primary actions that can cause web servers to become vulnerable is the introduction of malware into the system, and that is usually accomplished by copying the infected content to the server. By having an anti-virus scan writes to the server in real-time will help in protecting the server from such attack vectors (intended and unintended). Since writes do not happen frequently on the content folders and system folders, it is recommended to have this turned ON in those locations primarily to protect the server while reducing the overhead involved due to its usage.

Exclusions

  • Worker processes

Your web content is served by the processes of the Application Pools. They are called worker processes (w3wp.exe). If you are confident in the content generated by your code you can add the binaries in the exclusions of your antivirus solution :

    • 64-bit worker process : %SYSTEMROOT%\system32\inetsrv\w3wp.exe
    • 32-bit worker process : %SYSTEMROOT%\SysWOW64\inetsrv\w3wp.exe
  • Log Files

One of the busiest folders on a web server from a write perspective is the log file folder for the applications and sites running on the server. Typically, these locations are recommended to be away from the system drive, so it is recommended to exclude these folders from real-time write scanning to prevent unnecessary overhead on the system while not potentially adding vulnerabilities to it.

    • Default Logging Location : %SYSTEMDRIVE%\Inetpub\Logs\LogFiles
    • Default FREB Logging Location : %SYSTEMDRIVE%\inetpub\logs\FailedReqLogFiles
    • Default HTTP.SYS Logging Location : %WINDIR%\System32\LogFiles\HTTPERR
  • Temporary Compressed Files

IIS Temporary Compressed Files folder on the web server is constantly being written to by the worker process in the process of serving static content. System overhead can be reduced if write actions into this folder are not constantly scanned by the anti-virus solution, especially on a busy system.

    • %SYSTEMDRIVE%\Inetpub\temp\IIS Temporary Compressed Files
  • Temporary ASP.NET Files

When using ASP.NET, the Temporary ASP.NET Files folder is used by the .NET Framework to store the compiled output of the pages that are being served by the application. Depending on how the application is configured, and the usage of the application, this folder would potentially see a lot of write traffic, and it would lessen the overhead on the system if the write actions to this folder are not scanned in real-time by the anti-virus solution.

    • Default folder for x86 compiled ASP.Net Code : %WINDIR%\Microsoft.NET\Framework\{version}\Temporary ASP.NET Files
    • Default folder for x64 compiled ASP.Net Code : %WINDIR%\Microsoft.NET\Framework64\{version}\Temporary ASP.NET Files
  • Temporary ASP Files

When using classic ASP, the ASP Compiled Templates folder is used to store the compiled output of the pages that are being served by the application. Depending on how the application is configured, and the usage of the application, this folder would potentially see a lot of write traffic, and it would lessen the overhead on the system if the write actions to this folder are not scanned in real-time by the anti-virus solution.

    • %SYSTEMDRIVE%\Inetpub\temp\ASP Compiled Templates
  • IIS binaries Installation Folder

All IIS binaries are located in two folders

    • 64-bit binaries : %WINDIR%\System32\Inetsrv
    • 32-bit binaries : %WINDIR%\SysWOW64\Inetsrv
  • IIS Configuration Folder

Internet Information Services (IIS) 7 and later use an XML-based configuration system for storing IIS settings which replaces the metabase that was used in IIS 6.0 and earlier. This new configuration system was introduced with ASP.NET and is based on a hierarchical system of management system that uses *.config files. The configuration files for IIS 7 and later are located in your %WinDir%\System32\Inetsrv\Config folder.

    • %WINDIR%\System32\Inetsrv\Config
  • Schema for the IIS Configuration

The IIS settings schema provides the basis for IIS 7.0 configuration. Most of the metabase properties you used in previous versions of IIS have been converted into elements or attributes in the schema.

    • %WINDIR%\System32\Inetsrv\Config\Schema
  • Default Content Location

By default the web content is stored in the listed folder (it is a best practices to use a dedicated disk/partition/LUN to host the web content)

    • %SYSTEMDRIVE%\Inetpub\WWWRoot
  • Default History Location

This folder keeps a running history of changes to your configuration files. This history is especially useful for recovering from mistakes made when manually editing your configuration files.

    • %SYSTEMDRIVE%\Inetpub\History
  • Default Backup Location

In IIS 7+, you can create and manage configuration backups by using the Appcmd.exe tool. By default, the configuration backups that you create by using the Appcmd.exe tool are located in subfolders in the %SystemDrive%\Inetpub\History directory.

    • %WINDIR%\System32\Inetsrv\backup
  • Default Configuration Isolation Path

AppPool isolation is a new feature in IIS7. A dedicated AppPool configuration file gets automatically created before a new Application Pool is started. The default location of these files is

    • %SYSTEMDRIVE%\Inetpub\temp\appPools
  • Default Folder for Error pages

IIS7+ stores Custom Error Pages in

    • %SYSTEMDRIVE%\Inetpub\custerr

Recommended Reading

Virus scanning recommendations for Enterprise computers that are running currently supported versions of Windows

A 0-byte file may be returned when compression is enabled on a server that is running IIS

Antivirus software may cause IIS to stop unexpectedly

Laurent.