SELinux (Русский)
Security-Enhanced Linux (SELinux) это функция Linux, которая обеспечивает множество политик безопасности, включая U.S. Обязательные средства управления доступом (MAC, Mandatory Access Controls) стиля министерства обороны, с помощью Linux Security Modules (LSM) в ядре Linux. Это не дистрибутив Linux, а скорее ряд модификаций, которые могут быть применены к Unix-подобным операционным системам, таким как Linux и BSD. Её архитектура стремится оптимизировать объем программного обеспечения, обвиненного в осуществлении политики безопасности, которое является близко выровненное Trusted Computer System Evaluation Criteria (TCSEC, называемый Оранжевой книгой) требование для минимизации достоверной вычислительной базы (TCB) (применимый к классам B3 и A1 оценки), но довольно не связано с наименьшим количеством требования полномочия (B2, B3, A1), как часто требуется. Зародышевые понятия базовый SELinux могут быть прослежены до нескольких более ранних проектов американским Агентством национальной безопасности (NSA). [1]
Для выполнения SELinux под дистрибутивом Linux требуется: включить SELinux в ядро, инструменты SELinux Userspace и библиотеки, и SELinux Policies (главным образом на основе Reference Policy). Некоторые общие программы Linux должны также исправляться/компилироваться с функциями SELinux.
Contents
Обязательные требования
Поддерживаются только файловые системы ext2, ext3, ext4, JFS и XFS.
Пользователи XFS должны использовать 512 байтов inodes (значение по умолчанию 256). Использование SELinux расширяло атрибуты для того, чтобы сохранить метки безопасности в файлах. XFS хранит это в inode, и если inode слишком маленький, должен использоваться дополнительный блок, который тратит впустую много пространства и подвергается потерям производительности.
# mkfs.xfs -i size=512 /dev/sda1
Установка необходимых пакетов
Должны быть установлены по крайней мере linux-selinuxAUR, selinux-pamAUR[ссылка недействительна: сохранено в aur-mirror], selinux-usr-policycoreutilsAUR[ссылка недействительна: сохранено в aur-mirror] и selinux-refpolicy-srcAUR. Рекомендуется установить все пакеты, требуемые SELinux.
При замене пакетов pam и coreutils будьте особо внимательны, поскольку они жизненно важны для системы. Приготовьте Live CD или Live USB на случай, если придётся переустановить систему.
Описание пакета
Все пакеты, принадлежащие к SELinux, находятся в группе selinux. В selinux-userspace располагаются пакеты пользователтского пространства. В selinux-policies - пакеты политик. Остальные пакеты находятся в selinux-extras.
SELinux aware system utils
- linux-selinuxAUR
- Активирует поддержку SELinux ядром. Компиляция модулей подобно Virtualbox
- selinux-coreutilsAUR[ссылка недействительна: сохранено в aur-mirror]
- Компиляция пакета coreutils с включенной поддержкой SELinux
- selinux-flexAUR[ссылка недействительна: сохранено в aur-mirror]
- Версия flex, необходимая только для сборки checkpolicy. Текущий flex имеет ошибку, вызывающую отказ в выполнении команды checkmodule
- selinux-pamAUR[ссылка недействительна: сохранено в aur-mirror]
- Пакет PAM с
pam_selinux.so
- selinux-systemdAUR[ссылка недействительна: сохранено в aur-mirror]
- An SELinux aware version of systemd. It replaces the systemd package
- selinux-util-linuxAUR[ссылка недействительна: сохранено в aur-mirror]
- Версия util-linux, скомпилированная с включенной поддержкой SELinux
- selinux-findutilsAUR[ссылка недействительна: сохранено в aur-mirror]
- Пропатченная версия findutils с активированной поддержкой SELinux, необходимая для поиска файлов в указанном возможном контексте безопасности
- selinux-sudoAUR[ссылка недействительна: сохранено в aur-mirror]
- Версия sudo с активированной поддержкой SELinux для корректной устанавки контекста безопасности
- selinux-procpsAUR[ссылка недействительна: сохранено в aur-mirror]
- Исправления пакета procps на основе некоторых патчей Fedora
- selinux-psmiscAUR[ссылка недействительна: сохранено в aur-mirror]
- Версия psmisc с активированной поддержкой SELinux. Добавляет опцию
-Z
кkillall
- selinux-shadowAUR[ссылка недействительна: сохранено в aur-mirror]
- Версия shadow с активированной поддержкой SELinux. Содержит изменённый
/etc/pam.d/login
для корректной установки контекста безопасности после входа в систему
- selinux-cronieAUR[ссылка недействительна: сохранено в aur-mirror]
- Vixie cron из дистрибутива Fedora с активированной поддержкой SELinux
- selinux-logrotateAUR[ссылка недействительна: сохранено в aur-mirror]
- Версия logrotate с активированной поддержкой SELinux
- selinux-opensshAUR[ссылка недействительна: сохранено в aur-mirror]
- Версия OpenSSH с активированной поддержкой SELinux, для установки контекста безопасности в течение многих сеансов пользователя
Пространство пользователя SELinux
- selinux-usr-checkpolicyAUR[ссылка недействительна: сохранено в aur-mirror]
- Tools to build SELinux policy
- selinux-usr-libselinuxAUR[ссылка недействительна: сохранено в aur-mirror]
- Library for security-aware applications. Python bindings needed for semanage and setools now included
- selinux-usr-libsemanageAUR[ссылка недействительна: сохранено в aur-mirror]
- Library for policy management. Python bindings needed for semanage and setools now included
- selinux-usr-libsepolAUR[ссылка недействительна: сохранено в aur-mirror]
- Library for binary policy manipulation
- selinux-usr-policycoreutilsAUR[ссылка недействительна: сохранено в aur-mirror]
- SELinux core utils such as newrole, setfiles, etc.
- selinux-usr-sepolgenAUR[ссылка недействительна: сохранено в aur-mirror]
- A Python library for parsing and modifying policy source
Политики SELinux
- selinux-refpolicyAUR[ссылка недействительна: сохранено в aur-mirror]
- Precompiled modular-otherways-vanilla Reference policy with headers and documentation but without sources
- selinux-refpolicy-srcAUR
- Reference policy sources
- selinux-refpolicy-archAUR
- Precompiled modular Reference policy with headers and documentation but without sources. Development Arch Linux Refpolicy patch included, but for now [February 2011] it only fixes some issues with
/etc/rc.d/*
labeling.
Другие утилиты SELinux
- selinux-setoolsAUR[ссылка недействительна: сохранено в aur-mirror]
- CLI and GUI tools to manage SELinux
- audit
- User space utilities for storing and searching the audit records generated by the audit subsystem in the Linux kernel. SELinux (AVC) will log all denials using audit. Very useful in troubleshooting SELinux. Also audit2allow use log from this program.
Configuration
После установки всех необходимых пакетов их необходимо настроить.
Changing boot loader configuration
Добавьте в конфигурационный файл GRUB /boot/grub/menu.lst
следующие строки:
# (1) Arch Linux title Arch Linux (SELinux) root (hd0,0) kernel vmlinuz-linux-selinux root=/dev/sda5 ro vga=775 initrd initramfs-linux-selinux.img
Mounting selinuxfs
Добавьте в /etc/fstab
:
none /selinux selinuxfs noauto 0 0
Создайте папку /selinux:
mkdir /selinux
Main SELinux configuration file
Основной конфигурационный файл SELLinux (/etc/selinux/config
) является частью пакета selinux-refpolicyAUR[ссылка недействительна: сохранено в aur-mirror]. Его содержимое по умолчанию:
# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings # instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=permissive # SELINUXTYPE= takes the name of SELinux policy to # be used. Current options are: # refpolicy (vanilla reference policy) # refpolicy-arch (reference policy with # Arch Linux patch) SELINUXTYPE=refpolicy
Set up PAM
Correctly set-up PAM is important to get a proper security context after login. If you installed selinux-shadowAUR[ссылка недействительна: сохранено в aur-mirror], there should be the following lines in /etc/pam.d/login
:
# pam_selinux.so close should be the first session rule session required pam_selinux.so close # pam_selinux.so open should only be followed by sessions to be executed in the user context session required pam_selinux.so open
If not, add them to the file. Similarly for logging in via SSH in /etc/pam.d/sshd
, which is part of selinux-opensshAUR[ссылка недействительна: сохранено в aur-mirror] package.
If you want to use SELinux with GUI, you should add the aforementioned lines to other files such as /etc/pam.d/kde
, /etc/pam.d/kde-np
, ... depending on your login manager.
Reference policy
There are currently two possible ways of installing reference policy: From a pre-compiled package (selinux-refpolicyAUR[ссылка недействительна: сохранено в aur-mirror]) or from a source package (selinux-refpolicy-srcAUR).
Installing a precompiled refpolicy
Install selinux-refpolicyAUR[ссылка недействительна: сохранено в aur-mirror]. This is a modular-otherways-vanilla refpolicy. This package includes policy headers (you can therefore compile your own modules), policy documentation and an install script which will load the policy for you and relabel your filesystem (which will likely take some time). It does not include the sources though.
This package also includes the main SELinux configuration file (/etc/selinux/config
) defaulting to refpolicy and permissive SELinux enforcement for testing purposes.
You should verify that the policy was correctly loaded, that is if the file /etc/selinux/refpolicy/policy/policy.24
has non-zero size. If so and if you have installed selinux-sysvinitAUR[ссылка недействительна: сохранено в aur-mirror] and other needed packages, you are ready to reboot and make sure that everything works.
In case the policy was not correctly loaded you can as root use the following command inside of the /usr/share/selinux/refpolicy
directory to do so:
/bin/ls *.pp | /bin/grep -Ev "base.pp|enableaudit.pp" | /usr/bin/xargs /usr/sbin/semodule -s refpolicy -b base.pp -i
To manually relabel your filesystem you can as root use:
/sbin/restorecon -r /
Installing refpolicy from a source package
Install selinux-refpolicy-srcAUR from AUR. Edit the file /etc/selinux/refpolicy/src/policy/build.conf
to your liking.
To build, install and load policy from source do the following. (For other possibilities consult the README file located in /etc/selinux/refpolicy/src/policy/
.)
cd /etc/selinux/refpolicy/src/policy make bare make conf make load
Copy or link the compiled binary policy to /etc/policy.bin
for sysvinit to find and install selinux-sysvinit:
ln -s /etc/selinux/refpolicy/policy/policy.21 /etc/policy.bin
At this moment files do not have any context, so you should relabel the whole filesystem, which will take a while:
make relabel
Create the main SELinux configuration file (/etc/selinux/config
) according to the example in related section.
Now you are ready to reboot and make sure that everything works.
Post-installation steps
Выполните sestatus
чтобы убедиться, что SELinux работает. Должно получиться что-то вроде этого:
SELinux status: enabled SELinuxfs mount: /selinux Current mode: permissive Mode from config file: permissive Policy version: 26 Policy from config file: refpolicy
To maintain correct context, you can use restorecond:
touch /etc/rc.d/restorecond chmod ugo+x /etc/rc.d/restorecond
Which should contain:
#!/bin/sh restorecond
Чтобы переключиться на осуществление режима без перезагрузки, можете использовать:
echo 1 > /selinux/enforce
Useful tools
There are some tools/commands that can greatly help with SELinux.
- restorecon
- Restores the context of a file/directory (or recursively with
-R
) based on any policy rules - rlpkg
- Relabels any files belonging to that Gentoo package to their proper security context (if they have one)
- chcon
- Change the context on a specific file
- audit2allow
- Reads in log messages from the AVC log file and tells you what rules would fix the error. Do not just add these rules without looking at them though, they cannot detect errors in other places (e.g. the application is running in the wrong context in the first place), or sometimes things will generate error messages but may maintain functionality so it would be better to add dontaudit to just ignore the access attempts.
References
- Security Enhanced Linux
- Gentoo SELinux Handbook
- Fedora Project's SELinux Wiki
- NSA's Official SELinux Homepage
- Reference Policy Homepage
- SELinux Userspace Homepage
- SETools Homepage
See also
- AppArmor (Similar to SELinux, much easier to configure, less features.)