====== Модуль 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 ...