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)
25 mai 2017

htmlpdflatexmanmd




fail2ban-client

fail2ban-client

Configure et contrôle le service fail2ban

OPTIONS

-c ‹DIR› répertoire de configuration
-s ‹FILE› Chemin du socket
-p ‹FILE› Chemin du fichier pid
-d Dump la configuration
-i Mode interactif
-v mode verbeux
-q mode silencieux
-b Lance le serveur en tâche de fond
-f Ne lance pas le serveur en tâche de fond

Commandes

start Démarre le serveur et les jails
reload Recharge la configuration
reload ‹JAIL› Recharge le jail
stop Stoppe tous les jail et termine le serveur
status Affiche le status courant du serveur
ping Test si le serveur est en vie
set loglevel ‹LEVEL› Définis le niveau de log (CRITICAL, ERROR, WARNING, NOTICE, INFO, DEBUG)
get loglevel Affiche le niveau de log
set logtarget ‹TARGET› Définis la cible des logs (STDOUT, STDERR, SYSLOG ou un fichier)
get logtarget Affiche la cible des logs
set syslogsocket auto|‹SOCKET› Définis le chemin du socket syslog
get syslogsocket Affiche le chemin du socket syslog
flushlogs Vide le logtarget si c'est un fichier et l'ouvre de nouveau. Pour la rotation de log
set dbfile ‹FILE› Définis l'emplacement du datastore persistent. None le désactive
get dbfile Affiche l'emplacement du datastore persistent
get dbpurgeage ‹SECONDS› Défpinis de délai de conservation de l'historique des bans
get dbpurgeage Affiche le délai de conservation de l'historique des bans
add ‹JAIL› ‹BACKEND› Crée le jail en utilisant le backend
start ‹JAIL› Démarre le jail
stop ‹JAIL› Stoppe le jail
status ‹JAIL› [FLAVOR] Affiche le status courant du jail
set ‹JAIL› idle on|off Définis l'état idle du jail
set ‹JAIL› addignoreip ‹IP› Ajoute l'ip à la liste ignore du jail
set ‹JAIL› delignoreip ‹IP› supprime l'ip de la liste ignore du jair
set ‹JAIL› addlogpath ‹FILE› ['tail'] Ajoute le fichier à la liste de supervision du jail, optionnellement démarrant au tail du fichier (défaut: head)
set ‹JAIL› dellogpath ‹FILE› Supprime le fichier de la liste de supervision du jail
set ‹JAIL› logencoding ‹ENCODING› Définis l'encodage des fichiers de log du jail
set ‹JAIL› addjournalmatch ‹MATCH› Ajoute le match au filtre de journal du jail
set ‹JAIL› deljournalmatch ‹MATCH› Supprime le match du fitre de journal du jail
set ‹JAIL› addfailregex ‹REGEX› Ajoute l'expression régulière qui doit matcher les erreurs pour le jail
set ‹JAIL› delfailregex ‹INDEX› Suppmire l'expression régulière du jail
set ‹JAIL› ignorecommand ‹VALUE› Définis le ignorecommande du jail
set ‹JAIL› addignoreregex ‹REGEX› Ajoute l'expression régulière qui doit matcher un motif à exclure pour le jail
set ‹JAIL› delignoreregex ‹INDEX› Supprime l'expression régulière qui doit matcher un motif à exclure du jail
set ‹JAIL› findtime ‹TIME› Définis le nombre de secondes pour lequel le filtre recherche en arrière pour le jail
set ‹JAIL› bantime ‹TIME› Définis le nombre de secondes qu'un hôte est bannis pour le jail
set ‹JAIL› datepattern ‹PATTERN› Définis le motif utilisé pour matcher les dates/heures pour le jail
set ‹JAIL› usedns ‹VALUE› Définis le mode usedns pour le jail
set ‹JAIL› banip ‹IP› Bannis manuellement une IP pour le jail
set ‹JAIL› unbanip ‹IP› Débannis manuellement une IP du jail
set ‹JAIL› maxretry ‹RETRY› Définis le nombre d'erreurs avant de bannir l'hôte pour le jail
set ‹JAIL› maxlines ‹LINES› Définis le nombre de linux à mettre en tampon pour la recherche regex pour le jail
set ‹JAIL› addaction ‹ACT›[ ‹PYTHONFILE› ‹JSONKWARGS›] Ajoute une nouvelle action pour le jail
set ‹JAIL› delaction ‹ACT› Supprime une action pour le jail
set ‹JAIL› action ‹ACT› actionstart ‹CMD› Définis la commande de démarrage de l'action pour le jail
set ‹JAIL› action ‹ACT› actionstop ‹CMD› action pour le jail
set ‹JAIL› action ‹ACT› actioncheck ‹CMD› Définis la commande de vérification de l'action pour le jail
set ‹JAIL› action ‹ACT› actionban ‹CMD› Commande ban
set ‹JAIL› action ‹ACT› actionunban ‹CMD› commande unban
set ‹JAIL› action ‹ACT› timeout ‹TIMEOUT› commande timeout, en secondes
set ‹JAIL› action ‹ACT› ‹PROPERTY› ‹VALUE› Définis une valeur/propriété pour l'action
set ‹JAIL› action ‹ACT› ‹METHOD›[ ‹JSONKWARGS›] Appel la méthode pour l'action
get ‹JAIL› logpath afiche la liste des fichiers supervisés pour le jail
get ‹JAIL› logencoding Affiche l'encodage des fichiers de logs pour le jail
get ‹JAIL› journalmatch Affiche le fitre de match journal
get ‹JAIL› ignoreip Affiche la liste des ip ignorées
get ‹JAIL› ignorecommand Affiche l'ignorecommand du jail
get ‹JAIL› failregex Affiche la liste des expressions régulières qui matche les erreurs
get ‹JAIL› ignoreregex Affiche la liste des expressions régulières d'ignore pour le jail
get ‹JAIL› findtime Affiche le temps pour la recherche en arrière du filtre pour les erreurs
get ‹JAIL› bantime Affiche le temps de bannissement d'un hôte
get ‹JAIL› datepattern Affiche le motif utilisé pour matcher les dates/heures
get ‹JAIL› usedns Affiche le paramètre usedns
get ‹JAIL› maxretry Affiche le nombre d'erreurs permises pour le jail
get ‹JAIL› maxlines Affiche le nombre de ligne en tampon
get ‹JAIL› actions Affiche la liste d'actions
get ‹JAIL› action ‹ACT› actionstart Affiche la commande start pour l'action
get ‹JAIL› action ‹ACT› actionstop affiche la commande stop pour l'action
get ‹JAIL› action ‹ACT› actioncheck Affiche la commande check pour l'action
get ‹JAIL› action ‹ACT› actionban affiche la commande ban pour l'action
get ‹JAIL› action ‹ACT› actionunban affiche la commande unban pour l'action
get ‹JAIL› action ‹ACT› timeout affiche la commande timeout pour l'action
get ‹JAIL› actionproperties ‹ACT› Affiche la liste des propriétés pour l'action
get ‹JAIL› actionmethods ‹ACT› AFfiche la liste des méthodes pour l'action
get ‹JAIL› action ‹ACT› ‹PROPERTY› Affiche la valeur de la propriété pour l'action
^
25 mai 2017

htmlpdflatexmanmd




fail2ban-regex

fail2ban-regex

Tester les options failregex de fail2ban

OPTIONS

la syntaxe est fail2ban-regex

OPTIONS

-d, --datepattern=DATEPATTERN Définis un motif utilisé pour matcher les dates/heures
-e, --encoding=ENCODING Encodage de fichier. Défaut: locale système
-r, --raw pas de résolution DNS
-L, --maxlines=MAXLINES Nombre de ligne max pour les expressions régulières multilignes
-m, --journalmatch=JOURNALMATCH matche style journalctl. "systemd-journal" uniquement
-l, --log-level=LOG-LEVEL Niveau de log pour le logger fail2ban à utiliser
-v, --verbose mode verbeux
-D, --debuggex Produit des urls debuggex.com
--print-no-missed N'affiche pas de ligne manquante
--print-no-ignored N'affiche pas les lignes ignorées
--print-all-matched Affiche toutes les lignes qui matchent
--print-all-missed Affiche toutes les lignes manquantes
--print-all-ignored Affiche toutes les lignes ignorées
-t, --log-traceback Enrichis les messages de logs avec des tracebacks compressés
--full-traceback tracebacks complet, non-compressés
^
25 mai 2017

htmlpdflatexmanmd




fail2ban-server

fail2ban-server

Service fail2ban

   Fail2Ban lit le fichier de log contenant les rapport d'authentification échoués et banni les adresses IP correspondantes en utilisant les règles firewall. fail2ban-server ne doit pas être utilisé directement, et est lancé par fail2ban-client.

OPTIONS

-b Démarre en tâche de fond
-f Ne démarre pas en tâche de fond
-s ‹FILE› Chemin du socket
-p ‹FILE› Chemin du fichier pid
-x Force l'exécution du serveur
^
25 mai 2017

htmlpdflatexmanmd




fail2ban-testcases

fail2ban-testcases

Lance les tests d'unité fail2ban

OPTIONS

-l LOG_LEVEL, --log-level=LOG_LEVEL Niveau de log durant les tests
-n, --no-network Ne lance pas le tests qui nécessitent le réseau
-t, --log-traceback Enrichis les messages de logs avec des tracebacks compressés
--full-traceback tracebacks complet, non-compressés
^
25 mai 2017

htmlpdflatexmanmd




jail.conf

jail.conf, fail2ban.conf

Configuration pour le serveur fail2ban

   fail2ban a 4 types de fichier de configuration:

fail2ban.conf Configuration globale de fail2ban
filter.d/*.conf Filtres spécifiant comment détecter les erreurs d'authentification
action.d/*.conf Actions définissant les commandes pour bannir et débannir les adresses IP
jail.conf Les jails définissent les combinaisons de filtre avec les actions

Format des fichiers de configuration

Les fichiers .conf sont distribués par Fail2Ban. Il est recommandé que ces fichiers restent inchangés pour simplifier les mises à jours. Si nécessaire, les personnalisations devraient être fournies dans des fichiers .local. Par exemple, pour activer le jail [ssh-iptables-ipset] spécifié dans jail.conf, créer un fichier jail.local contenant:
jail.local
    [ssh-iptables-ipset]
    
    enabled = true

tail.d et fail2ban.d En plus des fichier .local, pour jail.conf et fail2ban.conf, il y a un répertoire correspondant contenant des fichier .conf additionnels. L'ordre de configuration des jail est:
[ENDSECTION]
[SECTION] name="-" table="listes" imbrication="1"
jail.conf jaid.d/*.conf
jail.local jail.d/*.local

Les fichiers de configuration ont des sections et des paire nom = valeur. Les fichiers de configuration peuvent inclure d'autres fichiers de configuration, qui sont souvent utilisé dans les filtres et actions, en utilisant les directives before et after. En utilisant les mécanismes d'interpolation de chaîne Python, d'autres définitions sont permise et peuvent ensuite être utilisées dans d'autres définitions sous la forme %(name)s:
baduseragents = IE|wget
failregex = %(known/failregex)s

Additionnellement à l'interpolation $(known/parameter)s, qui ne fonctionne pas pour les paramètres init de filtre et action, un tag d'interpolation ‹known/parameter› peut être utilisé. Cela permet d'étendre un paramètre un filtre ou action directement dans le jail sans créer de filtre séparément.
# filter.d/test.conf:
[Init]
test.method = GET
baduseragents = IE|wget
[Definition]
failregex = ^%(__prefix_line)\s+"‹test.method›"\s+test\s+regexp\s+-\s+useragent=(?:‹baduseragents›)

# jail.local:
[test]
# use filter "test", overwrite method to "POST" and extend known bad agents with "badagent":
filter = test[test.method=POST, baduseragents="badagent|‹known/baduseragents›"]

fail2ban.conf

   Ces fichier ont une section, [Definition]. Les éléments sont:

loglevel Niveau de verbosité des logs de sortie: CRITICAL, ERROR, WARNING, NOTICE, INFO, DEBUG. Défaut: ERROR
logtarget Cible des logs: filename, SYSLOG, STDERR ou STDOUT. Défaut: STDERR
socket Fichier socket. Défaut: /var/run/fail2ban/fail2ban.sock. utilisé pour la communication avec les serveur fail2ban
pidfile Fichier pid. Défaut: /var/run/fail2ban/fail2ban.pid
dbfile nom de la base de données. Défaut: /var/lib/fail2ban/fail2bn.sqlite3. Contient les données persistante.
dbpurgeage age de purge de la base, en secondes. Défaut: 86400

jail.conf

   Les options suivantes sont applicables dans les jail. Elles apparaissent dans une section spécifiant le nom du jail ou dans la section [DEFAULT]

filter Nom du filtre - nom d'un fichier dans /etc/fail2ban/filter.d/, sans l'extension
logpath Nom des fichiers de log à surveiller, séparés par des newline.
logencoding Encodage des fichiers de logs. Défaut: auto (utilise la locale système)
banaction Action pour le bannissement (défaut: iptables-multiport).
banaction_allports Idem, mais pour certains jails "allports" signifie "pam-generic" ou "recidive". Défaut: iptables-allports
action Actions dans /etc/fail2ban/action.d, sans l'extension
ignoreip Liste des IP à ne pas bannir. Peut inclure un masque cidr
ignorecommand La commande qui est exécutée pour déterminer si l'IP candidate pour le bannissement ne devrait pas être bannie
bantime Durée du ban
findtime Interval de temps, en secondes, avant l'heure courante où les erreurs comptent comme un ban
maxretry Nombre d'erreur qui se produisent dans findtime pour bannir une IP
backend Backend à utiliser pour détecter les changements dans le logpath. Défaut: auto, qui tente, dans l'ordre, pyinotify, gamin, systemd, polling.
usedns Utilise DNS pour résoudre les noms d'hôte qui apparaîssent dans les logs.
failregex Expression régulière Python à ajouter aux failregex du filtre.
ignoreregex expression régulière, si la ligne de log match, à ne pas considérer.

action.d/*.conf

   Les fichiers action spécifie quelles commande sont exécutées pour bannir et débannir une adresse IP. Les fichiers action ont 2 section, Definition et Init. La section Init définis des paramètres qui peuvent être écrasés pour un jail particulier. Les commandes suivantes peuvent être présents dans la section Definition

actionstart Commande à exécuter quand le jail démarre
actionstop Commande à exécuter quand le jail s'arrête
actioncheck Commande à exécuter avant tout autre action
actionban Commande à exécuter pour bannir l'adresse IP
actionunban Commande à exécuter pour débannir l'adresse IP

   La section Init permet de définir des actions spécifiques à l'action. Les éléments spéciaux suivants peuvent être définis dans la section Init:

timeout Délai max en seconde qu'une commande peut mettre à s'exécuter, avant d'être terminée

   Les commandes spécifiées dans la section Definition sont exécutées via un shell système donc les redirections shell et contrôle de process sont autorisés. Les commandes doivent retourner 0, sinon une erreur est loggée. De plus, si actioncheck qui avec un status non-0, il est considéré que le status du firewall a changé et fail2ban doit se réinitialiser. Les tags sont entre ‹›. Tous les éléments de la section Init sont des tags qui sont remplacés dans les commandes action. Plus d'une commande est autorisée. Chaque commande doit être sur une ligne séparée et indenté avec des espaces blanc.

Tags d'action

   Les tags suivants sont substitués dans l'actionban, actionunban, et actioncheck.

ip IPv6 à bannir
failures Nombre de fois que l'erreur se produit dans le fichier de log
ipfailures idem, mais le total de toutes les erreurs pour cette IP dans tous les jails, depuis la base persistante
ipjailfailures idem, mais le total basé sur les erreus de lIP pour le jail courant
time temp (epoch) du ban
matches Chaîne concaténées des lignes du fichier de log des matchs qui génèrent le ban. De nombreux caractères interprétés par le shell sont échappés pour éviter les injection
ipmatches idem, mais inclus toutes les lignes pour l'IP qui sont contenus avec la base persistante
ipjailmatches idem, mais les matches sont limités pour l'ip et pour le jail courant

Fichiers d'action Python

   Les actions basées sur python peuvent également être utilisés, où le nom de fichier doit être [actionname].pv. Le fichier python doit contenir une variable Action, qui pointe vers une classe python. Cette classe doit implémenter une interface minimum tel que décris dans fail2ban.server.action.ActionBase.

filter.d/*.conf

   Ces fichiers sont utilisés pour identifier les tentatives d'authentification échouées dans les fichiers de log et pour extraire l'adresse IP de l'hôte. La principale section est la section Definition. Il y a 2 définitions de filtre définie dans cette section:

failregex Expression régulière pour matcher les tentatives échouées.
ignoreregex Expression régulière pour identifier les entrées de log qui doivent être ignorées.

   Similairement aux actions, les filtres on une section Init qui peut écraser jail.conf/jail.local. Les éléments qui peuvent s'y trouver sont:

maxlines Nombre maximum de lignes à mettre en tampon pour matcher les expressions régulières multilignes
datepattern Spécifie une motif/regex de date personnalisé pour le détecteur de date
journalmatch Spécifie le journal systemd utilisé pour filtrer les entrées du journal.

   Les filtres peuvent également avoire une section INCLUDES, utilisée pour lire d'autres configurations:

before Indique que ce fichier est lu avant la section Definition
after Indisque que ce fichier est lu après la section Definition
^
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
^
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-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
^
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.
^
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
^
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




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
^
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.
^
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.
^
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
^
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
^
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
^
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
^
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.
^
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




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
^
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
^
08 mai 2017

htmlpdflatexmanmd




/etc/selinux/<SELINUXTYPE>/booleans

/etc/selinux/‹SELINUXTYPE›/booleans, booleans.local

Fichiers de configuration pour les booléens SELinux

   Le fichier booleans, si présent, contient les booléens pour supporter une distribution spécifique. booleans.local, si présent contient les booléens générés localement. Ces fichiers contiennent une liste de noms et leurs valeurs associés. Généralement ces fichiers ne sont pas présents (ils ont été dépréciés). Cependant s'il y a une application qui utilise les fonctions libselinux listés ci-dessous, ces fichiers peuvent être présents:

security_set_boolean_list(3)
security_load_booleans(3)

Format

   Ces fichiers ont le format suivant: boolean_name value
^
08 mai 2017

htmlpdflatexmanmd




checkpolicy

checkpolicy

Compilateur de stratégie SELinux

   checkpolicy est un programme qui vérifie et compile une configuration de stratégie de sécurité SELinux dans une représentation binaire qui peuvent être chargée dans le kernel. Si aucun fichier d'entrée n'est spécifié, tente de lire policy.conf ou la stratégie.

OPTIONS

-b, --binary Lit un fichier de stratégie binaire existant au lieu d'un fichier policy.conf
-C, --cil Écrit un fichier de stratégie CIL au lieu d'un fichier binaire
-d, --debug Entre en mode debug une pour la stratégie chargée
-M, --mls ACtive la stratégie MLS en vérifiant et en compilant la stratégie
-o, --output filename Écrit un fichier de stratégie binaire au nom spécifié
-c policyvers Spécifie la version de la stratégie
-t, --target Spécifie la platform cible (selinux ou xen)
-U, --handle-unknown ‹action› Spécifie comment le kernel doit gérer les classes ou permissions inconnues (deny, alow ou reject)
^
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
^
08 mai 2017

htmlpdflatexmanmd




/etc/selinux/<SELINUXTYPE>/contexts/customizable_types

/etc/selinux/‹SELINUXTYPE›/contexts/customizable_types

Fichier de configuration des types personnalisables SELinux

   Ce fichier contient une liste de types qui peuvent être personnalisés dans certaines applications. Généralement, c'est un type de contexte de fichier qui est définis sur les fichiers qui doivent être partagés dans certains domaines et où les administrateurs souhaitent gérer manuellement le type.

   L'utilisation de types personnalisables est déprécié en faveur de semanage, fcontext, etc. Cependant les application compatibles SELinux comme setfiles utilisent ces informations pour obtenir une liste de types en relation avec des fichiers qui ne devraient pas être relabélisés. Chaque ligne dans le fichier consiste d'un type qui peut être personnalisé

Exemple:
mount_loopback_t
public_content_rw_t
public_content_t
swapfile_t
sysadm_untrusted_content_t

^
04 mai 2017

htmlpdflatexmanmd




/etc/selinux/<SELINUXTYPE>/contexts/default_contexts

/etc/selinux/‹SELINUXTYPE›/contexts/default_contexts

Fichier de configuration de contextes par défaut SELinux

   Ce fichier contient des entrée pour les application de login compatible SELinux. Chaque ligne consiste des éléments suivants:

  login_process user_login_process [user_login_process] ...

login_process Consiste d'une entrée role:type[:range] qui représente le contexte du processus de login définis dans la stratégie
user_login_process Consiste d'une ou plusieurs entrées role:type[:range] qui représentent le contexte du processus login utilisateur définis dans la stratégie.

Exemple


system_r:crond_t:s0 system_r:system_crond_t:s0
system_r:local_login_t:s0 user_r:user_t:s0 staff_r:staff_t:s0
system_r:remote_login_t:s0 user_r:user_t:s0
system_r:sshd_t:s0 user_r:user_t:s0
system_r:sulogin_t:s0 sysadm_r:sysadm_t:s0
system_r:xdm_t:s0 user_r:user_t:s0
^
04 mai 2017

htmlpdflatexmanmd




/etc/selinux/<SELINUXTYPE>/contexts/default_type

/etc/selinux/‹SELINUXTYPE›/contexts/default_type

Fichier de configuration de type par défaut SELinux

   Ce fichier contient les entrées qui permettent aux application compatibles SELinux comme newrole de sélectionner un type par défaut pour un rôle s'il n'est pas fournis. Chaque ligne dans ce fichier a le format role:type où:

role Le rôle SELinux
type Le type de domaine qui est retourné pour ce rôle

Exemple


auditadm_r:auditadm_t
user_r:user_t
^
05 mai 2017

htmlpdflatexmanmd




/etc/selinux/<SELINUXTYPE>/contexts/failsafe_context

/etc/selinux/‹SELINUXTYPE›/contexts/failsafe_context

Fichier de configuration de contexte par défaut

   Ce fichier permet aux applications compatible SELinux tel que PAM d'obtenir un contexte de login valide pour un administrateur si aucune entrée par défaut n'est trouvé. Le format consiste des éléments suivant:

  role:type[:range]

Exemple

unconfined_r:unconfined_t:s0
^
16 mai 2017

htmlpdflatexmanmd




genhomedircon

genhomedircon

Générer des entrées de configuration de contexte de fichier SELinux pour les répertoires personnels

   genhomedircon est un script qui exécute semodule pour reconstruire la stratégie SELinux active (sans la recharger) et pour créer les labels pour chaque répertoire personnel basé ser les chemins retournés par getpwent. Ce script est généralement exécuté par semanage bien que cela peut être modifié par disable-genhomedircon=true dans semanage.conf.

^
20 juin 2016

htmlpdflatexmanmd




haveged

haveged

Génération de nombres aléatoires

   haveged génère un flux imprédictible de nombres aléatoires depuis les effets indirects des événements hardware sur l'état caché (caches, prédicteurs de branche, tables de traduction mémoire, etc) en utilisant l'argorithme HAVEGE (HArdware Volatile Entropy Gathering and Expansion). L'algorithme opère en userspace, sans privilèges spéciaux.

   Linux utilise les interfaces /dev/random et /dev/urandom pour fournir des nombres aléatoire. Les mécanismes standard pour remplir /dev/random peuvent ne pas être suffisants pour répondre à la demande du système. Dans ces circonstances haveged peut être lancé comme services privilégié pour remplir /dev/random.

OPTIONS

-b nnn, --buffer=nnn Définis la taille du tampon en KW. (défaut: 128KW = 512Kio)
-d nnn, --data=nnn Définis la taille du cache de données en Ko. Défaut: 16 ou déterminé dynamiquement
-f file, --file=file Définis le fichier une utilisation non-service. Défaut: "sample"
-F, --foreground Ne lance pas en tâche de fond
-i nnn, --inst=nnn Taille du cache d'instruction en Ko. Défaut: 16 ou déterminé dynamiquement
nnn, --number=nnn Nombre d'octets écris dans le fichier de sortie.
-o ‹spec›, --onlinetest=‹spec› Spécifie les tests online à lancer ‹spec› consiste de groupes optionnels "t"ot et "c"ontinuous, chaque groupe indiquant les procédures à lancer, utilisant "a‹n›" pour indiques une procédure AIS-31 variante A, et "b" pour indiques la procédure B. Les spécification sont indépendante de l'ordre. Les tests "tot" sont lancés seulement à l'initialisation. En test continue, la séquence de test est cyclique.
-p file, --pidfile=file Définis le chemin du fichier pid. Défaut: /var/run/haveged.pid
-r n, --run=n Définis le niveau d'exécution pour le service. 0=lance en service, doit être root. 1=Affiche la configuration et se termine. ؏, écris N Kio sur la sortie. déprécié, utiliser --number
-v n, --verbose=n Diagnostique. -1 signifie tous les diagnostiques (défaut0):

        1 Affiche le sommaire build/tunning en se terminant
        2 Affiche les détails de retentatives de test online
        4 Affice le timing pour les collection
        8 Affiche a couche de boucle de collection
        16 Affiche les offsets de code de boucle de collection
        32 Affiche tous les détails de tests online terminés

-w nnn, --write=nnn Définis le write_wakeup_threshold de l'interface à nnn bits. uniquement en run level 0.

NOTES

   haveged définis l'algorithme HAVEGE pour une efficacité maximum en utilisant un hiérarchie de défauts, options de ligne de commande, informations de système de fichier virtuel, et informations cpuid si disponible. Sous certaines circonstances, l'entrée utilisateur n'est pas requise pour d'excellents résultats.

   Les tests run-time fournissent l'assurance des opérations de haveged. La suite de test est modélisée sur la spécification AIS-31 du German Common Criteria, BIS. Cette spécification est typiquement appliquée aux périphériques aléatoires, nécessitant une certification formelle. Parce qu'haveged tourne sur différentes plateformes hardware, la certification ne peut pas être un but, mais la suite de test AIS-31 fournis un moyen de valider la sortie de haveged avec les même tests opérationnels appliqués aux périphériques hardwares certifiés.

Fichiers

   Si haveged est lancé en tant que service, les fichiers suivants sont requis:

/dev/random
/proc/sys/kernel/osrelease
/proc/sys/kernel/random/poolsize
/proc/sys/kernel/random/write_wakeup_threshold

Exemples

Écrire 1,5Mo de données aléatoirs dans /tmp/random
haveged -n 1.5M -f /tmp/random
Générer un /tmp/keyfile pour le chiffrement de disque avec LUKS
haveged -n 2048 -f /tmp/keyfile
Écraser la partition /dev/sda1 avec des données aléatoires
haveged -n 0 | dd of=/dev/sda1
Générer des mots de passe ASCII aléatoires de 16 caractères
(haveged -n 1000 -f - 2›/dev/null | tr -cd '[:graph:]' | fold -w 16 && echo ) | head
Écrire un flux d'octets dans un pipe. pv mesure la vitesse d'écriture dans le pipe
haveged -n 0 | pv › /dev/null
Évaluer la vitesse de génération de 1Go de données aléatoires
haveged -n 1g -f - | dd of=/dev/null
Créer un fichier clé aléatoire contenant 65 clé aléatoire pour le programme de chiffrement aespipe
haveged -n 3705 -f - 2›/dev/null | uuencode -m - | head -n 66 | tail -n 65
Tester la qualité des données générée avec la suite de test dieharder
haveged -n 0 | dieharder -g 200 -a
Générer 16k de données, tester avec la procédure A et B avec résultats détaillés.
haveged -n 16k -o tba8ca8 -v 33
Génèrer également 16k de données avec un buffer plus grand. Le test c peut être complété
haveged -n 16k -o tba8ca8 -v 33 -b 512
^
07 mai 2017

htmlpdflatexmanmd




/etc/selinux/<SELINUXTYPE>/contexts/users/local.users

/etc/selinux/‹SELINUXTYPE›/contexts/users/local.users

Fichier de configuration des utilisateurs locaux SELinux

   Ce fichier contient les définitions des utilisateurs locaux sous la forme de déclaration d'utilisateur en langage de stratégie et est déprécié et remplacé par les services semanage. Ce fichier consiste d'une ou plusieurs entrées terminée pas ';', au format: user seuser_id roles role_id [[level level] [range range]];

user seuser_id l'identifiant de l'utilisateur SELinux
roles role_id Un ou plusieurs identifiants de rôle
level level Le niveau MLS/MCS
range range La plage que l'utilisateur peut utiliser.


user test_u roles staff_r level s0 range s0 - s15:c0.c1023;

^
08 mai 2017

htmlpdflatexmanmd




mcstransd

mcstransd

Service MCS. Traduit les labels MCS/MLS sous forme lisible

OPTIONS

-F Ne lance pas en tâche de fond
^
07 mai 2017

htmlpdflatexmanmd




rewrole

rewrole

Lancer un shell avec un nouveau rôle SELinux

   Le nouveau contexte est dérivé de l'ancien contexte dans lequel newrole est exécuté. Si un rôle est spécifié mais pas le domaine, le type par défaut est dérivé du rôle spécifié par le niveau.

OPTIONS

-r, --role ROLE Spécifie le nouveau contexte
-t, --type TYPE Spécifie le nouveau domaine
-l, --level Spécifie le niveau ou plage
-p, --preserve-environment Préserve les variables d'environnment, sinon un nouvel environnement minimal est créé

Exemples

Changer de rôle
› id -Z
staff_u:staff_r:staff_t:SystemLow-SystemHigh
› newrole -r sysadm_r
› id -Z
staff_u:sysadm_r:sysadm_t:SystemLow-SystemHigh
Changer la sensibilité
› id -Z
staff_u:sysadm_r:sysadm_t:Unclassified-SystemHigh
› newrole -l Secret
› id -Z
staff_u:sysadm_r:sysadm_t:Secret-SystemHigh
Changer la sensibilité
› id -Z
staff_u:sysadm_r:sysadm_t:Unclassified-SystemHigh
› newrole -l Secret-Secret
› id -Z
staff_u:sysadm_r:sysadm_t:Secret
Lancer un programme d-ans un contexte et niveau donné:
› newrole -r sysadm_r -- -c "/path/to/app arg1 arg2..."
› newrole -l Secret -- -c "/path/to/app arg1 arg2..."
^
07 mai 2017

htmlpdflatexmanmd




/etc/selinux/newrole_pam.conf

/etc/selinux/newrole_pam.conf

Configuration pour newrole

   Ce fichier est utilisé par la commande newrole et mappe les applications ou commandes en fichiers de configuration PAM. Chaque ligne contient le nom du fichier exécutable suivi par le nom d'un fichier de configuration pam qui existe dans /etc/pam.d

^
08 mai 2017

htmlpdflatexmanmd




pam_sepermit

pam_sepermit

Module PAM pour autoriser/refuser le login en fonction de l'état d'enforcement SELinux

   Quand un utilisateur se log et match une entrée dans le fichier de configuration, il est autorisé seulement quand SELinux est en mode enforcing, sinon l'accès lui est refusé. Pour les utilisateurs qui ne matchent pas dans le fichier de configuration, le module retourne PAM_IGNORE.

OPTIONS

debug mode debug
conf=/path/to/conf/file Chemin alternatif du fichier de configuration

   Ce module fournis les type auth et account

Valeurs de retour

PAM_AUTH_ERR SELinux est désactivé ou en mode permissif et l'utilisateur match.
PAM_SUCCESS SELinux est en mode enforcing et l'utilisateur match
PAM_IGNORE L?utilisateur ne match pas
PAM_USER_UNKNOWN Le module n'est pas capable de déterminer le nom utilisateur
PAM_SERVICE_ERR Erreur durant la lectule du fichier de configuration

Exemple

auth [success=done ignore=ignore default=bad] pam_sepermit.so
auth required pam_unix.so
account required pam_unix.so
session required pam_permit.so
^
07 mai 2017

htmlpdflatexmanmd




/usr/libexec/selinux/hll/pp

/usr/libexec/selinux/hll/pp

Lit un fichier .pp et affiche l'équivant CIL

   Si le fichier d'entrée n'est pas fournis, ou '-', lis depuis stdin. Si le fichier de sortie n'est pas spécifié, ou '-', affiche CIL sur stdout

^
05 mai 2017

htmlpdflatexmanmd




/etc/selinux/<SELINUXTYPE>/contexts/removable_context

/etc/selinux/‹SELINUXTYPE›/contexts/removable_context

Fichier de configuration de contexte de périphériques débranchable

   Ce fichier contient le label par défaut qui devrait être utilisé pour les périphériques hot-plug qui ne sont pas définis dans le fichier media. Le fichier consiste d'une seule ligne user:role:type[:range]

Exemple

system_u:object_r:removable_t:s0
^
07 mai 2017

htmlpdflatexmanmd




restorecon

restorecon

Restaure les contextes de sécurité par défaut SELinux

   Ce programme est principalement utilisé pour réinitialiser le contexte de sécurité d'un ou plusieurs fichiers. Il peut être lancé à tout moment pour corriger des erreurs, ajouter le support pour de nouvelles stratégies, ou avec l'option -n pour simplement vérifier les contextes. Si un objet fichier n'a pas de contexte, restorecon écrit un contexte par défauut dans les attributs étendus de l'objet fichier. Si nu objet fichier a un contexte, restorecon ne modifie que la portion de type du contexte de sécurité.

OPTIONS

-i ignore les fichiers qui n'existent pas
-f infilename Fichier contenant une liste de fichiers à traiter pal l'application, ou '-' pour stdin
-e directory Répertoire à exclure. Peut être spécifié plusieurs fois
-R, -r Change les labels des fichiers et répertoires récursivement
-n  Ne change par les labels
-o outfilename Sauve la liste des fichiers avec un context incorrect dans ce fichier
-P Affiche une progression en affichant un '*' tous les 1000 fichiers
-v Affiche les changements dans les labels
-F Force à réinitialiser le contexte pour correspondre à file_context pour les fichiers personnalisable, et le contexte de fichier par défaut, en changeant l'utilisateur, rôle, plage et le type.
^
07 mai 2017

htmlpdflatexmanmd




restorecond

restorecond

Service qui supervise la création de fichier et définis le contexte de fichier SELinux par défaut

   Ce service utilise inotify pour voir les fichiers listés dans le fichier /etc/selinux/restorecond.conf. Quand ils sont créés, ce service s'assure que le contexte du fichier est correct en accord avec la stratégie

OPTIONS

-d mode debug
-f restorecond_file Spécifie un fichier de configuration alternatif
-u Active le mode utilisateur. ans restorecond dans la session utilisateur et lis /etc/selinux/restorecond_user.conf. Utilise Dbus pour s'assure que seul une instance restorecond tourne par session utilisateur.
-v mode verbeux
^
07 mai 2017

htmlpdflatexmanmd




/etc/selinux/restorecond.conf

/etc/selinux/restorecond.conf, restorecond-user.conf

Configuration pour restorecond

   restorecond.conf contient une liste de fichiers qui peuvent être créé par les applications avec un contexte de sécurité incorrect. Le service restorecond vérifie leur création et corrige leur contexte de sécurité en accord avec les fichiers de configuration de stratégie active /etc/selinux/‹policy_name›/contexts/files. Chaque ligne du fichier contient le chemin complet d'un fichier ou répertoire. Les entrées qui commencent avec un tilde seront étendus aux fichiers dans les répertoires personnels des utilisateurs. Noter qu'il est possible de lancer restorecond dans une session utilisateur avec l'option -u, et nécessite un fichier /etc/selinux/restorecond-user.conf.

^
31 mars 2016

htmlpdflatexmanmd




rngd

rngd

Vérifie et remplis le pool d'entropie du kernel depuis une source d'entropie

   rngd fonctionne sur des blocks de 20000bits à la fois en utilisant les tests FIPS 140-2 pour vérifier le caractère aléatoire des données. Si la donnée est bien aléatoire, le block est envoyée, random-step*8bits à la fois dans le pool d'entropie du kernel, jusqu'à ce que le poot soit plein.

OPTIONS

-b, --background met en tâche de fond
-f, --foreground Ne fork pas ni ne détache du terminal
-R, --rng-driver=name Pilote de source d'entropie. 'stream' est un pilote d'entrée de flux Unix généraliste capable de reçevoir des données depuis un fichier, un pipe donné, ou un périphérique caractère Unix. 'viapadlock' est un pilote de l'espace utilisateur pour TRNG embarqué sur certains CPU VIA qui ont le moteur de sécurité VIA PadLock
-o, --random-device=file Périphérique pour la sortie de l'entropie. Défaut: /dev/random
-r, --rng-device=file Pilote kernel, fifo ou fichier utilisé pour l'entrée d'entropie. Défaut: /dev/hwrng
--hrng=name Sélectionne un HRNG connu. help liste les HRNG connus.
-H, --rng-entropy=n.n Entropie par bit de donnée d'entrée. C'est un nombre à virgule flottante entre 0 et 1. Défaut: 1.0
-Q, --rng-quality=quality Sélectionne la qualité de la donnée aléatoire qu'une source d'entropie génère. 'default', 'low', 'medium' ou 'high'. N'utiliser que high si la donnée aléatoire est obtenue directement.
-B, --rng-buffers=n Nombre de tampons 20000bits à utiliser. Défaut: 3
-s, --random-step=n Nombre d'octets écris dans le périphérique aléatoire à la fois, entre 8 et 2500. Défaut: 64
-W, --fill-watermark=n[%] Remplis le pool d'entropie jusqu'à atteindre % de données d'entropie dans le pool. Défaut: 50%
-t, --feed-interval=n non-zéro, rngd force en remplir le pool même si celui-ci est plein
-T, --rng-timeout=n Temps à attendre les donnée pour démarrer. 0 attend indéfiniment. Défaut: 10
-p, --pidfile=file Fichier contenant le pid du processus

   rngd dump certaines statistiques dans son canal de sortie chaque heure, et à la reception de SIGUSR1. Ce canal est soit stderr en mode foreground, ou syslog en mode background.

Codes de sortie

0 aucune erreur ne s'est produite
1 La source a un problème
10 problème de paramètres, ou rngd échoue à bloque son pidfile, ou le périphérique ne peut être ouvert
11 Une erreur d'entrée/sortie s'est produite
12 Une erreur de ressource ou de l'os s'est produite
^
31 mars 2016

htmlpdflatexmanmd




rngtest

rngtest

Vérifie le caractère aléatoire des données en utilisant les tests FIPS 140-2

   rngtest travail sur des blockes de 20000bits à la fois, en utilisant les tests FIPS 140-2 pour vérifier le caractère aléatoire du block de données. Il affiche des statistiques sur stderr, et optionnellement affiche les blocks sur stdout.

OPTIONS

-p, --pipe Active le mode pipe. Tous les blockes de données qui passe les test FIPS sont sortis dans stdout, et rngtest opère en mode silencieux
-c, --blockcount=n Quitte après le traitement de n bocks. Défaut: 0
-b, --blockstats=n dump des statistiques tous les n blocks. Défaut: 0
-t, --timedstats=n Dump des statistiques toutes les n secondes. Défaut: 0

Codes de sortie

0 Pas d'erreur
1 Par d'erreur, mais au moins un block a échoué les tests FIPS
10 Problèmes de paramètres
11 Erreur d'E/S
12 Erreur de ressource ou de l'OS
^
08 mai 2017

htmlpdflatexmanmd




secolor.conf

secolor.conf

Fichier de configuration de couleur SELinux

Ce fichier contrôle la couleur associée aux composants de contexte associés au context raw passé par selinux_raw_context_to_color(3). Quand les informations lié au contexte sont affichées en couleur par une application compatible SELinux. Le fichier a le format suivant:
color color_name = #color_mask
[...]
    
[...]
context_component string    *    fg_color_name bg_color_name

color Le mot clé color
color_name nom de la couleur (ex: red)
color_mask Masque de couleur avec un # qui décris les couleurs RGB hexadécimal. black = #000000 et white = #ffffff
context_component Nom du composant de contexte (user, role, type ou range)
string change context_component qui matche le contexte raw. un '=' peut être utilisé pour matcher toute les types.
fg_color_name nom de couleur utilisé pour le texte
bg_color_name Nom de couleur utilisé pour le fond

Exemples

Exemple 1:
color black = #000000
color green = #008000
color yellow = #ffff00
color blue = #0000ff
color white = #ffffff
color red = #ff0000
color orange = #ffa500
color tan = #D2B48C
user * = black white
role * = white black
type * = tan orange
range s0-s0:c0.c1023 = black green
range s1-s1:c0.c1023 = white green
range s3-s3:c0.c1023 = black tan
range s5-s5:c0.c1023 = white blue
range s7-s7:c0.c1023 = black red
range s9-s9:c0.c1023 = black orange
range s15:c0.c1023 = black yellow
Exemple 2:
color black = #000000
color green = #008000
color yellow = #ffff00
color blue = #0000ff
color white = #ffffff
color red = #ff0000
color orange = #ffa500
color tan = #D2B48C
user unconfined_u = #ff0000 green
role unconfined_r = red #ffffff
type unconfined_t = red orange
user user_u = black green
role user_r = white black
type user_t = tan red
user xguest_u = black yellow
role xguest_r = black red
type xguest_t = black green
user sysadm_u = white black
range s0:c0.c1023 = black white
user * = black white
role * = black white
type * = black white
^
05 mai 2017

htmlpdflatexmanmd




/etc/selinux/<SELINUXTYPE>/contexts/securetty_types

/etc/selinux/‹SELINUXTYPE›/contexts/securetty_types

Fichier de configuration de type tty sécurisé SELinux

   Ce fichier contient une liste de types associés aux type tty qui est définis dans la stratégie utilisée par les application. Chaque ligne dans ce fichier contient un type définis dans la stratégie pour les périphériques tty sécurisés

Exemple

sysadm_tty_device_t
user_tty_device_t
staff_tty_device_t
^
07 mai 2017

htmlpdflatexmanmd




/etc/selinux/<SELINUXTYPE>/contexts/sepgsql_context

/etc/selinux/‹SELINUXTYPE›/contexts/sepgsql_context

Fichier de configuration et labeling SELinux pour les objects RDBMS

   Le format est object_type object_name context

object_type Est la représentation du type d'objet:

        db_database object_name spécifie le nom d'une base de données
        db_schema object_name spécifie le nom d'un objet schéma
        db_table object_name spécifie le nom d'une table
        db_column object_name spécifie le nom d'une colonne
        db_tuple object_name spécifie le nom d'une table qui contient les tuples à relabéliser
        db_procedure object_name spécifie le nom d'une procédure
        db_sequence object_name spécifie le nom d'une séquence
        db_blob object_name spécifie le nom d'un grand objet. Noter qu'un grand objet n'a pas de nm, il est identifié par sa valeur identifiant
        db_view object_name spécifie le nom d'une vue
        db_language object_name spécifie le nom d'un langage
        db_exception object_name spécifie le nom d'une exception
        db_datatype object_name spécifie le nom d'un type ou domaine

Exemples


db_database my_database system_u:object_r:sepgsql_db_t:s0
db_database *     system_u:object_r:sepgsql_db_t:s0
db_schema generator.php system_u:object_r:sepgsql_schema_t:s0
db_tuple row_low system_u:object_r:sepgsql_table_t:s0
db_tuple row_high system_u:object_r:sepgsql_table_t:s0:c1023
db_tuple *.*.* system_u:object_r:sepgsql_table_t:s0
^
07 mai 2017

htmlpdflatexmanmd




/etc/selinux/<SELINUXTYPE>/contexts/files/file_contexts

/etc/selinux/‹SELINUXTYPE›/contexts/files/file_contexts, file_contexts.local, file_contexts.homedirs, file_contexts.subs, file_contexts.subs_dist

Fichier de configuration et labeling SELinux pour les backend de contexte de fichier

   Le backend de contextes de fichier mappe depuis les combinaisons pathname/mode en contextes de securité. C'est utilisé pour trouver le contexte approprié pour chaque fichier en relabélisant un système de fichier. Le format est pathname [file_type] context. Les fichiers de substitution (.subs, et .subs_dist) ont le format subs_pathname pathname

pathname Une entrée qui définis le chemin qui peut être sous la forme d'une expression régulière. Pour les fichiers de substitution, matche un ou plusieurs fichier de configuration de stratégie de contexte de fichier
file_type type de fichier: -b, -c, -d, -p, -d, -l, -s, --.
subs_pathname Le chemin qui est considéré comme équivalent avec pathname par le processus de recherche.

Exemple

Exemple de fichier file_contexts
/. /.. /.config /.hcwd /.local system_u:object_r:default_t:s0
/[^/]+ -- system_u:object_r:etc_runtime_t:s0
/tmp/.* ‹‹none››

Exemple de fichier file_contexts.subs
/myweb /var/www
/myspool /var/spool/mail
^
07 mai 2017

htmlpdflatexmanmd




/etc/selinux/<SELINUXTYPE>/contexts/files/media

/etc/selinux/‹SELINUXTYPE›/contexts/files/media

Fichier de configuration pour le backend de contexte de média

   Le backend de contextes de média mappe les noms de périphériques tel que 'cdrom' ou 'floppy' en contextes de sécurité. Il est utilisé pour trouver le contexte approprié puor établir les contextes au montage de ces périphériques. Le format de ce fichier est device_name context

device_name l'identifiant de média, par ex. cdrom, floppy, disk et usb

Exemple


cdrom system_u:object_r:removable_device_t
floppy system_u:object_r:removable_device_t
disk system_u:object_r:fixed_disk_device_t
^
07 mai 2017

htmlpdflatexmanmd




/etc/selinux/<SELINUXTYPE>/contexts/x_context

/etc/selinux/‹SELINUXTYPE›/contexts/x_context

Fichier de configuration et labeling SELinux pour les objects X Window System

   Le backend de contexte X mappe les noms d'objets X en contextes de sécurité. Il est utilisé pour trouver le contexte approprié pour les objets X Window System dont la signification et/ou l'utilisation sont déterminés par nom. Le format est object_type object_name context

object_type Est la représentation du type d'objet:

        property object_name spécifie le nom d'une propriété de fenêtre, tel que "WM_NAME"
        selection object_name spécifie le nom d'une sélection, tel que "PRIMARY"
        extension object_name spécifie le nom d'une extension de protocole, tel que "RENDER"
        event object_name spécifie le nom d'un type d'évènement, tel que "X11:ButtonPress"
        client object_name est ignoré, cependant il devrait être mis à soit '*', ou une entrée spécifique tel que "remote".
        poly_property idem à property, mais vérifie que la propriété est marguée comme polyinstanciée.
        poly_selection idem à selection, mais vérifie que la sélection est marquée comme polyinstanciiée.

Exemple


selection PRIMARY system_u:object_r:clipboard_xselection_t:s0
selection *     system_u:object_r:xselection_t:s0
client *     system_u:object_r:remote_t:s0
^
07 mai 2017

htmlpdflatexmanmd




/etc/selinux/config

/etc/selinux/config



   Ce fichier contrôle l'état de SELinux:

        1. Le status d'application de la stratégie
        2. Le nom de la stratégie et le type qui forment un chemin vers la stratégie à charger
        3. Le comportement au regard des utilisateurs quand la stratégie est chargée
        4. Comment les applications login compatibles SELinux doivent se comporter si aucun utilisateur SELinux n'est configuré
        5. Si le système doit être relabélisé ou non.

OPTIONS

SELINUX Cette entrée indique l'application de la stratégie: enforcing, permissive, ou disabled
SELINUXTYPE Identifie le type de stratégie et doit être le nom d'un répertoir e sous /etc/selinux.
REQUIREUSERS (bool) Permet d'échouer un login s'il n'y a pas de match en d'entrée par défaut dans le fichier seusers
AUTORELABEL (bool) à 0, s'il existe un fichier .autorelabel dans le répertoire racine, alors le loader donne un shell où root peut manuellement relabéliser le système de fichier. À 1 et un fichier .autorelabel, le système relabélise automatiquement en utilisant fixfiles -F restore
^
04 mai 2017

htmlpdflatexmanmd




semanage

semanage

Outil de gestion de stratégie SELinux

   semanage est utilisé pour configurer certains éléments de la stratégie SELinux sant nécessiter de modification ou recompilation. Cela inclus le mappage des usernames linux en user SELinux et les mappages de contexte de sécurité pour divers types d'objet. semanage possède les sous-commandes suivantes:

import Importer des personnalisations locales
export Exporte des personnalisations locales
login Gérer les mappages entre les users Linux et SELinux
port Gérer les définitions de type de port réseau
interface Gérer les définitions de type d'interface réseau
module Gérer les modules de stratégie SELinux
node Gérer les définitions de type de nœud réseau
fcontext Gérer les définitions de mappage de contexte de fichier
boolean Gérer les booléens pour activer des fonctionnalités
permissive Gérer le mode d'enforcement
dontaudit Active/désactive les rèoles dontaudit dans la stratégie

^
04 mai 2017

htmlpdflatexmanmd




semanage-boolean

semanage-boolean

Gestion des booléen SELinux

   semanage boolean contrôle les paramètres booléens dans la stratégie SELinux.

OPTIONS

-n, --noheading Ne pas afficher les en-tête dans le listing des type d'objet
-N, --noreload Ne par recharger la stratégie après le commit
-C, --locallist Lister les personnalisations locales
-S STORE, --store STORE Magasin alternatif
-m, --modify Modifie un enregistrement du type d'objet spécifié
-l, --list Liste les enregistrement du type d'objet spécifié
-E, --extract Extrait les commandes personnalisables, à utiliser dans une transaction
-D, --deleteall Supprimer toutes les personnalisation locales
-1, --on active le booléen
-0, --off Désactive le booléen

Exemples

Active le booléen apache peut envoyer un mail
semanage boolean -m --on httpd_can_sendmail
lister les booléens personnalisés
semanage boolean -l -C
^
04 mai 2017

htmlpdflatexmanmd




semanage-dontaudit

semanage-dontaudit

Gestion dontaudit

   semanage dontaudit active/désactive les règles dontaudit dans la stratégie. Désactiver les règles dontaudit permet de vois si le kernel bloque un accès

OPTIONS

-N, --noreload Ne par recharger la stratégie après le commit
-S STORE, --store STORE Magasin alternatif

Exemples

Désactiver les règles dontaudit:
semanage dontaudit off
^
04 mai 2017

htmlpdflatexmanmd




semanage-export

semanage-export

Exporter des modifications SELinux

   semanage import et export peuvent être utilisés pour extraire les modifications SELinux d'une machine et les appliquer sur une autre.

OPTIONS

-S STORE, --store STORE Magasin alternatif
-f OUTPUT_FILE, --output_file OUTPUT_FILE Fichier de sortie

Exemples

Appliquer les modification à une autre machine:
semanage export -f semanage.mods
scp semanag.mod remodemachine:
ssh remodemachine
semange -import -f semanage.mods
^
04 mai 2017

htmlpdflatexmanmd




semanage-fcontext

semanage-fcontext

Gestion des contextes de fichier

   semanage fcontext est utilisé pour gérer les labels de système de fichier par défaut dans un système SELinux. Cette commande mappe les chemins de fichier en utilisant des expressions régulières en labels SELinux

OPTIONS

-n, --noheading Ne pas afficher les en-tête dans le listing des type d'objet
-N, --noreload Ne par recharger la stratégie après le commit
-C, --locallist Lister les personnalisations locales
-S STORE, --store STORE Magasin alternatif
-a, --add Ajoute un enregistrement du type d'objet spécifié
-d, --delete Supprime un enregistrement du type d'objet spécifié
-m, --modify Modifie un enregistrement du type d'objet spécifié
-l, --list Liste les enregistrement du type d'objet spécifié
-E, --extract Extrait les commandes personnalisables, à utiliser dans une transaction
-D, --deleteall Supprimer toutes les personnalisation locales
-e EQUAL, --equal EQUAL Substitue le chemin cible avec le sourcepath en générant le label par défaut.
-f [{a,f,d,c,b,s,l,p}], --ftype [{a,f,d,c,b,s,l,p}] Type de fichier.
-s SEUSER, --seuser SEUSER Nom de l'utilisateur SELinux
-t TYPE, --type TYPE Type SELinux pour l'objet
-r RANGE, --range RANGE plage MLS/MCS

Exemples

Ajoute un contexte de fichie pour tous les fichiers sous /web
semanage fcontext -a -t httpd_sys_content_t "/web[/.*)?"
restorecon -R -v /web
Substituer /home1 avec /home en définissant le contexte de fichier
semanage fcontext -a -e /home /home1
restorecon -R -v /home1
Pour les répertoires personnels sou le répertoire racine (ex: /disk6/home), exécuter les commandes suivantes:
semanage fcontext -a -t home_root_t "/disk6"
semanage fcontext -a -e /home /disk6/home
restorecon -R -v /disk6
^
04 mai 2017

htmlpdflatexmanmd




semanage-import

semanage-import

Importer des modifications SELinux

   semanage import et export peuvent être utilisés pour extraire les modifications SELinux d'une machine et les appliquer sur une autre.

OPTIONS

-N, --noreload Ne par recharger la stratégie après le commit
-S STORE, --store STORE Magasin alternatif
-f INPUT_FILE, --input_file INPUT_FILE Fichier d'entrée
^
04 mai 2017

htmlpdflatexmanmd




semanage-interface

semanage-interface

Outil de gestion d'interface réseaux

   semanage interface contrôle les labels assignés aux interfaces réseaux

OPTIONS

-n, --noheading Ne pas afficher les en-tête dans le listing des type d'objet
-N, --noreload Ne par recharger la stratégie après le commit
-C, --locallist Lister les personnalisations locales
-S STORE, --store STORE Magasin alternatif
-a, --add Ajoute un enregistrement du type d'objet spécifié
-d, --delete Supprime un enregistrement du type d'objet spécifié
-m, --modify Modifie un enregistrement du type d'objet spécifié
-l, --list Liste les enregistrement du type d'objet spécifié
-E, --extract Extrait les commandes personnalisables, à utiliser dans une transaction
-D, --deleteall Supprimer toutes les personnalisation locales
-t TYPE, --type TYPE Type SELinux pour l'objet
-r RANGE, --range RANGE plage MLS/MCS
^
04 mai 2017

htmlpdflatexmanmd




semanage-login

semanage-login

Gestion des mappages des utilisateurs Linux et SELinux

   semanage login contrôle le mappage entre un utilisateur Linux et un utilisateur SELinux. Il peut être utilisé pour activer des utilisateurs confinés. Par exemple on peurrait définis qu'un utilisateur particulier ou un groupe d'utilisateurs vont se logger dans un système en tant que user_u. Préfixer un nom de groupe avec '%'.

OPTIONS

-n, --noheading Ne pas afficher les en-tête dans le listing des type d'objet
-N, --noreload Ne par recharger la stratégie après le commit
-C, --locallist Lister les personnalisations locales
-S STORE, --store STORE Magasin alternatif
-a, --add Ajoute un enregistrement du type d'objet spécifié
-d, --delete Supprime un enregistrement du type d'objet spécifié
-m, --modify Modifie un enregistrement du type d'objet spécifié
-l, --list Liste les enregistrement du type d'objet spécifié
-E, --extract Extrait les commandes personnalisables, à utiliser dans une transaction
-s SEUSER, --seuser SEUSER Nom d'utilisateur SELinux
-r RANGE, --range RANGE plage MLS/MCS

Exemples

Modifier l'utilisateur default dans le système en guest_u
semanage login -m -s guest_u __default__
assigner à l'utilisateur gijoe dans une machine MLS une plage et l'utilisateur staff_u
semanage login -a -s staff_u -rSystemLow-Secret gijoe
assigner tous les utilisateurs du groupe engineering à l'utilisateur staff_u
semanage login -a -s staff_u %engineering
^
04 mai 2017

htmlpdflatexmanmd




semanage-module

semanage-module

Installe, supprime et désactive les modules de stratégie SELinux

OPTIONS

-n, --noheading Ne pas afficher les en-tête dans le listing des type d'objet
-N, --noreload Ne par recharger la stratégie après le commit
-C, --locallist Lister les personnalisations locales
-S STORE, --store STORE Magasin alternatif
-a, --add Ajoute un enregistrement du type d'objet spécifié
-r, --remove Supprime le module spécifié
-d, --disable Désactive le module spécifié
-e, --enable Active le module spécifié
-l, --list Liste les enregistrement du type d'objet spécifié
-E, --extract Extrait les commandes personnalisables, à utiliser dans une transaction
^
04 mai 2017

htmlpdflatexmanmd




semanage-node

semanage-node

Contrôle les adresses IP en définition de type de nœud

OPTIONS

-n, --noheading Ne pas afficher les en-tête dans le listing des type d'objet
-N, --noreload Ne par recharger la stratégie après le commit
-C, --locallist Lister les personnalisations locales
-S STORE, --store STORE Magasin alternatif
-a, --add Ajoute un enregistrement du type d'objet spécifié
-d, --delete Supprime un enregistrement du type d'objet spécifié
-m, --modify Modifie un enregistrement du type d'objet spécifié
-l, --list Liste les enregistrement du type d'objet spécifié
-E, --extract Extrait les commandes personnalisables, à utiliser dans une transaction
-D, --deleteall Supprimer toutes les personnalisation locales
-t TYPE, --type TYPE Type SELinux pour l'objet
-r RANGE, --range RANGE plage MLS/MCS
-p PROTO, --proto PROTO Protocole pour le port spécifié (tcp|udp) ou version du protocole internet pour le nœud spécifié (ipv4|ipv6)
-M NETMASK, --netmask NETMASK Masque de sous-réseau
^
04 mai 2017

htmlpdflatexmanmd




semanage-permissive

semanage-permissive

Gestion des mappages permissifs

   semanage permissive ajoute ou supprime un module permissif de stratégie SELinux

OPTIONS

-n, --noheading Ne pas afficher les en-tête dans le listing des type d'objet
-N, --noreload Ne par recharger la stratégie après le commit
-S STORE, --store STORE Magasin alternatif
-a, --add Ajoute un enregistrement du type d'objet spécifié
-d, --delete Supprime un enregistrement du type d'objet spécifié
-l, --list Liste les enregistrement du type d'objet spécifié

Exemples

Lister tous les modules permissifs
semanage permissive -l
faire de httpd_t un domaine permissif
semanage permissive -a httpd_t
^
04 mai 2017

htmlpdflatexmanmd




semanage-port

semanage-port

Outil de gestion de mappage de port

   semanage port contrôle le numéro de port en définitions de type de port

OPTIONS

-n, --noheading Ne pas afficher les en-tête dans le listing des type d'objet
-N, --noreload Ne par recharger la stratégie après le commit
-C, --locallist Lister les personnalisations locales
-S STORE, --store STORE Magasin alternatif
-a, --add Ajoute un enregistrement du type d'objet spécifié
-d, --delete Supprime un enregistrement du type d'objet spécifié
-m, --modify Modifie un enregistrement du type d'objet spécifié
-l, --list Liste les enregistrement du type d'objet spécifié
-E, --extract Extrait les commandes personnalisables, à utiliser dans une transaction
-D, --deleteall Supprimer toutes les personnalisation locales
-t TYPE, --type TYPE Type SELinux pour l'objet
-r RANGE, --range RANGE plage MLS/MCS
-p PROTO, --proto PROTO Protocole pour le port spécifié (tcp|udp) ou version du protocole internet pour le nœud spécifié (ipv4|ipv6)

Exemples

Lister toutes les définitions de port
semanage port -l
autoriser Apache à écouter sur tcp port 81
semanage port -a -t http_port_t -p tcp 81
autoriser sshd à écouter sur le port tcp 8991
semanage port -a -t ssh_port_t -p tcp 8991
^
04 mai 2017

htmlpdflatexmanmd




semanage.conf

semanage.conf

Fichier de configuration global pour la libraire de gestion SELinux

OPTIONS

module-store Spécifie comment la libraire interagit avec le magasin de stratégie SELinux

        direct Écris directement dans le magasin de stratégie (défaut)
        ‹socket path› Chemin absolu vers un socket utilisé pour se connecter au serveur de gestion de stratégie
        ‹server name› Nom et port d'un serveur de gestion de stratégie utilisé sur TCP.

root Chemin racine alternatif pour le magasin. Défaut: /
store-root Chemin racine du magasin alternatif. Défaut: /var/lib/selinux
compiler-directory Répertoire alternatif contenant les compilateurs HLL vers CIL. Défaut: /usr/libexec/selinux/hll
ignore-module-cache true|false ignore ou non le cache des modules CIL compilés depuis HLL. Défaut: false.
policy-version en générant la stratégie, semanage défini POLICYDB_VERSION_MAX tel que définis dans ‹sepol/policydb/policydb.h›. Ce paramètre permet de définir une autre versions
target-platform 0|1 Vérifie ou non les règles neverallow en exécutant la commande semanage. Défaut: 1
file-mode Par défaut le mode de permission pour les fichiers de stratégie temps-réer est à 0644
save-previous true|false Contrôle si le répertoire du module précédent est sauvé après être validé avec succès dans le magasin de stratégie. Défaut: false (la version précédente est supprimée)
save-linked true|false Contrôle si le module lié précédent est sauvé (avec le nom base.linked) une fois correctement chargé dans le magasin de stratégie. Défaut: false (le module précédent est supprimé)
ignoredirs Liste de répertoires séparés par des ';' de répertoires à ignorer en définisant les répertoires personnels utilisateur.
usepasswd true|false Active l'utilisation de getpwent() pour obtenir une liste de répertoire home à labéliser. défaut: true
disable-genhomedircon true|false Contrôle si la fonction genhomedircon est exécutée avec la commande semanage. Défaut: false
handle-unknown deny|reject|allow Contrôle le comportement du kernel pour gérer les permisssions définies dans le kernel, mais manquante dans la stratégie courante.
bzip-blocksize [0-9] 0-pas de compression. Défaut: 9
bzip-small true|false indique si l'algorithme bzip tente de réduire son utilisation mémoire. Défaut: false
remove-hll true|false à true, les fichiers HLL seront supprimés après recompilation dans CIL.
^
07 mai 2017

htmlpdflatexmanmd




semodule

semodule

Gérer les modules de stratégie SELinux

   semodule est l'outil utilisé pour gérer les modules de stratégie SELinux, incluant l'installation, la mise à jours, le listing et la suppression des modules. semodule peut également être utilisé pour reconstruire une stratégie depuis un magasin de module et/ou forcer à recharger une stratégie sans effectuer d'autre transactions. semodule agit sur les paquets de module créés par semodule_package. Par convention, ces fichiers ont un suffixe .pp (policy package).

OPTIONS

-R, --reload Force à recharger une stratégie
-B, --build Force à reconstruire une stratégie (recharge également sauf si -n)
-D, --disable_dontaudit Supprime temporairement dontaudits de la stratégie
-i, --install=MODULE_PKG Install/remplace un paquet module
-r, --remove=MODULE_NAME Supprime un module existant
-l[KIND], --liste-modules[=KIND] Affiche une liste des modules installés
-E, --extract=MODULE_PKG Extrait un module du magasin comme fichier HLL ou CIL dans le répertoire courant.

KIND

        standard Liste la plus haut priorité
        full Liste tous les modules

-X,--priority=PRIORITY Définis la priorité pour les opérations qui suivent (1-999)
-e, --enabled=MODULE_NAME Active un module
-d, --disable=MODULE_NAME désactive un module
-s, --store Nom du magasin à utiliser pour les opérations
-n, --noreload, -N ne pas recharger la stratégie
-p, --preserve_tunables préserve tunables in policy
-C, --ignore-module-cache Recompile les module CIL construis depuis les fichiers HLL
-p, --path Chemin alternatif pour la racine de stratégie
-S, --store-path Chemin alternatif pour la racine du magasin de stratégie
-v, --verbose mode verbeux
-c, --cil Extrait le module comme fichier CIL
-H, --hll Extrait le module comme fichier HLL

Exemples

Installer ou remplacer un paquet de stratégie de base
semodule -b base.pp
installer ou remplacer un paquet de stratégie non base
semodule -i httpd.pp
Lister les module non de base
semodule -l
Activer tous les messages AVC pour lesquels SELinux est actuellement en 'dontaudit'
semodule -DB
Réapplique les règles 'dontaudit'
semodule -B
Installer ou remplacer tous les modules non-base dans le répertoire courant
semodule -i *.pp
Installer ou remplacer tous les modules dans le répertoire courant
ls *.pp | grep -Ev "base.pp|enableaudit.pp" | xargs /usr/sbin/semodule -b base.pp -i
Désactiver un module
semodule -d alsa
Installer un module avec une priorité spcifique
semodule -X 100 -i alsa.pp
Lister tous les modules
semodule --list=full
Définir un chemin alternatif pour la racine des stratégie
semodule -B -p "/tmp"
Écris la version HLL de puppet et la version CIL de wireshark
semodule -X 400 -E puppet --cil -E wireshark
^
08 mai 2017

htmlpdflatexmanmd




/etc/security/sepermit.conf

/etc/security/sepermit.conf

fichier de configuration pour pam_sepermit

   Les lignes sont sous la forme ‹user›[:‹option›:‹option›...]. Un utilisateur peut être un username, un @group, ou un utilisateur SELinux (%seuser)

OPTIONS

exclusive Seul une session login est permise pour l'utilisateur et les processus de l'utilisateur seront tués au logout
ignore Le module ne retourne jamais PAM_SUCCESS pour l'utilisateur. Il retourne PAM_IGNORE si SELinux est en mode enforcing, PAM_AUTH_ERR sinon. Utile pour supporter les utilisateurs invités sans mot de passe et des utilisateurs confinés sans mot de passe simultanément.
^
07 mai 2017

htmlpdflatexmanmd




service_seusers

service_seusers

Fichiers de configuration de mappage d'utilisateur et service en utilisateur SELinux

   Ces fichiers sont optionnels et permettent aux services de définir un utilisateur SELinux à l'authentification. Il y a un fichier pour chaque utilisateur GNU/Linux qui est requis pour lancer un service avec un username SELinux spécifique. Chaque ligne a le format service:seuser[:range]

service Le nom du service utilisé par l'application
seuser Le nom d'utilisateur SELinux
range La plage MCS/MLS

Exemple


# ./logins/root
ipa:user_u:s0
this_service:unconfined_u:s0
    
# ./logins/rch
ipa:unconfined_u:s0
that_service:unconfined_u:s0
^
07 mai 2017

htmlpdflatexmanmd




sestatus

sestatus

Outils de status SELinux

   sestatus est utilisé pour obtenir le status d'un système avec SELinux

OPTIONS

-v Affiche les fichiers de contexte des fichiers et processus listés dans /etc/sestatus.conf
-b Affiche l'état courant des booléens
^
07 mai 2017

htmlpdflatexmanmd




/etc/sestatus.conf

/etc/sestatus.conf

Fichier de configuration pour sestatus

   sestatus -v utilise ce fichier pour déterminer quel contexte de sécurité de fichier et processus devraient être affichés. Le fichier consiste de 2 sections optionnelles [files] et [process].

[files] Début d'une liste de fichier
file_name Un ou plusieurs noms de fichiers complet, chacun sur une ligne, dont le contexte sera affiché. Si le fichier n'existe pas il est ignoré. Si c'est un lien symbolique, affihe le contexte de la cible
[process] Début d'une liste de processus
executable_file_name Un ou plusieurs fichiers exécutable complet qui devraient être dans un processus actif, et dont le contexte sera affiché.

Exemples


[files]
/etc/passwd
/etc/shadow
/bin/bash
/bin/login
/lib/libc.so.6
/lib/ld-linux.so.2
/lib/ld.so.1
    
[process]
/sbin/mingetty
/sbin/agetty
/usr/sbin/sshd
^
08 mai 2017

htmlpdflatexmanmd




/etc/selinux/<SELINUXTYPE>/setrans.conf

/etc/selinux/‹SELINUXTYPE›/setrans.conf

Fichier de configuration de traduction pour les systèmes SELinux MCS/MLS

   Ce fichier spécifie la manière dont les labels MCS/MLS sont traduits sous forme lisible par l'homme par les service mcstransd. Les stratégies par défaut ne supportent que 16 niveaux de sensibilité (s0 à s15) et 1024 catégories (c0 à c1023). Plusieurs catégories peuvent être séparés par des ',' et une plage de catégorie peut être raccourcie en utilisant un '.'

Mots clés

Base Une fois une base déclarée, les définitions de label suivant possèderont tous ces modificateurs durant la traduction.
Default Définit le bit de plage de catégorie utilisé pour les bits inverses
Domain Créé un nouveau domaine avec le nom fournis
Include Lit et traite le contenu du fichier de configuration spécifié
Join Définis un caractère utilisé pour séparer les membres d'un ModifierGroup
ModifierGroup Un moyen de grouper des définitions de bit de catégorie par la manière dont ils modifient le label de sensibilité
Prefix Mot(s) préfixe qui peuvent précéder les membres d'un modifiergroup
Suffix Mot(s) suffixe qui peuvent suivre les membres d'un modifiergroup
Whitespace Définis le jeu de caractère d'espace blanc acceptables qui peuvent être utilisé dans les labels traduits

Exemples de définition de niveau de sensibilité
s0=SystemLow
Définis une traduction de s0 (le niveau de sensibilité la plus faible) sans catégorie.
s15:c0.c1023=SystemHigh
Définis une traduction de s15:c0.c1023 en system SystemHigh. c0.c1023 est un raccourcis pour toutes les catégories.
s0-s15:c0.c1023=SystemLow-SystemHigh
Définis une traduction de s0-s15:c0.c1023 en SystemLow-SystemHigh.
s0:c0=PatientRecord
Définis une traduction de la sensibilité s0 avec la catégorie c0 en PatientRecord
s0:c1*Accounting
Définis une traduction de la sensibilité s0 avec la catégorie c1 en Accounting
s2:c1,c2,c3=Confidential3Categories
s2:c1.c3=Confidential3Categories
Définissent une traduction de la sensibilité s2 avec les catégories c1, c2 et c3 en Confidential3Categories
s5=TopSecret
Définis une traduction de la sensibilité s5 sans catégorie en TopSecret

Exemples de contraintes
c0!c1 Si les bits de catégorie 0 et 1 sont mis, la contrainte échoue et le contexte original est retourné
c5.c9›c1
Si les bits 5 à 9 sont mis et le niveau de sensibilité s1, la contrainte échoue
s1!c5,c9
Si les bits 5 et 9 sont mis et le niveau de sensibilité est s1, la contrainte échoue.
^
08 mai 2017

htmlpdflatexmanmd




/etc/selinux/<SELINUXTYPE>/seusers

/etc/selinux/‹SELINUXTYPE›/seusers

Fichier de configuration de mappage des utilisateurs GNU/Linux en utilisateurs SELinux

   Ce fichier est utilisé par les application de connexions compatible SELinux. selinux_usersconf_path(3) retourne le chemin de la stratégie active vers ce fichier. getseuserbuname(3) lit ce fichier pour maper un utilisateur ou groupe en un utilisateur SELinux. Chaque ligne consiste des champs suivants [%group_id]|[user_id]:seuser_id[:range]

group_id|user_id Le GID/UID GNU/Linux. une entrée __default__ peut être fournis.
seuser_id L'identité utilisateur SELinux
range Niveau ou plage optionnelle pour une stratégie MLS/MCS

Exemple


__default__:user_u:s0
system_u:system_u:s0-s15:c0.c255
root:root:s0-s15:c0.c255
fred:user_u:s0
%user_group:user_u:s0
^
03 juillet 2017

htmlpdflatexmanmd




sudo

sudo, sudoedit

Exécute une commande sous un autre utilisateur

   sudo autorise un utilisateur à exécuter une commande en tant que super-utilisateur ou un autre utilisateur. L'utilisateur réel est utilisé pour déterminer le nom de l'utilisateur avec lequel vérifier la stratégie de sécurité

   sudo support une architecture à plugin pour les stratégies de sécurité et le logging. La stratégie de sécurité détermine quels privilèges un utilisateur a en lançant sudo. La stratégie peut exiger que l'utilisateur s'authentifie. La stratégie de sécurité par défaut est sudoers, qui est configuré via /etc/sudoers, ou via LDAP.

   Les stratégie de sécurité peuvent supporter le cache d'accréditifs pour permettre à l'utilisateur de lancer sudo pendant un certain temps sans retaper son mot de passe.

OPTIONS

-A, --askpass Normalement, si sudo exige un mot de passe, il le lis depuis le teminal de l'utilisateur. -A lance un helper
-b, --background Dans la commande en tâche de fond
-C, --close-from=num Ferme tous les descripteurs de fichier supérieur ou égal à ‹num› avant d'exécuter une commande. Les valeurs inférieur à 3 ne sont pas permises
-E, --preserve-env Indique à la stratégie de sécurité que l'utilisateur souhaite préserver ses variables d'environnement.
-e, --edit Édite un ou plusieurs fichiers
-g group, --group=group Lance la commande avec le groupe primaire spécifié au lieu du groupe primaire de l'utilisateur cible
-H, --set-home Demande que la stratégie définisse la variable HOME au répertoire spécifié par l'utilisateur cible
-h, --host=host Lance la commande sur l'ĥôte spécifié si le plugin de startégie de sécurité supporte les commandes distantes.
-i, --login Lance le shell de l'utilisateur cible. Cela signifie que les fichiers comme .profile ou .login sont lus. Si aucune commande n'est spécifiée, un shell interactif est lancé
-k, --reset-timestamp Utilisé sans commande, invalide les accréditifs cachés de l'utilisateur. En d'autres termes, la prochaine commande sudo nécessitera un mot de passe. Utilisé avec une autre option ou une commande, ignore les accréditifs en cache.
-K, --remove-timestamp Similaire à -k, excepté qu'il supprime les accréditifs cachés de l'utilisateur et ne peut pas être utilisé en conjonction avec une commande ou autre option
-l, --list Sans commande, liste les commandes permises (ou interdites) pour l'utilisateur invoquant, ou -U. Si une commande est spécifié et permise par la stratégie, le chemin comple de la commande est affichées avec les arguments.
-n, --non-interactive Empêche l'utilisateur d'entrer quoi que ce soit.
-P, --preserve-groups Préserve le groupe de l'utilisateur invoquant
-p, --prompt=prompt Utilise un prompt de mot de passe personnalisé:

        %H Étend le nom d'hôte incluant le nom de domaine
        %h Étend un nom d'hôte local sans le domaine
        %p Étend le nom de l'utilisateur dont le mot de passe est demandé
        %U Étend le nom de login de l'utilisateur cible
        %u Étend le nom de login de l'utilisateur invoquant
        %% le caractère '%'

-r, --role=role Lance la commande avec le contexte SELinux qui inclus le rôle spécifié
-S, --stdin Écrit le prompt sur stderr et lit le mot d-e passe depuis stdin au lieu du terminal
-s, --shell Lance le shell spécifié par la variable d'environnement SHELL si définie, ou le shell de l'utilisateur invoquant
-t, --type=type Lance la commande avec le contexte de sécurité SELinux qui inclus le type spécifié. Non spécifié, le type par défaut est dérivé du rôle
-U, --other-user=user avec -l, liste les privilèges de l'utilisateur
-T, --command-timeout=timeout Définis un timeout pour la commande
-u, --user=user Lance la commande sous cet utilisateur
-v, --validate Met à jours les accréditifs en cache de l'utilisateur
-- Indique la fin des arguments


   Les variables d'environnement à définir pour la commande peuvent également être passés sur la ligne de commande sous la forme VAR=value, sujettes à restriction.

Exécution de commande

   Quand sudo exécute une commande, la stratégie de sécurité spécifie l'environnement d'exécution pour la commande. Typiquement, l'uid et gid réel et effectif sont définis pour correspondre à l'utilisateur cible, tel que spécifié dans la base de comptes, et le vecteur groupe est initialisé avec la base de groupes.

  Les paramètres suivants peuvent être spécifiés par la stratégie de sécurité:

        UID effectif et réel
        GID effectif et réel
        GID supplémentaires
        La liste d'environnement
        Répertoire de travail courant
        Masque de création de fichier
        Role et type SELinux
        Priorité (nice)

   Quand sudo lance une commande, il se fork, définis l'environnement d'exécution, et appel execve dans le processus enfant. Le processus sudo principal attend que la commande soit complétée, puis passe le status de sortie de la commande à la fonction de fermeture de la stratégie de sécurité et quitte. Si un plugin de loggin est configuré ou si la stratégie de sécurité le demande explicitement, un nouveau pseudo-terminal est créé et un second process sudo est utilisé pour relayer les signaux de contrôle de job entre le pty de l'utilisateur et le nouveau pty. Ce processus rend possible, par exemple, se suspendre et résumer la commande. Sans cela, la commande dans un groupe de processus orphelin et ne reçevrai aucun signal de contrôle de job. Un cas spécial, si le plugin de stratégie ne définis pas de fonction close et aucun pty n'est requis, sudo exécute la commande directement au lieu de fork. le plugin sudoers ne définis une fonction close quand quand le loggin I/O est activé, un pty requis, ou les options pam_session ou pm_setcred sont activés.

Gestion des signaux

   Quand la commande est lancée comme enfant du processus sudo, sudo relai les signaux qu'il reçoit à la commande. Les signaux SIGINT et SIGQUIT sont seulement relayés quand la commande est lancées dans un nouveau pty ou quand le signal a été envoyé par un processus utilisateur, pas le kernel. Cela évite que la commande reçoive 2 fois SIGINT chaque fois que l'utilisateur utilise Contrôle-C. Certains signaux comme SIGSTOP et SIGKILL, ne peuvent être relayés à la commande. SIGTSTP doit être envoyé au lieu de SIGSTOP pour suspendre une commande.

   Un cas spécial, sudo ne relai pas les signaux qui sont envoyés par la commande lancée. Cela empêche la commande de se tuer elle-même. Dans certains systèmes, reboot(8) envoie SIGTERM à tous les processus non-système autre que lui-même avant de redémarrer le système. Celà empêche sudo de relayer SIGTERM, qui peut quitter avant que le système soit redémarré. En résultat, lancer un script qui appel reboot ou shutdown via sudo peut terminer le système dans un état indéfinis sauf si reboot ou shutdown sont lancés avec exec() au lieu de system().

   Si aucun plugin de loggin n'est chargé et que la stratégie n'a pas définis de fonction close, définir un timeout de commande ou que la commande soit lancé dans un nouveau pty, sudo peut exécuter la commande directement.

Plugins

   Les plugins peuvent être spécifiés via les directives Plugin dans sudo.conf. Ils peuvent être chargés comme objets partagés dynamiques ou compilés directement dans sudo. sudoers est le plugin par défaut

Valeur de sortie

   Le code de sortie de sudo est le code de sortie de la commande exécutée. Si la commande s'est terminée à cause d'un signal, sudo envoie lui-même le signal qui termine la commande.

   Sinon, sudo quitte avec une valeur de 1 s'il y a un problème de configuration/permission ou si sudo ne peut pas exécuter la commande. Dans le dernier cas, la chaîne d'erreur est affichée sur stderr. Si sudo ne peut pas stat(2) une ou plusieurs entrées dans le PATH de l'utilisateur, une erreur est affichée sur stderr.

Notes de sécurité

   Sudo tente d'être sûre en exécutant des commandes externes. Pour éviter le spoofing de commande, sudo vérifie "." et "" en dernier en recherchant une commande dans le PATH de l'utilisateur. Noter cependant que la variable PATH n'est pas modifée et est passée inchangée au programme que sudo exécute.

   Les utilisateurs ne devrait jamais obtenir des privilèges pour exécuter des fichiers qui sont en écriture par l'utilisateur ou qui résident dans un répertoire en écriture par l'utilisateur. Si l'utilisateur peut modifier ou remplacer la commande il n'y a pas de limite à ce qui peut être lancé.

   Noter que sudo normalement ne log que les commandes explicitement lancées. Si un utilisateur lance une commande telle que sudo su ou sudo sh, les commandes suivantes ne sont plus sujettes à la stratégie sudo. De même pour les commandes qui offrent des échappement shell. Si le loggin I/O est activé, les commandes suivantes sont loggées, mais il n'y a pas des logs traditionnels pour ces commandes. À cause de celà, une attention particulière doit être portée sur l'accès des utilisateurs aux commandes via sudo pour vérifier que la commande ne donne pas par inadvertance un shell root.

   Pour éviter la fuite d'information potentiellement sensible, sudo désactive les coredumps par défaut durant l'exécution.

Variables d'environnement

EDITOR Nom de l'éditeur par défaut pour -e (sudoedit), si SUDO_EDITOR ou VISUAL ne sont pas définis
MAIL Emplacement de la boite mail de l'utilisateur
HOME Répertoire personnel de l'utilisateur
LOGNAME Nom de l'utilisateur
PATH Les chemins de recherche pour les commandes
SHELL Shell courant de l'utilisateur
SUDO_ASKPASS Spécifie le chemin du helper pour lire le mot de passe si aucun terminal n'est disponible ou avec -A
SUDO_EDITOR Éditeur par défaut pour -e (sudoedit)
SUDO_GID GID de l'utilisateur qui a invoqué sudo
SUDO_PROMPT prompt pour les mots de passe
SUDO_PS1 valeur PS1 pour le programme à exécuter
SUDO_UID UID de l'utilisateur qui a invoqué sudo
SUDO_USER nom de login de l'utilisateur qui a invoqué sudo
USER nom de l'utilisateur
USERNAME idem à USER
VISUAL Éditeur par défaut pour -e (sudoedit) si SUDO_EDITOR n'est pas définis

Exemples

obtenir une liste des répertoire non-lisible:
sudo ls /usr/local/protected
Liste le répertoire personnel de l'utilisateur yaz dans une machine où le système de fichier maintenant ~ yaz n'est pas exporté en root
sudo -u yaz ls ~ yaz
Éditer index.html en tant qu'utilisateur www
sudoedit -u www ~ www/htdocs/index.html
Voir les logs système uniquement accessibles par root
sudo -g adm more /var/log/syslog
Lancer un éditeur en tant que jim avec un groupe primaire différent
sudoedit -u jim -g audio ~ jim/sound.txt
Éteindre la machine
sudo shutdown -r +15 "quick reboot"
^
03 juillet 2017

htmlpdflatexmanmd




sudo.conf

sudo.conf

Fichier de configuration de sudo

   sudo.conf supporte les directive 'Plugin', 'Path', 'Set', 'Debug'.

Plugin

Une ligne Plugin définis un module et son chemin, suivi de paramètres optionnels. Peut être spécifié plusieurs fois
Plugin sudoers_policy /usr/local/libexec/sudo/sudoers.so sudoers_mode=0440

Path

   Path définis les chemins vers divers librairies/programmes nécessaire. Si une ligne Path ne contient pas de chemin, la fonctionnalité est considérée désactivée:

        askpass chemin du helper pour lire les mots de passe quand aucun terminal n'est disponible
        noexec Chemin de la librairie wrappers pour les fonctions execl(), execle(), execlp(), exect(), execv(), execve(), execvP(), execvp(), execvpe(), fexecve(), popen(), posix_spawn(), posix_spawnp(), system(), et wordexp() qui empêche l'exécution d'autres commandes. Utilisé pour implémenter la foncionnalité noexec dans les systèmes qui supportent LD_PRELOAD ou son équivalent.
        plugin_dir Répertoire de recherche des plugins spéficier sans chemin complet.
        sesh Chemin de sesh. Utilé quand sudo est compilé avec le support SELinux

Set

disable_coredump true|false Par défaut sudo désactive le coredump pour éviter toute fuite de données sensible
group_source sudo passe la liste des groupes de l'utilisateur invoquant à la stratégie et les plugins I/O. Dans la plupart des système, il y a une limite du nombre de groupes (généralement 16). si la liste de groupe dépasse la limite kernel, sudo consulte lui-même la liste des groupes:

        static Utilise la liste de groupe statique que le kernel retourne
        dynamic Requête toujours la base de groupe. C'est dynamique dans le sens où les changements fait dans la base de groupe après que l'utilisateur se soit loggé sont reflétés dans la liste des groupe.
        adaptive Ne requête la pase que si la liste des groupes retournés par le kernel a atteind la limite des entrées.

max_groups Nombre maximum de groupes utiliateur à récupérer dans la base de groupe lorsque sudo requête la base de groupe directement
probe_interfaces Par défaut, sudo sont les interfaces réseaux du système et passe l'IP à chaque interface activée au plugin de stratégie. Cela simplifie les règles de match basé sur l'IP sans avoir à requêter DNS.

Debug

Une ligne Debug consiste du mot clé Debug, suivi par le nom du programme ou plugin à débugger (sudo, visudo, sudoreplay, sudoers), le nom du fichier de dibug et une liste de flags. Par exemple:
Debug sudo /var/log/sudo_debug all@warn,plugin@info

        all Match tous les sous-systèmes
        args traitement des arguments de la ligne de commande
        conv Conversation utilisateur
        edit sudoedit
        event Sous-système d'évènement
        exec exécution de commande
        main Fonction main de sudo
        netif Gestion des interfaces réseaux
        pcomm Communication avec le plugin
        pty Code lié au pty
        selinux gestion SELinux
        util Fonctions utilitaires
        utmp Gestion utmp
^
03 juillet 2017

htmlpdflatexmanmd




sudoers

sudoers

plugin de stratégie de sécurité de sudo par défaut

   Ce plugin détermine les privilèges sudo de l'utilisateur en lisant la stratégie dans /etc/sudoers. sudo consulte le fichier sudo.conf pour déterminer quelle stratégieet plugin charger.

   Les arguments du plugins sont les suivants:

ldap_conf=‹path› emplacement du fichier ldap.conf alternatif
ldap_secret=‹path› emplacement du fichier ldap.secret alternatif
sudoers_file=‹path› fichier sudoers alternatif
sudoers_uid=‹uid› UID du propiétaire du fichier sudoers
sudoers_gid=‹gid› GID du fichier sudoers
sudoers_mode=‹mode› mode du fichier sudoers en octal

Authentification Utilisateur

   La stratégie de sécurité sudoers nécessite que la plupart des utilisateurs s'authentifient eux-même avant d'utiliser sudo. Un mot de passe n'est pas requis si l'utilisateur invoquant est root, si l'utilisateur cible est le même que l'utilisateur invoquant, ou si la startégie a désactivé l'authentification pour la commande utilisateur ou pour l'utilisateur. À la différence de su, quand sudoers exige une authentification, il valide les accréditifs de l'utilisateur, pas de l'utilisateur cible. Cela peut être changé avec rootpw, targetpw et runaspw.

   Si un utilisateur qui n'est pas listé dans la stratégie tente de lancer une commande via sudo, un mail est envoyé aux autorités définies.

   Noter qu'aucun mail n'est envoyé si un utilisateur non-autorisé tente de lancer sudo avec -l ou -v sauf en cas d'erreur d'authentification. Cela permet aux utilisateurs de déterminer s'ils sont autorisés ou non à utiliser sudo. Toute tentative d'utiliser sudo est loggé.

   Si sudo est lancé par root, et que la variable SUDO_USER est définie, la stratégie sudoers utilise cette valeur pour déterminer qui est l'utilisateur actuel. Cela peut être utilisé par un utilisateur pour logger des commandes via sudo même quand un shell root a été invoqué.

   sudoers utilise des fichiers horodatés par utilisateur pour le caching d'accrédifits. Une fois un utilisateur authentifié, un enregistrement est écrit contenant l'uid utilisé pour s'authentifier, l'id de session du terminal et un horodatage. L'utilisateur peut ainsi utiliser sudo sans mot de passe pour une courte période de temps. Par défaut, sudoers utilise un enregistrement séparé pour chaque tty, qui signifie que les sessions login de l'utilisateur sont authentifiés séparément.

Logging

   sudoers peut logger toutes les tentatives, réussies ou non et les erreurs dans syslog, un fichier de log, ou les 2. sudoers est également capable de lancer une commande dans un pseudo-tty et logger toutes les entrées/sorties. L'entrée standard, la sortie standard, et l'erreur standard peuvent être loggés même s'ils ne sont pas associés avec un terminal. Le logging d'E/S n'est pas activé par défaut.

Environnement de commande

   vu que les variables d'environnement peuvent influencer le comportement des programmes, sudoers fournis un moyen de restreindre les variables de l'environnement utilisateur hérités par la commande à lancer. Il y a 2 manières distincts de gérer ces variables.

   Par défaut, l'option env_reset est activée, les commandes sont donc lancées dans un environnement minimal. Dans les systèmes Linux sans environnement PAM, l'environnement est initialisé avec le contenu de /etc/environment. Le nouvel environnement contient TERM, PATH, HOME, MAIL, SHELL, LOGNAME, USER, USERNAME et les variables SUDO_* en plus des variables de processus invoquant permis par env_check et env_keep. C'est une liste blanche de variables d'environnement. Les variables commençant pas () sont supprimées sauf si le nom et la valeur sont matché par env_keep ou env_check, vu qu'elles sont interprétées comme des fonctions par d'anciennes versions de bash

   Si, cependant, l'option env_reset est désactivé, toute variable non explicitement refusée par env_check et env_delete sont héritées depuis le processus invoquant. Dans ce cas, env_check et env_delete deviennet comme une blacklist. Les variable commençant pas () sont toujours supprimées. Vu qu'il n'est pas possible de blacklister toutes les variables d'environnement potentiellement dangereuses, le mode env_reset est préférable.

   Par défaut, les variables d'environnement sont matchés par leur nom. Cependant, si le motif inclus le signe '=', les noms des variables et leur valeur sont matchés.

   La liste complète des variables d'environnement que sudo autorise ou refuse est contenue dans la sortie de sudo -V quand lancé en root.

   Dans les systèmes qui supportent PAM où le module pam_env est activé pour sudo, les variables dans l'environnement PAM peuvent être fusionnées dans l'environnement. Si une variable dans l'environnement PAM est déja présente, la valeur est remplacée seulement si la variable n'était pas préservées par sudoers. quand env_reset est activé, les variables préservées depuis l'environnement de l'utilisateur invoquant par la liste env_keep a précédence sur l'environnement PAM. Quand env_reset est désactivé, les variables de l'environnement utilisateur ont précédence sur l'environnement PAM sauf en cas de match de la liste env_delete.

   Un cas spécial, si -i est spécifié, sudoers initialise l'environnement sans regarder la valeur de env_reset. DISPLAY, PATH et TERM ne sont pas changés; HOME, MAIL, SHELL, USER et LOGNAME sont basés sur l'utilisateur cible. Dans les systèmes Linux sans PAM, le contenu de /etc/environment est également inclus.

   Finalement, restricted_env_file et env_files sont appliqués, si présents. Les variables dans restricted_env_file sont appliqués en premier, et sont sujets aux même restrictions que l'environnement de l'utilisateur invoquant. Les variables env_file sont appliquées en dernier et ne sont pas sujettes à ces restrictions. Dans tous les cas, les variables présentes dans les fichiers ne sont définis à leur valeur spécifiées que si elles ne sont pas en conflit avec une variable d'environnement existante

Format du fichier sudoers

   Le fichier sudoers est composé de 2 types d'entrées: les alias et les utilisateurs. Quand plusieurs entrées correspondent à un utilisateur, elles sont appliquées dans l'ordre. En cas de multiple match, le dernier est utilisé.

Syntaxe EBNF

   EBNF contient les opérateurs suivants:

        ? Signifie que le symbole ou groupe de symbole précédent est optionnel, c'est à dire qu'il peut apparaître une fois ou pas du tout
        Signifie que le symbole ou groupe de symbole précédent peut apparaître 0 ou plusieurs fois
        + Signifie que le symbole ou groupe de symbole précédent peut apparaître une ou plusieurs fois

Aliases

Il y a 4 types d'alias: User_Alias, Runas_Alias, Host_Alias et Cmnd_Alias:
Alias ::= 'User_Alias' User_Alias (':' User_Alias)* |
    'Runas_Alias' Runas_Alias (':' Runas_Alias)* |
    'Host_Alias' Host_Alias (':' Host_Alias)* |
    'Cmnd_Alias' Cmnd_Alias (':' Cmnd_Alias)*
    
User_Alias ::= NAME '=' User_List
    
Runas_Alias ::= NAME '=' Runas_List
    
Host_Alias ::= NAME '=' Host_List
    
Cmnd_Alias ::= NAME '=' Cmnd_List
    
NAME ::= [A-Z]([A-Z][0-9]_)*

Une liste d'utilisateur consiste de noms d'utilisateurs, UID (préfixé avec '#'), groupes système et GID (préfixés avec '%' et '%#'), netgroups (préfixés par '+'), groupes non-unix (préfixés avec '%:' et '%:#') et de User_Alias. Chaque liste peut être préfixée avec '!'. les " permettent d'éviter le besoin d'échapper les caractères spéciaux, sinon ils doivent être spécifiés en hexa (ex: \x20)
User_List ::= User |
        User ',' User_List
    
User ::= '!'* user name |
        '!'* #uid |
        '!'* %group |
        '!'* %#gid |
        '!'* +netgroup |
        '!'* %:nonunix_group |
        '!'* %:#nonunix_gid |
        '!'* User_Alias

Une liste Runas_Alias est similaire à une User_List.
Runas_List ::= Runas_Member |
        Runas_Member ',' Runas_List
    
Runas_Member ::= '!'* user name |
        '!'* #uid |
        '!'* %group |
        '!'* %#gid |
        '!'* %:nonunix_group |
        '!'* %:#nonunix_gid |
        '!'* +netgroup |
        '!'* Runas_Alias

Une liste d'hôtes est faite d'un ou plusieurs noms d'hôte, adresses IP, réseaux, +netgroups, et d'autres alias.
Host_List ::= Host |
        Host ',' Host_List
    
Host ::= '!'* host name |
        '!'* ip_addr |
        '!'* network(/netmask)? |
        '!'* +netgroup |
        '!'* Host_Alias

   Une liste de commande est une liste d'un ou plusieurs nom de commandes, répertoires, et autres alias. Un nom de commande est un nom complet de fichier qui peut inclure des wildcard shell. Un simple nom de fichier permet de lancer une commande avec des arguments. Cependand, il est possible de spécifier les arguments (incluant des wildcard), ou "" pour indiquer que la commande peut seulement être lancée sans arguments. Un répertoire est un chemin complet se terminant par '/', et l'utilisateur pout exécuter tout fichier dans ce répertoire, mais pas dans les sous-répertoires

Si un Cmnd est associé avec des arguments de ligne de commande, les arguments dans Cmnd doivent matcher exactement avec ceux donnés par l'utilisateur. Noter que les caractères suivants doivent être échappés: ',’, ':’, '=’, '\’. La commande intégrée sudoedit est utilisée pour permettre à un utilisateur de lancer sudo avec -e. Il peut prendre des arguments. Noter que sudoedit est une commande intégrée dans sudo et doit être spécifié dans le fichier sudoers sans chemin.
digest ::= [A-Fa-f0-9]+ |
        [[A-Za-z0-9+/=]+
    
Digest_Spec ::= "sha224" ':' digest |
        "sha256" ':' digest |
        "sha384" ':' digest |
        "sha512" ':' digest
    
Cmnd_List ::= Cmnd |
        Cmnd ',' Cmnd_List

command name ::= file name |
        file name args |
        file name '""'
    
Cmnd ::= Digest_Spec? '!'* command name |
        '!'* directory |
        '!'* "sudoedit" |
        '!'* Cmnd_Alias

   Si un nom de commande est préfixé avec un Hash, la commande ne match que si le hash SHA2 est vérifié. Les formats suivants sont supportés: sha224, sha256, et sha512. La chaîne peut être spécifiée en hexa ou en base64.

Default

Certaines options de configuration ont une valeur par défaut qui peut être changé en temps réel via une ou plusieurs lignes Default_Entry. Cela peut affecter tous les utilisateurs dans tous les hôtes, tous les utilisateurs sur un hôte spécifique, un utilisateur spécifique, une commande spécifique, ou des commandes lancées par un utilisateur spécifiques.
Default_Type ::= 'Defaults' |
        'Defaults' '@' Host_List |
        'Defaults' ':' User_List |
        'Defaults' '!' Cmnd_List |
        'Defaults' '›' Runas_List
    
Default_Entry ::= Default_Type Parameter_List
    
Parameter_List ::= Parameter |
        Parameter ',' Parameter_List
    
Parameter ::= Parameter '=' Value |
        Parameter '+=' Value |
        Parameter '-=' Value |
        '!'* Parameter

   += et -= sont utilisés pour ajouter ou supprimer des éléments d'une liste. Les entrées sont parsée dans l'ordre suivant: generic, host, user, et runas, command. S'il y a plusieurs paramètres Default de même type, le dernier match est utilisé. Les paramètres Defaults suivant sont parsé avant tous les autres vu qu'ils affectent les entrées suivantes: fqdn, group_plugin, runas_default, sudoers_locale.

Spécification d'utilisateur


User_Spec ::= User_List Host_List '=' Cmnd_Spec_List \
        (':' Host_List '=' Cmnd_Spec_List)*
    
Cmnd_Spec_List ::= Cmnd_Spec |
        Cmnd_Spec ',' Cmnd_Spec_List
    
Cmnd_Spec ::= Runas_Spec? Option_Spec* Tag_Spec* Cmnd
    
Runas_Spec ::= '(' Runas_List? (':' Runas_List)? ')'
    
Option_Spec ::= (SELinux_Spec | Solaris_Priv_Spec | Date_Spec | Timeout_Spec)
    
SELinux_Spec ::= ('ROLE=role' | 'TYPE=type')
    
Solaris_Priv_Spec ::= ('PRIVS=privset' | 'LIMITPRIVS=privset')
    
Date_Spec ::= ('NOTBEFORE=timestamp' | 'NOTAFTER=timestamp')
    
Timeout_Spec ::= 'TIMEOUT=timeout'
    
Tag_Spec ::= ('EXEC:' | 'NOEXEC:' | 'FOLLOW:' | 'NOFOLLOW' |
        'LOG_INPUT:' | 'NOLOG_INPUT:' | 'LOG_OUTPUT:' |
        'NOLOG_OUTPUT:' | 'MAIL:' | 'NOMAIL:' | 'PASSWD:' |
        'NOPASSWD:' | 'SETENV:' | 'NOSETENV:')

   Une spécification d'utilisateur détermine quelles commandes un utilisateur peut lancer (et sous quel utilisateur). dans les hôte spécifiés. Par défaut, les commandes sont lancées en root. La structure de base est who where = (as_whom] what

Runas_Spec

   un Runas_Spec détermine l'utilisateur et/ou le groupe sous laquelle une commande peut être lancée. un Runas_Spec pleinement spécifié consiste de 2 Runas_List séparés par ':' et entre parenthèses. Le premier Runas_List indique sous quels utilisateurs la commande peut être lancée (comme avec sudo -u). Le second définis une liste de groupes qui peuvent être spécifié via sudo -g. Si les 2 Runas_List sont spécifié, la commande peut être lancée avec n'importe quelle combinaison d'utilisateurs et groupes listés dans leur Runas_list respectifs. Si seul le premier est listé, la commande peut être lancée par n'importe quel utilisateur dans la liste mais -g ne peut pas être spécifié. Si le premier Runas_List est vide, mais le second est spécifié, tous les utilisateurs peuvent lancer la commande avec le groupe définis à un listé. Si les 2 sont vides, la commande ne peut être lancée que sous l'utilisateur invoquant. Si Runas_Spec n'est pas spécifiée, la commande peut être lancée en root et aucun groupe ne peut être spécifié.

l'utilisateur dbg peut lancer ces 3 commandes, mais seulememt comme operator:
dgb boulder = (operator) /bin/ls, /bin/kill, /usr/bin/lprm
Il est également possible de remplacer Runas_Spec dans une entrée:
dgb boulder = (operator) /bin/ls, (root) /bin/kill, /usr/bin/lprm
On peut l'étendre peut permettre à dbg de lancer /bin/ls avec soit l'utilisateur soit le groupe à operator:
dgb boulder = (operator : operator) /bin/ls, (root) /bin/kill, /usr/bin/lprm
Noter que bien que la portion groupe permet à l'utilisateur de lancer la commande avec ce groupe, il ne force pas l'utilisateur à le faire. Si aucun groupe n'est spécifié, la commande sera lancée avec le groupe listé dans l'entrée de la base de mot de passe de l'utilisateur. Exemple de ce qui est permis par l'entrée ci-dessus:
sudo -u operator /bin/ls
sudo -u operator -g operator /bin/ls
sudo -g operator /bin/ls
Dans l'exemple suivant, l'utilisateur tcm peut lancer des commandes qui accèdent à un périphérique modem avec le groupe dialer
tcm boulder = (:dialer) /usr/bin/tip, /usr/bin/cu, /usr/local/bin/minicom
Seul le groupe est définis, la commande est lancée avec l'utilisateur tcm
sudo -g dialer /usr/bin/cu
Plusieurs utilisateurs et groupeg peuvent être présents dans un Runas_Spec, auquel cas l'utilisateur peut sélectionner une combinaison d'utilisateurs et groupes via -u et -g
alan ALL = (root, bin : operator, system) ALL
alan peut lancer une commande soit en root, soit bin, optionnellement en définissant le groupe operator ou system

Option_Spec

   un Cmnd peut avoir 0 ou plusieurs options. En fonction du système, les options peuvent consister de rôle/types SELinux, ou timeouts. Une fois une option définis pour une Cmnd, les Cmnd suivantes dans Cmnd_Spec_List héritent de cette option, sauf remplacé par une autre option.

   les règles sudoers peuvent spécifier une date de début et de fin via les paramètres NOTBEFORE et NOTAFTER. L'horodatage peut être spécifié en temps généralisé, rfc4517 (yyymmddHHMSSZ). Il est également possible de spécifier un offset en heures et minutes UTC. Par exemple '-0500' correspond à l'heure Eastern Standard aux US.

   Une commande peut avoir un timeout. S'il expire avant que la commande ne se soit terminées, la commande est terminées. Le timeout peut être spécifié en jours, heures, minutes et secondes (ex: 7d8h30m10s, 14d, 8h30m, 600s, 3600).

   Une commande peut avoir 0 ou plusieurs tags. Les valeurs de tag supportés sont: EXEC, NOEXEC, FOLLOW, NOFOLLOW, LOG_INPUT, NOLOG_INPUT, LOG_OUTPUT, NOLOG_OUTPUT, MAIL, NOMAIL, PASSWD, NOPASSWD, SETENV, et NOSETENV. Une fois un tag définis dans une Cmnd, les Cmnd suivants dans la Cmnd_Spec_List héritent de ce tag sauf si remplacé par le tag opposé.

        [NO]EXEC autorise à lancer un exécutable lié dynamiquement
        [NO]FOLLOW autorise à suivre les liens symboliques pour sudoedit uniquement
        [NO]LOG_INPUT Remplace l'option log_input
        [NO]LOG_OUTPUT Remplace l'option log_output
        [NO]MAIL Remplace la valeur de l'option mail_all_cmnds. N'a pas d'effet avec -l ou -v
        [NO]PASSWD Exige que l'utilisateur s'authentifie lui-même avant de lancer une commande
        [NO]SETENV Remplace la valeur de l'option SETENV

Wildcard

   sudo autorise les wildcard style shell dans les noms d'hôte, noms de chemins, et arguments de ligne de commande dans le fichier sudoers:

        Matche un jeu de 0 ou plusieurs caractères
        ? Matche un simple caractère
        [...] Matche un des caractères
        [!...] Matche tout caractère non listé
        \x pour spécifier les caractères '*','?','[' et ']'

Inclure d'autres fichiers

   Il est possible d'inclure d'autres fichiers sudoers avec les directives #include et #includedir.

Autres caractères spéciaux et mots réservés

   '#' est utilisé pour indiquer un commentaire (excepté pour #include et #includedir ou dans le contexte d'un nom d'utilisateur suivi par un ou plusieurs chiffres).

   Le mot réservé ALL est un alias intégré qui implique qu'un match réussi toujours.

   '!' peut être utilisé comme opérateur NOT dans une liste.

Options sudoers

   sudo peut être modifié par des lignes Default_Entry:

always_query_group_plugin (bool) si un group_plugin est configuré, l'utilise pour résoudre les groupe sous la forme %group tant que ce n'est pas également un groupe système. Normalement, seules les groupes sous la forme %#group sont passé au group_plugin
always_set_home (bool) activé, sudo définis HOME au répertoire home de l'utilisateur cible
authenticate (bool) définis, les utilisateurs doivent s'authentifier eux-même avant de lancer des commandes
closefrom_override (bool) définis, l'utilisateur peut utiliser sudo -C qui remplace le point de départ par défaut auquel sudo commence à fermer les descripteurs de fichier.
compress_io (bool) définis, si sudo est configuré pour logger l'entrée ou la sortie d'une commande, les logs I/O sont compressés avec zlib.
exec_background (bool) par défaut, sudo lance une commande en foreground tant que sudo est lui-même en foreground. à on et la commande lancé dans un pty (dû au logging I/O ou du flag use_pty), la commande est lancées en tâche de fond.
env_editor (bool) Définis, visudo utilise la valeur de EDITOR ou VISUAL comme liste d'éditeur par défaut
env_reset (bool) définis, lance la commande dans un environnement minimal
fast_glob (bool) utilise la fonction fnmatch(3) au lieu de glob(3) pour le globbing, ce qui est plus rapide, mais n'est pas capable de matcher les chemins relatifs
fqdn (bool) place les noms ftdn dans le fichiers sudoers quand le nom d'hôte local ne contient pas de nom de domaine.
ignore_audit_errors (bool) autorise à lancer les commandes même si sudoers ne peut écrire dans le log d'audit
ignore_dot (bool) définis, ignore "." ou "" dans la variable PATH
ignore_iolog_errors (bool) autorise à lancer des commandes même si sudoers ne peut écrire dans le fichier de log E/S
ignore_logfile_errors (bool) autorise à lancer des commandes même si sudoers ne peut écrire dans le fichier de log
ignore_local_sudoers (bool) Si définis via LDAP, ne parse pas /etc/sudoers
ignore_unknown_defaults (bool) ne produit pas d'alerte si une entrée Defaut inconnue est rencontrée, ou une options sudoOptions dans LDAP.
insults (bool) insulte les utilisateurs quand ils entrent un mot de passe incorrect
log_host (bool) Définis, le nom d'hôte est loggé
log_input (bool) Définis, log l'entrée utilisateur
log_output (bool) Définis, log la sortie envoyée à l'écran
log_year (bool) Définis, log l'année au format yyyy
long_otp_prompt (bool) En validant un schéma OTP, un prompt à 2 lignes est utilisé pour simplifier le copier/coller du challenge.
mail_all_cmnds (bool) Envoie un mail à chaque tentative d'exécution d'une commande (excepté avec -l ou -v et une authentification réussie)
mail_always (bool) envoie un mail à chaque fois qu'un utilisateur lance sudo.
mail_badpass (bool) Envoie un mail en cas de mot de passe incorrect
mail_no_host (bool) définis, envoie un mail si l'utilisateur invoquant existe dans le fichier sudoers mais n'est pas autorisé à lancer les commandes dans l'hôte courant.
mail_no_perms (bool) Définis, envoie un mail si l'utilisateur invoquant est autorisé à utiliser sudo, mais n'a pas l'autorisation de lancer la commande
mail_no_user (bool) Définis, envoie un mail si l'utilisateur invoquant n'est pas dans le fichier sudoers
match_group_by_gid (bool) par défaut, sudoers recherche chaque groupe dont l'utilisateur est membre par son GID pour déterminer le nom du groupe. Dans les systèmes ou la recherche des groupes est longue, cette option évite de résoudre les GID en noms de groupe
netgroup_tuple (bool) Définis, la recherche de netgroup est effectuée en utilisant les triplets netgroup
noexec (bool) Définis, toutes les commande lancées via sudo fonctionne comme avec le tag NOEXEC
pam_session (bool) Créé une nouvelle session PAM pour la commande à lancer
pam_setcred (bool) tente d'obtenir les accréditifs de l'utilisateur cible
passprompt_override (bool) Demande le mot de passe spécifié par passprompt est seulement utilisé si le prompt fournis par PAM match la chaîne "Password:". si definis, passprompt est toujours utilisé.
path_info (bool) informe quand la commande ne peut pas être trouvée dans le PATH.
preserve_groups (bool) par défaut, sudo initialise le vecteur de groupe à la liste des groupes de l'utilisateur cible. Définis, le vecteur de groupe de l'utilisateur n'est pas altéré. Le GID réel et effectif continuent de matcher l'utilisateur cible
pwfeedback (bool) Fournis un retour visuel en tapant un mot de passe
requiretty (bool) définis, sudo n'est lancé que si l'utilisateur est loggé dans un vrai tty.
root_sudo (bool) Définis, root est autorisé à lancer sudo. Désactivé, empêche sudoedit
rootpw (bool) Définis, sudo demande le mot de passe root au lieu du mot de passe de l'utilisateur invoquant
runaspw (bool) Définis, sudo demande le mot de passe de l'utilisateur définis par runas_default au lieu du mot de passe de l'utilisateur invoquant
set_home (bool) Définis et sudo invoqué avec -s, HOME est définis au home de l'utilisateur cible
set_logname (bool) Définis LOGNAME. Cependant pour certains programmes (incluant RCS) utilisent LOGNAME pour déterminer la vrai identité de l'utilisateur.
set_utmp (bool) Activé, sudo créé une entrée dans utmp ou utmpx quand un pseudo tty est alloué.
setenv (bool) Autorise l'utilisateur à désactiver l'option env_reset avec l'option -E
shell_noargs (bool) Définis et sudo est invoqué sans arguments, agit comme avec -s: lance un shell en root
stay_setuid (bool) Normalement, quand sudo exécute une commande, les UID réel et effectifs sont définis à l'utilisateur cible. Cette option laisse l'UID réel à l'utilisateur invoquant
sudoedit_checkdir (bool) Définis, sudoedit vérifie tous les composants répertoire du chemin à éditer pour vérifier s'il est en écriture par l'utilisateur. Les liens symboliques ne sont pas suivis et sudoedit refuse d'éditer un fichier localisé dans un répertoire accessible en écriture. Non effectif pour root.
sudoedit_follow (bool) Suit les liens symboliques en ouvrant les fichiers.
targetpw (bool) Définis, demande le mot de passe de l'utilisateur spécifié par -u au lieu du mot de passe de l'utilisateur invoquant
tty_tickets (bool) Définis, les utilisateurs doivent s'authentifier pour chaque tty
umask_override (bool) Définis, sudo définis le umask spécifié dans le fichier sudoers sans modification
use_netgroups (bool) Définis, les netgroups peuvent être utilisé à la place d'un utilisateur ou hôte
use_pty (bool) Définis, sudo lance la commande dans un pseudo-tty même si aucun plugin I/O n'est définis
user_command_timeouts (bool) Définis, l'utilisateur peut spécifier un timeout sur la ligne de commande
utmp_runas (bool) Définis, sudo stocke le nom de l'utilisateur runas en mettant à jours utmp au lieur du nom de l'utilisateur invoquant
visiblepw (bool) par défaut, sudo refuse de s'exécuter si l'utilisateur doit entrer un mot de passe mais qu'il n'est pas possible de désactiver l'écho dans le terminal. Cela permet de lancer des commande comme "ssh somehost sudo ls" vu que ssh n'alloue pas de tty par défaut en lançant une commande.
closefrom (int) Avant d'exécuter une commande, sudo ferme tous descripteur de fichier ouvert autre que 0-2. Spécifie un fd à partir duquel fermer les fd.
command_timeout (int) Délai maximum pour l'exécution d'une commande.
maxseq (int) Numéro de séquence maximum qui est substitué pour l'échappement "%{seq}" dans le fichier de log I/O.
passwd_tries (int) Nombre maximum de tentative pour entrer en mot de passe
syslog_maxlen (int) Par défaut, sudoers créé des messages de log jusqu'à 980 octets. Pour éviter de tronquer les messages, sudoers split les message supérieurs à syslog_maxlen.
loglinelen (int) Nombre de caractères par ligne de log. n'a pas d'effet pour syslog.
timestamp_timeout (int) Nombre de minutes avant de redemander un mot de passe.
umask (int) umask pour la création des fichier
badpass_message (string) Message affiché si un utilisateur entre un mot de passe incorrect
editor (string) Liste d'éditeurs autorisé pour visudo.
iolog_dir (string) Répertoire parent où construire le nom de chemin pour le répertoire de log I/O. Seulement utilisé si log_input et log_output sont activés. Les échappements suivants sont permis:

        %{seq} Étendu pour augmenter le numéro de séquence en base 36
        %{user} Étendu au login de l'utilisateur invoquant
        %{group} Étendu au GID réel de l'utilisateur invoquant
        %{runas_user} Étendu au login de l'utilisateur qui exécute la commande
        %{runas_group} Étendu au groupe qui exécute la commande
        %{hostname} Étendu au nom de l'hôte local sans le nom de domaine
        %{command} Étendu au nom de la commande lancée

iolog_file (string) Chemin du fichier de log, relatif à iolog_dir pour les logs I/O. Accepte les séquences d'échappement de iolog_dir
iolog_flush (string) Définis, sudo vide les données de log sur disque après chaque écriture au lieu de le même en tampon. Permet de voir les logs en temps réel.
iolog_group (string) Nom du groupe pour la créations des répertoires et fichiers de log I/O
iolog_mode (string) mode à utiliser pour créer les fichiers de log I/O
iolog_user (string) Propriétaire des répertoires et fichiers de log I/O
lecture_status_dir (string) Répertoire dans lequel sudo stocke les fichiers de status par utilisateur. Défaut: /var/adm/sudo/lectured
mailsub (string) Sujet du mail envoyé. %h étend au nom d'hôte
pam_login_service (string) Nom du service utilisé avec -i. Défaut: sudo
pam_service (string) Nom du service que PAM applique. Défaut: sudo
passprompt (string) Prompt par défaut à utiliser en demandant le mot de passe. Les échappements suivants sont supportés:

        %H Nom d'hôte local fqdn
        %h Nom d'hôte local
        %p utilisateur correspondant au mot de passe demandé
        %U Nom de l'utilisateur cible
        %u nom de l'utilisateur invoquant
        %% le caractère %

role (string) Rôle SELinux par défaut à utiliser en construisant un nouveau contexte de sécurité pour lancer la commande.
runas_default (string) Utilisateur par défaut pour lancer les commande.
sudoers_locale (string) Locale à utiliser pour parser le fichier sudoers, les commandes de logging, et l'envoie de mail.
timestampdir (string) Répertoire dans lequel sudo stocke ses fichiers d'horodatage.
timestampowner (string) Propriétaire du répertoire de status de lecture, d'horodatage et tous les fichiers qui y sont stockés.
type (string) Type SELinux par défaut pour construire un nouveau contexte SELinux
env_file (string) Spécifie le chemin complet d'un fichier contenant les variables d'environnement à définir pour le programme à lancer.
exempt_group (string) Les utilisateurs dans ce groupe sont exemptés du mot de path et des exigences PATH.
fdexec (string) Détermine si sudo exécute une commande par son chemin ou par un fd ouvers. always|never exécute ou non par fd, digest_only n'exécute par fd que si la commande a un digest associé.
group_plugin (string) plugin group sudoers avec des arguments optionnels.
lecture (string) Contrôle quand une lecture courte est affichée avec le prompt. always|never|once.
lecture_file (string) Fichier contenant le message à afficher au lieu du message embarqué
listpw (string) Contrôle quand un mot de passe est requis quand un utilisateur lance sudo -l:

        all Toutes les entrées de l'utilisateur pour l'hôte courant dans le fichier sudoers doivent avoir le flag NOPASSWD pour éviter d'entrée le mot de passe
        always L'utilisateur doit entrer un mot de passe pour utiliser -l
        any Au moins une entrée de l'utilisateur dans sudoers doit avoir le flag NOPASSWD pour ne pas entrer de mot de passe
        never L'utilisateur ne doit jamais entrer un mot de passe pour utiliser l'option -l
       

logfile (string) Chemin du fichier de log sudo.
mailerflags (string) flags à utiliser en invoquant mailer Défaut: -t
mailerpath (string) Chemin du programme pour envoyer les mails.
mailfrom (string) Adresse du champ From
mailto (string) Adresse de destination de mail
restricted_env_file (string) Fichier contenant les variables à définir dans l'environnement. Ces variables de manière similaires à l'environnement de l'utilisateur invoquant.
secure_path (string) Chemin de toutes les commandes lancées par sudo
syslog (string) facilité syslog pour les logs
syslog_badpri (string) Priorité sysloge quand l'utilisateur n'est pas autorisé à lancer une commande ou en cas d'echec de l'authentification
syslog_goodpri (string) Priorité syslog à utiliser quand l'utilisateur est autorisé à lancer une commande et que l'authentification a réussie.
verifypw (string) Contrôle quand un mot de passe est requis avec sudo -v:

        all Toutes les entrées dans le fichiers sudoers doivent avoir NOPASSWD pour éviter d'entrer un mot de passe.
        always L'utilisateur doit toujours entrer sont mot de passe pour utiliser l'option -v
        any Au moins une entrée dans le fichier sudoers pour l'utilisateur doit avoir le flag NOPASSWD pour éviter d'entrer un mot de passe
        never L'utilisateur n'a jamais besoin d'entrer un mot de passe

env_check (string) Variables d'environnement à supprimer sauf si elles sont sûres. Pour toutes les variables excepté TZ, sûre signifie que la valeur de la variable ne contient pas de '%' ou '/'
env_delete (string) Variables d'environnement à supprimer de l'environnement de l'utilisateur quand env_reset n'est pas effectif.
env_keep (string) Variables d'environnements à préserver de l'environnement de l'utilisateur quand env_reset est effectif

Plugins group

   sudoers supporte sa propre interface de plugin pour permettre de rechercher des groupes non-Unix dans une source autre que la base de groupe Unix standard. Celà permet d'implémenter la syntaxe nonunix_group.

   Les plugins group sont spécifiés via le paramètres group_plugin. Les plugins group suivants sont installés par défaut:

group_file.so Supporte un fichier de groupes alternatif qui utilise la même syntaxe que /etc/group. Le chemin du fichier doit être spécifié en arguments
system_group.so Supporte la recherche de groupe via getgrnam() et getgrid(). Il peut être utilisé dans le cas où des utilisateurs appartiennent à des groupes non-présents dans le vecteur groupe supplémentaire de l'utilisateur. Ce plugin n'a pas d'options

Format de log

   sudoers peut logger des évènements en utilisant syslog(3) ou un simple fichier. Le format est pratiquement identique dans les 2 cas.

Les commandes que sudo lance sont loggés en utilisant le format suivant:
date hostname progname: username : TTY=ttyname ; PWD=cwd ; USER=runasuser ; GROUP=runasgroup ; TSID=logid ; ENV=env_vars COMMAND=command

        date Date et heure à laquelle la commande a été lancée au format "MMM,DD,HH:MM:SS". Via syslog, le format de date est contrôllé par syslog. log_year permet d'inclure l'année
        hostname Le nom de l'hôte où sudo a été lancé. Seulement présent via syslog
        progname Le nom du programme, généralement sudo ou sudoedit. Seulement présent via syslog
        username Nom de login de l'utilisateur invoquant
        ttyname Nom court du terminal
        cwd Répertoire de travail courant
        runasuser Utilisateur sous lequel la commande est lancée
        runasgroup Groupe sous lequel la commande est lancée
        logid Identifiant de log I/O qui peut être utilisé pour rejouer la sortie des commande (log_input ou log_output doit être activé)
        env_vars variables d'environneent spécifiés sur la ligne de commande.
        command La commande exécutée

Entrées de log des commandes refusées

   Si l'utilisateur n'est pas autorisé à lancer la commande, la raison du refus suit le nom de l'utilisateur. Les raisons possibles sont:

        user NOT insudoers L'utilisateur n'est pas listé dans le fichie sudoers
        user NOT authorized on host L'utilisateur est listé dans le fichier sudoers mais n'est pas autorisé à lancer les commandes sur cet hôte
        command not allowed L'utilisateur est listé dans le fichier sudoers mais n'est pas autorisé à lancer la commande spécifiée
        3 incorrect password attemps L'utilisateur a échoué "passwd_trie" fois
        a password is required sudo -n a été spécifié, mais un mot de passe est requis
        sorry, you are not allowed to set the following environment variables L'utilisateur a spécifié des variables d'environnement sur la ligne de commande qui ne sont pas autorisés par sudoers

Entrées de log d'erreur

   Si une erreur se produit, sudoers log un message et, dans la plupart des cas, envoie un message à l'administrateur local via email. Les erreurs possibles incluent:

        parse error in /etc/sudoers near line N Erreur dans la configuration
        problem with defaults entries Options Defaults inconnus. N'empêche pas sudo de fonctionner
        timestamp owner (username): No such user l'utilisateur spécifié dans timestampowner n'a pas été trouvé dans la base de compte
        unable to open/read /etc/sudoers le fichier sudoers n'est pas accessible
        unable to open/read /etc/sudoers Le fichier /etc/sudoers n'existe pas
        /etc/sudoers is not a regular file Le fichier existe mais n'est pas un fichier régulier ou un lien symbolique
        /etc/sudoers is owned by uid N, should be 0 Le fichier n'est pas possédé par root
        /etc/sudoers is world writable Le fichier est accessible en écriture par tout le monde. Normalement il devrait être 0440
        /etc/sudoers is owned by gid N, should be 1 le fichier n'a pas le bon groupe.
        unable to open /var/run/sudo/ts/username sudoers n'arrive pas à lire ou créer le fichier d'horodatage pour l'utilisateur. Le répertoire parent doit être 0711
        unable to write to /var/run/sudo/ts/username sudoers n'arrive pas à écrire dans le fichier d'horodatage de l'utilisateur
        /var/run/sudo/ts is owned by uid X, should be Y Le répertoire ts est possédé par un utilisateur autre que timestampowner.
        /var/run/sudo/ts is group writable Le répertoire ts est accéssible en écriture par le groupe. Doit être 0700

Notes sur syslog

   Par défaut, sudoers log les messages via syslog. date, hostname et progname sont ajoutés par syslog, et non sudoers. ces informations peuvent donc varier d'un système à l'autre. La taille maximum des messages syslog varie également d'un système à l'autre. syslog_maxlen peut être utilisé pour changer la valeur par défaut de 980octets.

Notes sur le fichier de log

   Si logfile est activé, sudoers log dans un fichier local. sudoers utilise un format similaire à syslog, avec quelques différences importantes:

        - progname et hostname ne sont pas présents
        - si log_year est activé, l'année est incluse
        - Les lignes plus longue que loglinelen sont coupées et continées sur la ligne suivantes

Fichier de log d'E/S

   Quand le logging I/O est activé, sudo lance la commande dans un pseudo-tty et log toutes les E/S de l'utilisateur dans "iolog_dir" en utilisant un ID de session unique qui set inclus dans les logs, préfixé par "TSID=". Chaque log I/O est stocké dans un répertoire séparé qui contient les lignes suivantes:

        log Un fichier text contenant la date à laquelle la commande a été lancée, le nom de l'utilisateur invoquant, le nom de l'utilisateur cible, le nom du groupe cible, le terminal, le nombre de lignes et colonnes du terminal, le répertoire courant où la commande a été lancée et le chemin de la commande avec ses arguments.
        timing Un log de la quantité de temps, et le nombre d'octets, entre chaque entrées de log I/O.
        ttyin Entrée depuis le tty de l'utilisateur
        stdin Entrée depuis un pipe ou un fichier
        ttyout Sortie du pseudo-tty
        stdout Sortie standard dans un pipe ou redirigé dans un fichier
        stderr Erreur standard vers un pipe ou redirigé dans un fichier

   Tous les fichiers autre que log sont compressé au format gzip sauf si compress_io est désactivé. À cause du tampon, il n'est pas possible d'afficher les logs I/O en temps réel sauf si iolog_flush est utilisé.
  

   Vu que le log E/S de chaque session utilisateur est stocké dans un répertoire séparé, les utilitaires de rotation de log traditionnels ne peuvent pas être utilisés pour limiter le nombre de logs E/S. La manière la plus simple est d'utiliser l'option maxseq. Une fois la sequence atteinte, il est réinitialisé à 0 est sudoers tronque et réutilise les logs E/S existants.

Fichiers

/etc/sudo.conf Fichier de configuration de sudo
/etc/sudoers Fichier de stratégie de sudoers
/etc/group Fichier de groupes locaux
/etc/netgroup Liste des netgroups
/var/log/sudo-io Fichiers de log d'E/S
/var/run/sudo/ts Répertoire contenant les timestamps pour la stratégie de sécurité sudoers
/var/adm/sudo/lectured Répertoire contenant les fichiers de status de lecture pour la stratégie de sécurité sudoers
/etc/environment Environnement initial pour les système sans PAM

Notes de sécurité

- l'opération '!' ne doit pas être utilisé pour soustraire des commandes depuis AL, vu qu'il n'empêche pas d'exécuter ces commandes via un autre nom.
- fast_glob ne permet pas d'utiliser '!' correctement quand le chemin inclus du globbing.

Empêcher les échappements du shell

   Quand sudo exécute un programme, ce programme est libre de faire ce qu'il veut, incluant de lancer d'autres programmes. Cela peut être un problème de sécurité vu qu'il n'est pas commun pour un programme d'autoriser les échappements du shell, qui laisse un utilisateur bypasser le contrôle d'accès à sudo. Les programmes communs qui permettent les échappement du shell incluent les éditeurs, paginateurs, mails et terminaux. Il y a 2 approches à ce problème:

restrict Éviter de donner accès aux commande qui autorise un utilisateur à lancer des commandes arbitraires. De nombreux éditeurs ont des modes restreints qui désactive les échappements, bien que sudoedit est une meilleur solution aux éditeurs lancés via sudo.
noexec De nombreux systèmes qui supportent les librairies partagées ont la capacité de remplacer les fonctions par défaut en pointant une variable d'environnement (ex LD_PRELOAD) vers une librairie alternative. Dans de tels systèmes, la fonctionnalité noexec de sudo peut être utilisée pour éviter de lancer un programme qui exécute d'autres programmes.

Édition sécurisée

   Le plugin sudoers inclus sudoedit qui permet aux utilisateurs d'éditer les fichiers de manière sécurisée avec l'éditeur de leur choix. sudoedit est une commande intégrée et doit être spécifié dans le fichier sudoers dans chemin. Cependant, il peut prendre des arguments de ligne de commande. À la différence des autres commandes sudo, l'éditeur est lancé avec les permissions de l'utilisateur invoquant et avec l'environnement non-modifié.

   Les utilisateurs ne devraient jamais avoir les permissions sudoedit pour éditer un fichier qui réside dans un répertoire auquel l'utilisateur a accès en écriture, soit directement, ou via wildcard. Si l'utilisateur à ces droits, il peut remplacer le fichier avec un lien vers un autre fichier. Pour éviter cela, les liens symbolique ne sont pas suivis dans les répertoires en écriture (option sudoedit_checkdir).

Vérification du fichier timestamp

   sudoers vérifie le propriétaire de son répertoire d'horodatage et ignore le contenu du répertoire s'il n'est pas possédé par root, ou s'il est accessible en écriture par un utilisateur non-root.

   Bien que ce répertoire devrait être effacé au reboot, tous les systèmes ne contiennent pas de répertoire /var/run. Pour éviter de potentielles problèmes sudo ignore les fichiers timestamps antérieur au boot système.

   Certains systèmes avec des environnements graphiques permettent à des utilisateurs non-privilégiés de changer l'heure système. Vu que sudoers s'assure de l'horloge système pour la validation des horodatages, il peut être possible dans de tels systèmes qu'un utilisateur qui lance sudo pour une durée supérieur à timestamp_timeout en reculant l'horloge. Pour combattre cela, sudoers utilise une horloge monolitique pour ses horodatages si le système le supporte.

   Vu que les fichiers d'horodatage résident dans le système de fichier, ils peuvent survire à une session utilisateur. En résultat, un utilisateur peut être capable de se logger, lancer une commande avec sudo après s'être authentifié, se déconnecter, se reconnecter, et lancer sudo sans s'authentifier tant que l'horodatage est dans les 5 minutes. Quand l'option tth_tickets est activé, l'horodatage inclus le numéro de périphérique du terminal de l'authentification. Cela fournis une granularité par tth mais les horodatages continue à survivre entre les sessions. L'enregistrement d'horodatage inclus également l'ID de session du processus qui a été authentifié en dernier. Cela empêche les processus dans des session terminal différents d'utiliser le même enregistrement d'horodatage. Cela aide également à réduire les chances qu'un utilisateur soit capable de lancer sudo sans entrer un mot de passe en se déconnectant et revenant dans le même terminal.

Debuggage

   Le plugin sudoers support un framework de debuggage qui peut aider à suivre ce qu'il fait en interne s'il y a un problème. Cela peut être configuré dans le fichier sudo.conf

   sudoers utilise le même format de flag de debug que sudo. "subsystem@priority". Les priorités sont crit, err, warn, notice, diag, info, trace, debug. Les sous-systèmes suivant sont utilisés par sudoers:

alias traitements User_Alias, Runas_Alias, Host_Alias et Cmnd_Alias
all Match tous les sous-systèmes
audit Code d'audite Linux
auth Authentification utilisateur
defaults Paramètres Defaults
env Gestion de l'environnement
ldap sudoers basé sur LDAP
logging Support du logging
match Match des utilisateurs, groupes, hôtes et netgroups dans le fichier sudoers
netif Gestion des interfaces réseaux
nss Gestion nss dans sudoers
parser Parsing de fichier sudoers
perms Définition des permissions
plugin Équivalent de main pour le plugin
pty Code lié au pseudo-tty
rbtree redblack tree interne
sssd Sudoers basé sur sssd
util Fonctions utilitaires
^
03 juillet 2017

htmlpdflatexmanmd




sudoers.ldap

sudoers.ldap

Configuration LDAP sudo

   En plus du fichier standard sudoers, sudo peut être configuré via LDAP. sudo n'a plus besoin de lire sudoers.

   La configuration sudoers est contenue dans le conteneur LDAP ou=SUDOers. Sudo recherche d'abord l'entrée cn=defaults dans le conteneur et parcours les attributs sudoOption.

   L'équivalent d'un sudoers dans LDAP est un sudoRole. Il consiste des attributs suivants:

sudoUser Un nom d'utilisateur valide, #‹UID›, %‹group›, %#‹GID›, +‹netgroup›, ou %:‹groupe non unix› %:#‹ID de groupe non unix›
sudoHost Nom d'hôte, IP, réseau ou +‹netgroup d'hôte›. ALL match tous les hôte.
sudoCommand Nom d'une commande et ses arguments, optionnellement préfixé par '!'
sudoOption Identique aux options globales, mais spécifiques au sudoRole
sudoRunAsUser user sous lequel la commande est lancée
sudoRunAsGroup Groupe sous lequel la commande est lancée
sudoNotBefore horodatage de début de validité du sudoRole
sudoNotAfter horodatage de fin de validité du sudoRole
sudoOrder Les entrées sudoRole LDAP n'ont pas d'ordre. sudoOrder est un entier utilisé pour trier les entrées qui matchent.

Anatomie de la recherche LADP sudoers

   En recherchant un sudoer utilisant LDAP il y a seulement 2 ou 3 requêtes LDAP par invocation. La première requête sert à parcourir les options globales. Le second sert à matche le nom de l'utilisateur et les groupes auquel l'utilisateur appartient. Si aucun match n'est retourné pour l'utilisateur ou les groupes, une 3ème requête retourne toutes les entrées contenant les netgroups de l'utilisateur et les groupes non-unix et vérifie si l'utilisateur appartient à l'un d'entre-eux.

   Si les entrées timées sont activées avec la directive SUDOERS_TIMED, les requêtes LDAP incluent un sous-filtre qui limite la recherche aux entrées qui satisfont les contraintes de temps.

   Si la directive NETGROUP_BASE est présente, les requêtes sont effectuées pour déterminer la liste des netgroups auquel l'utilisateur appartient avant la requête sudoers. Cela permet d'inclure la liste des netgroups dans les requêtes sudoers de la même manière qu'avec les groupes unix. La 3ème requête n'est pas effectuées sauf si un plugin group est également effectuée. Les requêtes LDAP sont effectuées par sudo comme suit:

1. Match tous les enregistrement nisNetgroup avec un nisNetgroupTriple contenant l'utilisateur, l'hôte et le domaine NIS. La requête matche les entrées nisNetgroupTriple avec la forme courte ou longue du nom de domaine ou aucun nom d'hôte. Si le domaine NIS est définis, la requête matche seulement les entrées qui incluent de domaine ou pour lequel il n'y a pas de domaine présent. Si le domaine NIS n'est pas définis, un wildcard est utilisé pour matcher tous domaine pas prend en compte que le schéma NIS utilisé par les serveurs LDAP peuvent ne pas supporter les wildcard pour nisNetgroupTriple.
2. Les requêtes répétées sont effectuées pour trouver tout enregistrement nisNetgroup imbriqués avec une entrée memberNisNetgroup qui réfère à un enregistrement déjà matché.

Différence entre les sudoers LDAP et non-LDAP

   Il y a quelques subtiles différences dans la comportement de sudoers utilisant LDAP. La plus grosse différence étant l'ordre des entrées et attributs retournés, qui sont contrôlés par sudoOrder.

Configurer ldap.conf

   sudo lit le fichier /etc/ldap.conf. Seuls ces options sont supportés par sudo:

BIND_TIMELIMIT Spécifie le temps en secondes d'attente de connection à un serveur LDAP.
BINDDN Identité, sous la formate d'un DN, à utiliser pour effectuer les opérations LDAP
BINDPW Mot de passe de BINDDN
DEREF Spécifie comment déréférencer les alias
HOST Nom du serveur LDAP
KRB5_CCNAME Chemin du cache d'accréditifs Kerberos 5
LDAP_VERSION Version du protocole LDAP
NETGROUP_BASE DN de base pour les recherches des netgroups
NETGROUP_SEARCH_FILTER Filtre de recherche des netgroupes
PORT Port du serveur LDAP
ROOTBINDDN DN pour les opérations LDAP privilégiées
ROOTUSE_SASL Active l'authentification SASL pour les traitements privilégiés
SASL_AUTH_ID utilisateur SASL pour la connection LDAP
SASL_MECH Liste de mécanismes SASL à utiliser
SASL_SECPROPS Propriétés de sécurité SASL
SSL Active TLS pour les communications LDAP
SUDOERS_BASE DN de base pour les recherches SUDO
SUDOERS_DEBUG Niveaux de débuggage pour les requêtes sudo
SUDOERS_SEARCH_FILTER Filtre de recherche pour les requêtes sudo
SUDOERS_TIMED Spécifie si sudoNotBefore et sudoNotAfter sont évalués
TIMELIMIT Délai en secondes d'attente d'une réponse LDAP
TIMEOUT Délai en secondes d'attente d'une réponse depuis divers API LDAP
TLS_CACERTFILE Certificat de l'autorité
TLS_CACERTDIR Répertoire contenant les certificats d'autorité
TLS_CERT Certificat client
TLS_CHECKPEER Vérifie le certificat du serveur
TLS_KEY Clé privée du client
TLS_CIPHERS Liste d'algorithmes de chiffrement TLS à utiliser
TLS_KEYPW Mot de passe pour déchiffrer la clé privée. Peut être en base64 (base64:dGVzdA==)
TLS_RANDFILE Source d'entropie
URI URI du serveur LDAP
USE_SASL Active l'authentification SASL
ROOTSASL_AUTH_ID Utilisateur SASL à utiliser avec ROOTUSE_SASL

Configurer nsswitch.conf

   sudo consulte nsswitch.conf puor spécifie l'ordre de recherce sudoers. sudo recherche une ligne commençant par sudoers: et l'utilise pour déterminer l'ordre de recherche. Noter que sudo n'arrête pas sa recherche après le premier match et le dernier match a précédence. Les sources suivantes sont reconnus:

files Lit le fichier /etc/sudoers
ldap Lit sudoers depuis LDAP

   De plus, l'entrée [NOTFOUND=return] court-circuite la recherche si l'utilisateur n'a pas été trouvé dans la source précédente

Intergration avec sssd

   Dans les systèmes avec System Security Service Daemon il est possible d'utiliser SSSD pour cacher les règles sudoers LDAP. pour utiliser sssd, il faut utiliser sssd au lieu de ldap dans l'entrées sudoers dans /etc/nsswitch.conf. Noter que /etc/ldap.conf n'est pas utilisé par sssd.
^
03 juillet 2017

htmlpdflatexmanmd




sudoreplay

sudoreplay

Rejouer les logs de session sudo

   sudoreplay rejout ou liste les logs créés par sudo. Il peut jouer les sessions en temps réel, ou en ajustant la vitesse.

   L'ID doivrait être une séquence à 6 chiffres et lettres majuscules, ou un motif matchant l'option iolog_file. Quand une commande est lancée via sudo avec log_output activée dans le fichier sudoers, la chaîne TSID=ID est loggée via syslog ou dans le fichier de log. L'ID peut également être déterminé en mode list.

   En mode list, sudoreplay peut être utilisé pour trouver un ID de session basé sur des critères tels que l'utilisateur, le tty ou la commande lancée:

\n, \r Saute au prochain évènement, utile pour les longues pauses
' ' Met en pause la sortie, appuyer un n'importe quelle touche pour relancer
Réduit la vitesse par 2
Double la vitesse

OPTIONS

-d, --directory=dir Répertoire des logs de session au lieu du défaut /var/log/sudo-io
-f, --filter=[stdin|stdout,stderr,ttyin,ttyout] Sélection quels types E/S afficher.
-l, --list [expr] Active le mode liste. Dans ce mode, sudoreplay liste les sessions disponibles dans un format similaire au format de log sudo, trié par nom de fichier ou séquence de nombre. Si une expression de recherche est spécifiée, restreint les ID qui sont affichés. Une expression est composée des prédicats suivants:

        command ‹pattern› Évalue à vrai si la commande match le motif spécifié
        cwd ‹dir› Évalue à vrai si la commande a été lancée dans le répertoire spécifié
        fromdate ‹date› Évalue à vrai si la commande a été lancée à ou après cette date
        group ‹runas_group› Évalue à vrai si la commande a été lancée sous le groupe spécifié
        runas ‹runas_user› Évalue à vrai si la commande a été lancée sous l'utilisateur spécifié
        todate ‹date› Évalue à vrai si la commande a été lancée avant la date spécifiée
        tty ‹tty› Évalue à vrai si la commande a été lancée dans le terminal spécifié
        user ‹user› Évalue à vrai si la commande a été lancée par l'utilisateur spécifié

           Les prédicats peuvent être combinées en utilisant les opérateurs and, or et !, ainsi que les parenthèses.

-m, --max-wait Spécifie une limite maximum d'attente entre les frappes de touche ou la sortie de données.
-s, --speed Spécifie le facteur de vitesse.

Format de date

   La date et l'heure peuvent être spécifié de plusieurs manières: HH:MM:SS am MM/DD/CCYY timezone, HH:MM:SS am Month, Day Year timezone, CCYY-MM-DD HH:MM:SS, DD Month CCYY HH:MM:SS

   Les dates suivantes sont valides:

now
tomorrow
yesterday il y a 24 heure
2 hours ago
next Friday
last week
a fortnight ago L'heure courante, mais il y a 14 jours
10:01 am 9/17/2009
10:01 am
10 10 heure du matin
9/17/2009
10:01 am Sep 17, 2009

Exemples

Lister les sessions lancées par millert
sudoreplay -l user millert
Lister les sessions lancées par bob avec une commande contenant la chaîne vi
sudoreplay -l user bob command vi
Lister les sessions lancées par jeff qui match l'expression régulière
sudoreplay -l user jeff command '/bin/[a-z]*sh'
Lister les sessions lancées par jeff ou bob dans la console
sudoreplay -l ( user jeff or user bob ) tty console
^
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
^
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




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




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.
^
07 mai 2017

htmlpdflatexmanmd




/etc/selinux/<SELINUXTYPE>/contexts/users/<se_user>

/etc/selinux/‹SELINUXTYPE›/contexts/users/‹se_user›

Fichiers contenant les entrées qui permettent de déterminer le contexte d'un utilisateur à l'ouverture d'une session

   Il y a un fichier pour chaque utilisateur SELinux configuré dans le système. Chaque ligne dans le fichier de configuration a le format login_process user_login_process

login_process consiste d'une entrée role:type[:range] qui représente le contexte du processus de login
user_login_process consiste d'une entrée role:type[:range] qui représente le contexte du processus de login de l'utilisateur

Exemple


system_r:crond_t:s0 xguest_r:xguest_t:s0
system_r:initrc_t:s0 xguest_r:xguest_t:s0
system_r:local_login_t:s0 xguest_r:xguest_t:s0
system_r:remote_login_t:s0 xguest_r:xguest_t:s0
system_r:sshd_t:s0 xguest_r:xguest_t:s0
system_r:xdm_t:s0 xguest_r:xguest_t:s0
xguest_r:xguest_t:s0 xguest_r:xguest_t:s0
^
03 juillet 2017

htmlpdflatexmanmd




visudo

visudo

Éditer le fichier sudoers

   visudo édite le fichier sudoers de manière sûre, analogue à vipw. visudo lock le fichier et fournis des vérifications de base.

   Il y a une liste hardcodée d'un ou plusieurs éditeur que visudo utilise qui peut être remplacés par le paramètre editors. Cette liste est par défaut à 'vi'. Normalement, visudo n'honore pas VISUAL et EDITOR sauf si elles contiennent un éditeur dans la liste des éditeurs mentionnés.

   visudo parse le fichier sudoers après l'édition et ne sauve les changement que s'il n'y a pas d'erreur de syntaxe.

OPTIONS

-c, --check Mode vérification, vérifie la syntaxe, propriétaire et mode.
-f, --file=sudoers Spécifie l'emplacement du fichier sudoers
-q, --quiet mode silencieux
-s, --strict Vérification stricte. Si un alias est référencé mais n'est pas définis, ou s'il y a une boucle d'alias, génère une erreur.
-x, --export=output_file Exporte un sudoers dans un format JSON dans le fichier spécifié ou stdin si '-'