Apparence
Uubu.fr

Les systèmes Linux, l’open source, les réseaux, l’interopérabilité, etc.
« Il vaut mieux viser la perfection et la manquer que viser l’imperfection et l’atteindre. » (Bertrand Arthur William RUSSEL)
02 juin 2017

htmlpdflatexmanmd




audit.rules

audit.rules

Jeu de règles chargés dans le système d'audit

   Le fichier audit.rules est un fichier contenant des règles d'audit chargés par auditd au démarrage. auditctl est utilisé pour cette opération. Les régles d'audit sont de 3 type: control, file, et syscall

contrôle

   Les commandes de contrôle configurent le système d'audit. Ces commande incluent typiquement la suppression de toutes les règles, définir la taille de file backlog, définir le mode d'erreur, etc.

Système de fichier

   Ces régles sont parfois appelées des watchs. Ces règles sont utilisée pour auditer les accès à des fichiers particuliers. La syntaxe suit généralement ce format: -w path-to-file -p permissions -k keyname où les permissions sont une des suivantes: r,w,x,a

appels système

   Ces règles sont chargées dans un moteur qui intercepte chaque syscall que tous les programmes font dans le système. Noter que cela impacte les performances.

  Le kernel a 4 règles: task, exit, user et exclude.

task Cette liste est vérifie seulement durantles syscall fork ou clone. Rarement utilisé en pratique.
exit Est l'endroit où tous les syscall et requêtes d'audit système sont évalués
user Utilisé pour filtrer (supprimer) certains évènements qui viennent du userspace.
exclude Utilisé pour exclure certains évènements. Le champ msgtype est utilisé pour indiquer au kernel les types de message à ne pas enregistrer.

   Les règles syscall prenne la forme générale:-a action,list -S syscall -F field=value -k keyname

-a indique d'ajouter une règle à la fin de la liste.
action et list sont séparés par une virgule. les listes valides sont task, exit, user et exclude, les actions valide sont always ou never (créer un évènement)
La suite de la règle est normalement -S, qui peut être soit un nom ou un numéro de syscall.
L'option -F affine le matche. Voir auditctl pour une liste complète de champ.

Notes

En faisant une investigation, on commence normalement avec aureport pour avoir une idée de ce qui se passe dans le système. Ce rapport indique principalement les évènements hardcodés par le système d'audits tels que les login/logout, authentifications, anomalies système, etc.
aureport --start this-week
Ensuit, pour obtenir une seconde vue des règles chargées:
aureport --start this-week --key --summary
Cela donne une liste ordonnée des clés associées avec les règles Si par exemple, une règle syscall sur un échec d'ouverture d'un fichier avec EPERM, avec une clé nommée access:
-a always,exit -F arch=b64 -S open -S openat -F exit=-EPERM -k access
On peut isoler ces erreurs avec auseurch et envoyer le résultat à aureport.
ausearch --start this-week -k access --raw | aureport --file --summary
Supposons que l'on souhaite voir quels utilisateurs se sont vu refuser l'accès:
ausearch --start this-week -k access --raw | aureport --user --summary
Pour afficher beaucoups d'accès échoués à un fichier particulier, on peut lancer un rapport pour voir qui le fait:
ausearch --start this-week -k access -f /path-to/file --raw | aureport --user -i
Ce rapport donne les tentatives d'accès par personne. Pour voir un évènement particulier, regarder la date et l'heure. Assumant que l'évènement est le 822 à 2:30 le 09/01*2009.
ausearch --start 09/01/2009 02:30 -a 822 -i --just-one
Sélectionne le premier évènement de ce jour.

Exemples

La règle suivante montre comment auditer les erreurs d'accès aux fichiers à cause de problèmes de permission. Noter que ça demande 2 règles pour chaque architecture:
-a always,exit -F arch=b32 -S open -S openat -F exit=-EACCES -k access
-a always,exit -F arch=b32 -S open -S openat -F exit=-EPERM -k access
-a always,exit -F arch=b64 -S open -S openat -F exit=-EACCES -k access
-a always,exit -F arch=b64 -S open -S openat -F exit=-EPERM -k access
^
02 juin 2017

htmlpdflatexmanmd




ausearch-expression

ausearch-expression

Format d'expression de recherche d'audit

Structure lexicale

   Les espaces blancs sont ignorés. Les éléments suivants sont reconnus:

Ponctuation
( ) \
opérateurs logiques
! && ||
Opérateurs de comparaison
‹ ‹= == › ›= !== i= i!= r= r!=
expressions régulières

Syntaxe

field comparison-operator value
field est une chaîne qui spécifie le premier champ avec ce nom dans l'enregistrement, ou \ suivi d'une chaîne, qui spécifie un champ virtuel avec le nom spécifié.
operator Spécifie la comparaison à effectuer
r= r!= chaîne brute du champ (tel que stocké), et la compare à la valeur.
i= i!= Chaîne interprétée du champs
‹ ‹= == › ›= !== Opérateurs d'évaluation
\regexp string-or-regexp Dans ce cas spécial, l'enregistrement d'audit est pris comme une chaîne, et matché avec regexp-or-string, qui est une expression régulière étendue,.

   Si E1 et E2 sont des expressions valides, alors ! E1, E1 && E2, et E1 || E2 sont des expressions valides également. Noter que ! field op value est interprétée comme !(field op value), et non pas (!field) op value.

Champs virtuels

\timestamp Valeur d'horodatage de l'évènement courant. Value doit avoir le format ts:‹seconds›.‹milli›.
\record_type La valeur est le type d'enregistrement courant.
^
02 juin 2017

htmlpdflatexmanmd




audispd.conf

audispd.conf

Fichier de configuration du dispatcher d'évènement d'audit

q_depth Valeur numérique indiquand la taille de queue interne du dispatcher. Défaut: 80
overflow_action Détermine la réaction du service au débordement de sa file d'attente. ignore, syslog, suspend, single et halt
priority_boost Nombre non-négatif qui indique la priorité qu'il doit utiliser. Ce boost est ajouté au boost fournis par auditd. Défaut: 4. 0 = aucun changement
max_restarts Nombre non-négatif indiquant le nombre maximum de tentative de redémarrer un plugin crashé. Défaut: 10
name_format Contrôle le format des noms de nœud insérés dans le flux d'évènements. none, hostname, fqd, numeric, et user
name Chaîne identifiant la machine si name_format = user

^
02 juin 2017

htmlpdflatexmanmd




auditd.conf

auditd.conf

Fichier de configuration du service d'audit

local_events (bool) Spécifie si les évènements locaux sont inclus. Défaut: yes.
log_file Spécifie le chemin complet du fichier de log où les enregistrements d'audit sont stockés
write_logs [bool) Détermine si les logs sont stockés sur disque. Défaut: yes.
log_format Format des logs stockés sur disque: raw et enriched. enriched résoud les uid, gid, syscall, architecture, et adresse socket.
log_group Spécifie le groupe du fichier de log. Défaut: root
priority_boost Nombre non-négatif qui indique la priorité. Défaut 4.
flush none ne fait rien de spécial pour vides les enregistrements sur disque. incremental utilise freq pour déterminer la fréquence, incremental_async est similaire, mais de manière asynchrone pour de meilleurs performances. data conserve les données du disque synchronisés en permanence. sync conserve les données et les métadonnées pleinement synchronisés. Défaut: incremental_async
freq Nombre non-négatif indiquant le nombre d'enregistrement à écrire avant de les vider sur disque.
num_lgos Spécifie le nombre de fichiers de logs à conserver. ‹ 2, la rotation de logs n'est pas effectuée. Doit être inférieur à 1000.
disp_qos Contrôle si la communication est bloquante/sans perte ou non-bloquante/avec perte entre auditd et le dispatcher. Il y a un tampon de 128K entre les 2, ce qui est suffisant dans la plupart des cas. (lossy ou lossless). Défaut: lossy
dispatcher Spécifie le dispatcher.
name_format Contrôle comment insérer les noms de nœud dans le flux d'évènements d'audit. none, hostname, fqd, numeric, et user. Défaut: none
name Nom à utiliser lorsque name_format = user
max_log_file Spécifie la taille max des fichiers de log. Une fois cette limite atteinte, il déclence une action de configuration
max_log_file_action Indique au système quelle action prendre quand le système a détecté que la limite de taille du fichier de log est atteinte.
action_mail_acct Adresse email ou alias. /usr/lib/sendmail doit exister dans la machine
space_left Valeur numérique, en Mo, indiquant quand effectuer une action lorsque l'espace disque vient à manquer
space_left_action Indique quelle action prendre quand l'espace disque restant est inférieur à space_left. (ignore, syslog, rotate, email, exec, suspend, single, ou halt)
admin_space_left Identique à space_left. Est considéré comme la dernière change de faire quelque chose avant de ne plus avoir d'espace disque.
admin_space_left_action Indique quelle action prendre quand l'espace disque restant est inférieur à admin_space_left
disk_full_action Indique quelle action prendre quand le système a détecté que la partition qui maintient les logs est pleine. (ignore, syslog, rotate, exec, suspend, single, et halt)
disk_error_action Indique quelle action prendre quand une erreur disque est détectée en écrivant des évènements d'audit sur disque.
tcp_listen_port Port tpc d'écoute des enregistrements d'audit des systèmes distants.
tcp_listen_queue Valeur numérique qui indique combien de connexions en cours sont permises. Défaut: 5
tcp_max_per_addr Valeur numérique indiquant combien de connection concurrentes de la même IP sont permises. Défaut: 1 (max 1024)
use_libwrap (bool) Utilise tcp_wrappers pour définir les machines autorisées à se connecter
tcp_client_ports 1 ou 2 valeurs numérique. Indique les ports clients permis pour les connexions entrante. Spécifier 1-1023 pour autoriser les port privilégiés
tcp_client_max_idle Délai en secondes d'inactivité d'un client avant que la connexion soit terminées. Défaut: 0 = désactive la vérification
enable_krb5 (bool) Utilise kerberos pour l'authentification et le chiffrement
krb5_principal Principal du serveur. Défaut: auditd.
krb5_key_file Emplacement de la clé du principal du client. Cette clé doit être possédée par root, en mode 0400. Défaut: /etc/audit/audit.key
distribute_network (bool) À yes, les évènements provenant du réseau sont distribués au dispatcher pour traitement. Défaut: no

Notes

- Dans un environneent CAPP, Le chemin d'audit est si important que l'accès aux ressources système doit être refusé si un chemin d'audit ne peut être créé. Dans cet environnement, il est suggéré que /var/log/audit soit dans sa propre partition.
- Le paramètre flush devrait être sync ou data
- space_left doit être être une valeur qui donne suffisamment de temps à un administrateur de réagir et de récupérer de l'espace disque. Cela peut impliquer aureport -t et le déplacement des anciens logs. Il est recommandé que space_left_action soit email.
- admin_space_left doit être l'espace disque nécessaire pour les actions administratives à enregistrer.
- disk_full_action est déclenchée quand il n'y a plus de place. Tous les accès devraient être terminés vu qu'il n'y a plus de capacité d'audit. Peut être définis à single ou halt
- disk_error_action devrait être syslog, sigle ou halt en fonction de la stratégie locale
- Spécifie ue seul port client permis peut poser problème pour le client souhaitant redémarrer le sous-système d'audit, vu qu'il n'est pas capable de recréer une connexion avec les même adresses d'hôte et ports tant que la connection est à l'état TIME_WAIT.
^
31 mai 2017

htmlpdflatexmanmd




aulast

aulast

Programme similaire à last

   aulast affiche une liste des dernières connexions utilisateurs, similairement au programme last et lastb. Il recherche dans le logs d'audit et affiche une liste de tous les utilisateurs connectés/déconnectés.

OPTIONS

--bad Affiche les mauvais logins
--extract Écrit les enregistrement brut pour créer le rapport affiché dans un fichier aulast.log dans le répertoire courant
-f‹file› Lit les logs d'audit depuis le fichier spécifié
--proof Affiche les numéros de série d'évènement d'audit utilisés pour déterminer la ligne précédente du rapport.
--stdin Prend les enregistrements depuis stdin. Les évènement doivent être au format brut
--tty Limite le rapport à l'activité du tty
--user‹name› Limite de rapport à l'utilisateur spécifique

Exemples

Voir les logins de ce mois
ausearch --start this-month --raw | aulast --stdin
^
31 mai 2017

htmlpdflatexmanmd




audispd

audispd

Multiplexeur d'évènement

   audispd doit être démarré par auditd pour obtenir les évènements, qu'il distribut aux programmes enfants qui souhaitent analyser les évènements en temps réel. Quand auditd reçoit SIGTERM ou SIGHUP, il passe ce signal au dispatcher également, qui en retour le passe aux processus enfant.

   Les programmes enfant installent un fichier de configuration dans un répertoire, /etc/audisp/plugins.d/. Les noms de fichier ne doivent pas avoir plus d'un '.' dans le nom sinon ils sont traités comme copie de sauvegarde et ignorés. Les options sont:

OPTIONS

active (bool)
direction Dicté par le plugin. (in, out)
path Chemin complet du plugin. Dans le cas des plugins internes, c'est juste le nom.
type Indique commment le plugin est lancé (builtin, always). builtin devrait toujours être spécifié pour les plugins internes, sinon always.
args Permet de passer des arguments au programme enfant. Il y a une limite de 2 arguments
format binary ou string. binary passe les données tel que audispd les a reçu. string est plus adapté au parsing
^
31 mai 2017

htmlpdflatexmanmd




auvirt

auvirt

Affiche les évènements lié aux machines virtuelles

   auvirt affiche une liste de sessions invité trouvés dans les logs d'audit. Si un invité est spécifié, seul les évènement liés à cet invité sont considérés. Pour chaque invité, il affiche un enregistrement avec le nom de domaine, l'utilisateur qui a démarré l'invité, la date à laquelle l'invité a été démarré/stoppé.

OPTIONS

--all-events Sortie plus détaillée
--debug Mode debug
-f, --file Lit les enregistrements depuis le fichier spécifié
--proof Ajoute après chaque évènement, une ligne contenant tous les identifiants des enregistrements d'audit utilisés pour calculer l'évènement. Chaque identifiant consiste du temps UNIX, millisecondes, et le numéro de série
--show-uuid Affiche l'UUID de l'invité dans chaque enregistrement
--stdin Lit les enregistrements depuis d'entrée standard
--summary AFfiche un sommaire des évènements trouvés.
-te, --end [end-date] [end-time] Recherche les évènement avant cette date/heure. mots clés permis: now, recent, today, yesterday, this-week, wwek-ago, this-month, this-year.
-ts, --start [start-date] [start-time] Affiche les évènements après cette date/heure. Les mots clé de -te sont permis.
-u, --uuid N'affiche que les évènement liés à l'invité spécifié par son uuid
-v, --vm N'affiche que les évènement liés à l'invité spécifié par son nom

Exemples

Affiche tous les enregistrements dans ce mois pour un invité
auvirt --start this-month --vm GuestVmName --all-events
^
31 mai 2017

htmlpdflatexmanmd




aureport

aureport

Outil de rapports des logs d'audit

   aureport produit un sommaire des logs d'audit système.

OPTIONS

-au, --auth Affiche les tentative d'authentification
-a, --avc Affiche les messages avc
--comm afficher les commandes lancées
-cr, --crypto Affiche les évènements crypto
-f, --file Affiche les fichiers et sockets af_unix
--failed Ne sélectionne que les évènements échoués.
-h, --host Afficher les hôtes
-i, --interpret Interprète les entités numérique en texte.
-if, --input file | directory Utilise le fichier donné au lieu des logs
--input-logs Utilise l'emplacement des logs depuis auditd.conf comme entrées.
--integrité Affiche les évènements d'intégrité
-k, --key Affiche les clés des règles d'audit
-l, --login Affiche les logins
-m, --mods Affche les modifications de compte
-ma, --mac Affiche les évènements MAC
-n, --anomaly Affiche les évènement anormaux
--node node-name Ne sélectionne que les évènements venant du nœud spécifié
-nc, --no-config N'inclus pas les évènements CONFIG_CHANGE
-p, --pid Affiche les processus
-r, --response AFfiche les réponse aux évènements anormaux
-s, --syscall Affiche les syscall
--success Affiche seulement les évènements réussis
--summary Lance un sommaire qui donne un total des éléments du rapport principal
-t, --log Affiche un rapport du début et fin pour chaque log
--tty AFfiche les touches tty
-te, --end [end-date] [end-time] Recherche les évènement avant cette date/heure. mots clés permis: now, recent, today, yesterday, this-week, wwek-ago, this-month, this-year.
-tm, --terminal Affiche les terminaux
-ts, --start [start-date] [start-time] Affiche les évènements après cette date/heure. Les mots clé de -te sont permis.
-u, --user Affiche les utilisateurs
--virt Affiche les évènement de virtualisation
-x, --executable Affiche les exécutables
^
31 mai 2017

htmlpdflatexmanmd




ausearch

ausearch

Outil de requête de logs d'audit

OPTIONS

-a, --event audit-event-id Recherche un évènement basé sur l'id doné. Les messages commencent toujours par msg=audit(1116360555.329:2401771, l'id étant le nombre après le ':'.
--arch CPU Recherche les évènements basé sur une architecture CPU.
-c, --comm comm-name Recherche un évènement basé sur le nom de l'exécutable.
--debug Affiche les évènements mal-formés sur stderr
--checkpoint checkpoint-file checkpoint la sortie entre les invocation successive de ausearch de manière à ce que seuls les évènements qui n'ont pas été sortie sont affichés dans les invocations suivantes
-e, --exit exit-code-or-errno Recherche un évènement basé sur le code de sortie syscall donné
-f, --file filename Recherche un évènement basé sur le nom de fichier donné, ou socket af_unix
-ga, --gid-all all-group-id Recherche en évènement avec le gid ou gid effectif spécifié
-ge, --gid-effective effective-group-id Recherche en évènement avec le gid effectif spécifié
-gi, --gid group-id Recherche en évènement avec le gid spécifié
-hn, --host hostname Recherche en évènement avec le nom d'hôte spécifié
-i, --interpret Interprète les entités numériques en texte.
-if, --input filename | directory Utilise le fichier ou répertoire au lieu des logs
--input-logs Utilise l'emplacement des logs spécifié dans auditd.conf pour la recherche
--just-one Stop une fois le première évènement correspondant trouvé
-k, --key key-string Recherche en évènement basé sur la clé donnée
-l, --line-buffered Vide la sortie sur chaque ligne.
-m, --message message-type | comma-sep-message-type-list Recherche un évènement correspondant au type de message spécifié.
-n, --node node-name Recherche les évènements venant du ou des nœuds spécifiés.
-o, --object SE-Linux-context-string Recherche des évènements venant avec le tcontext donné
-p, --pid process-id Recherche un évènement avec le PID de processus donné
-pp, --ppid parent-process-id Recherche un évènement ayant le PID de processus parent donné
-r, --raw Sortie non formatée
-sc, --syscall syscall-name-or-value Recherche un évènement correspondant au syscall donné
-se, --context SE-Linux-context-string Recherche un évènement avec les scontext ou tcontext donné
--session Login-Session-ID Recherche un évènement avec l'ID de session donné
-su, --subject SE-Linux-context-string Recherche un évènement avec le scontext donné
-sv, --success success-value Recherche un évènement avec la valeur de succès donné (yes ou no)
-te, --end [end-date] [end-time] Recherche les évènement avant cette date/heure. mots clés permis: now, recent, today, yesterday, this-week, wwek-ago, this-month, this-year.
-ts, --start [start-date] [start-time] Affiche les évènements après cette date/heure. Les mots clé de -te sont permis.
-tm, --terminal terminal Recherche un évènement correspondant à la valeur terminal donnée
-ua, --uid-all all-user-id Recherche un évènement avec l'UID ou UID effectif donné
-ue, --uid-effective effective-user-id Recherche un évènement avec l'UID effectif donné
-ui, --uid user-id Recherche un évènement avec l'UID donné
-ul, --loginuid login-id Recherche un évènement avec le login id donné
-uu, --uuid guest-uuid Recherche un évènement avec l'uuid invité donné
-vm, --vm-name guest-name Recherche un évènement avec le nom de l'invité donné
-w, --word Chaîne de recherche à matcher
-x, --executable executable Recherche un évènement correspondant à l'exécutable donné

Codes de sortie

0 succès
1 Rien n'est trouvé, erreur d'argument, erreur d'accès fichier mineur
10 données checkpoint invalide
11 Erreur de traitement de checkpoint
12 Évènement checkpoint non trouvé dans le fichier de log
^
31 mai 2017

htmlpdflatexmanmd




ausyscall

ausyscall

Mappage des noms en numéro syscall

   ausyscall affiche le mappage des noms syscall en numéro et inversement pour l'architecture donnée. Il peut être utilisé pour vérifier les numéros syscall dans une plateforme pour optimiser les règles.

Supposons une règle auditctl:
-a always, exit -S open -F exit=-EPERM -k fail-open
Pour vérifier que les programmes 32 et 64 bits sont audités, lancer
ausyscall i386 open
et
ausyscall x86_64 open
Et regarder les numéros retournés. S'ils sont différents, il faut écrire 2 règles pour obtenir une couverture complète:
-a always,exit -F arch=b32 -S open -F exit=-EPERM -k fail-open
-a always,exit -F arch=b64 -S open -F exit=-EPERM -k fail-open

OPTIONS

--dump Affiche tous les syscalls pour l'architecture donnée
--exact Match exact (au lieu de partiel) du nom syscall
^
29 mai 2017

htmlpdflatexmanmd




auditctl

auditctl

Utilitaire de contrôle du système d'audit Linux

Options de configuration

-b backlog Définis le nombre max de tampon d'audit permit (défaut: 64). Si tous les tampons sont pleins, le flag d'erreur est consulté par le kernel.
--backlog_wait_time wait_time Définis de temps (défault: 60*Hz) que le kernel attend lorsque backlog_limit est atteind avant de mettre plus d'évènements d'audit en queue à transférer à auditd. Doit être supérieur ou égal à 0 et inférieur à 10 fois la valeur par défaut.
-c Continue à charger les règles malgré les erreurs. Génère un sommaire du résultat du chargement des règles
-D Supprime toutes les règles et watchs
-e [0..2] Définis le flag enable. 0 = désactivé, 1 = activé, 2 = bloqué en l'état actuel.
-f [0..2] Défpinis le mode failure. 0 = silencieux, 1 = printk, 2 = panic. Permet de déterminer comment le kernel gère les erreurs critiques.
-i Ignore les erreurs en lisant les règles depuis un fichier.
--loginuid-immutable Rend les loginuid inchangeables une fois définis.
-q mount-point.subtree Si vous avez un watch répertoire existant, et un montage déplacé ou bindé ailleurs dans le subtree rechargé, il faut indiquer au kernel que le subtree mounté est équivalent au répertoire regardé. Si le subtree est déjà monté au moment où le watch est émis, le subtree est automatiquement taggé pour surveilance.
-r rate Définis la limite des message par seconde. (0=pas de limite). Si ce taux est atteind, le flag failure est consulté
-R file Lit les règles dans un fichier.
-t Déclence les subtrees après une commande mount

Options de status

-l Liste toutes les règles, 1 par ligne. 2+ options peuvent être passées à cette commande. -k liste les règles qui matche une clé, ou -i pour interpreter a0 à a3 pour aider à déterminer les valeurs d'argument syscall.
-m text Envoie un message userspace dans le système d'audit. Ne peut être fait qu'avec la capability CAP_AUDIT_WRITE.
-s Reporte le status du sous-système d'audit

Options de règle

-a [list,action|action,list] Ajoute une règle à la fin de la liste avec l'action spécifié. Les champs peuvent être dans n'importe quel ordre. Les noms de liste valides, puis d'actions sont:

        task Ajoute une règle à la liste par tâche. Utilisée seulement quand une tâche est créée ( fork() ou clone() )
        exit Ajoute une règle à la liste de sortie syscall. Utilisée à la sortie d'un appel système pour déterminer si un évènement d'audit devrait être créé
        user Ajoute une règle à a liste de filtre de message utilisateur. Utilisé par le kernel pour filtrer les évènements venant du userspace avant de les relayer à service d'audit.
        exclude Ajoute une règle à la liste de filtre d'exclusion de type d'évènement. Cette liste est utilisée pour filtrer les évènement que l'on ne veut pas voir.

        never Aucun enregistrement d'audit n'est généré.
        always Alloue un contexte d'audit.

-A list,action Ajoute une règle au début de la liste
-C [f=f | f!=f] Construit une règle de comparaison inter-champ. Peut être spécifié plusieurs fois. Les 2 opérateurs supportés sont equel et not equal. Les champs valides sont: auid, uid, euid, suid, fsuid, obj_uid; and gid, egid, sgid, fsgid, obj_gid
-d list,action Supprime une règle de la liste. La règle est supprimée seulement si les noms syscall matchent exactement.
-F [n=v | n!=v | n‹v | n›v | n‹=v | n›=v | n&v | n&=v] Construit un champs de règle: nom, opération, valeur. Peut être spécifié jusqu'à 64 fois. Chaque équation est combinée l'une avec l'autre pour déclencher un enregistrement d'audit. Il y a 8 opérateurs supportés: égal, non égal, inférieur à, supérieur à, inférieur ou égal à, supérieur ou égal à, mask de bit ou test de bit. Les champs qui prennent un uid peuvent utiliser le nom de l'utilisateur. Les champs valides sont:

        a0, a1, a2, a3 Les 4 arguments d'un syscall. Noter que les arguments chaîne ne sont pas supportés.
        arch Architecture CPU du syscall (uname -m)
        auid ID original de l'utilisateur. raccourci de audit uid, parfois appelé loginuid
        devmajor Numéro majeur de périphérique
        devminor Numéro mineur de périphérique
        dir Chemin complet d'un répertoire à regarder
        egid gid effectif
        euid uid effectif
        exe Chemin absolu de l'application à laquelle cette règle s'applique. Uniquement dans une liste exit
        exit Valeur de sortie d'un syscall
        fsgid GID du système de fichier.
        fsuid UID du système de fichier
        filetype Type du fichier cible (file, dir, socket, link, character, block, ou fifo)
        gid id du groupe
        inode Numéro d'inode
        key Autre manière de définir une clé filtre. voir -k
        msgtype Utiliser pour matcher le type d'enregistrement de l'évènement. devrait être utilisé dans les listes d'exclusion ou utilisateur
        obj_uid UID de l'objet
        obj_gid GID de l'objet
        obj_user Utilisateur SELinux de la ressource
        obj_role Type SELinux de la ressource
        obj_type Type SELinux de la ressource
        obj_lev_low niveau inférieur SELinux de la ressource
        obj_lev_high Niveau supérieur SELinux de la ressource
        path Chemin complet du fichier à regarder. Ne peut être utiliser que dans la liste exit
        perm Filtre de permissions pour les opérations de fichier. Voir -p Uniquement dans la liste exit
        pers Numéro de personnalité OS
        pid ID de processus
        ppid ID du processus parent
        subj_user Utilisateur SELinux du programme
        subj_role role SELinux du programme
        subj_type Type SELinux du programme
        subj_sen Sensibilité SELinux du programme
        subj_clr Autorisation SELinux du programme
        sgid gid sauvé.
        success Si la valeur de sortie est ›=0, c'est true/yes (1), sinon false/no (0)
        suid UID sauvé
        uid id de l'utilisateur

-k key Définis une clé filtre dans une règle d'audite. C'est une chaîne arbitraire (max 31 octets) qui peut identifier de manière unique les enregistrements d'audit produits par une règle. Peut être spécifié plusieurs fois
-p [r|w|x|a] Décrit les types d'accès sur lesquels se déclence un watch de système de fichier.
-S [Syscall name or number|all] Si le syscall doné est fait par un programme, démarre un enregistrement d'audit. Peut être spécifié plusieurs fois
-w path Insert un watch pour un objet système de fichier au chemin spécifié.
-W path Suppmire un watch pour l'objet système de fichier.

Performances

Les règles syscall sont évaluées pour chaque syscall pour chaque programme. Avec 10 règles syscall, chaque programe dans le système est retardé durant un syscall jusqu'à ce que le système d'audit évalu chaque règle, ce qui peut impacter fortement les performances. Tenter de combiner autant de filtre, action, clé, et champs que possible sont identiques. Par exemple:
auditctl -a always,exit -S openat -F success=0
auditctl -a always,exit -S truncate -F success=0
peuvent être reécris en une seule règle:
auditctl -a always,exit -S openat -S truncate -F success=0
Également, tenter d'utiliser l'audit de système de fichier améliore les performances. Par exemple, pour capturer toutes les ouvertures échouées, mais seulement les fichiers dans /etc:
auditctl -a always,exit -S openat -S truncate -F dir=/etc -F success=0
Cela améliore les performances vu que le kernel n'évalue pas chaque syscall. C'est géré par le code d'audit de système de fichier.

Exemples

Voir tous les syscalls faits par un programme spécifique
auditctl -a always,exit -S all -F pid=1005
Vois les fichiers ouverts par un utilisateur spécifique
auditctl -a always,exit -S openat -F auid=510
Voir les appels openat échoués
auditctl -a always,exit -S openat -F success=0
Regarder les changements d'un fichier (2 manières exprimées)
auditctl -w /etc/shadow -p wa
auditctl -a always,exit -F path=/etc/shadow -F perm=wa
Regarder les changements, récursivement dans un répertoire (2 manières exprimées)
auditctl -w /etc/ -p wa
auditctl -a always,exit -F dir=/etc/ -F perm=wa
Voir si un admin accède aux fichier des autres utilisateurs:
auditctl -a always,exit -F dir=/home/ -F uid=0 -C auid!=obj_uid
^
29 mai 2017

htmlpdflatexmanmd




auditd

auditd

Service d'audit Linux

   auditd est le composant userspace du système d'audit Linux. Il est responsable de l'écriture des enregistrements d'audit sur disque.

OPTIONS

-F Ne lance pas en tâche de fond
-l Autorise à suivre les liens symboliques pour les fichiers de configuration
-n  ne fork pas
-s=ENABLE_STATE Indique si auditd devrait changer la valeur courante du flag enabled du kernel (disable, enable ou nochange).

Signaux

SIGHUP reconfigure auditd
SIGTERM Stop l'audit, écrit un évènement d'arrêt, et quitte
SIGUSR1 rotation automatique des logs
SIGUSR2 tente de relancer le logging

Fichiers

/etc/audit/auditd.conf Fichier de configuration pour auditd
/etc/audit/audit.rules Règles d'audit à charger au démarrage
/etc/audit/rules.d/ Jeux de règles individuels à compiler par augenrules

Notes

   Le paramètre de boot audit=1 devrait être ajouté pour s'assurer que tous les processus qui sont lancés avant le service auditd soient marqués comme auditable par le kernel. Noter que faire cela rend quelques processus impossible à auditer.

  auditd peut reçevoir des évènements depuis d'autres services auditd via le plugin audisp-remote. auditd peut être liés avec tcp_wrappers pour contrôler quelles machines peuvent s'y connecter.
^
29 mai 2017

htmlpdflatexmanmd




augenrules

augenrules

Script qui fusionne les fichiers de règle d'audit

   augenrules est un script qui fusionne tous les composants de règle d'audit dans /etc/audit/rules.d dans un fichier /etc/audit/audit.rules. Les fichiers de règle doivent se terminer par .rules pour être traités. Les fichiers sont concaténés dans l'ordre. Le fichier généré est copié dans /etc/audit/audit.rules seulement s'il diffère.

- La dernière directive -D traitée sans option, si presente, et toujours émise comme première ligne du fichier résultant.
- La dernière directive -h traitée, si présente, est toujours émise comme seconde ligne du fichier résultant.
- La dernière directive -f traitée, si présente, est toujours émise comme 3ème ligne
- La dernière directive -e traitée, si présente, est toujours émise comme dernière ligne.

OPTIONS

--check Teste si les règles ont changées et doivent être mises à jours sans écrases les règles d'audit
--load Charge les anciennes et les nouvelles règles dans le kernel
^
29 mai 2017

htmlpdflatexmanmd




aulastlog

aulastlog

Programme similaire à lastlog

   aulastlog est un programme qui afiche le dernier login pour tous les utilisateurs de la machine locale.

OPTIONS

-u, --user Affiche l'enregistrement lastlog pour l'utilisateur avec le login spécifié uniquement
--stdin Utilise stdin comme source des enregistrement d'audit. Les évènements doivent être au format raw
^
29 mai 2017

htmlpdflatexmanmd




autrace

autrace

Programme similaire à strace

   autrace est un programme qui ajoute des règles d'audit pour tracer une processus, similairement à strace. Il exécute ainsi le programme en lui passant les arguments. Les informations d'audit résultant sont au format de log d'audit si auditd fonctionne ou syslog. Cette commande supprime toutes les règles d'audit avant d'exécuter le programme cible et après d'avoir exécuté. C'est une précaution, il ne se lance pas si les règles ne sont pas supprimées avec auditctl avant.

OPTIONS

-r Limite les appels système collectés à celles nécessaire pour l'analise d'utilisation de ressource.

Exemples

Exemple de session
autrace /bin/ls /tmp
ausearch --start recent -p 2442 -i
ou le mode d'utilisation de ressource
autrace -r /bin/ls
ausearch --start recent -p 2450 --raw | aureport --file --summary
ausearch --start recent -p 2450 --raw | aureport --host --summary
^
28 mai 2017

htmlpdflatexmanmd




AIDE

AIDE

Advanced Intrusion Detection Environment

   AIDE est un vérificateur d'intégrité de fichier.

Commandes

--check, -C Vérifie les inconsistances de la base de donnée.
--init, -i Initialise la base de données
--update, -u Vérifie la base de données, et met à jours la base non-interactivement.
--compare, -E Compare 2 bases. Elles doivent être définis dans un fichier de configuration avec database=[url] et database_new=[url]
--config-check, -D Vérifie la configuration est s'arrête

Paramètres

-c, --config= Fichier de configuration. Défaut: ./aide.conf.
-l, --limit=REGEX Limite la commande aux entrées correspondant à l'expression.
-B, --before="configparameters" paramètre gérés avant de lire le fichier de configuration
-A, --after="configparameters" Paramètres gérés après avoir lu le fichier de configuration
-V, --verbose=verbosity_level Verbosite de aide (0-255) Défaut: 5
-r, --report=reporter Url où envoyer la sortie.

Diagnostique

   Normalement, le code de sortie est 0 si aucune erreur n'est survenue. Excepté pour --check, --compare, et --update, les codes de sortie sont:

1 Nouveaux fichiers detecté
2 fichiers supprimés
4 Fichiers modifiés
14 Erreur d'ecriture
15 argument invalide
16 Fonction non-implémentée
17 erreur de coniguration
18 Erreur d'E/S
19 Erreur de version
^
28 mai 2017

htmlpdflatexmanmd




aide.conf

aide.conf

Fichier de configuration aide

Configuration

database url depuis laquelle la base est lue.
database_out url où écrire la nouvelle base
database_new url où trouver d'autres base pour --compare
database_attrs Attributs des fichiers de base qui sont ajouté au rapport final en mode verbeux l2+.
database_add_metadata (bool) Ajoute la version AIDE et la date de la génération de la base en commentaire du fichier de base.
verbose Verbosité des messages (0-255)
report_url url où écrire la sortie. Peut être spécifié plusieurs fois
report_base16 (bool) encode en base16 les checksum dans les rapport au lieu de base64
report_detailed_init (bool) Ajoute les fichiers (verbole ›=2) et leurs détails (verbose ›=7) dans le mode initialisation.
report_quiet (bool) supprime la sortie de rapport si aucune différence dans la base n'a été trouvée
gzip_dbout (boo) compresse la sortie de la base.
root_prefix Préfixe en enlever de chaque nom de fichier dans le système de fichier avant d'appliquer les règles et l'écriture en base.
acl_no_symlink_follow (boo) suit les liens symboliques
warn_dead_symlinks (bool) Alerte sur les liens morts
grouped (bool) groupe les fichiers dans le rapport par fichiers ajoutés, supprimés ou changés
summarize_changes (bool) créé un sommaire dans les sections des fichiers ajoutés, supprimés, ou changés.

           Le format général est YlZbpugamcinCAXSE:

                Y Type de fichier (f,d,l,c,b,p ou s, ! si le type a changé, et ? sinon)
                Z = indique que la taille a changé, ‹ reporte une taille réduite, et › une taille augmentée
                Les autres lettres sont affichées si l'attribut associé a été changé, ou un '.' pour aucun changement, '+' si l'attribut a été ajouté, '-' s'il a été supprimé, ':' s'il est ignoré ou ' ' si l'attribut n'a pas été vérifié. Exception: (1) un fichier nouvellement créé remplace chaque lettre avec '+', (2) un fichier supprimé remplace chaque lettre avec '-'. L'attribut associé avec chaque lettre:

                        l le nom du lien a changé
                        b Le compteur de block a changé
                        p Les permissions ont changé
                        u l'uid a changé
                        g le gid a changé
                        a La date d'accès a changé
                        m La date de modification a changé
                        c La date de changement a changé
                        i L'inode a changé
                        C Un ou plusieurs checksum a changé
                        A L'acl a changé
                        X les attributs étendus ont changés
                        S Les attributs SELinux ont changé
                        E Les attributs de fichier dans le fs ext2 ont changé

report_ignore_added_attrs Liste d'attributs dont l'ajout est ignoré du rapport final
report_ignore_removed_attrs Liste d'attributs dont la suppression est ignoré du rapport final
report_ignore_e2fsattrs Liste sans délimiteur d'attributs de fichier ext2 qui sont ignorés dans le rapport final. voir chattr. 0 = ignore tous les attributs.
config_version Valeur affichée dans le rapport et dans la base.
Group definitions Si le paramètre n'est pas un des précédents paramètres, il est considéré comme une définition de groupe. La valeur est considérée comme une expression.

Sélections

   AIDE supporte 3 type de lignes de sélection:

        Expression régulière ‹regex› ‹group›
        Sélection négative !‹regex›
        Sélection d'égalité =‹regex› ‹group›

           Chaque expression régulière doit commencer par '/'. Un '^' implicite est ajouté à chaque expression.

Sélection restreinte

   Ces lignes sont des lignes de sélection mais peuvent être restreint à des types de fichier. Les types suivants sont supportés:

        f fichier régulier
        d répertoire
        l lien symbolique
        c fichier caractère
        b Fichier block
        p FIFO
        s Socket UNIX

           Les types sont séparés par un ','. La syntaxe est la suivante:

        sélection restreinte normale
        ‹regex› ‹file types› ‹group›
        Selection inversée
        !‹regex› ‹file types›
        Sélection égale
        =‹regex› ‹file types› ‹group›

Exemples

N'ajoute que les répertoire et fichier dans la base:
/ d,f R
Ajouter tout sauf les répertoires
^/run d
/run R
Utiliser une règle spécifique pour les répertoires
/run d R-m-c-i
/run R

Macro

@@define VAR val Définis une variable
@@undef VAR supprime une variable
@@ifdef VAR, @@ifndef VAR Déclaration conditionnelle
@@ifhost hostname, @@ifnhost hostname Déclaration conditionnelle
@@{VAR} Substitution de variable
@@else Définis une partie else d'une déclaration if
@@endif Termine une déclaration if
@@include VAR Inclus de fichier dans la configuration

URL

   Les url peuvent être:

stdout
stderr
stdin
file://filename
fd:number

Groupe par défaut

p permissions
ftype type de fichier
i inode
l nom du lien
u utilisateur
g groupe
s taille
b compteur de block
m mtime
a atime
c ctime
S vérifier si la taille grandis
I ignore le noms de fichier changés
ANF autorise de nouveaux fichiers
ARF autorise les fichiers supprimés
md5
sha1
sha256
sha512
rmd160
tiger
haval
crc32
gost
whirlpool checksums
acl liste de contrôle d'accès
selinux Attributs SELinux
xattrs Attributs étendus
e2fsattrs attributs de fichier dans un fs ext2
R p+ftype+i+l+n+u+g+s+m+c+md5+X
L p+ftype+i+l+n+u+g+X
E groupe vide
X acl+selinux+xattrs+e2fsattrs
p+ftype+l+u+g+i+n+S+X
^
28 mai 2017

htmlpdflatexmanmd




aideinit

aideinit

Créer une nouvelle base AIDE

   aideinit initialise une base AIDE à l'emplacement database_out.

OPTIONS

-y, --yes écrase le fichier database_out
-f, --force Force l'écrasement de la base avec une nouvelle
-c, --config Fichier de configuration alternatif
-o, --output Fichier de sortie alternatif
-d, --database Fichier de base alternatif
-b, --background Lance en tâche de fond.
^
28 mai 2017

htmlpdflatexmanmd




aide-attributes

aide-attributes

Décoder et comparer des numéro d'attributs encodés en hexa

   aide-attributes décode les numéro d'attribut en noms d'attributs ou affiche les différences entre 2 numéro d'attribut. Ce script est utile pour décoder les numéros d'attributs affichés dans la base.

Exemples

Décoder le numéro c3d:
› aide-attributes c3d
filename
perm
uid
gid
size
bount
lnkcount

Afficher les différences entre 2 numéros d'attribut
aide-attributes c3d fbd
+ctime
+mtime
+inode
^
25 mai 2017

htmlpdflatexmanmd




keys.txt

keys.txt

Service de rétention de clé kernel

   Ce service autorise les clé cryptographiques, jetons d'authentification, mappage d'utilisateur inter-domaine, et similaire d'être mis en cache dans le kernel pour utiliser les systèmes de fichier et d'autres services kernel.

   Les portes-clés sont permis; ce sont des type spéciaux de clé qui peuvent maintenir des liens vers d'autres clés. Chaque processus a 3 souscription de porte clé standard qu'un service peut utiliser pour trouver des clés.

   Le service de clé peut être configuré ou activé avec "Security options"/"Enable access key retention support" (CONFIG_KEYS)

Présentation

   Dans ce contexte, les clés représentent des unités de données cryptographiques, des jetons d'authentification, porte clé, etc. Ils sont représenté dans le kernel pas la structure key.

   Chaque clé a un nombre d'attribut:

- un numéro de série
- un type
- une description
- des informations de contrôle d'accès
- une date d'expiration
- Un payload
- l'état

   Chaque clé reçois un numéro de série du type key_serial_t qui est unique pour la durée de vie de cette clé. Tous les numéros de série sont des entier 32bits positifs. Les programmes userspace peuvent utiliser le numéro de série d'une clé comme moyen d'y accéder, sujet à vérification des permissions.

   Chaque clé est d'un type définis. Les types doivent être enregistrés dans le kernel par un service kernel (tel qu'un système de fichier) avant que des clés de ce type puissent être ajoutées ou utilisées. Les programmes userspace définissent les nouveaux type directement. Les types de clé sont représentés dans le kernel par la structure key_type. cela définis un nombre d'opérations qui peuvent être effectuées sur une clé de ce type.

   Chaque clé a une description, qui devrait être une chaîne affichable. Le type de clé fournis une opération pour effectuer une correspondance entre la description dans un cré et une chaîne critère

   Chaque clé peut être définie pour expirer à un moment donné par la fonction d'instantiation du type. Les clés peuvent être immortelles.

   Chaque clé peut avoir un payload. C'est la quantité de données qui représente la clé. Dans le cas d'un porte-clé, c'est une liste de clés qui sont liées au trousseau; dans le cas d'une clé définie par l'utilisateur, c'est un blob de donnée arbitraire Ce payload n'est pas requis, et le payload peut, en fait, être simplement stocké dans la structure de clé elle-même

   Similairement, quand le userspace souhaite lire le contenu de la clé, si permis, une autre opération de type de clé sera appelée pour convertir le payload attaché à la clé en un blob de donnée.

   Chaque clé peut être dans un des états de base suivant:

- non-instancié. La clé existe, mais n'a pas de données attachée. Les clés demandée depuis le userspace sont dans cet état
- instancié: C'est l'état normal. La clé est formée, et a des donnée attachées
- Négative. C'est un état relativement court. La clé agit comme une note disant que l'appel précédent du userspace a échoué, et agit comme un accélérateur de recherche de clé. une clé négative peut être mise à jours vers un état normal.
- expiré. Les clé ont dépassés la durée de vie définie. Une clé expirée pour être mise à jours pour revenir à un état normal
- révoqué. Une clé est placée dans cet état par une action userspace.
- dead. Le type de clé a été désenregistré

Vue générale du service de clés

   Le service de clé fournis des fonctionnalité:

           Le service de clé définis 3 types de clé spéciaux

                keyring Keyring sont des clé spéciales qui contiennent une liste d'autres clé.
                user Une clé de ce type a une description et un payload qui sont des blobs arbitraires de données. Ils peuvent être manipulés par le userspace et ne sont pas prévus pour être utilisés par les services kernel
                logon Comme une clé user, une clé logon a un payload qui est un blob de données arbitraire. Il est prévue comme un emplacement pour stocker des secrets qui sont accessible au kernel mais pas aux programmes userspace

        Chaque processus souscrit à 3 keyrings: un keyring spécifie au thread, un keyring spécifique au processus, et un keyring spécifique à une session.
        Chaque user ID résident dans le système maintient 3 keyrings spéciaux: un spécifique à l'utilisateur et un spécifique à la session utilisateur.
        Chaque utilisateur a 2 quotas avec lesquel les clés qu'ils possèdent sont suivis. Une limite le nombre total de clé et de trousseaux, et l'autre limite la quantité totale d'espace qui peut être consommé par les descriptions et payload
        Il y a une interface d'appel système par laquelle les programmes peuvent créer et manipuler les clé et trousseaux.
        Il y a une interface kernel par laquelle les services peuvent enregistrer des type et rechercher des clés
        Il y a une manière pour qu'une recherche faite depuis le kernel revienne au userspace pour demander une clé qui ne peut pas être trouvée dans un trousseau de processus
        Un système de fichier optionnel est disponible via lequel la base de clé peuvent vue et manipulée

Permissions d'accès aux clés

   Les clé ont un propriétaire, un groupe d'accès, et un masque de permission. La masque a jusqu'à 8 bit chacun pour le processeur, utilisateur, groupe et les autres accès. Seul six de chaque jeu de 8bits sont définis. Ces permissions sont:

        View Permet de voir une clé ou un trousseau, incluant le type et description
        Read Permet de voir une le payload d'une clé, ou la liste des clé liées au trousseau
        Write Permet d'instancier un payload de clé ou de le mettre à jours, ou d'ajouter/supprimer un lien vers un trousseau.
        Search Permet de rechercher un trousseau et des clés.
        Link Permet de lier une clé ou un trousseau. Pour créer un lien d'un trousseau vers une clé, un processus doit avoir la permission Write sur le trousseau, et la permission Link sur la clé
        Set Attribute Permet de changer le masque de permissions

Support SELinux

   La classe de sécurité "key" a été ajoutée à SELinux pour que le contrôle d'accès puisse être appliqué aux clés créées dans divers contextes. Actuellement, toutes les permissions de base ci-dessus sont fournis dans SELinux, SELinux est simplement invoqué une fois les vérification de permissions de base effectuées.

   La valeur du fichier /proc/self/attr/keycreate influence le labéling des clés créées. Si le contenu de ce fichier correspont à un contexte de sécurité SELinux, la clé obtiendra ce contexte, sinon, la clé obtiendra le contexte courant de la tâche qui a invoqué la création de la clé. Les tâches doivent données explicitement les permissions à assigner à un contexte particulier aux clé nouvellement créées, en utilisant la permission "create" dans la classe de sécurité key.

   Les trousseaux par défaut associés avec les utilisateurs sont labélisés avec le contexte par défaut de l'utilisateur si et seulement si les programmes login ont été configurés correctement pour initialiser keycreate durant le processus de login. Sinon, il vont être labélisé avec le contexte du programme login lui même.

   Noter, cependant, que les trousseaux par défaut associés avec l'utilisateur root sont labélisés avec le contexte kernel par défaut, vu qu'ils sont créés très tôt dans le processus de boot, avant que root ait une chance de se connecter.

   Les trousseaux associés avec de nouveaux threads sont chacun labélisés avec le contexte de leur thread associés, et les trousseaux de session et de processus sont gérés de manière similaire.

Nouveaux fichiers procfs

   2 fichiers ont été ajoutés à procfs par lesquels un administrateur peut trouver le status du service de clé:

/proc/keys Liste les clé qui sont actuellement lisibles par la tâche lisant le fichier, en donnant les informations sur le type, description et permissions. Les clés incluse dans la liste sont celles dont la permission View est donné au processus qui lit le fichier. Noter que les vérifications de sécurité LSM sont effectuées, et peuvent filtrer les clés que le processus courant n'est pas autorisé à voir.


        Le contenu ressemble à:
SERIAL FLAGS USAGE EXPY PERM UID GID TYPE DESCRIPTION: SUMMARY
00000001 I----- 39 perm 1f3f0000 0 0 keyring _uid_ses.0: 1/4
00000002 I----- 2 perm 1f3f0000 0 0 keyring _uid.0: empty
00000007 I----- 1 perm 1f3f0000 0 0 keyring _pid.1: empty
0000018d I----- 1 perm 1f3f0000 0 0 keyring _pid.412: empty
000004d2 I--Q-- 1 perm 1f3f0000 32 -1 keyring _uid.32: 1/4
000004d3 I--Q-- 3 perm 1f3f0000 32 -1 keyring _uid_ses.32: empty
00000892 I--QU- 1 perm 1f000000 0 0 user metal:copper: 0
00000893 I--Q-N 1 35s 1f3f0000 0 0 user metal:silver: 0
00000894 I--Q-- 1 10h 003f0000 0 0 user metal:gold: 0

        I Instancié
        R Révoqué
        D Mort
        Q Contribut au quota de l'utilisateur
        U En construction
        N Clé négative

/proc/key-users Ce fichier liste les données pour chaque utilisateur qui a au moins une clé dans le système. De telles données incluent les informations de quota et des statistiques:


        [root@andromeda root]# cat /proc/key-users
0: 46 45/45 1/100 13/10000
29: 2 2/2 2/100 40/10000
32: 2 2/2 2/100 40/10000
38: 2 2/2 2/100 40/10000

        ‹UID› User ID
        ‹usage› Structure refcount
        ‹inst›/‹keys› Nombre total de clés et le nombre instanciées
        ‹key›/‹max› Quota - compteur de clé
        ‹bytes›/‹max› Quota - taille de clé

   4 nouveaux fichiers sysctl ont été ajoutés également pour contrôler les limites de quota:

/proc/sys/kernel/keys/root_maxkeys Nombre maximum de clés que root peut posséder
/proc/sys/kernel/keys/root_maxbytes Taille maximum en octets que root peut stocker dans ces clés
/proc/sys/kernel/keys/maxkeys Nombre total de clé qu'un utilisateur peut posséder
/pro/sys/kernel/keys/maxbytes Taille maximum en octets qu'une utilisateur peut stocker dans ces clés

Garbage collector

   Les clés morets (pour lesquelles le type a été supprimé) sont automatiquement unlinked des trousseaux et supprimés dès que possible par un collector en tâche de fond.

Similairement, les clé révoquées et expirées sont collectées, mais seulement au bout d'un certain temps. Ce délai est définis en secondes dans:
/proc/sys/kernel/keys/gc_delay
^
23 mai 2017

htmlpdflatexmanmd




tigerrc

tigerrc

Fichier de configuration pour tiger

   Ce fichier est pré-traité, et ne peut contenir que des assignements de variables et des commentaires

TigerNoBuild=Y Les fichiers C sont corrompus
Tiger_Check_PASSWD=Y Rapide
Tiger_Check_PASSWD_FORMAT=N Non nécessaire dans les systèmes avec pwck
Tiger_Check_PASSWD_SHADOW=Y le temps dépend du nombre d'utilisateurs
Tiger_Check_PASSWD_NIS=N idem
Tiger_Check_GROUP=Y rapide
Tiger_Check_ACCOUNTS=Y le temps dépend du nombre d'utilisateurs
Tiger_Check_RHOSTS=Y idem
Tiger_Check_NETRC=Y idem
Tiger_Check_ALIASES=Y rapide
Tiger_Check_CRON=Y rapide
Tiger_Check_ANONFTP=Y rapide
Tiger_Check_EXPORTS=Y rapide
Tiger_Check_INETD=Y rapide pour inetd, varie pour xinetd
Tiger_Check_SERVICES=Y assez rapide
Tiger_Check_KNOWN=Y rapide
Tiger_Check_PERMS=Y assez rapide
Tiger_Check_SIGNATURES=N plusieurs minutes
Tiger_Check_FILESYSTEM=Y Dépend de la taille du système de fichier. peut prendre des heures
Tiger_Check_ROOTDIR=Y Rapide
Tiger_Check_ROOT_ACCESS=Y Rapide
Tiger_Check_PATH=Y rapide pour root.
Tiger_Check_EMBEDDED=Y Plusieurs minutes
Tiger_Check_BACKUPS=Y Rapide
Tiger_Check_LOGFILES=Y Rapide
Tiger_Check_USERUMASK=Y Rapide
Tiger_Check_ETCISSUE=N Rapide, doit être personnalisé
Tiger_Check_STRICTNW=Y Rapide
Tiger_Check_LISTENING=Y Rapide
Tiger_Check_SYSTEM=Y Dépend des vérification du système
Tiger_Check_RUNPROC=N rapide, doit être personnalisé
Tiger_Check_DELETED=N Dépend du nombre de processus dans le système
Tiger_Check_APACHE=N Rapide
Tiger_Check_SSH=Y Rapide
Tiger_Check_SENDMAIL=N Rapide
Tiger_Check_PRINTCAP=Y Rapide
Tiger_Check_EXRC=N Dépend de la taille du système de fichier
Tiger_Check_ROOTKIT=Y Lent si chkrootkit est disponible
Tiger_Check_FTPUSERS=Y Rapide
Tiger_Check_OMNIBACK=N Rapide
Tiger_Check_NTP=Y Rapide
Tiger_Check_PATCH=N dépend de la connexion réseaux
Tiger_Check_SINGLE=Y Rapide
Tiger_Check_BOOT=Y Rapide
Tiger_Check_INITTAB=Y Rapide
Tiger_Check_RCUMASK=Y Rapide
Tiger_Check_NEVERLOG=Y Rapide
Tiger_Check_OS=Y Rapide
Tiger_Check_NETWORKCONFIG=Y Rapide
Tiger_Cron_SendOKReports=N Indique si les rapports sans informations sont envoyés à cron
TigerCron_Log_Keep_Max=10 Nombre de rapports à conserver pour chaque vérification lancé depuis crontab
Tiger_Cron_Template=N Indique si les rapports sont comparés avec un template, si disponible
Tiger_Cron_CheckPrev=Y Indique si les rapports sont comparés avec un précédent rapport, si disponible
Tiger_Show_INFO_Msgs=N Indique si les massages taggés INFO sont affichés
Tiger_Run_CRACK=N lance Crack
Tiger_CRACK_LOC_OVERRIDE=/mnt/cdrom/crack/Crack Emplacement du binaire Crack
Tiger_CRACKREPORTER_LOC_OVERRIDE=/mnt/cdrom/crack/Reporter
Tiger_CRACKDIR_LOC_OVERRIDE=/usr/local/crack Doit être accessible en écriture
Tiger_Output_FQDN=Y Indique si les fqdn sont utilisés
Tiger_Run_TRIPW=N Lance le vérification d'intégrité Tripwire
Tiger_TRIPW_LOC_OVERRIDE=/mnt/cdrom/tripw/tripwire Emplacement du binaire tripwire
Tiger_Run_AIDE=N Lance le vérification d'intégrité de fichier AIDE
Tiger_Run_AIDE_VERBOSE=1 Rapport verbeux (pas encore implémenté)
Tiger_AIDE_LOC_OVERRIDE=/mnt/cdrom/aide/aide.bin Emplacement du binaire aide
Tiger_AIDE_CFG_OVERRIDE=/mnt/cdrom/aide/aide.conf Emplacement de la configuration de aide
Tiger_AIDE_DB_OVERRIDE=/mnt/cdrom/aide/in.db Emplacement de la base de données de aide
Tiger_Run_INTEGRIT=N Lance le vérificateur d'intégrité de fichier Integrit
Tiger_INTEGRIT_CFG=/etc/integrit/integrit.conf Emplacement de la configuration d'integrit
Tiger_INTEGRIT_LOC_OVERRIDE=/mnt/cdrom/integrit/integrit.bin Emplacement du binaire integrit
Tiger_Output_Width=79 Pour le formattage de la sortie
Tiger_CRON_Output_Width=0 Largeur de la sortie quand utilisé via tigercron
Tiger_Global_PATH="/etc/profile /etc/csh.login" PATH global
Tiger_Passwd_Constraints="PASS_MIN_DAYS PASS_MAX_DAYS PASS_WARN_AGE PASS_MIN_LEN" Vérifications opérées sur les mots de passe
Tiger_Passwd_Hashes='crypt3|md5|sha512' Type de hash de mot de passe acceptés
Tiger_Dormant_Limit=60 Nombre de jours des fichiers non-modifiés dans le répertoire home avant d'être considéré comme dormants
Tiger_Admin_Accounts='adm|bin|daemon|games|lp|mail|news|operator|sync|sys|uucp|man|proxy|majordom|postgres|www-data|operator|irc|gnats Comptes autres que root considérés comme administratifs (non utilisés par des humains, et dont sans mot de passe)
Tiger_Embed_Max_Depth=3 Si un chemin embarqué réfère à un fichier exécutable, il est vérifié. cela continue récursivement jusqu'à ce qu'il n'y ait plus de nouveaux exécutables trouvé, ou une profondeur max atteinte.
Tiger_Embed_Check_Exec_Only=Y Ne recherche que les exécutables dans les chemins embarqués
Tiger_Embed_Check_SUID=Y Vérifie les exécutables setuid trouvés
Tiger_Embed_Report_Exec_Only=Y Ne reporte que les exécutables qui sont en écriture ou non possédés par root
Tiger_Embedded_OK_Owners='root|bin|uucp|sys|daemon' Qui est autorisé à posséder des fichiers système
Tiger_Embedded_OK_Group_Write='root|bin|uucp|sys|daemon' Quels groupes peuvent accéder en écriture aux fichiers systèmes
Tiger_Check_PATHALL=N Spécifie si le PATH de tous les utilisateurs doivent être vérifiés. Peut potentiellement être dangereux
Tiger_ROOT_PATH_OK_Owners='root|uucp|bin|news|sys|daemon|lp' Qui peut posséder les exécutables dans /root?
Tiger_ROOT_PATH_OK_Group_Write='root|uucp|bin|sys|daemon' Quels groupes peuvent accéder en écriture dans /root
Tiger_PATH_OK_Owners=$Tiger_ROOT_PATH_OK_Owners Qui peut posséder quelque chose dans les PATH utilisateurs
eval Tiger_PATH_OK_Group_Write='$Tiger_ROOT_PATH_OK_Group_Write' Quels groupes peuvent avoir un accès en écriture sur les exécutables dans le PATH utilisateur (non-root)
Tiger_Collect_CRACK=Y Indique si tiger doit attendre que Crack se termine.
Tiger_Crack_Local=Y Lance Crack dans les sources de mot de passe locaux uniquement
Tiger_Mail_FROM="root@`uname -n`" Nom de l'émetteur pour l'envoie de la sortie de tigercron
Tiger_Mail_RCPT=root Destinataire de la sortie de tigercron
Tiger_Files_of_Note="..[!.]*/.* */.*   */.[!.]/.log/.FSP*" Liste de globs de nom de fichier à regarder dans le système de fichier
Tiger_FSScan_Setuid=N Vérifie les exécutables setuid
Tiger_FSScan_Setgid=N Vérifie les exécutables setgid
Tiger_FSScan_Devs=Y Vérifie les fichiers de périphérique
Tiger_FSScan_SymLinks=Y Vérifie les liens symboliques étranges
Tiger_FSScan_ofNote=Y Vérifie les noms de fichier étranges
Tiger_FSScan_WDIR=N Vérifie les répertoire accessible en écriture par tout le monde
Tiger_FSScan_Unowned=Y Vérifie les fichiers avec un propriétaire/groupe non-définis
Tiger_FSScan_WarnUnknown=Y Alerte sur les systèmes de fichier inconnus utilisés
Tiger_FSScan_Local='' Système de fichiers considérés comme local dans le système
Tiger_FSScan_NonLocal='' Systèmes de fichiers considérés comme non-local.
Tiger_FSScan_ReadOnly=N Spécifie si les systèmes de fichiers en lecture seul sont scannés
USERDOTFILES=".alias .kshrc .cshrc .profile .login .mailrc .exrc .emacs .forward .tcshrc .zshenv .zshrc .zlogin .zprofile .rcrc .bashrc .bash_profile .inputrc .xinitrc .fvwm2rc .Xsession .Xclients .less" Liste de fichiers cachés communéments trouvés dans les répertoires home qui sont vérifiés par check_accounts
RHOST_SITES='*.tamu.edu|jupiter' Site Rhost qui sont attendus dans .rhosts. Tout ce qui ne matche pas est reportés
Tiger_Accounts_Trust=999 Quels uid ne doivent pas générer d'alerte pour les shells valides
Tiger_SSH_Protocol='1|2' Version de SSH attendue
Tiger_SSH_RhostsAuthentication='no' variable sshd_config attendue
Tiger_SSH_PasswordAuthentication='no' variable sshd_config attendue
Tiger_Listening_Every=Y Indisque si une alerte est données pour les services qui écoutent sur toutes les interfaces
Tiger_Listening_ValidUsers='root' Indique quel utilisateur est autorisé à avoir des processus en écoute pour les connections entrantes
Tiger_Listening_ValidProcs='' Quels processus sont toujours considérés comme valides, sans regarder s'il écoutent les connections entrantes dans le système.
Tiger_Running_Procs='syslogd cron atd klogd' Quels processus doivent être vérifiés par tiger. Les processus de cette liste qui ne sont pas vu dans la table de processus génère un FAIL
Tiger_DPKG_Optimize=Y Indisque si les vérification DPKG sont optimisés
Tiger_CHKROOTKIT_ARGS="-q" Arguments utilisé pour chkrootkit.

^
23 mai 2017

htmlpdflatexmanmd




cronrc

cronrc

Fichier de configuration pour tigercron

Liste des champs

1. Liste d'heures
2. Liste de jours du mois
3. Liste de joures de la semaine
autres scripts à exécuter

Exemples

Vérifier les signes d'intrusion connues toutes les 8 heures:
0,8,16 * * check_known check_rootkit check_logfiles check_runprocs check_rootdir check_root
check_finddeleted est très verbeux, donc on le lance moins souvent:
1 * * check_finddeleted
Vérification système tous les jours à 1heure
1 * * check_system
Obtenir une liste de processus en écoute chaque jours à différentes heures
0,4,6,10,14,18,20 * * check_listeningprocs
Vérifier les informations utiles de comptes
2 * * check_accounts check_rhosts check_netrc check_group check_passwd check_passwdformat
Vérifie les permissions de fichiers et les mots de passe:
5 * * check_perms
Vérifie la configuration réseaux tous les lundi
3 * Mon check_inetd check_exports check_aliases check_path check_crontabs check_anonftp check_printcap check_tcpd
Vérifie les fichiers une fois par mois
2 1 *  find_files
2 3 *  check_devices
Vérifier la configuration système une fois par mois
1 2 *  check_services check_umask check_ftpusers check_embedded check_exrc
Vérifier la force des mots de passe
2 2 *  crack_run
Lancer une vérification d'intégrité chaque semaine
5 * Mon tripwire_run
5 * Mon aide_run
5 * Mon integrit_run
Pour les vérification de signature il est préférable de le lancer manuellement une fois /usr/lib/tiger/systems/$OS/$VERSION/signatures téléchargé:
5 * Mon check_signatures
^
23 mai 2017

htmlpdflatexmanmd




tigexp

tigexp

Générateur d'explication des vérificateurs

   tigexp est utilisé pour générer des explications sur la sortie du tiger. Dans la première forme, tigexp va générer une explication pour chaque id de message listés. Dans la seconde forme, le rapport est scanné, et les explications sont générées.

OPTIONS

-f Génère une explication pour chaque id de message unique
-F affiche le rapport de sécurité avec les explications insérées après chaque entrée dans le rapport


   Il y a 5 niveaux de message produits par tiger:

ALERT Un message de ce niveau indique que tiger a détecté une possible tentative d'intrusion, ou une mauvaise configuration qui est un problème de sécurité
FAIL Indique une violation de la stratégie de sécurité, ou une possible intrusion.
WARN Indique un problème de sécurité qui devrait être vérifié et peut indiquer une exposition à une vulnérabilité
INFO Message pas nécessairement un problème de sécurité, mais peut être utile pour l'administrateur
ERROR Erreur dans l'exécution de tiger.
CONFIG Ces message informent des étapes dans les processus de configuration de tiger.
^
23 mai 2017

htmlpdflatexmanmd




tigercron

tigercron

Utilitaire cron pour tiger

   tigercron est utilisé pour lancer périodiquement les vérifications de tiger. tigercron lit un fichier de contrôle qui est généralement utilisé dans cronrc. -B permet d'indiquer où tiger est installé. tigercon lance les vérifications et compare les rapports avec les précédents. Puis il envoie le résultat par mail définis dans tigerrc.

OPTIONS

   tigercron utilise les même options que tiger.
^
23 mai 2017

htmlpdflatexmanmd




tiger

tiger

Analyseur de sécurité UNIX

   Tiger est un package consistant de scripts shell, code C, et de fichiers de données utilisées pour vérifier les problèmes de sécurité dans un système UNIX. Il scanne les fichiers de configuration système, les systèmes de fichiers, et les fichiers de configuration utilisateur pour de possible problèmes de sécurité et les affiche.

  tiger peut être configuré en ajustant les variables Tiger_ dans le fichier de configuration tigerrc. Pour chaque module disponible, il y a une variable qui determine si le module est lancé.

OPTIONS

-B tigerdir Spécifie le répertoire où tiger est installé.
-l logdir|@logserver Spécifie le nom du répertoire où tiger écrit le rapport de sécurité, ou le nom d'un serveur de log tiger.
-w workdir Spécifie un répertoire à utiliser pour créer des fichiers scratchs.
-b bindir Spécifie le répertoire qui contient les binaires générés depuis les modules C.
-c tigerrc Spécifie l'emplacement du fichier tigerrc
-e  Insert des explication dans les rapports de sécurité suivant chaque message.
-E  Créé un rapport explicatif séparé
-G Génère les signatures (hashs MD5 et permissions de fichier) pour les fichiers binaires système
-H Formatte le rapport en html
-S Indisque qu'une vérification des fichiers de configuration des clients sans disque servis par cette machine devraient être vérifiés en même temps.
-q Supprime les messages pour être le plus silencieux possible
-A arch Spécifie l'architecture au lieu de laisser tiger l'obtenir
-O os Spécifie l'os au lieu de laisser tiger l'obtenir
-R release Spécifie la version de l'os au lieu de laisser tiger l'obtenir

Modules

   Tiger est composé d'une série de modules. Chacun de ces modules vérifie les problèmes de sécurité liés aux systèmes UNIX. Les modules peuvent être exécutés seul, depuis cron ou via le programme tiger.

check_accounts Vérifie les comptes fournis dans le système, recherche les comptes désactivés avec cron, rhosts, .forward et les shells valides
check_aliases Effectue une vérification pour les alias mail et les configuration non-correct
check_anonftp Vérifie si le service FTP anonyme est configuré correctement
check_cron Valide les entrées cron dans le système
check_embedded Détermine si les chemins embarqués sont configurés correctement
check_exports Analyse les fichiers de configuration des exports NFS
check_group Vérifis les groupes UNIX disponible dans le système
check_inetd Vérifie le fichier de configuration inetd
check_known Recherche les signes d'intrusion connus, incluant les backdoors et les mail spools.
check_netrc Vérifie si le fichiers netrc des utilisateurs sont configurés correctement
check_nisplus Recherche les erreurs de configuration dans les entrées NIS+
check_path Valide les binaires dans le PATH de l'utilisateur, et les définitions PATH utilisés par les scripts pour déterminer les définitions non-sécurisé
check_perms Vérifie les permissions de fichiers et les inconsistances
check_printcap analyses la configuration pour le fichier de contrôle d'imprimante
check_rhosts Vérifie les fichiers rhosts pour vois si la configuration utilisateur laisse le système ouvers à des attaques
check_sendmail Vérifie les fichiers de configuration sendmail
check_signatures Compares les signatures des fichiers binaires avec ceux stockés dans la base locale (fournie avec le programme)
check_system Ce module appelle les modules spécifique de l'os dans /usr/lib/tiger/systems/
check_apache Vérifie la configuration Apache
check_devices Vérifie les permissions des périphérique
check_exrc Analyse les fichiers .exrc qui ne sont pas dans les répertoires home.
check_finddeleted Vérifie si les fichiers supprimés sont utilisé par un processus dans le système
check_ftpusers Analyse /etc/ftpusers et détermine si les admins sont dans ce fichier
check_issue Vérifie /etc/issue et /etc/issue.net pour déterminer s'ils contiennent le contenu approprié
check_logfiles Vérifie l'existence de fichiers de log (wtmp, btmp, lastlog, et utmp). Vérifie le umask
check_lilo Analyse les fichiers de configuration de lilo et grub
check_listeningprocs Vérifie les processus écoutant sur des sockets TCP/IP dans le système et les utilisateurs qui les lances
check_passwdformat Vérifie le format de /etc/passwd pour déterminer les inconsistances indiquant une intrusion ou une mauvaise configuration
check_patches Vérifie si les patchs sont disponibles pour le système. Utilise autorpm ou apt-get.
check_root Vérifie si le login root distant est autorisé
check_rootdir Vérifie les permission de /root
check_rootkit Tente de trouver les systèmes rootkités, en recherchant les commandes ls et find qui sont des trojans. inclus également un wrapper pour chkrootkit
check_single Vérifie si le système est configuré correctement et interdit l'accès single-user.
check_release Analyse la version de l'os et détermine s'il n'est plus à jours.
check_runprocs Vérifie si les processus configurés dans tigerrc sont lancés dans le système.
check_services Vérifie quils services sont configurés dans le système (généralement /etc/services) et ceux qui devraient être configurés
check_tcpd Test l'existance de tcp-wrappers et change la configuration et détermine quels services tournent sous tcp-wrappers
check_umask Vérifie le paramètre umask dans les fichiers de configuration
check_xinetd Vérifie si les services xinetd sont activés ou non
crack_run Lance une installation locale du programme Crack qui peut être utilisé pour déterminer si les mots de passe locaux sont trop simple
tripwire_run
aide_run
Integrit_run Wrappers pour des vérificateurs d'intégrité, ces programmes améliore le support de tiger pour les signatures binaires MD5 et SHA1 et les vérifications de permission de fichier.
deb_checkadvisories Vérifie une liste d'avertissement de sécurité pour voir si le système a des paquets installés dont la version peut être sujet à une vulnérabilité
deb_checkmd5sums Compare les MD5 des fichiers binaires avec ceux fournis après l'installation.
deb_nopackfiles Recherche les fichiers installés dans les répertoires système qui ne sont pas fournis par un package Debian