UP | HOME
LPASRSI

Modules « Système Linux »

Vacations en licence professionnelle « Audit et Sécurité des Réseaux et Systèmes d'Information » à l'antenne de Ifs du pôle de Caen de l'IUT Grand Ouest Normandie


M62 : Sécurité Linux « avancée » — Travaux pratiques

Travaux SELinux

Pré-requis :

  • Activer selinux : setenforce 1
  • Arrêter et désactiver le parefeu :
    • systemctl stop firewalld
    • systemctl disable firewalld

Politique

  • Consulter le fichier de configuration principale
  • SELinux est-il activé ? Si oui, quelle type de politique est appliquée ?
  • Vérifier avec les commandes getenforce et sestatus
  • Explorer les fichiers de la politique
  • Où sont stockés ces fichiers ?

Mauvaise étiquette

  1. Créer un fichier /var/www/html/index.html
  2. Vérifier son contexte de sécurité (étiquette)
  3. Quelle ligne de commande avez-vous utilisée ?
  4. Créer un fichier ~/toto.html, le déplacer dans /var/www/html
  5. Essayer d’accéder à http://<IP_du_serveur>/toto.html
  6. Analyser le contenu du journal d’audit avec audit2why
  7. Quelle ligne de commande avez-vous utilisée ?
  8. Modifier le contexte du fichier toto.html avec la commande chcon, vérifier
  9. Quelle ligne de commande avez-vous utilisée ?
  10. Recommencer l’étape 5
  11. Recommencer les étapes 4 et 5
  12. Restaurer le contexte du répertoire /var/www avec la commande restorecon, vérifier
  13. Quelle ligne de commande avez-vous utilisée ?

Booléens

  1. Créer un utilisateur toto
  2. Modifier la configuration d’apache pour autoriser le répertoire de publication de cet utilisateur (public_html)
  3. Créer un répertoire /home/toto/public_html
  4. Y créer un fichier index.html
  5. Vérifier le contexte de sécurité avec getfattr
  6. Quelle ligne de commande avez-vous utilisée ?
  7. Essayer d’accéder à http://<IP_du_serveur>/~toto/
  8. Décoder le message du journal d’audit
  9. Rechercher une solution définitive utilisant les booléens
  10. Quelle ligne de commande avez-vous utilisée ?

Port non standard

  1. Installer setroubleshoot-server
  2. Configurer ssh pour utiliser le port 1337
  3. Redémarrer le service
  4. Que se passe-t-il ?
  5. Chercher une solution définitive utilisant la commande semanage port
  6. Vérifier
  7. Quelle ligne de commande avez-vous utilisée ?
  8. Lancer la commande sealert -a /var/log/audit/audit.log
  9. Expliquer les résultats fournis par cet utilitaire, les différences entre les informations fournies par les plugins en particulier
  10. Utiliser les commandes fournies par le plugin catchall
  11. Que contiennent les fichiers générés ?
  12. Que signifie l’extension du fichier ascii ?

Travaux Netfilter

Filtrage IP

Suite à la modification du port utilisé par le serveur SSH, le parefeu a très probablement été arrêté (systemctl stop firewalld), voire désactivé (systemctl disable firewalld).

Afin de pouvoir réactiver ce parefeu, il faut autoriser le « nouveau » flux. Pour cela il faut commencer par :

  1. Spécifier en termes réseau les paquets reçus par le serveur SSH :
    • interface d’entrée,
    • protocole de transport,
    • adresses source et destination,
    • ports source et destination.
  2. Traduire cette spécification en règle nft

Pour la mise en œuvre de cette règle :

  1. Reconfigurer SSH pour qu’il écoute le port 22 et se connecter sur ce port,
  2. Redémarrer le parefeu (systemctl start firewalld),

Utilisation de la commande nft :

  1. Lister l’ensemble des règles (ruleset). Quelle commande avez-vous utilisé ?
  2. Lister l’ensemble des tables. Quelles sont celles liées à firewalld ? Quelle commande avez-vous utilisé ? (grep ?)
  3. Lister les tables relatives à firewalld. Quelle commande avez-vous utilisé ? Observer le nom des chaînes. Que constatez-vous ?
  4. Lister les chaînes de la table inet firewalld.
  5. Vérifier les règles de la chaîne filter_INPUT dans la table inet firewalld avec l’option -a :
    • Quelle commande avez-vous utilisé ?
    • Que signifie ct state { established, related } ?
    • Que fait la dernière ligne de cette chaîne ? Quels paquets concerne-t-elle ?
  6. Examiner les directives goto de la table inet firewalld et établir « l’arborescence » des chaînes de cette table.

Modifications des règles :

  1. Insérer la règle requise dans la chaîne filter_IN_public_allow. Quelle commande avez-vous utilisée ?
  2. Reconfigurer SSH pour qu’il écoute sur les ports 1337 et 22.
  3. Vérifier le bon fonctionnement du service en ouvrant une nouvelle connexion sur le serveur.
  4. Redémarrer le firewall. Constater.

Gestion du filtrage IP avec FirewallD

FirewallD propose une couche d’abstraction à iptables et nft ainsi que d’autres fonctionnalités (cf Vue d’ensemble). Il peut être piloté avec la commande firewall-cmd (RTFM !).

Pour chacune des demandes fonctionnelles ci-dessous, indiquer la ou les options de commande firewall-cmd utilisées et le ou les résultats obtenus :

  • Quel est l’état du parefeu ?
  • Quelles sont les zones actives ?
  • Quelles sont la ou les zones par défaut ?
  • Quelle est la zone associée à l’interface ethernet ?
  • Lister toutes les informations concernant la zone « public »
  • Autoriser les connexions SSH sur le nouveau port (1337) de manière pérenne
  • Interdire les connexions SSH sur le port 22
  • Redémarrer le firewall. Constater.

S’il vous reste du temps :

  • Lister tous les services
  • Quel est le format des fichiers de configuration ?
  • Qu’est-ce que le mode panique ?
  • FirewallD permet-il de filtrer les paquets sortants ?

SELinux sur Rocky

Lire la documentation Rocky Linux concernant SELinux : https://docs.rockylinux.org/guides/security/learning_selinux/ et relever les concepts et commandes qui n’auraient pas été abordés dans le cours.

AppArmor

Lire la documentation Debian (chapitres 1 à 5) concernant AppArmor : https://wiki.debian.org/AppArmor/HowToUse et relever les informations qui ont été fournies pendant le cours ainsi que les analogies et les différences avec SELinux.