dimanche 12 juin 2011

Gérer les logs de vos serveurs à moindre coût!

Cela fait plusieurs mois que je songe à faire un article sur la gestion des logs. J’ai mis en place, dans un passé très récent, un petit outil de centralisation des logs de serveurs pour pouvoir générer quelques statistiques sur l’utilisation de services “web” et autres évènements de l’”EventViewer” dans un environnement Windows. Pour cela j’ai utilisé une application gratuite appelé LogParser.

Je pensais que cette problématique de gestion de logs à moindre coût était simplement une préoccupation de “geek”. Et bien non, lors d’une réunion récente avec le TOP 10 des RSSI français (selon mes critères à moi ;-)), j’ai constaté qu’il pouvait finalement être intéressant de partager ce type information.

LogParser est à la base un outil de gestion des logs utilisables en ligne de commande. Mais on trouve aussi LogParserLizard qui permet de faire les mêmes opérations avec une interface graphique qui facilite grandement la vie.

J’ai utilisé la version gratuite de LogParserLizard. Cette version est bien sûr quelque peu limitée. Cependant vous pouvez définir vos requêtes de récupérations de logs sur le serveur local ou sur des serveurs distants, les sauvegarder et les exécuter. Mais vous êtes limité lors de l’exploration des données récupérées pour les intégrer dans vos rapports. Je n’ai personnellement utilisé uniquement que le format “csv”.

Après avoir installé LogParser puis LogParserLizard et lancer LogParserLizard, vous pouvez créer vos premières requêtes (au format SQL).

ScreenShot116

Voici l’exemple d’une requête qui récupère des données dans les fichiers de log d’IIS pour extraire le nombre de connexions par utilisateur d’un site web:

SELECT DISTINCT cs-username, count(cs-username) AS Number
FROM
\\mon_serveur.com\C$\WINDOWS\system32\LogFiles\W3SVC1\ex*.log WHERE cs-username LIKE 'MON_DOMAIN%' AND cs-uri-stem LIKE '/mon_site%' GROUP BY cs-username ORDER BY Number

Les fichiers en entrée de la requête sont de la forme “ex*.log”. Le site “web” qui nous intéresse contient dans son URL le mot clef “mon_site”. Le serveur sur lequel fonctionne IIS se nomme “mon_serveur.com”. Les utilisateurs appartiennent au domaine “MON_DOMAINE”.

Les résultats sont triés par nombre de connexions décroissants.

ScreenShot117blur

Si vous connaissez ne serait-ce qu’un peu SQL, la création de ce type de requêtes ne présente pas de difficulté (les spécialistes pourront par ailleurs améliorer la requête ci-dessus). Il est par contre nécessaire de configurer les informations que vous souhaitez qu’IIS enregistre dans ces fichiers “log” et de connaitre les noms des champs correspondants aux informations qui vous intéressent.

Voici l’exemple d’une autre requête dans l’EventViewer de Windows qui permet de récupérer des informations sur les opérations effectuées sur un service Windows particulier:

SELECT TimeGenerated, Strings FROM Application WHERE EventID=16666 AND SourceName='Mon_Service' ORDER BY Strings

L’EventViewer tourne sur le serveur en local. L’identifiant de l’évènement est 166666. Le nom de l’application est “Mon_Service”. Il est nécessaire de connaitre les noms des champs de l’EventViewer pour paramétrer correctement la requête.

Les résultats sont ordonnés en fonction de la valeur du champ “Strings”.

Remarque: les requêtes peuvent être exporter et importer.

Une fois les requêtes crées, vous pouvez récupérer vos résultats et générer le rapport. Voici une liste d’actions étape par étape qu’il est possible de réaliser:

  1. Sélectionner "IIS Logs"
  2. Sélectionner "Liste des utilisateurs de mon_site sur un serveur distant"
  3. Lancer Query
  4. Sélectionner "Tools/Log Parser Export..."
  5. Exporter au format = “Comma Separated Values"
  6. Sélectionner Path: mon_site_utilisateurs.prn
  7. Sélectionner "Event Logs"
  8. Sélectionner "Liste des utilisateurs du service mon_service"
  9. Lancer Query

ScreenShot119blur

  1. Sélectionner "Tools/Log Parser Export..."
  2. Exporter au format = “Comma Separated Values"
  3. Sélectionner Path: “mon_service_utilisateurs.prn”
  4. Intégrer les fichiers dans un fichier “Excel” (“Resultats.xlsx”)
  5. Générer le rapport

Remarque: si une erreur se produit pendant la génération du fichier “prn” et que ce message est suivi par un message de succès, alors le résultat est bon

Est-il nécessaire de rappeler qu’une bonne gestion des logs fait partie intégrante de la sécurité de vos systèmes?

samedi 11 juin 2011

Protégeons nos chères têtes blondes des dangers d’internet

Si vous souhaitez filtrer les informations auxquelles vos enfants accèdent sur internet, il existe aujourd’hui un nombre grandissant de solutions efficaces (parmi elles on trouve Microsoft Windows Live Family Safety ou les outils du contrôle parental intégré à Windows 7).

L’avantage de la solution décrite ici est de pouvoir être mise en œuvre soit par un particulier souhaitant centraliser le filtrage des contenus auxquels accèdent les membres de sa famille, soit par une entreprise souhaitant faire la même chose pour ses employés, et ce à moindre coût.

Cette solution est basée sur des solutions “opensource” tels que Squid et DansGuardian et est installée sur un serveur Ubuntu 10.10.

Pour information l’éducation nationale semblerait vouloir mettre en œuvre ce type de solution pour gérer leur parc d’ordinateurs accessibles par les élèves des écoles maternelles et primaires (pour plus d’informations vous pouvez lire l’excellent article de Fabrice Flauss et Cédric Foll du numéro 51 de MISC).

Après avoir installé Ubuntu sur un de mes vieux serveurs, il est nécessaire d’installer et de configurer Squid et DansGuardian.


Installer et configurer Squid

On installe Squid:

sudo apt-get install squid

On édite le fichier de configuration de Squid:

sudo nano /etc/squid/squid.conf

On modifie le port de Squid (Squid joue le rôle de serveur mandataire entre les utilisateurs et internet)

http_port 3128

On recharge la configuration de Squid:

sudo /etc/init.d/squid reload


Installer et configurer DansGuardian

On installe DansGuardian:

sudo apt-get install dansguardian

On édite le fichier de configuration de DansGuardian:

sudo nano /etc/dansguardian/dansguardian.conf

Screenshot

On modifie les paramètres ci-dessous:

language = 'french'
filterip = x.x.x.x
filterport = 8080
proxyip = 127.0.0.1
proxyport = 3128
#contentscanner= '/etc/dansguardian/contentscanners/clamdscan.conf’

L’option “language” permet de définir la page d’erreur affichée dans le browser de l’utilisateur lorsque le contenu n’est pas autorisé.

Cette page par défaut peut être adaptée suivant vos besoins via:

sudo nano /etc/dansguardian/languages/french/template.html

Les options "filterip" and "filterport" définissent respectivement, l’adresse IP et le port du serveur proxy. Positionnez “filterip” à la valeur de l’adresse IP de votre machine sur votre LAN, et “filterport” à la valeur du port que vous souhaitez avoir pour votre proxy; une bonne valeur par défaut est 8080.

L’option "proxyip" correspond à l’adresse IP du serveur proxy Squid et "proxyport" est le port d’écoute de Squid.

La ligne "contentscanner" reste en commentaire tant que l’on ne souhaite pas utiliser l’antivirus clamAV pour scanner les requêtes HTTP.

On redémarre DansGuardian:

sudo /etc/init.d/dansguardian restart

Maintenant, si vous souhaitez sécuriser Squid et interdire à vos utilisateurs de contourner DansGuardian vous pouvez utiliser les commandes suivantes:

sudo ufw default DENY # on interdit tout
sudo ufw ALLOW 8080 # on autorise seulement le port 8080
sudo ufw enable # on active le firewall


Remarque: n’utilisez pas les commandes ci-dessus si votre firewall est déjà configuré! Cela pourrait faire des dégâts sur votre configuration courante!

Il est ensuite nécessaire de configurer votre nouveau proxy dans les browsers de vos machines clientes (adresse IP du proxy X.X.X.X et port du proxy 8080). C’est la manière la plus simple de mettre en, œuvre votre filtrage. Il en existe d’autres plus proches d’un déploiement réel utilisant WPAD par exemple mais ce sujet pourra être traité dans un prochain article).

Et voilà! Si vous saisissez un mot clef interdit dans votre moteur de recherche préféré, vous êtes automatiquement redirigé vers la page par défaut de DansGuardian.

Screenshot_New1

Vous pouvez jouer avec les fichiers contenant les informations permettant de filtrer le contenu des pages web. Vous trouverez ces fichiers sous “/etc/dansguardian/lists”.

Screenshot-1

En parcourant ces fichiers vous aurez une idée précise de tout ce qu’il est possible de faire avec DansGuardian: être plus ou moins permissif, ajouter des mots clefs interdits ou des URLs interdites.

Screenshot-2

Il est également possible de configurer votre serveur avec 2 cartes réseaux pour créer 2 sous-réseaux: le premier sur lequel se trouve l’accès à internet et le second sur lequel se trouvent les postes à filtrer.

Dans un prochain article nous verrons comment scanner le contenu HTTP avec l’antivirus ClamAV.

Source: Squid Proxy Server On Ubuntu 9.04 Server With DansGuardian

Partager avec...