PROJET AUTOBLOG


IT-Connect

Site original : IT-Connect

⇐ retour index

Scan de votre système Unix avec Lynis

vendredi 7 novembre 2014 à 09:00

I. Présentation de Lynis

Il y a quelques jours, je vous présentais LBSA, un script qui permet de détecter des configurations pouvant mettre en danger un système Linux. Aujourd’hui, nous allons voir l’outil Lynis, développé et maintenant par la société CISOfy. Il faut savoir que Lynis est sous licence open source (GPLv3) et est supporté par un grand nombre de distributions UNIX, de Debian, CentOS jusqu’à Mac OS.

Lynis est un outil qui va être très complet et très utile aux équipes d’administration système, il va en effet effectuer plusieurs dizaines de vérifications dans différents domaines du système pour finir par un rapport final ainsi que des suggestions sur la sécurisation du système. Nous allons ici voir l’installation de Lynis sur un système d’exploitation Debian 7 ainsi que son utilisation et l’étude de ses conclusions afin de vous faciliter l’utilisation de cet outil.

II. Téléchargement et installation de Lynis

Nous pouvons installer Lynis de deux façons, soit depuis les dépôts, soit depuis la source sur le site officiel :

 - Installation depuis la source :

On va commencer par aller chercher l’archive de l’outil sur le site de la société qui le développe, sur le lien suivant : http://cisofy.com/downloads/

On va donc récupérer le lien vers l’archive du script puis le télécharger sur le système :

wget http://cisofy.com/files/lynis-1.6.3.tar.gz

On décompresse l’archive :

tar zxvf lynis-1.6.3.tar.gz

Puis on va dans le dossier Lynis dans lequel on mettra les droits d’exécution au script principal, le fichier “Lynis” :

chmod 500 Lynis

On pourra donc utiliser le script depuis le répertoire dans lequel nous venons de le décompresser.

- Installation depuis les dépôts :

Depuis peu, on peut directement installer Lynis depuis les dépôts, ceci est généralement plus rapide d’installation et plus simple d’utilisation après l’installation. Il suffit pour cela, après s’être assuré que nos dépôts sont à jour, d’exécuter la ligne de commande suivante pour installer Lynis :

apt-get install lynis

On pourra alors utiliser la ligne de commande “Lynis” depuis n’importe quel endroit du système comme les commandes habituelles sont Linux. Nous allons maintenant passer à l’utilisation de Lynis.

III. Utilisation de Lynis

L’utilisation de Lynis est plutôt simple par rapport à la grande aide qu’il fournit aux utilisateurs et aux administrateurs système. Il faut savoir que les développeurs de l’outil le mettent régulièrement à jour afin qu’il sache détecter, par exemple, des vulnérabilités récentes. Nous allons donc voir dans un premier temps comment le mettre à jour, c’est une chose à faire avant chaque scan pour que l’outil soit utilisé de façon optimale.

Note : Pour les utilisateurs ayant installé Linux en téléchargeant l’archive et en décompressant son contenu, exécuter toutes les commandes présentées en étant dans le répertoire décompressé de Lynis et en ajoutant “./” avant la commande présentée.

lynis --check-update

Voici le résultat que j’obtiens :

lynis scan linux

Lynis vérifie qu’il est à jour.

Ici, on voit que dans mon cas, les bases de données des malware et des permissions de fichiers (qui sont des références locales sur lesquelles se base Lynis) sont à jour. En revanche le script en lui même ne l’est pas, on peut donc imaginer que les toutes dernières failles de sécurités ne vont pas être détectées sur mon système. Dans ce cas, si on “apt-get update ; apt-get upgrade” ne résout pas l’obsolescence du script, il est préférable de directement télécharger sa dernière version depuis les sources comme indiqué plus haut.

Note : La version de Lynis présente dans les dépôts par défaut de Debian 7 date de 2011, je conseille donc pour une utilisation optimale d’utiliser l’installation via la source en téléchargeant le script sur le site officiel. Cette version à jour sera utilisée pour la suite du tutoriel.

On va ensuite chercher à exécuter une première fois Lynis, pour cela, rien de plus simple que la ligne de commande suivante :

./Lynis -c

L’option “-c” permet d’effectuer la totalité des vérifications contenues dans l’outil Lynis.

Note : Il faut savoir que Lynis n’effectue aucune modification de paramétrage sur le système.

Voici une partie des résultats obtenus. On commence par avoir un état du système actuel :

lynis scan linux

Voici la première partie affichée lors de l’exécution des vérifications Lynis

Parmi les tests effectués, on retrouve par exemple le boot et les services au démarrage, Lynis détecte ici par exemple que la modification du GRUB n’est pas soumise à mot de passe, une astuce dont nous avons déjà parlé sur IT-Connect (mettre un mot de passe au GRUB) !

lynis scan linux

Voici la partie des tests de Lynis qui concerne le boot et les services de démarrage

Voici les vérifications effectuées par Lynis au niveau des utilisateurs, des groupes et du système authentification :

lynis scan linux

Ici, Lynis vérifie les paramétrages et les configurations à propos des utilisateurs et de l’authentification

Lorsqu’il est marqué “SUGGESTION” ou “WARNING”, Lynis développera plus de détail dans le rapport final, pas de panique donc. Voici le scan du service SSH :

lynis scan linux

Lynis vérifie également la configuration SSH du système.

Lynis rapporte ici que l’option “PermitRootLogin” n’est pas configurée et que l’utilisateur root peut se connecter en SSH, ce qui est déconseillé. À la fin de l’analyse, Lynis va donc récapituler les Warnings et les Suggestions détectées sur l’ensemble des vérifications :

lynis scan linux

Résumé des Warnings trouvé par Lynis sur mon système

Ici, on voit par exemple que Lynis a détecté que mon système était vulnérable à la faille ShellShock qui est une faille récente (à la date d’écriture de cet article), on peut également voir “Root can directly login via SSH“, ce qui se réfère à la détection du “PermitRootLogin” vu plus haut… On pourra donc ensuite trouver des suggestions que Lynis va nous faire pour améliorer la sécurité de notre système :

lynis scan linux

Suggestions faites par Lynis pour améliorer la sécurité de mon système après analyse.

On voit par exemple que Lynis nous suggère de mettre en place un umask plus strict dans le fichier /etc/login.defs, astuce également développée sur IT-Connect (Gestion de l’umask)

Note : ce rapport final pour être retrouvé dans le dossier /var/log/lynis-report.dat

Il est également intéressant de savoir que l’on peut tout à fait n’effectuer qu’un ou plusieurs tests et non la totalité de ceux-ci en utilisant la syntaxe suivante à la suite de notre ligne de commande :

--tests "<tests>"             : N'exécute que les tests indiqués
    --tests-category "<category>" : N'exécute que les tests des catégories indiquées

Lynis est un outil intéressant car il permet d’avoir un état des lieux de la sécurité d’une machine. Il ne faut néanmoins par oublier que ces tests ne sont pas exhaustifs et que ce n’est pas parce que Lynis ne détecte pas de défaut que le système est à 100% sécurisé. Il ne s’agit là donc uniquement d’un outil d’aide à la sécurisation d’un système.

IV. Plannification de l’exécution Lynis

Lynis prévoit également la possibilité de faire exécuter ses vérifications par une tâche planifiée. Il existe en effet l’option “–cronjob” qui va exécuter l’intégralité des tests de Lynis sans besoin de validation ou d’action utilisateur. On peut alors très simplement créer un script qui va lancer Lynis et mettre la sortie dans un fichier horodaté et avec le nom du serveur en question. Voici un fichier de ce type que vous pourrez mettre dans le dossier /etc/cron.daily :

#!/bin/sh
mkdir /var/log/lynis
NOM_AUDITEUR="tache_crontab"
DATE=$(date +%Y%m%d)
HOTE=$(hostname)
LOG_DIR="/var/log/Lynis"
RAPPORT="$LOG_DIR/rapport-${HOTE}.${DATE}"
DATA="$LOG_DIR/rapport-data-${HOTE}.${DATE}.txt"

cd /root/Lynis./Lynis -c --auditor "${NOM_AUDITEUR}" --cronjob > ${RAPPORT}
mv /var/log/lynis-report.dat ${DATA}

La variable “NOM_AUDITEUR” est simplement une variable que l’on va mettre en l’option “–auditor” de Lynis afin que ce nom soit affiché dans le rapport :

lynis scan linux

Nous voyons ici le nom de l’auditeur dans le rapport Lynis comme précisé dans le script.

On va également créer quelques variable contextuelles qui vont permettre de mieux nous organiser comme le nom de l’hôte et la date pour nommer le rapport et l’horodater ainsi que le chemin vers le dossier dans lequel nous souhaitons mettre nos rapports.

 

Microsoft Office Mobile gratuit sur Android et iOS

jeudi 6 novembre 2014 à 16:12

Beaucoup d’utilisateurs vont avoir le sourire en ce jeudi après-midi ! Microsoft a annoncé qu’Office était maintenant gratuit sur Android et iOS (pas sur PC, ne rêvez pas non plus…). De ce fait, il n’est plus nécessaire de souscrire à un abonnement Office 365 pour profiter de la suite bureautique.

Gratuit pour les particuliers

logo-office4L’édition et le stockage dans le Cloud des documents se feront désormais gratuitement ! Pour le stockage, vous pouvez opter pour OneDrive mais aussi pour Dropbox qui a signé un accord avec Microsoft hier.

Les particuliers peuvent bénéficier gratuitement d’Office, néanmoins la version business demande toujours quelques euros pour fonctionner.

Dans le même temps, Microsoft annonce l’arrivée d’une version destinée aux iPhone (iOS 7 minimum), elle-même basée sur la version iPad d’Office.

WireLurker : Un malware infecte les Mac et ensuite les iPhone par USB

jeudi 6 novembre 2014 à 14:26

Un nouveau malware, nommé WireLurker, cible les utilisateurs de Mac et les périphériques mobiles Apple. Actuellement, le malware vise les utilisateurs chinois.

D’après les chercheurs en sécurité de chez Palo Alto, le malware a infecté par moins de 467 applications pour Mac OS X ! Elles sont délivrées par un store d’applications, alternatif, nommé Maiyadi App Store.

Au cours des six derniers mois, ces applications ont été téléchargées plus de 356 104 fois. De ce fait, des centaines de milliers de Mac pourraient être infectés.

Le malware s’attaque aux périphériques iOS !

En fait, si vous connectez un périphérique sous iOS à votre Mac infecté, par exemple un iPhone, ce dernier sera lui aussi infecté !  En fait, WireLurker vérifie sans cesse la présence d’un périphérique USB sur votre Mac pour être prêt à l’infecter.

logo-apple4D’après les chercheurs en sécurité, le malware installe des applications malicieuses sur l’appareil infecté (iPhone). De plus, toutes les données de votre téléphone deviennent accessibles : du carnet d’adresses à iMessage. Mais, curieusement, jusqu’à présent le malware n’a pas été utilisé pour exploiter le dispositif d’une personne… “Il se pourrait qu’il se tienne prêt à réaliser une attaque“.

Rappelez-vous que ce malware est très axé sur la Chine pour l’instant, donc il n’y a pas de raison de se soucier d’une infection. De son côté, Apple travaille actuellement sur un patch pour corriger cette vulnérabilité, mais on ne sait pas quand le correctif sera prêt.

Source

Qu’importe le flacon pourvu qu’on ait l’ivresse !

jeudi 6 novembre 2014 à 14:00

Sans vouloir plagier Alfred de Musset, le titre de ce billet est éminemment technologique…

Un rapport avec le « big data » ? Peut-être… Un rapport avec « Siri », « Google now » ou « Cortana » , respectivement les assistants vocaux de Apple IOS, Google Android et MS Windows Phone ? Là aussi…peut-être…

Et si le poste de travail de demain se limitait à un écran noir, avec un curseur en haut et gauche qui clignote et…c’est tout ! Tiens, cela me rappelle quelque chose…

Je tape : « Bonjour », l’écran me réponds « Bonjour, veuillez vous identifier…»… Je m’identifie…et l’écran me donne les résultats de la veille de mon entreprise, mon agenda du jour, la météo, la liste des tâches que je dois finir aujourd’hui, les actualités du jour en fonction de mes centres d’intérêts ou de ceux de ma société, une revue de presse…etc…

Mieux, je tape « Madrid » et l’écran me propose :

Vous allez me dire, oui mais tout cela existe déjà non ? Certes mais est-ce toujours si facilement accessible que cela ?

Ai-je besoin d’une souris ? Ai-je besoin d’un clavier ? Euh…à priori non… Des applications qui « comprennent » les instructions verbales existent déjà… Là où cela se gâte encore un peu c’est quand il s’agit de nous lire, à haute et intelligible voix, le résultat… Nous en sommes encore à une voix encore peu chaleureuse mais je ne doute pas un seul instant que ce « défaut » soit totalement gommé dans les années à venir.

Mais quel rapport avec notre métier qui consiste à développer des applications pour l’entreprise, pour un « métier » ?

La réponse est toute simple : pourquoi ne pas appliquer, dans nos entreprises, ces méthodes qui ont abouties à l’avènement des technologies de l’information ?

Prenons un exemple : une application de gestion commerciale... Pourquoi les écrans sont si compliqués et les formulaires si nombreux alors que la clef de recherche numéro 1 est le nom du client ? Ne pourrai-je pas être en face d’un seul écran, ne comprenant qu’un seul champ de saisie où je pourrai saisir simplement le nom d’un client ? En quelques millièmes de secondes il serait très facile d’afficher et de proposer :

Et si je saisi un nom de client mal orthographié (ex. « dupont » ou « Du Pont » au lieu de « Établissements Dupond S.A» n’est-il pas possible de me proposer des noms approchants ?

Et si dans ce même écran, ce même champ, je saisi un numéro de commande, ne pourrai-je pas tomber directement sur la commande en question ? Idem pour un no de bon de livraison ?

Et si dans ce même écran, ce même champ, je saisi le nom d’une personne, ne pourrai-je pas tomber directement sur une liste de contacts correspondant à mes clients ? Idem pour un no de téléphone ou une adresse mail ?

Toutes ces données sont présentes dans nos systèmes d’informations, toutes les technologies sont accessibles pour développer de telles applications à moindre frais, toute la puissance de calcul est accessible pour répondre à ce genre de requêtes en quelques millièmes de secondes…

Pas besoin de chichis et d’icônes dans tous les sens pour faire tout cela, pas besoin de charte graphique, pas besoin de “Flash” pour créer des animations, pas besoin de formation pour les utilisateurs, juste des infos, accessibles très rapidement et très simplement, à partir d’un seul champ, d’une seule « question », voire d’un seul mot… Eh, c’ est pas du bonheur çà ?

Plus concrètement, on assiste aujourd’hui à une simplification massive des interfaces utilisateurs, d’une part parce que cela devient de plus en plus compliqué (donc cher) de faire des interfaces graphiques complexes, qui s’adaptent à tous types de postes de travail (plusieurs OS, plusieurs tailles d’écrans, plusieurs « devices », plusieurs navigateurs, plusieurs capacités de bande passante) alors que la seule chose réclamée par nos utilisateurs c’est de l’info et de la « bonne » !

Bien évidement, cela ne s’applique pas, ou moins bien, aux interfaces dédiés à la saisie massive de données mais réfléchissez-y bien avant de vous lancer dans de nouveaux développements car on crée, en général, beaucoup plus d’interfaces pour restituer de la donnée que pour en créer !

Qu’importe le flacon pourvu qu’on ait l’ivresse …des données !

PowerShell et Active Directory : Modifier le domaine des adresses mails

jeudi 6 novembre 2014 à 10:45

I. Présentation

logo-mail1Récemment, j’ai eu la nécessité de modifier l’ensemble des adresses e-mail des utilisateurs de l’Active Directory, ceci dans le but de changer le domaine présent dans l’adresse e-mail. Par exemple, on imagine passer toutes les adresses nom-utilisateur@entreprise.fr en nom-utilisateur@societe.fr.

Je n’étais pas très motivé à l’idée de modifier cela au sein de plusieurs centaines de comptes utilisateurs… J’ai donc créé un script en PowerShell qui allait travailler pour moi. Cela permet aussi de faire un one shot lors de la migration plutôt qu’au cas par cas.

Ce script est fonctionnel, testé dans un environnement de production.

II. Le script PowerShell

Le script en lui-même n’est pas très long, mais, j’ai ajouté des commentaires pour qu’il soit compréhensible plus facilement et adaptable grâce aux trois variables :

# Chargement du module PowerShell pour Active Directory
Import-Module ActiveDirectory

# Définir le domaine actuel (DomainOld) et le domaine nouveau (DomainNew)
$DomainOld = "neoflow.fr"
$DomainNew = "it-connect.fr"

# Définir la base dans l'annuaire
$Base = "OU=Collaborateurs,DC=it-connect,DC=fr"

### PHASE DE MODIFICATION DES ADRESSES MAILS
# Lister les utilisateurs de l'annuaire (avec le champ mail compris)
Get-ADUser -Filter * -Properties mail -SearchBase $Base  | foreach{
    # Si l'adresse email n'est pas null, on peut changer le domaine
    if  ($_.mail -ne $null){    

        # Définir la variable $MailNew qui est égal à l'adresse email actuelle de l'utilisateur
        # dans laquelle on remplace le domaine actuel par le domaine nouveau.
        $MailNew = ($_.mail).Replace("$DomainOld","$DomainNew")

        # Pour chaque utilisateur qui dispose d'une adresse email
        # On définit une nouvelle adresse email égale à $MailNew
        Set-ADUser -Identity $_.DistinguishedName -EmailAddress $MailNew
    }
}

### PHASE DE CONTROLE DES CHANGEMENTS
# Lister les utilisateurs de l'annuaire (avec le champ mail compris)
Get-ADUser -Filter * -Properties mail -SearchBase $Base | foreach{

        # Si la valeur Active Directory pour le champ mail contient la valeur du nouveau domaine (DomainNew)
        # Cela signifie que l'adresse est bien changée dans l'annuaire -> On affiche un message OK
        if ($_.mail -match $DomainNew){
           Write-Host $_.Name ": Bascule de l'adresse -->" $_.mail ": OK" -ForegroundColor Green
        # Si l'adresse mail est différente : 
        }else{
           Write-Host $_.Name ": Pas d'adresse / Adresse différente de" $DomainOld "("$_.mail")" -ForegroundColor Red
        }
}

Lorsque l’on exécutera le script, un résultat sera affiché pour chaque utilisateur.

Nom Prénom : Bascule de l’adresse –> nom@it-connect.fr : OK

Nom Prénom : Pas d’adresse / Adresse différente de it-connect.fr ( )

Nom Prénom : Pas d’adresse / Adresse différente de it-connect.fr (nom@123.fr)

En fait, si l’utilisateur est un cas particulier est que son adresse e-mail n’a rien à voir avec votre entreprise, par exemple @123.fr dans ce cas le changement ne sera pas effectué. Pourtant ce n’est pas une erreur en soi, mais c’est toujours intéressant de le préciser dans les résultats. Il en est de même pour un utilisateur qui n’a pas d’adresse mail, le résultat sera également logique dans ce cas.

Ce script n’est sûrement pas parfait, mais il fonctionne ! Si vous avez des améliorations à proposer ou des questions, n’hésitez pas à laisser un commentaire.