====== Модуль SELinux ======
===== Конфигурация =====
* [[https://defcon.ru/os-security/1264/|Знакомимся с SELINUX и пытаемся понять, почему Дэн Уолш плачет]]
* [[https://max-ko.ru/14-upravlenie-selinux.html|Управление SELinux]]
* [[https://habr.com/ru/companies/otus/articles/460387/|Руководство для начинающих по SELinux]]
* [[https://www.opennet.ru/base/sec/selinux_setup.txt.html|Настройка и использование SELinux (selinux limit security linux mac acl)]]
* [[https://www.server-world.info/en/note?os=CentOS_7&p=selinux&f=11|SELinux : Use sesearch]]
# sestatus -v
# id -Z
===== Установка типов (доменов) контекста безопасности для файловой системы =====
* [[Сервис HTTP#Установка и запуск сервера Apache]]
# echo "Hello World
" > /var/www/html/index.html
# ls -Za /var/www/html/
# echo "Hello World 2
" > /root/index.html
# mv /root/index.html /var/www/html/index.html
# ls -Za /var/www/html/
# chcon -v -t httpd_sys_content_t /var/www/html/index.html
или более правильно
# yum install setroubleshoot
# sealert -a /var/log/audit/audit.log
# yum install policycoreutils-python-utils
# semanage fcontext -l | grep '/var/www'
# restorecon -v /var/www/html/index.html
### semanage fcontext -a -t httpd_sys_content_t "/mydir(/.*)?"
### restorecon -R -v /mydir
===== Добавление сетевых портов к типу (домену) контекста безопасности =====
* [[Сервис Firewall#CentOS]] firewalld (для демонстрации темы можно отключить)
* [[https://access.redhat.com/documentation/ru-ru/red_hat_enterprise_linux/5/html/deployment_guide/rhlcommon-section-0085|50.2.11. Running a Command in a Specific Security Context]]
* [[https://blog.tinned-software.net/change-ssh-port-in-centos-with-selinux/|Change SSH port in CentOS with SELinux]]
# ps axZ | grep ssh
# ss -tupanZ | grep ssh
# runcon -t sshd_t -r system_r -u system_u /usr/sbin/sshd -p 2222 -d
# semanage port -l | grep ssh
# semanage port -a -t ssh_port_t -p tcp 2222
# semanage port -d -t ssh_port_t -p tcp 22
===== Управление разрешениями с использованием boolean =====
* [[https://wiki.centos.org/TipsAndTricks/SelinuxBooleans|SELinux Booleans]]
* [[https://serverfault.com/questions/666045/zabbix-server-selinux-policy|Zabbix server SELinux policy]]
# semanage boolean -l | grep zabbix
...
или
# getsebool -a | grep zabbix
...
# setsebool -P httpd_can_connect_zabbix on
===== Аудит SELinux Policy утилитой sesearch =====
* [[https://www.lisenet.com/2019/auditing-the-selinux-policy-with-sesearch/|Auditing the SELinux Policy with sesearch]]
# yum install -y setools-console
# sesearch --allow | tee se_allow.txt
...
allow sshd_t ssh_port_t:tcp_socket name_bind;
...
allow httpd_t zabbix_port_t:tcp_socket name_connect; [ httpd_can_connect_zabbix ]:True
...
===== Разработка модулей =====
* [[https://wiki.gentoo.org/wiki/SELinux/Tutorials/Creating_your_own_policy_module_file|SELinux/Tutorials/Creating your own policy module file]]
* [[http://www.billauer.co.il/selinux-policy-module-howto.html|Writing a targeted policy module for SELinux (howto tutorial slides)]]
===== Отключение =====
* [[http://www.crypt.gen.nz/selinux/disable_selinux.html|How to Disable SELinux]]
# sestatus
# setenforce 0
# cat /etc/selinux/config
...
SELINUX=disabled
...