{{tag>Brouillon Sécurité CA}}
= Notes SELinux
Voir :
* https://debian-handbook.info/browse/fr-FR/stable/sect.selinux.html
* https://linuxhint.com/selinux_debian_10/
* https://blog.microlinux.fr/selinux/
* https://people.redhat.com/duffy/selinux/selinux-coloring-book_A4-Stapled.pdf
* http://people.redhat.com/tcameron/summit2010/selinux/SELinuxMereMortals.pdf
* http://people.redhat.com/tcameron/Summit2016/selinux/selinux_for_mere_mortals.pdf
* ausearch
* SEtroubleshoot
* https://github.com/centreon/centreon-plugins/tree/develop/selinux
* Ansible https://docs.ansible.com/ansible/2.9/modules/list_of_system_modules.html
* https://web.archive.org/web/20170326131853/http://www.lurking-grue.org/writingselinuxpolicyHOWTO.html
* setroubleshootd
* system-config-selinux
== Autoriser avec audit2allow
sudo cat /var/log/audit/audit.log | grep AVC | grep denied | audit2why > audit2why.txt
sudo cat /var/log/audit/audit.log | grep AVC | grep denied | audit2allow > audit2allow.txt
/usr/bin/audit2allow -a -M plop
== Restaurer les autorisations SELinux
# Voir les différences
restorecon -nv /etc/passwd
# Les remettre
restorecon -v /etc/passwd
# Exemple
restorecon -v /usr/sbin/httpd
restorecon -v /etc/ld.so.cache
restorecon -v /etc/hosts
Au démarrage du système
touch /.autorelabel
Réétiquetés les fichiers lors du prochain redémarrage \\
Cela crée le fichier ''/.autorelabel'' contenant l'option ''-F''
fixfiles -F onboot
Passez toujours en mode permissif avant d'entrer dans la commande fixfiles -F onboot. Cela permet d'éviter que le système ne démarre pas s'il contient des fichiers non étiquetés. Pour plus d'informations, voir [[https://bugzilla.redhat.com/show_bug.cgi?id=2021835|RHBZ#2021835]].
Voir aussi ''/etc/selinux/restorecond.conf'' qui contient les chemins des fichiers à restaurer
== En vrac
ls -z
ps -eZ
sestatus
setenforce 0
getenforce
semanage login -l
chcon
seinfo
audit2allow
semodule --list-modules=full
chcon system_u:object_r:bin_t /opt/nagios/agent/nrpe
chcon -t sudo_exec_t /usr/bin/sudo
grep -w 'denied.*insights-client.*permissive=0' /var/log/audit/audit.log
Serveur Web
setsebool -P httpd_can_network_connect 1
== Pb Exemple
Err ''Permission denied''
Before:
# ls -lZ /opt/plop/plop/plop.jar
-rwxrwxrwx. 1 app_plop appgrp unconfined_u:object_r:unlabeled_t:s0 61558236 Feb 26 2023 /opt/plop/plop/plop.jar
After:
# ls -lZ /opt/plop/plop/plop.jar
-rwxrwxrwx. 1 app_plop appgrp unconfined_u:object_r:bin_t:s0 61558236 Feb 26 2023 /opt/plop/plop/plop.jar
=== Service SystemD
chmod 640 /usr/local/lib/systemd/system/plop.service
restorecon -v /usr/local/lib/systemd/system/plop.service
systemctl daemon-reload
chcon system_u:object_r:bin_t:s0 /tools/list/plop/ctmagt/ctm/scripts/start-ag
chcon system_u:object_r:bin_t:s0 /tools/list/plop/ctmagt/ctm/scripts/shut-ag
== Containers
DEFAULT_CONTAINER_RUN_OPTIONS = ['--network', 'slirp4netns:enable_ipv6=true', '--security-opt', 'label=disable']
Voir : https://ansible.readthedocs.io/projects/awx/en/24.6.1/administration/instances.html
=== Autres
Checking /etc/selinux/targeted/contexts/files/file_contexts, I found out which additional selinux contexts I had to add to the newly created directories:
sudo semanage fcontext --add --type container_ro_file_t '/var/lib/containers/user/[^/]+/storage/overlay(/.*)?'
sudo semanage fcontext --add --type container_ro_file_t '/var/lib/containers/user/[^/]+/storage/overlay2(/.*)?'
sudo semanage fcontext --add --type container_ro_file_t '/var/lib/containers/user/[^/]+/storage/overlay2-images(/.*)?'
sudo semanage fcontext --add --type container_ro_file_t '/var/lib/containers/user/[^/]+/storage/overlay2-layers(/.*)?'
sudo semanage fcontext --add --type container_ro_file_t '/var/lib/containers/user/[^/]+/storage/overlay-layers(/.*)?'
sudo semanage fcontext --add --type container_ro_file_t '/var/lib/containers/user/[^/]+/storage/overlay-images(/.*)?'
sudo semanage fcontext --add --type container_file_t '/var/lib/containers/user/[^/]+/storage/volumes/[^/]*/.*
then, reapply them to the system:
sudo restorecon -RvF /var/lib/containers/user
Voir https://kcore.org/2023/12/13/adventures-with-rootless-containers/
== Autres
Voir :
* sealert
Dec 11 18:23:34 srv1 setroubleshoot[13728]: SELinux interdit à bash d'utiliser l'accès read
sur le fichier /usr/lib/x86_64-linux-gnu/libc.so.6.
Pour des messages SELinux exhaustifs, lancez sealert -l 4c092563-ff9e-461c-a202-f8b30a83315f
Dec 11 18:23:34 srv1 setroubleshoot[13728]: SELinux interdit à bash d'utiliser l'accès read
sur le fichier /usr/lib/x86_64-linux-gnu/libc.so.6.
***** Le greffon restorecon (54.2 de confiance) suggère *******************
Si vous souhaitez corriger l'étiquette. L'étiquette par défaut de /usr/lib/x86_64-linux-gnu/libc.so.6 devrait être lib_t.
Alors vous pouvez lancer restorecon. La tentative d’accès pourrait avoir été stoppée due à des permissions insuffisantes d’accès au dossier parent,
auquel cas essayez de changer la commande suivante en conséquence.
Faire # /sbin/restorecon -v /usr/lib/x86_64-linux-gnu/libc.so.6
***** Le greffon file (16.6 de confiance) suggère *************************
Ceci est dû à la création d'un nouveau système de fichiers.
Alors vous devez y ajouter des étiquettes.
Faire /sbin/restorecon -R -v /usr/lib/x86_64-linux-gnu/libc.so.6
***** Le greffon file (16.6 de confiance) suggère *************************
Si vous pensez que ceci est dû à une machine mal étiquetée. Alors vous devez complètement ré-étiqueter.
Faire touch /.autorelabel; reboot
***** Le greffon catchall_labels (3.18 de confiance) suggère **************
Si vous souhaitez autoriser bash à accéder à read sur libc.so.6 file
Alors l'étiquette sur /usr/lib/x86_64-linux-gnu/libc.so.6 doit être modifiée Faire
# semanage fcontext -a -t FILE_TYPE '/usr/lib/x86_64-linux-gnu/libc.so.6'