C H A P I T R E  4

Annulation de modifications du système

Ce chapitre explique comment rétablir le système en annulant les modifications introduites par le logiciel Solaris Security Toolkit pendant l'exécution des opérations de durcissement. Cette option fournit un mécanisme automatisé permettant de restaurer un système dans l'état où il se trouvait avant une ou plusieurs sessions de durcissement.

Ce chapitre traite des points suivants :


Consignation et annulation des changements effectués

Chaque session de durcissement de Solaris Security Toolkit crée un répertoire d'exécution dans JASS_REPOSITORY. Les noms de ces répertoires se basent sur la date et l'heure de début d'exécution. En plus de l'affichage de la sortie sur un écran, le logiciel Solaris Security Toolkit crée un ensemble de fichiers dans le répertoire pour le suivi des modifications et l'enregistrement des opérations.

Les fichiers enregistrés dans le répertoire suivent les modifications apportées sur le système et activent la fonction d'annulation.



caution icon

Attention - Le contenu des fichiers dans JASS_REPOSITORYne doit jamais être modifié par un administrateur.



Quand vous utilisez le logiciel Solaris Security Toolkit pour le durcissement d'un système, que ce soit en mode JumpStart ou autonome, le logiciel consigne les modifications dans le fichier JASS_REPOSITORY/jass-manifest.txt. Ce fichier contient la liste des opérations que la fonction d'annulation utilise pour revenir en arrière. Le fichier contient des informations sur les opérations de durcissement implémentées par le logiciel Solaris Security Toolkit, y compris les fichiers créés, copiés, déplacés ou supprimés. Par ailleurs, ce fichier peut contenir aussi bien des entrées standard que personnalisées, qui sont requises quand on annule des modifications plus complexes, telles les installations de packages. Un fichier jass-manifest.txt séparé est créé pour chaque session de durcissement.



Remarque - La fonction d'annulation du logiciel Solaris Security Toolkit annule uniquement les modifications qui correspondent à des entrées dans les fichiers globaux.



L'annulation est exécutée par l'intermédiaire des fichiers globaux générés pendant une session de Solaris Security Toolkit et stockés dans JASS_REPOSITORY. L'exécution restaure les fichiers de sauvegarde à leurs emplacements d'origine. Si des fichiers n'avaient pas été sauvegardés, la fonction d'annulation n'est pas disponible.

L'annulation d'une session de Solaris Security Toolkit n'entraîne pas la suppression du répertoire associé. En revanche, deux fichiers sont créés dans le répertoire JASS_REPOSITORY : jass-undo-log.txt et reverse-jass-manifest.txt. Ensuite, la session qui a été annulée n'apparaîtra plus dans la liste à la prochaine exécution de jass-execute -u. Une session de durcissement ne peut être annulée qu'une seule fois.


Conditions requises pour l'annulation de modifications du système

L'utilisation de la fonction d'annulation du logiciel Solaris Security Toolkit est soumise aux restrictions et conditions suivantes.


Personnalisation de scripts pour l'annulation des modifications

Solaris Security Toolkit dispose d'une structure suffisamment flexible pour la conception et la construction de scripts finish. La structure vous permet d'étendre les capacités du logiciel Solaris Security Toolkit en fonction des besoins de votre entreprise tout en vous facilitant la gestion de la configuration de systèmes pendant leurs cycles de vie.

Lors de la personnalisation de scripts, il est important de comprendre l'effet de chacune de vos actions sur la fonction d'annulation. Pour simplifier la personnalisation des scripts, des fonctions auxiliaires introduisent les modifications voulues dans les fichiers globaux. (la fonction d'annulation utilise le contenu des fichiers globaux pour annuler les sessions de durcissement). Dans la plupart des cas, ces fonctions auxiliaires fournissent ce dont vous avez besoin pour personnaliser les scripts pour votre organisation.

Vous trouverez une liste de fonctions auxiliaires et des explications sur leur utilisation dans le Solaris Security Toolkit 4.1 Reference Manual. Utilisez ces fonctions auxiliaires à la place des commandes équivalentes du système, afin que les annulations se réfèrent aux entrées correspondantes dans les fichiers globaux.

Il peut toutefois arriver qu'aucune fonction auxiliaire ne soit associée à la fonction que vous devez exécuter. Si tel est le cas, utilisez la fonction spéciale appelée add_to_manifest. En utilisant cette fonction, vous pouvez insérer manuellement des entrées dans les fichiers globaux sans avoir à faire appel à une fonction auxiliaire. Utilisez cette fonction spéciale avec précaution en veillant à protéger l'intégrité du système et le référentiel de Solaris Security Toolkit. Par exemple, vous pouvez utiliser cette fonction spéciale lorsque voulez ajouter des packages qui ne sont pas au format Sun pkg. Dans cet exemple, vous devrez dire à la fonction d'annulation comment supprimer les packages qui avaient été ajoutés dans un autre format lors de la session de durcissement.

Avec les fonctions auxiliaires et la fonction spéciale add_to_manifest, le logiciel Solaris Security Toolkit met à disposition un outil simple et flexible pour personnaliser des scripts et étendre les modifications aux sessions d'annulation.

Si vous modifiez le comportement de scripts finish sans utiliser ces fonctions, le logiciel Solaris Security Toolkit ne pourra pas savoir quelles modifications ont été apportées. Par conséquent, vous devrez annuler manuellement les modifications qui ne sont pas référencées dans les fichiers globaux.

Autre exemple : avant de modifier un fichier sur le système, il faut d'abord en enregistrer la version originale. Hors du contexte du logiciel Solaris Security Toolkit, les utilisateurs accomplissent généralement cette tâche en exécutant la commande /usr/bin/cp. Toutefois, si vous utilisez directement cette commande dans le contexte du logiciel Solaris Security Toolkit, Solaris Security Toolkit n'aura aucun moyen de savoir qu'une entrée globale doit être créée. À la place de la commande cp, utilisez la fonction auxiliaire backup_file. Cette fonction enregistre une copie du fichier original, avec un suffixe de JASS_SUFFIX et ajoute une entrée globale indiquant au logiciel Solaris Security Toolkit qu'une copie du fichier a été faite. Cette fonction entraîne également le calcul des sommes de contrôle du fichier. Les sommes de contrôle du fichier sont utilisées par la fonction d'annulation ainsi que par la commande jass-check-sum.


Contrôle des fichiers modifiés manuellement

Même si la commande jass-execute -u contrôle automatiquement les fichiers modifiés manuellement après une session de durcissement, il est parfois plus indiqué de faire appel à la commande jass-check-sum pour lister et vérifier les fichiers modifiés.

Cette commande vous permet de revoir le contenu de JASS_REPOSITORY et d'effectuer les sommes de contrôle sur tous les fichiers listés dans les fichiers globaux afin de déterminer quels fichiers ont été modifiés depuis l'enregistrement de leurs sommes de contrôle pendant la session de durcissement. Effectué avant de lancer une session d'annulation forcée, ce contrôle permet d'obtenir de précieuses informations qui vous éviteront de perdre des heures inutiles pour le dépannage.

Ci-dessous, un exemple de sortie.


EXEMPLE DE CODE 4-1 Exemple de sortie de fichiers modifiés manuellement
# ./jass-check-sum
File Name             Saved CkSum             Current CkSum
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
/etc/inet/inetd.con   1643619259:6883         2801102257:6879
/etc/logadm.conf      2362963540:1042         640364414:1071
/etc/default/inetd    3677377803:719          2078997873:720

 

La sortie indique que trois fichiers ont été modifiés après l'exécution du durcissement.


Utilisation d'options avec la fonction d'annulation

Cette section décrit la commande jass-execute -u et les options que vous pouvez utiliser pendant l'exécution d'une session d'annulation.



Remarque - Vous ne pouvez pas utiliser les options -d, -a, -h, -l ou -Havec la fonction d'annulation. Vous devez fournir les options -b, -k ou -f lors de l'exécution de la fonction d'annulation undo en mode silencieux.



jass-execute -u est la commande standard pour l'exécution d'une session d'annulation. Cette commande détecte automatiquement les fichiers qui ont été modifiés manuellement depuis la dernière session de durcissement. Si le logiciel Solaris Security Toolkit détecte des fichiers qui ont été modifiés manuellement après une session de durcissement, il vous demande de choisir une réponse :

1. Effectuez une copie de sauvegarde du fichier le plus récent avant de restaurer l'original (le fichier qui existait avant le durcissement).

2. Conservez le fichier le plus récent et ne restaurez pas le fichier original.

3. Forcez l'écrasement de tout fichier modifié manuellement (certaines données pourraient être perdues) et restaurez le fichier original.

Si vous voulez changer le comportement par défaut de l'annulation, utilisez les options -b, -k et -f quand vous exécutez la commande d'annulation.

Le TABLEAU 4-1 contient la liste des options de ligne de commande que vous pouvez utiliser avec la commande d'annulation. Vous trouverez des informations détaillées sur chaque option dans les sections ci-après.


TABLEAU 4-1 Utilisation des options de ligne de commande avec la commande d'annulation

Option

Description

-b

Sauvegarde tout fichier ayant été modifié manuellement depuis la dernière session de durcissement, puis restaure le système dans son état d'origine.

-f

Annule les modifications effectuées lors d'une session de durcissement sans vous proposer d'exceptions, même si les fichiers ont été modifiés manuellement après une session de durcissement.

-k

Conserve toute modification manuelle apportée aux fichiers après une session de durcissement.

-m

Envoie la sortie à une adresse e-mail.

-o

Dirige la sortie vers un fichier.

-q

Empêche l'affichage de la sortie à l'écran. Également appelée option silencieuse. La sortie est stockée dans JASS_REPOSITORY/jass-undo-log.txt.


 

Option de sauvegarde

L'option -b sauvegarde automatiquement les fichiers qui ont été modifiés manuellement depuis la dernière session de durcissement, puis restaure les fichiers dans leur état d'origine avant la session de durcissement. Pour implémenter les modifications manuelles, vous devez comparer les fichiers restaurés avec les fichiers sauvegardés et ajuster les différences à la main. Un fichier sauvegardé en utilisant cette option sera similaire à l'exemple suivant.


/etc/motd.BACKUP.JASS_SUFFIX

 

Option de forçage

L'option -f annule les modifications apportées pendant une session de durcissement sans aucune exception, même si les fichiers avaient été modifiés manuellement après la session de durcissement. La session d'annulation ne compare pas les sommes de contrôle des fichiers enregistrés avec les versions actuelles des fichiers. En conséquence, si vous avez modifié des fichiers manuellement après une session de durcissement, les modifications seront écrasées et perdues après la session d'annulation.

Il peut être nécessaire de réimplémenter les modifications manuellement après l'exécution d'une session d'annulation. De plus, il peut être nécessaire d'ajuster les différences entre des groupes de fichiers, suivant les types de modifications apportées. Pour éviter ces problèmes, utilisez la commande jass-check-sum ou l'option de ligne de commande -b précédemment citée.

Option de maintien

L'option -k maintient automatiquement toute modification manuelle apportée aux fichiers après une session de durcissement au lieu de restaurer les fichiers originaux. L'option -k détecte les incohérences dans les fichiers, génère et consigne un avertissement et n'écrase pas le fichier avec l'original. Les seules modifications annulées sont celles pour lesquelles les sommes de contrôle sauvegardées dans le fichier jass-checksums.txt sont valides.

Cette option n'est pas sans inconvénients. Par exemple, un système peut être placé dans un état incohérent si un sous-ensemble de fichiers modifiés par un script finish sont ultérieurement modifiés.

Prenons le script finish remove-unneeded-accounts.fin. Ce script modifie les fichiers /etc/passwd et /etc/shadow sur le système. Si un utilisateur change manuellement un mot de passe après un durcissement, la somme de contrôle associée au fichier /etc/shadow ne correspond pas à la valeur enregistrée par le logiciel Solaris Security Toolkit. En conséquence, en cas d'utilisation de l'option de maintien, seul le fichier /etc/passwd sera copié à son état d'origine. Le fichier /etc/shadow conserve sa forme actuelle. Les deux fichiers ne sont plus cohérents.

Option de sortie de fichier

L'option -o output-file redirige la sortie de la console de commandes jass-execute vers un fichier séparé, output-file.

Cette option n'a aucun effet sur les journaux conservés dans le répertoire JASS_REPOSITORY. Cette option est particulièrement utile si elle est utilisée sur une connexion lente de terminal, parce qu'une session d'annulation Solaris Security Toolkit génère une quantité de données en sortie.

Option de sortie silencieuse

L'option -q empêche le logiciel Solaris Security Toolkit d'envoyer une sortie sur l'écran. Cette option n'a aucun effet sur les journaux conservés dans le répertoire JASS_REPOSITORY. Comme l'option -o, cette option est particulièrement utile lorsque le logiciel Solaris Security Toolkit est exécuté via une tâche cron ou sur des connexions réseau bas débit.

Option de notification par e-mail

Avec l'option -m email-address, le logiciel Solaris Security Toolkit envoie par e-mail une copie de l'exécution complète à une adresse e-mail. La notification par e-mail est en plus des journaux générés sur le système en utilisant d'autres options.


Annulation de modifications du système

Il est parfois nécessaire d'annuler les modifications apportées pendant une ou plusieurs sessions de durcissement de Solaris Security Toolkit. Si vous estimez que les modifications apportées pendant une session de durcissement ont des conséquences négatives sur votre système, vous pouvez les annuler.

Par exemple, si après une session de durcissement vous découvrez qu'un service requis, tel que NFS, a été désactivé, annulez la session de durcissement. Ensuite, activez NFS et répétez la session de durcissement avec le profil de sécurité révisé.

Cette section explique comment annuler les modifications apportées pendant une ou plusieurs sessions de durcissement. Remarquez que l'annulation d'une session de durcissement est soumise à certaines restrictions et conditions. Reportez-vous à la section Conditions requises pour l'annulation de modifications du système.


procedure icon  Annulation d'une session Solaris Security Toolkit

1. Sauvegardez et réinitialisez votre système.

Réinitialisez et sauvegardez le système avant chaque session d'annulation pour s'assurer qu'il retournera ou pourra être ramené dans un état connu et fonctionnant.

2. Déterminez les options que vous voulez utiliser avec la commande jass-execute -u.

Reportez-vous à la section Utilisation d'options avec la fonction d'annulation.

Pour les instructions qui suivent, on suppose que vous utilisez la commande jass-execute -u.

3. Pour annuler une ou plusieurs sessions en utilisant l'option standard -u, tapez la commande suivante depuis JASS_HOME_DIR:


# ./jass-execute -u

 

Le logiciel Solaris Security Toolkit collecte des informations sur chaque session de durcissement en recherchant tous les fichiers globaux contenus dans JASS_REPOSITORY. Si un fichier global est vide ou absent, le logiciel suppose qu'aucune modification ne doit être annulée et cette session d'annulation n'est pas exécutée. De plus, si le répertoire du fichier global contient également un fichier appelé jass-undo-log.txt, le logiciel suppose que la session d'annulation a déjà été exécutée et ne la répète donc pas. Une fois toutes les informations collectées, les résultats s'affichent. Ci-dessous, un exemple de sortie.


EXEMPLE DE CODE 4-2 Sortie de test des sessions disponibles pour l'annulation
# ./jass-execute -u
[NOTE] Executing driver, undo.driver
Please select a JASS run to restore through:
1. January 24, 2003 at 13:57:27 (/var/opt/SUNWjass/run/20030124135727)
2. January 24, 2003 at 13:44:18 (/var/opt/SUNWjass/run/20030124134418)
3. January 24, 2003 at 13:42:45 (/var/opt/SUNWjass/run/20030124134245)
4. January 24, 2003 at 12:57:30 (/var/opt/SUNWjass/run/20030124125730)
 
Choice? (`q' to exit)?

 

Dans cet exemple, quatre sessions différentes de durcissement ont été trouvées. Ces sessions ont apporté des modifications au système et n'ont pas été annulées. La liste des sessions de durcissement est toujours présentée par ordre chronologique inverse. La première entrée dans la liste correspond à la session de durcissement la plus récente.

4. Vérifiez la sortie pour déterminer quelle(s) session(s) annuler, puis entrez le numéro correspondant.

Pour chaque entrée sélectionnée, le logiciel Solaris Security Toolkit annule chaque session de numéro égal ou inférieur à la valeur sélectionnée. Ainsi, la session d'annulation annule les modifications dans l'ordre inverse de leur réalisation, c'est-à-dire en commençant par la plus récente pour terminer par celle que vous avez sélectionnée. En utilisant l'exemple précédent comme référence, si vous sélectionnez la session 3, puis undo run, vous annulez d'abord les modifications de la session 1, puis les modifications de la session 2 et enfin celles de la session 3.

L'exemple suivant illustre la sortie générée quand la session d'annulation porte sur deux entrées de fichier global.


EXEMPLE DE CODE 4-3 Sortie de test d'une session d'annulation portant sur plusieurs entrées de fichier global
[...]
 
===============================================================
undo.driver: Performing UNDO of
//var/opt/SUNWjass/run/20030124135727.
================================================================
 
[...]
 
================================================================
undo.driver: Undoing Finish Script: update-cron-allow.fin
================================================================
 
[NOTE] Undoing operation COPY.
cp -p /etc/cron.d/cron.allow.JASS.20030125223417
/etc/cron.d/cron.allow
rm -f /etc/cron.d/cron.allow.JASS.20030125223417
 
[NOTE] Removing a JASS-created file.
rm -f /etc/cron.d/cron.allow
 
[...]

 

Dans cet exemple, le logiciel Solaris Security Toolkit annule une opération de copie et supprime un fichier qui avait été ajouté pendant une session de durcissement. La sortie d'une session d'annulation indique les commandes utilisées pour restaurer le système, de telle sorte que le processus est facile à comprendre et à identifier au cas où vous auriez besoin de dépanner la configuration d'un système.

La session d'annulation continue jusqu'au traitement de toutes les sessions et de tous les fichiers globaux correspondants et à l'annulation de toutes les modifications.

En plus de la collecte d'informations sur chaque session de durcissement en recherchant tous les fichiers globaux contenus dans JASS_REPOSITORY, le logiciel Solaris Security Toolkit compare la somme de contrôle de chaque fichier modifié. Chaque fois qu'une anomalie est détectée dans les fichiers des sommes de contrôle, un avertissement est généré et consigné. Pour ces fichiers, la session d'annulation vous demande quelle action vous souhaitez mettre en oeuvre.

5. Si la session d'annulation détecte une exception (un fichier qui a été modifié manuellement après la session de durcissement), entrez l'une des options.

L'exemple de sortie suivant illustre une exception et les choix possibles pour gérer cette exception.


EXEMPLE DE CODE 4-4 Sortie de test d'une exception d'annulation
[...]
 
================================================================
undo.driver: Undoing Finish Script: install-templates.fin
================================================================
 
[NOTE] Undoing operation COPY.
cp -p /etc/skel/local.login.JASS.20030125223413/etc/skel/local.login
rm -f /etc/skel/local.login.JASS.20030125223413
 
[NOTE] Undoing operation COPY.
[WARN] Checksum of current file does not match the saved value.
[WARN]    filename = /etc/.login
[WARN]    current = 3198795829:585, saved = 1288382808:584
 
Please select the course of action:
 
1. Backup.  Save current file before restoring original.
2. Keep.    Keep the current file, making no changes.
3. Force.   Ignore manual changes and overwrite current file.
 
Enter 1, 2, or 3:
 

 

Dans notre exemple, en choisissant 1, on obtient la sortie suivante.


EXEMPLE DE CODE 4-5 Sortie de test du choix d'une option de sauvegarde pendant une annulation
Enter 1, 2, or 3: 1
 
[NOTE] BACKUP specified, creating backup copy of /etc/.login.
[NOTE] File to be backed up is from an undo operation.
[NOTE] Copying /etc/.login to /etc.login.BACKUP.JASS.20030125224926
cp -p /etc/.login.JASS.20030125223413 /etc/.login
rm -f /etc/.login.JASS.20030125223413
 
[...]

 

Effectuez l'opération appropriée pour les fichiers qui ont été modifiés manuellement après des sessions de durcissement.

Quand une session d'annulation rencontre des fichiers modifiés et que vous décidez de ne pas les écraser, ajustez ces fichiers avant de réinitialiser le système.



Remarque - Dans notre exemple, le fichier modifié a été sauvegardé sous un nouveau nom :
/etc/.login.BACKUP.JASS.20030125224926. Après la session d'annulation, comparez ce fichier à /etc/.login pour établir si d'autres ajustements sont nécessaires.



6. Ajustez toutes les exceptions éventuelles avant de continuer.

7. Après l'ajustement des exceptions éventuelles, réinitialisez le système.

Il est indispensable de réinitialiser le système pour qu'il puisse arrêter et démarrer les services disponibles avant son durcissement.