Recommandations de sécurité relatives à un système GNU/Linux, par l’ANSSI

« Des règles de configuration incontournables, recommandées par l’Agence Nationale de la Sécurité des Systèmes d’Information, permettent d’obtenir un système raisonnablement sûr, tout en conservant les fonctionnalités requises, par le respect et l’application de certains principes fondamentaux. »

Elles se répartissent en 2 documents :

  • Recommandations de configuration d’un système GNU/Linux (50 pages, dernière version publiée en janvier 2016)
  • Recommandations de sécurité relatives à un système GNU/Linux (7 pages, publiées en juillet 2012)

FreeIPA : une solution intégrée de gestion des informations de sécurité

« Cette solution combine :

  • une distribution GNU/Linux
  • un serveur LDAP
  • un système d’authentification Kerberos
  • un serveur de temps NTP
  • un serveur de nom DNS
  • des outils d’administration web et ligne de commande
  • un systeme de certification Dogtag
  • une intégration Active Directory
  • un intégration avec les serveurs Weblogic »

Une introduction à l’outil est faite dans GNU/Linux Magazine N°186 (oct 2015) dans l’article « Gestion d’Identité avec FreeIPA » par Fabien Dupont, p39

Exécuter des binaires compilés pour une autre architecture

Besoin de tester les cartes SD ou clés USB de vos environnements embarqués (pour RaspberryPi, OlinuXino, Pogoplug…) depuis votre poste de travail habituel sous GNU/Linux ?

C’est possible.

Pour des binaires « linkés » en statique, ce n’est pas trop compliqué. Il suffit d’installer le paquet « qemu-user-static » et de laisser agir « binfmt-support ».

Pour des binaires « linkés » dynamiquement, ca demande quelques opérations supplémentaires, mais tout est expliqué là, pour Debian GNU/Linux.

Réaliser des opérations sur toutes vos VM (VMWare) GNU/Linux

Vous n’avez pas encore d’outil comme puppet, cfengine, salt & co ? Dommage. Heureusement, vous avez pensé à déployer votre clé publique ssh sur les comptes root de chacune de vos VM GNU/Linux.

« Facile » donc, de réaliser des opérations de masse sur toutes ces machines.

  • 1ere étape, récupérer les couples IP/nom de ces VM (pourquoi pas). Nécessite d’installer la vSphere CLI.
# login administrateur vmware
ADMLOGIN="adm@domain"

# Fichier resultat
FICRES="liste_all_vm_linux.txt"

# dossier temporaire
TMP="/tmp"

# Suppression de la verification SSL qui bloque la commande
export PERL_LWP_SSL_VERIFY_HOSTNAME=0

# Récupération de la liste de toutes les vm avec le SE client (guestFullName...), le nom de vm (vmname), et l'adresse IP
echo "Recupération de la liste des vm. L'operation peut prendre 1 minute..."
/usr/lib/vmware-vcli/apps/vm/vminfo.pl --server host_vsphere --username $ADMLOGIN --fields guestFullName,vmname,ipAddress --out $TMP/liste_vm.xml

# On conserver uniquement les vm Linux et on affiche le nom (sans le commentaire entre parenthese) suivi de son IP
grep -A2 "<guestOS>" $TMP/liste_vm.xml | egrep -A2 -E -i "linux|centos" \
| egrep -E "Name|ipAddress" | sed -n 's#<Name>\([^(]*\).*</Name>#\1#p;s#<ipAddress>\(.*\)</ipAddress>#\1#p' > $TMP/liste_vm.txt

# On reorganise les données : un couple nom vm + IP par ligne
num=0
while read line
do
    if [ "$num" -eq "0" ] 
    then
        echo -n "$line "
        num=1
    else
        echo "$line"
        num=0
    fi
done < $TMP/liste_vm.txt > $FICRES

rm $TMP/liste_vm.xml $TMP/liste_vm.txt

echo "fichier genere : $FICRES"

On obtient un fichier contenant :

mavm001 192.168.1.2
mavm002 192.168.1.3
  • 2e étape, se servir du fichier généré (pour vérifier s’il existe un process « postgres » par exemple)
# Nom du process a chercher
process="[p]ostgres"

# fichier contenant des lignes du type  : mavm001 192.168.1.2
# eventuellement avec quelques "Not known" qui trainent
LISTE="liste_all_vm.txt"

while read line
do
    set -- $line
    name=$1
    ip=$2

    if [ "$ip" != "Not" ]
    then
        echo "################ Traitement $name $ip"
        # Récuperation de la sortie de mount
        PROCESS=$(ssh -oStrictHostKeyChecking=no -n root@$ip "ps aux" | grep -i $process)
        if [ ! "x$PROCESS" == "x" ]
        then
            echo "####### $name $ip"
            echo $PROCESS
        fi
    fi
done < $LISTE