MASP - Multiple Antivirus Scanner Platform

1. Introduction

Le projet MASP vient d'une problématique simple mais souvent rencontrée dans les entreprises possédant plusieurs réseaux dont un connecté à Internet (Internet et réseau de développement ou Internet et réseau classifié par exemple)

La problématique est simple : Comment garder un bon niveau de sécurité tout en faisant transiter des données entre les réseaux ?

Le moyen retenu pour le projet MASP est la mise en place d'une machine blanche permettant d'effectuer une batterie de test antivirus sur un périphérique donné.

Le projet s'articule autour des technologies suivantes : CentOS 6.5, Apache, PostgreSQL, Python, Bash et PHP

Le script d'installation permet de :

  • Durcir le système
  • Installer les différents antivirus
  • Installer et configurer Apache, PostgreSQL et PHP
  • Configurer l'ensemble des scripts python MASP


2. Installation du système

2.1 Durcissement du système


Les installations par défaut ne sont pas connues pour leur robustesse en terme de sécurité.
Le guide de la NSA : Guide to the Secure Configuration of Red Hat Enterprise Linux 5 est une excellente base de travail pour les distributions de type Red Hat / CentOS.

Même si les 200 pages sont extrêmement intéressantes, le script d'installation comporte une partie intégralement dédiée au renforcement de la sécurité du système

La partie ci-dessous permet de désactiver l'auto montage d'un périphérique monté sur notre système nous permettant ainsi de pouvoir le monter avec les paramètres que nous souhaitons (read only of course) :

								chkconfig autofs off
								gconftool-2 --type bool --set /apps/nautilus/preferences/media_automount False
								gconftool-2 --type bool --set /apps/nautilus/preferences/media_automount_open False

Certaines actions permettant le renforcement de la sécurité du système d'information ne seront pas détaillées, en voici une partie :

  • Protéger l'accès physique à la machine (Mot de passe BIOS, Mot de passe du BootLoader (Points 2.3.5.1 et 2.3.5.2))
  • Restriction des options de montage des partitions (Point 2.2.1)
  • Installer AIDE permettant de vérifier l'intégrité du système (Point 2.1.3)
  • Choix d'un mot de passe root suffisamment "fort"
  • Attribuer une adresse IP statique
  • Etc.

Afin de limiter au maximum les interactions utilisateurs sur la machine, il est également possible de créer une borne Interne empêchant l'utilisateur d'utiliser quoi que ce soit d'autre qu'un navigateur.

2.2 Installation des antivirus

L'installation des antivirus ne sera pas détaillée. Pour plus d'informations, il est possible de se référer au scipt d'installation

2.3 Installation d'Apache, PostgreSQL et PHP

De la même manière que les antivirus, l'installation du serveur Apache, de la base de données PostgreSQL et le langage de programmation PHP est entièrement disponible dans le script d'installation


3. Présentation de la base de données

Afin de pouvoir mieux appréhender la suite du projet, voici un schéma de la base de données ainsi que quelques explications :

MASP - Schéma de la base de données

Antivirus

  • antivir_name : Nom de l'antivirus
  • antivir_display_name : Nom affichable de l'antivirus
  • antivir_enable : Antivirus activé ou désactivé
  • antivir_version : Version de l'antivirus
  • antivir_cmd_line : Ligne de commande pour effectuer un scan
  • antivir_update_cmd_line : Ligne de commande pour effectuer une mise à jour

Notifications

  • notif_id : Id de la notification
  • notif_type : Type de la notification (antivirus ou système)
  • notif_msg : Message
  • notif_date : Date de notification

Users

  • user_id : Id de l'utilisateur
  • user_username : Nom d'utilisateur
  • user_password : Mot de passe

Voici le fichier sql (Le mot de passe du compte admin est "admin")


4. Mise à jour des antivirus

Une "bonne" protection se doit de passer par des antivirus à jour.

Le script masp_update permet :

  • de mettre à jour le gestionnaire de paquet CentOS (Yum),
  • de mettre à jour les antivirus (paramètre antivir_update_cmd_line)

L'ensemble de ces actions sera exécuté quotidiennement grâce au dossier /etc/cron.daily/


5. Exécution des antivirus

Afin que les scans se lancent lors de l'insertion d'un périphérique USB, nous allons créer le fichier /etc/udev/rules.d/10-local.rules contenant la ligne suivante :

KERNEL=="sd[a-z]1", BUS=="usb", SUBSYSTEM="block", ACTION=="add", RUN+="/root/masp/masp_execute.py"

Ne pas oublier de fournir les bons droits à l'ensemble des fichiers

								chmod 644 /etc/udev/rules.d/10-local.rules
								chown root:root /etc/udev/rules.d/10-local.rules
								chmod +x /root/masp/masp_execute.py

Le script masp_execute permet de réaliser les actions suivantes :

  • Monter le périphérique en mode read-only
  • Récupération dans la base de données de l'ensemble des antivirus actifs
  • Exécution de chacun des antivirus sur le périphérique préalablement monté
  • Démontage du périphérique et lancement du script permettant de parser les résultats
  • Ouverture d'un navigateur grâce au module python webbrowser afin d'afficher les résultats à l'utilisateur

Le script masp_parse permet de parser l'ensemble des résultats et de créer un fichier XML présenté sur un navigateur

Afin de fermer le navigateur lorsque l'utilisateur retire sa clé les scans se lancent lors de l'insertion d'un périphérique USB, nous allons créer le fichier /etc/udev/rules.d/10-local.rules contenant la ligne suivante :

KERNEL=="sd[a-z]1", BUS=="usb", SUBSYSTEM="block", ACTION=="add", RUN+="/root/masp/masp_execute.py"


6. Présentation de l'interface

Le navigateur sera automatiquement ouvert lors de l'insertion de la clé et l'ensemble des étapes va se dérouler

Etape 1 : Affichage des informations système MASP - Etape 1 : Affichage des informations système

Etape 2 : Affichage des éléments présents sur le périphérique MASP - Etape 2 : Affichage des éléments sur le périphérique

Etape 3 : Exécution des scans MASP - Etape 3 : Exécution des scans

Etape 4 : Affichage des résultats MASP - Etape 4 : Affichage des résultats


7. Présentation de l'interface admin

Voici une présentation de l'interface d'administration de MASP.

Accueil MASP - Accueil

Gestion des antivirus MASP - Gestion des antivirus
MASP - Gestion des antivirus

Gestion des utiisateurs MASP - Gestion des utiisateurs


8. Conclusion

Le projet MASP répond à une problématique sérieuse en terme de sécurité des systèmes d'information et reste complètement évolutif.

Sur un réseau interdisant totalement l'utilisation de clé USB, il est possible d'imaginer qu'après une analyse négative d'un périphérique USB, les éléments sur le périphérique pourrait être copié sur l'un des réseaux en question via une diode (To be continued ...)

Si vous voyez des améliorations, des corrections ou si vous avez des questions, n'hésitez pas à me contacter

La totalité de projet est téléchargeable ici.