Configuration des politiques de sécurité SELinux

Si la distribution utilisée de UNIX inclut le sous-systeme de sécurité SELinux (ecurity-Enhanced UNIX — UNIX avec la sécurité améliorée), vous devrez probablement configurer les politiques de sécurité de SELinux pour assurer un fonctionnement correct des composants de l’application (par exemple, du moteur de scan) après leur installation.

1. Problèmes d’installation du paquet universel

Si SELinux est activé sous forme d’un paquet universel, l’installation depuis le fichier d’installation (.run) peut échouer parce que la tentative de création de l’utilisateur drweb, sous lequel les composants de Dr.Web pour Linux fonctionnent, peut être bloquée.

Si la tentative d’installer Dr.Web pour Linux depuis le fichier exécutable (.run) a échoué suite à l’impossibilité de créer l’utilisateur drweb, vérifiez le mode de fonctionnement SELinux. Pour ce faire, exécutez la commande getenforce. Cette commande affiche sur l’écran le mode actuel de la protection :

Permissive : la protection est active mais une stratégie permissive est mise en place : les actions qui violent la politique de sécurité ne sont pas rejetées mais les informations sur ces actions sont journalisées.

Enforced : la protection est active et une stratégie restrictive est mise en place : les actions qui violent les politiques de sécurité sont bloquées et les informations sur ces actions sont journalisées.

Désactivé : SELinux est installé mais non actif.

Si SELinux opère en mode Enforced, passez en mode Permissive pour le délai d’installation. Pour cela, exécutez la commande :

# setenforce 0

qui met SELinux temporairement (jusqu’au prochain redémarrage) en mode Permissive.

Notez que quel que soit le mode opératoire autorisé via la commande setenforce, le redémarrage du système d’exploitation replace SELinux dans le mode opératoire indiqué dans les paramètres de SELinux (le fichier des paramètres de SELinux se trouve généralement dans le répertoire /etc/selinux).

Après l’installation réussie de Dr.Web pour Linux depuis un fichier d’installation, activez de nouveau le mode Enforced avant de lancer et activer le produit. Pour ce faire, exécutez la commande :

# setenforce 1

2. Problèmes de fonctionnement de Dr.Web pour Linux

Dans certains cas, lorsque SELinux est activé, certains modules auxiliaires de Dr.Web pour Linux (par exemple drweb-se et drweb-filecheck utilisés par le Scanner et SpIDer Guard) ne peuvent pas démarrer. Si c’est le cas, le scan des objets et la surveillance du système de fichiers deviennent indisponibles. Lorsqu’un module auxiliaire échoue à démarrer, la fenêtre principale de Dr.Web pour Linux affiche des messages sur les erreurs 119 et 120 et des informations sur ces erreurs sont également enregistrées dans le journal système syslog (d’habitude placé dans le répertoire /var/log/).

Les messages de SELinux sont enregistrés dans le journal système d’audit. En général, lorsque le daemon audit est utilisé dans le système, le journal audit se trouve dans le fichier /var/log/audit/audit.log. Sinon, les messages sur les opérations bloquées sont sauvegardés dans le fichier journal général /var/log/messages ou /var/log/syslog.

S’il est déterminé que les modules auxiliaires ne fonctionnent pas car ils sont bloqués par SELinux, compilez pour eux des politiques de sécurité spéciales.

Certaines distributions de UNIX ne fournissent pas les utilitaires mentionnés ci-dessous. Si c’est le cas, vous pouvez avoir besoin de paquets supplémentaires pour ces utilitaires.

Pour créer les politiques requises :

1.Créez un nouveau fichier avec le code source de la politique SELinux (fichier avec l’extension .te). Ce fichier définit les restrictions appliquées au module. Le code source de la politique peut être indiqué d’une des façons suivantes :

1)En utilisant l’utilitaire audit2allow qui est la méthode la plus simple. L’utilitaire génère des règles permissives depuis les messages de déni d’accès dans les fichiers de journaux système. Vous pouvez paramétrer de rechercher les messages automatiquement ou indiquer un chemin vers le fichier de journal manuellement.

Notez que vous pouvez utiliser cette méthode uniquement si les composants de Dr.Web pour Linux ont violé les politiques de sécurité de SELinux et que ces événements sont enregistrés dans le fichier de journal d’audit. Si ce n’est pas le cas, attendez qu’un incident survienne lors du fonctionnement de Dr.Web pour Linux ou créez de force des politiques permissives en utilisant l’utilitaire policygentool (voir ci-dessous).

L’utilitaire audit2allow réside dans le paquet policycoreutils-python ou policycoreutils-devel (pour les systèmes d’exploitation Red Hat Enterprise Linux, CentOS, Fedora en fonction de la version) ou dans le paquet python-sepolgen (pour les OS Debian, Ubuntu).

Exemple de l’utilisation de audit2allow :

# grep drweb-se.real /var/log/audit/audit.log | audit2allow -M drweb-se

Dans l’exemple donné, l’utilitaire audit2allow effectue une recherche dans le fichier audit.log pour trouver les messages de déni d’accès pour le module drweb-se.

Les deux fichiers suivants sont créés : le fichier source de la politique drweb-se.te et le module de la politique drweb-se.pp prêt à l’installation.

Si aucun incident de violation de la sécurité n’est trouvé dans le journal système, l’utilitaire remonte un message d’erreur.

Dans la plupart des cas, vous n’avez pas besoin de modifier le fichier de la politique créé par l’utilitaire audit2allow. Par conséquent, il est recommandé d’aller à l’étape 4 pour installer le module de la politique drweb-se.pp. Notez que l’utilitaire audit2allow affiche l’appel à la commande semodule en tant que résultat de son fonctionnement. En copiant ce qui s’affiche en ligne de commande et en l’exécutant, vous terminez l’étape 4. Allez à l’étape 2 seulement si vous souhaitez modifier les politiques de sécurité qui ont été automatiquement générées pour les composants de Dr.Web pour Linux.

2)En utilisant l’utilitaire policygentool. Pour cela, indiquez le nom du module avec lequel vous souhaitez configurer et le chemin complet vers le fichier exécutable.

Notez que l’utilitaire policygentool, inclus au paquet selinux-policy pour les OS Red Hat Enterprise Linux et CentOS peut ne pas fonctionner correctement. Si c’est le cas, utilisez l’utilitaire audit2allow.

Exemple de création de politique via policygentool :

Pour drweb-se :

# policygentool drweb-se /opt/drweb.com/bin/drweb-se.real

Pour drweb-filecheck :

# policygentool drweb-filecheck /opt/drweb.com/bin/drweb-filecheck.real

Vous serez invité à indiquer plusieurs caractéristiques du domaine commun. Ensuite, trois fichiers déterminant la politique seront créés pour chacun des modules :

<module_name>.te, <module_name>.fc et <module_name>.if.

2.Si nécessaire, modifiez le fichier source de la politique généré <nom_de_module>.te puis utilisez l’utilitaire checkmodule pour créer un mappage binaire du fichier source de la politique locale (fichier .mod).

Notez que pour le fonctionnement réussi de la commande, le paquet checkpolicy doit être installé dans le système.

Exemple d’utilisation :

# checkmodule -M -m -o drweb-se.mod drweb-se.te

3.Créez un module de politique à installer (fichier avec l’extension .pp) avec l’utilitaire semodule_package.

Exemple :

# semodule_package -o drweb-se.pp -m drweb-se.mod

4.Pour installer le module de politique créé, utilisez l’utilitaire semodule.

Exemple :

# semodule -i drweb-se.pp

Pour en savoir plus sur le fonctionnement et la configuration de SELinux, consultez la documentation sur la distribution de UNIX utilisée.