Commandes d'administration de RSBAC

Ce document concerne la version 1.3.0 de RSBAC.

Table des matières

Commandes shell

Commandes générales

attr_back_dev

Liste les commandes permettant de récupérer les attributs actuellement positionnés sur les devices.

attr_back_fd

Liste les commandes permettant de récupérer les attributs actuellement positionnés sur les fichiers/répertoires/file/liens.

attr_back_group

Liste les commandes permettant de récupérer les attributs actuellement positionnés sur les groupes.

attr_back_net

Liste les commandes permettant de récupérer les attributs actuellement positionnés sur les objets NET.

attr_back_user

Liste les commandes permettant de récupérer les attributs actuellement positionnés sur les utilisateurs.

attr_get_fd

Retourne la valeur d'un attribut concernant un(e) fichier/répertoire/lien/device/file. Le module est un paramêtre optionnel. Si il est précisé, l'attribut doit correspondre au module précisé.

Use: attr_get_fd [switches] module target-type attribute file/dirname(s)
-v = verbose, -e = show effective (maybe inherited) value, not real
-r = recurse into subdirs, -n = list all requests
-a = list attributes and values
-N ta = transaction number (default = value of RSBAC_TA, if set, or 0)
module = GEN, MAC, FC, SIM, PM, MS, FF, RC or AUTH
target-type = FILE, DIR, FIFO, SYMLINK, DEV or FD
(FD: let attr_get_fd decide between FILE, DIR, FIFO and SYMLINK, no DEV)

Type effectif (-e) du fichier /var/log/messages.log attribué pour le module RC : attr_get_fd -e RC FILE rc_type_fd /var/log/messages.log Droits sur le fichier /usr/sbin/sshd d'après le module FF : attr_get_fd FF FILE ff_flags /usr/sbin/sshd

attr_get_file_dir

Retourne la valeur d'un attribut concernant un fichier/répertoire. Le module est un paramêtre optionnel. Si il est précisé, l'attribut doit correspondre au module précisé.

Use: attr_get_file_dir module target-type file/dirname attribute [request]
Use: attr_get_file_dir module target-type file/dirname attribute [position]
Use: attr_get_file_dir list_category_nr
-e = show effective (maybe inherited) value, not real
-d = numeric device specification ({b|c}major[:minor])
-p = print requests, -n [target] = list all requests [for target]
-c list all Linux capabilities, -R = list all RES resource names
-C path = convert path to device special file to device specification
-a = list attributes and values
-N ta = transaction number (default = value of RSBAC_TA, if set, or 0)
module = GEN, MAC, FC, SIM, PM, MS, FF, RC, AUTH, RES or PAX
target-type = FILE, DIR, FIFO, SYMLINK or DEV

attr_get_group

Retourne la valeur d'un attribut concernant un groupe. Le module est un paramêtre optionnel. Si il est précisé, l'attribut doit correspondre au module précisé.

Use: attr_get_group [switches] module group attribute [position|request-name]
-n = numeric value, -b = both names and numbers,
-l list all users, -L list all Linux groups
-a = list attributes and values
-N ta = transaction number (default = value of RSBAC_TA, if set, or 0)
module = GEN, MAC, FC, SIM, PM, MS, FF, RC or AUTH

attr_get_ipc

Retourne la valeur d'un attribut d'un IPC. Le module est un paramêtre optionnel. Si il est précisé, l'attribut doit correspondre au module précisé. Ainsi, on utilisera :

Use: attr_get_ipc [flags] module ipc-type id attribute
-N ta = transaction number (default = value of RSBAC_TA, if set, or 0)
-i = list all IPC ids with non-default attributes
ipc-types: sem, msg, shm, anonpipe, anonunix
attribute (string) and returned value = see following list:
security_level 0 = unclassified, 1 = confidential, 2 = secret, 3 = top secret, 254 = inherit, max. level 252
mac_categories Bit Set String of length 64 for all categories
pm_object_class Class-ID (positive integer)
pm_ipc_purpose Purpose-ID (positive integer)
pm_object_type 0 = none, 1 = TP, 2 = personal data, 3 = non-personal data, 4 = ipc, 5 = dir
rc_type RC-type-id
jail_id JAIL ID (0 = off)

attr_get_ipc RC anonunix 2 rc_type attr_get_ipc JAIL msg 2 jail_id

attr_get_net

Retourne la valeur d'un attribut d'un objet NET. Le module est un paramêtre optionnel. Si il est précisé, l'attribut doit correspondre au module précisé. Ainsi, on utilisera :

Use: attr_get_net [-v] [-e] module target-type attribute [CAT category] [request] id(s)
-v = verbose, -e = show effective (maybe inherited) value, not real
-r = recurse into subdirs, -n [target] = list all requests [for target]
-a = list attributes and values
-d = list NETDEV targets with non-default attribute values
-N ta = transaction number (default = value of RSBAC_TA, if set, or 0)
module = GEN, MAC, FC, SIM, PM, MS or RC
target-type = NETDEV, NETTEMP or NETOBJ
category = category number for mac_categories
request = request number for log_array_low|high

attr_get_process

Retourne la valeur d'un attribut d'un processus. Le module est un paramêtre optionnel. Si il est précisé, l'attribut doit correspondre au module précisé. Ainsi, on utilisera :

Use: attr_get_process [switches] module pid attribute [bit-no]
-p = print all request names, -n = list all request names
-a = list attributes and values
-N ta = transaction number (default = value of RSBAC_TA, if set, or 0)
module = GEN, MAC, FC, SIM, PM, MS, FF, RC, AUTH or PAX
categories and log_program_based (with additional parameter bit-no)
0=no, 1=yes

attr_get_up

Retourne la valeur d'un attribut d'un utilisateur/processus. Le module est un paramêtre optionnel. Si il est précisé, l'attribut doit correspondre au module précisé. Ainsi, on utilisera :

Use: attr_get_up [switches] module target-type attribute user(s)/proc-no.
-a = list attributes and values
-N ta = transaction number (default = value of RSBAC_TA, if set, or 0)
module = GEN, MAC, FC, SIM, PM, MS, FF, RC or AUTH
target-type = USER or PROCESS,

attr_get_user

Retourne la valeur d'un attribut d'un utilisateur. Le module est un paramêtre optionnel. Si il est précisé, l'attribut doit correspondre au module précisé. Ainsi, on utilisera :

Use: attr_get_user [switches] module user attribute [position|request-name]
-e = show effective (maybe inherited) value, not real
-n = numeric value, -b = both names and numbers,
-l list all users, -L list all Linux groups
-c list all Linux capabilities, -R = list all RES resource names
-a = list attributes and values
-N ta = transaction number (default = value of RSBAC_TA, if set, or 0)
module = GEN, MAC, FC, SIM, PM, MS, FF, RC or AUTH
mac_[min_]categories (with additional parameter position)
0=no, 1=yes
log_user_based (with additional parameter request-name)
0=no, 1=yes

attr_rm_fd

attr_rm_file_dir

attr_rm_group

attr_rm_user

attr_set_fd

Positionne les attributs d'un(e) fichier/répertoire/device/file/lien. Le module est un paramêtre optionnel. Si il est précisé, l'attribut doit correspondre au module précisé.

Use: attr_set_fd [-v] [-r] module target-type attribute value file/dirname(s)
-v = verbose, -r = recurse into subdirs,
-n = list all requests
-A = list attributes and values
-V version = supply RSBAC integer version number for upgrading
-N ta = transaction number (default = value of RSBAC_TA, if set, or 0)
module = GEN, MAC, FC, SIM, PM, MS, FF, RC or AUTH
target-type = FILE, DIR, FIFO, SYMLINK, DEV or FD
(FD: let attr_set_fd decide between FILE, DIR, FIFO and SYMLINK, no DEV),

Liste des options disponibles : attr_set_fd -A Liste des requêtes existantes (tous types confondus) : attr_set_fd -n Permet à su de prendre n'importe quel UID : attr_set_fd AUTH FILE auth_may_setuid 1 /bin/su Définit le type correspondant au fichier /var/log/messages.log : attr_set_fd RC FILE rc_type_fd 5 /var/log/messages.log Définit le role correspondant aux programmes dans /bin/ : attr_set_fd -r RC FILE rc_force_role 0 /bin/

attr_set_file_dir

attr_set_group

attr_set_ipc

Positionne les attributs d'un ipc. Le module est un paramêtre optionnel. Si il est précisé, l'attribut doit correspondre au module précisé. Ainsi, on utilisera :

Use: attr_set_ipc module ipc-type id attribute value
- ipc-types: sem, msg, shm, anonpipe or anonunix
- attribute (string) and value = see following list:
security_level 0 = unclassified, 1 = confidential, 2 = secret, 3 = top secret, 254 = inherit, max. level 252
mac_categories Bit Set String of length 64 for all categories
pm_object_class Class-ID (positive integer)
pm_ipc_purpose Purpose-ID (positive integer)
pm_object_type 0 = none, 1 = TP, 2 = personal data, 3 = non-personal data, 4 = ipc, 5 = dir
rc_type RC-type-id
jail_id JAIL ID (0 = off)

attr_set_net

attr_set_process

attr_set_up

attr_set_user

get_attribute_name

get_attribute_nr

rsbac_version

Retourne les numéros de version des outils d'administration de RSBAC installés et de la version de RSBAC compilée dans le noyau.

switch_adf_log

switch_module

Module AUTH

Le module AUTH contrôle quel process à le droit d'utiliser quels UID. Il peut être utilisé conjointement avec le module UM, ou avec la gestion d'utilisateurs standard de Linux.

auth_back_cap

Permet d'afficher les commandes a utiliser pour récupérer la configuration du module AUTH pour le répertoire/fichier donné.

Use: auth_back_cap [-r] [-v] [-o output-file] file/dirname(s) should be called by root with all rsbac modules switched off, -r = recurse in subdirs, -v = verbose, no symlinks followed, -T file = read file/dirname list from file (- for stdin), -m = set maximum length of cap entry list per file, default is 200 -o target-file = write to file, not stdout -N ta = transaction number (default = value of RSBAC_TA, if set, or 0)

auth_back_cap /usr/sbin/sshd

auth_set_cap

Affiche ou modifie les UID pouvant être utilisés par un fichier.

Use: auth_set_cap [switches] TYPE add/remove target first_user [last_user]
Use: auth_set_cap [switches] TYPE get target
TYPE = PROCESS (add/remove only), DIR, FILE or FD (auto-select),
target = pid or filename
last_user: range from first_user to last_user
-m = set maximum length of cap entry list per file, default is 200
-e = get or set caps for effective uids, not real
-f = get or set caps for filesystem uids, not real
-g = get or set caps for gids, not uids
-E = get or set for eff gids, not real uids
-F = get or set for fs gids, not real uids
-t = set relative time-to-live for this cap entry in seconds (add only)
-T = set absolute time-to-live for this cap entry in seconds (add only)
-D = set relative time-to-live for this cap entry in days (add only)
-V version = supply RSBAC integer version number for upgrading
-N ta = transaction number (default = value of RSBAC_TA, if set, or 0)

auth_set_cap FILE add /bin/su 0

rsbac_auth

Module ACL

Le module ACL permet de définir très finement les droits que possède un utilisateur, un groupe d'utilisateurs ou un rôle sur un fichier particulier. Il étend les droits UNIX en permettant plus de détail dans les droits (lecture/ecriture/execution avec les droits UNIX) et plus de souplesse dans la gestion des utilisateurs (possibilité de définir des droits différents sur un même fichier pour plusieurs utilisateurs). Il peut être utilisé conjointement avec le module UM, ou avec la gestion d'utilisateurs standard de Linux.

acl_grant

Ajoute ou supprime des droits au niveau du module ACL.

Use: acl_grant [switches] subj_type subj_id [rights] target-type file/dirname(s)
-v = verbose, -r = recurse into subdirs,
-p = print right names, -s = set rights, not add
-k = revoke rights, not add, -m remove entry (set back to inherit)
-b = expect rights as bitstring, -n = list valid SCD names
-d = numeric device specification ({b|c}major[:minor])
-u, -g, -l = shortcuts for USER, GROUP and ROLE
-t = set relative time-to-live for this trustee in seconds (add and set only)
-T = set absolute time-to-live for this trustee in seconds (add and set only)
-D = set relative time-to-live for this trustee in days (add and set only)
-V version = supply RSBAC integer version number for upgrading
-N ta = transaction number (default = value of RSBAC_TA, if set, or 0)
subj_type = USER, GROUP or ROLE,
subj_id = user name or id number,
rights = list of space-separated right names (requests and ACL specials),
also request groups R (read requests), RW (read-write), W (write)
SY (system), SE (security), A (all)
S (ACL special rights)
and NWx with x = S R W C E A F M (similar to well-known network system)
target-type = FILE, DIR, FIFO, SYMLINK, DEV, IPC, SCD, USER, PROCESS, NETDEV,
NETTEMP_NT, NETTEMP, NETOBJ or FD
(FD: let acl_grant decide between FILE, DIR, FIFO and SYMLINK, no DEV),
(IPC, USER, PROCESS: only :DEFAULT:
(NETTEMP: no :DEFAULT:
- Use name :DEFAULT: for default ACL

Ajoute le droit MODIFY_SYSTEM_DATA à l'utilisateur mysql pour les IPC : acl_grant USER mysql MODIFY_SYSTEM_DATA IPC :DEFAULT:

acl_group

acl_mask

acl_rights

Liste les droits au niveau du module ACL

Use: acl_rights [switches] target-type file/dirname(s)
-v = verbose, -r = recurse into subdirs,
-p = print right names, -d = give direct, not effective rights
-n = list valid SCD names, -s = scripting mode
-D = numeric device specification ({b|c}major[:minor])
-R = list valid right names [for target-type]
-N ta = transaction number (default = value of RSBAC_TA, if set, or 0)
-u user = print rights for given user, not caller
-g group = print rights for given group, not caller
-l role = print rights for given role, not caller
target-type = FILE, DIR, FIFO, SYMLINK, DEV, IPC, SCD, USER, GROUP, PROCESS,
NETDEV, NETTEMP_NT, NETTEMP, NETOBJ or FD
(FD: let acl_rights decide between FILE, DIR, FIFO and SYMLINK, no DEV),
(IPC, PROCESS: only :DEFAULT:
(NETTEMP: no :DEFAULT:
- Use name :DEFAULT: for default ACL

Lister les droits généraux sur le fichier /bin/bash : acl_rights -p FILE /bin/bash Lister les droits du l'utilisateur mysql sur les IPC : acl_rights -p -u mysql IPC :DEFAULT:

acl_rm_user

acl_tlist

linux2acl

Module CAP

Module DAC_DISABLE

Est-ce vraiment un module ?

Module DAZ

daz_flush

Module FF

Le module FF permet de positionner facilement des attributs généraux sur les fichiers et les répertoires comme lecture seule, ajout seulement, ecriture seulement, pas de suppression, pas de renommage ... Ces rêglages seront valables pour tous les utilisateurs, y compris root, à l'exception du rôle role_admin qui n'est pas concerné par l'attribut "no_search" (afin de permettre l'indexation des fichiers par exemple).

Module FREEZE

Est-ce vraiment un module ?

Module GEN

Module JAIL

Le module JAIL permet d'executer un programme dans une prison, l'empêchant complètement de nuire au reste du système.

rsbac_jail

Execute un programme dans une prison.

Use: rsbac_jail [flags] [-I addr] [-R dir] [-C cap-list] prog args
This program will put the process into a jail with chroot to path,
ip address IP and then execute prog with args
-I addr = limit to IP address,
-R dir = chroot to dir,
-N = enclose process in its private namespace,
-C cap-list = limit Linux capabilities for jailed processes,
use bit-vector, numeric value or list names of desired caps,
A = all, FS_MASK = all filesystem related,
-L = list all Linux capabilities,
-S = list all SCD targets,
-v = verbose, -i = allow access to IPC outside this jail,
-P = allow access to IPC in the parent jail,
-n = allow all network families, not only UNIX and INET (IPv4),
-r = allow INET (IPv4) raw sockets (e.g. for ping),
-a = auto-adjust INET any address 0.0.0.0 to jail address, if set,
-o = additionally allow to/from remote INET (IPv4) address 127.0.0.1,
-d = allow read access on devices, -D allow write access
-e = allow GET_STATUS_DATA on devices, -E allow MODIFY_SYSTEM_DATA
-t = allow *_OPEN on tty devices
-s = allow to create with / set mode to suid
-u = allow to mount/umount
-G scd ... = allow GET_STATUS_DATA on these scd targets
-M scd ... = allow MODIFY_SYSTEM_DATA on these scd targets
Deprecated old options, please use -G and -M:
-l = allow to modify rlimits (-M rlimit),
-c = allow to modify system clock (-M clock time_strucs),
-m = allow to lock memory (-M mlock),
-p = allow to modify priority (-M priority),
-k = allow to get kernel symbols (-G ksyms)

L'usage de -D permet l'accès en écriture aux devices (ici le terminal) : rsbac_jail -vD echo "test" L'usage de -d permet l'accès en lecture aux devices : rsbac_jail -vdD head -c 8 /dev/urandom L'option "-M priority" permet de positionner MODIFY_SYSTEM_DATA sur priority, -R définit un répertoire dans lequel chrooter : rsbac_jail -vdD -M priority -R /var/apache-chroot /usr/bin/mysqld_safe -log-error=/var/log/mysqld.log

Module MAC

Le module MAC implémente un modèle de sécurité dans lequel un processus se voit associé un niveau de sécurité dépendant de l'utilisateur sous lequel il est lancé. Les processus peuvent alors accéder en lecture aux processus/fichiers/devices ayant un niveau de sécurité inférieur ou égal, et en écriture aux processus/fichiers/devices ayant un niveau de sécurité égal.

mac_back_trusted

mac_get_levels

mac_set_trusted

mac_wrap

Module PAX

Le module PAX est un module protégeant contre l'execution de code non désiré à partir de méthode classique comme le débordement de tampon (buffer overflow). Il est basé sur PaX, mais en modifie le comportement en ne modifiant pas les programmes eux-mêmes. Lors de l'utilisation de ce module, il faut veiller à utiliser les utilitaires RSBAC, et non les utilitaires PaX comme paxctl qui ne fonctionneront pas.

Module PM

pm_create

pm_ct_exec

Module RC

Le module RC se base sur la définition de rôles (pour les acteurs) et de types (pour les cibles), et se réfère à un tableau de droits à trois dimensions pour permettre ou non à un rôle donné d'effectuer une action donnée sur un type donné. L'affectation des rôles et des types se fait en se basant sur les propriétés du fichier concerné (processus pour le rôle, fichier/répertoire/device/file/lien pour le type). Voir en particulier les attributs rc_type_fd, rc_initial_role et rc_force_role.

rc_copy_role

Copie un rôle.

Use: rc_copy_role [flags] from_role to_role
-N ta = transaction number (default = value of RSBAC_TA, if set, or 0)

Copie le rôle 0 (e.g. General_User) vers le rôle 3. rc_copy_role 0 3

rc_copy_type

Copie un type.

Use: rc_copy_type [flags] target from_type to_type
target = FD, DEV, IPC, USER, PROCESS, GROUP, NETDEV, NETTEMP, NETOBJ
-N ta = transaction number (default = value of RSBAC_TA, if set, or 0)

Copie le type FD 0 (e.g. General_FD) vers le type FD 3. rc_copy_role 0 3

rc_create_file

rc_get_current_role

Retourne le numéro du rôle courant.

rc_get_eff_rights_fd

Retourne les droits actuellement disponibles sur un(e) fichier/répertoire/lien/file) ou un device. Ces droits sont donc ceux associés au rôle courant.

Use: rc_get_eff_rights_fd [-v] [-r] [-p] target-type file/dirname(s)
-v = verbose, -r = recurse into subdirs,
-p = print right names,
-N ta = transaction number (default = value of RSBAC_TA, if set, or 0)
target-type = FILE, DIR, FIFO, SYMLINK, DEV or FD
(FD: let rc_get_eff_rights_fd decide between FILE, DIR, FIFO and SYMLINK, no DEV),

rc_get_eff_rights_fd -p /var/log/messages.log

rc_get_item

Use: rc_get_item [switches] rc-target-type id-nr item [sub-id-nr [right]]
rc_get_item list_xxx
rc_get_item list_unused_xxx (_nr only)
rc_get_item list_def_fd_ind_create_type{s|_nr|_values role-id
rc_get_item backup
rc_get_item print
-v = verbose, -p = print right names,
-i = list items and values,
-r = remove role before restore (backup only)
-N ta = transaction number (default = value of RSBAC_TA, if set, or 0)
rc-target-type = ROLE or TYPE,
id-nr = ROLE or TYPE number,
item = entry line,
sub-id-nr = use this sub-id (_comp items only),
right = right name or number (type_comp items only),
xxx = roles, fd_types, dev_types, ipc_types, user_types, process_types, scd_types, group_types, role_nr, fd_type_nr, dev_type_nr, ipc_type_nr, user_type_nr, process_type_nr, scd_type_nr, rights: print a list
list_def_fd_ind_create_types etc.: print a list

Liste les rôles disponibles : rc_get_item list_roles Liste les types d'IPC disponibles : rc_get_item list_ipc_types Retourne la valeur du paramêtre def_fd_create_type pour le role 0 (e.g. General_User) : rc_get_item ROLE 0 def_fd_create_type Retourne la valeur du paramêtre RECEIVE pour le type IPC 0 (e.g. General_IPC) pour le role 0 (e.g. General_User) : rc_get_item ROLE 0 type_comp_ipc 0 RECEIVE Affiche toutes les informations concernant le module RC : rc_get_item print

rc_role_wrap

rc_set_item

Use: rc_set_item [switches] rc-target-type id item [role/type [list-of-rights]] [value]
rc_set_item -c TYPE target-id item source-id [first_role [last_role]],
-v = verbose, -p = print right names,
-a = add, not set, -k = revoke, not set,
-b = accept rights as bitstring,
-c = copy all/given roles' rights to type from other type,
-d = delete all roles' rights to this type,
-i = list items and values
-t = set relative time-to-live in secs (role/type comp, admin, assign only)
-T = set absolute time-to-live in secs (role/type comp, admin, assign only)
-D = set relative time-to-live in days (role/type comp, admin, assign only)
-V version = supply RSBAC integer version number for upgrading
-N ta = transaction number (default = value of RSBAC_TA, if set, or 0)
rc-target-type = ROLE or TYPE,
id-nr = ROLE or TYPE number,
item = entry line,
role/type = for this type only (role/type comp, admin, assign only),
right = request name or number (type_comp items only),
also special rights and groups R (read requests),
RW (read-write), SY (system), SE (security), A (all)

Définit un nouveau role nommé Test : rc_set_item ROLE 4 name "Test" Supprime le droit def_fd_create_type pour ce rôle : rc_set_item -k ROLE 4 def_fd_create_type Ajoute le droit MODIFY_SYSTEM_DATA pour ce rôle sur le SCD 14 (priority) : rc_set_item -a ROLE 4 type_comp_scd 14 MODIFY_SYSTEM_DATA

Module REG

Module RES

Le module RES permet de mettre en place des limites d'utilisation de ressources pour les utilisateurs et les processus. On définit un minimum et un maximum pour les couples utilisateur/ressource ou processus/ressource pour les quels on désire mettre en place une limitation. Note : Pour définir les valeurs par défaut (qui concerneront tous les utilisateurs), on utilisera l'UID 4294967292 (-4, ALL_USERS).

Module SOFTMODE

Est-ce vraiment un module ?

Module UM

Le module UM gère les utilisateurs et les groupes. Il peut complémenter ou remplacer totalement la gestion classique des utilisateurs et groupes de Linux.

rsbac_gpasswd

rsbac_groupadd

rsbac_groupdel

rsbac_groupmod

rsbac_groupshow

rsbac_login

rsbac_passwd

rsbac_useradd

rsbac_userdel

rsbac_usermod

rsbac_usershow

Commandes dialog

Ces commandes utilisent le toolkit dialog pour offrir une interface plus simple d'utilisation.

rsbac_acl_group_menu

rsbac_acl_menu

rsbac_dev_menu

rsbac_fd_menu

rsbac_group_menu

rsbac_menu

rsbac_netdev_menu

rsbac_nettemp_def_menu

rsbac_nettemp_menu

rsbac_process_menu

rsbac_rc_role_menu

rsbac_rc_type_menu

rsbac_settings_menu

rsbac_user_menu

Commandes non classées

backup_all

backup_all_1.1.2

net_temp

rklogd-viewer

rsbac_check

Use: rsbac_check correct check_inode
correct = 0: do not correct errors
correct = 1: correct errors
correct = 2: correct more
check_inode = 0: do not check inode numbers
check_inode = 1: also check inode numbers (only ext2/3 on 2.4 kernels)

rsbac_init

Use: rsbac_init root_dev
root_dev: root device to initialize from, e.g. /dev/sda1

rsbac_list_ta

rsbac_pm

rsbac_stats

rsbac_stats_pm

rsbac_write

user_aci.sh

Référence

Messages d'erreur

RSBAC_EPERM

RSBAC_EACCESS

RSBAC_EREADFAILED

RSBAC_EWRITEFAILED

RSBAC_EINVALIDPOINTER

RSBAC_ENOROOTDIR

RSBAC_EPATHTOOLONG

RSBAC_ENOROOTDEV

RSBAC_ENOTFOUND

L'attribut ou l'objet demandé n'a pu être trouvé. En général, l'objet n'existe pas.

RSBAC_ENOTINITIALIZED

RSBAC_EREINIT

RSBAC_ECOULDNOTADDDEVICE

RSBAC_ECOULDNOTADDITEM

RSBAC_ECOULDNOTCREATEPATH

RSBAC_EINVALIDATTR

Attribut invalide ou ne correspondant pas au module précisé.

RSBAC_EINVALIDDEV

RSBAC_EINVALIDTARGET

RSBAC_EINVALIDVALUE

RSBAC_EEXISTS

RSBAC_EINTERNONLY

RSBAC_EINVALIDREQUEST

RSBAC_ENOTWRITABLE

RSBAC_EMALWAREDETECTED

RSBAC_ENOMEM

RSBAC_EDECISIONMISMATCH

RSBAC_EINVALIDVERSION

La version des outils d'administration de RSBAC et la version de RSBAC compilée dans le noyau ne sont pas les mêmes.

RSBAC_EINVALIDMODULE

Le module invoqué n'a pas été activé lors de la compilation du noyau.

RSBAC_EEXPIRED

RSBAC_EMUSTCHANGE

RSBAC_EBUSY

RSBAC_EINVALIDTRANSACTION

RSBAC_EWEAKPASSWORD

Le mot de passe proposé est trop simple.

Astuces de débogage

RSBAC fournit des informations de débogage qui peuvent être trouvées dans les fichiers /var/log/messages.log et /var/log/everything.log. Afin de mettre en place une politique de sécurité, il est conseillé de démarrer en softmode (passer le paramètre rsbac_softmode au noyau), et de regarder les messages que RSBAC fournit dans ces fichiers.

Comprendre les messages

La structure générale d'un message de log est la suivante :

<timestamp> <hostname> <ID>|<fonction>: request <requête>, pid <pid>, ppid <ppid>, prog_name <prog_name>, prog_file <prog_file>, uid <uid>, remote ip <ip>, target_type <type>, tid Device <dev> Inode <inode> Path <path>, attr <attributes>, value <value>, result NOT_GRANTED (Softmode) by <modules> Par exemple : Nov 30 15:08:11 darkstar 0000000761|rsbac_adf_request(): request GET_STATUS_DATA, pid 2063, ppid 1910, prog_name sshd, prog_file /usr/sbin/sshd, uid 0, remote ip 192.18.10.240, target_type FILE, tid Device 03:04 Inode 6743 Path /etc/ld.so.cache, attr none, value none, result NOT_GRANTED (Softmode) by RC

La première chose à regarder dans une telle ligne est le ou les modules en cause. Cette information est située tout à la fin de la ligne.

Activation de messages supplémentaires

Savoir exactement quel droit ajouter à partir des messages fournis en standard n'est pas toujours facile. Il peut être intéressant de rendre les logs plus verbeux. Il suffit pour cela de modifier le fichier /proc/rsbac-info/debug, ou de passer un paramètre au noyau.

Pour savoir quel sont le rôle et le type qui sont en jeux lors du refus d'un droit par le module RC : echo debug_adf_rc 1 > /proc/rsbac-info/debug

Les paramètres de debogage pouvant être activées sont :

Exemples d'utilisation

Protection des fichiers de log

Le but est ici de protéger les fichiers de log contre la suppression ou la modification des données qu'ils contiennent déjà. Les programmes devront cependant pouvoir ajouter des lignes à la fin du fichier. A noter que cet exemple ne se soucie pas de la rotation des logs.

On cherche d'abord un identifiant de type disponible, et un type à copier : rc_get_item list_fd_types On crée ensuite un type à partir du type 0 (e.g. General_FD) : rc_copy_type FD 0 5 Puis on définit le nom de ce nouveau type : rc_set_item TYPE 3 type_fd_name "Logs FD" Enfin, on interdit la modification ou la suppression pour les fichiers de ce type pour tous les roles : for i in `rc_get_item list_roles | awk '{ print $1 }'`; do rc_set_item -k ROLE $i type_comp_fd 3 TRUNCATE; done for i in `rc_get_item list_roles | awk '{ print $1 }'`; do rc_set_item -k ROLE $i type_comp_fd 3 DELETE; done On utilise ce type pour le fichier /var/log/messages.log : attr_set_fd RC FILE rc_type_fd 3 /var/log/messages.log On peut vérifier les droits positionnés : rc_get_eff_rights_fd -p /var/log/messages.log

Index des commandes