SELinux може да изглежда плашещ и много труден за внедряване в повечето съвременни системи. Конфигурирането на SELinux обаче има огромни предимства както при налагане на сигурността, така и при отстраняване на неизправности.
Този урок ще обсъди различни концепции, внедрени от SELinux и ще изследва различни практически методи за внедряване на SELinux.
ЗАБЕЛЕЖКА: Преди да започнем, добре е да използваме командите в този урок като root потребител или потребител в групата sudoers.
Инсталирайте SELinux пакети
Нека инсталираме различни пакети на SELinux, които от своя страна ще помогнат за работата с политиките на SELinux.
Преди да пристъпим към инсталирането на пакетите SELinux, добре е да проверим кои са инсталирани в текущата система.
В повечето инсталации на REHL дистрибуции някои пакети са инсталирани по подразбиране. Тези пакети включват:
- setools - този пакет се използва за наблюдение на регистрационни файлове, правила за заявки и управление на контекстен файл.
- policycoreutils-python - предоставя основни помощни програми на python за управление на SELinux
- policycoreutils - този пакет също предоставя помощни програми за управление на SELinux.
- mcstrans - mcstrans предоставя демон за превод на SELinux, който превежда различни нива в лесни формати, които могат лесно да се разберат.
- setools-console - подобно на setools.
- Selinux-policy - предоставя справка за конфигуриране на SELinux политика
- Селинукс-насочена към политика - подобно на SELinux-политика
- Libselinux-utils - помощни програми на SELinux libselinux, които помагат за управлението на SELinux
- Setroubleshoot-server - инструменти за отстраняване на неизправности в SELinux
За да проверите кои пакети вече са инсталирани на вашата система, можете да използвате командата rpm -qa и да преведете резултата в grep за SELinux като:
rpm -qa | grep selinuxlibselinux-utils-2.9-4.el8_3.x86_64
rpm-plugin-selinux-4.14.3-4.el8.x86_64
selinux-policy-target-3.14.3-54.el8_3.2.ноарх
python3-libselinux-2.9-4.el8_3.x86_64
selinux-policy-3.14.3-54.el8_3.2.ноарх
libselinux-2.9-4.el8_3.x86_64
Това трябва да ви даде резултати от всички пакети, инсталирани за поддръжка на SELinux
Ако не всички пакети SELinux са инсталирани на вашата система, използвайте yum, за да ги инсталирате, както е показано в командата по-долу:
yum инсталирайте policycoreutils policycoreutils-python-utils selinux-policy selinux-policy-target libselinux-utils setroubleshoot-server setools setools-console mcstransРежими и състояния на SELinux
Нека сега започнем да играем със SELinux, по-специално режимите на SELinux.
Режими на SELinux
Когато е активиран, SELinux може да бъде три възможни режима:
- Принуждаване
- Позволително
- хора с увреждания
Налагащ режим
Ако режимът SELinux да се приложи, той ще гарантира, че не е отказан неоторизиран достъп до системата от потребител или процеси. Принудителният режим също така поддържа регистри на всички опити за неоторизиран достъп.
Permissive Mode
Разрешителният режим действа като частично активирано състояние на SELinux. В този режим няма отказан достъп, тъй като SELinux не прилага своите политики в този режим. Разрешителният режим обаче води дневник на опитите за нарушаване на правила. Този режим е много ефективен за тестване, преди да го активирате изцяло, тъй като потребителите и компонентите все още могат да взаимодействат със системата, но все още събират регистрационни файлове. Това ви позволява да прецизирате системата си по начини, които сметнете за добре.
Деактивиран режим
Деактивираният режим може да се разглежда и като деактивирано състояние, в което SELinux е деактивиран и не предлага никаква сигурност.
SELinux държави
След като SELinux е инсталиран на система. Може да има двоични състояния: разрешено и деактивирано. За да видите състоянието на SELinux, използвайте командата:
getenforceхора с увреждания
Горният изход показва, че SELinux в момента е деактивиран.
Можете също да използвате командата sestatus, както е показано по-долу:
сестатусСъстояние на SELinux: деактивирано
Активиране и деактивиране на SELinux
Състоянията и конфигурацията на SELinux се обработват от конфигурационния файл, намиращ се в / etc / selinux / config. Можете да използвате командата cat, за да видите нейното съдържание.
cat / etc / selinux / config# Този файл контролира състоянието на SELinux в системата.
# SELINUX = може да приеме една от тези три стойности:
#eforcing - Налага се политика за сигурност на SELinux.
#permissive - SELinux отпечатва предупреждения, вместо да налага.
#disabled - Не е заредена политика на SELinux.
SELINUX = налагане
# SELINUXTYPE = може да приеме една от тези три стойности:
# целенасочени - целенасочените процеси са защитени,
# минимум - Модификация на целенасочена политика. Защитени са само избрани процеси.
# mls - Многостепенна защита на защитата.
SELINUXTYPE = насочен
От горния изход имаме две активирани основни директиви. Директивата SELINUX посочва режима, в който е конфигуриран SELinux. Директивата SELINUXTYPE определя набора от политики на SELinux. По подразбиране SELinux използва целенасочена политика, която ви позволява да персонализирате разрешенията за контрол на достъпа. Другата политика е многостепенна сигурност или MLS.
Може да намерите минимална политика в някои версии.
cd / etc / selinux /[ls -l
общо 4
-rw-r - r-- 1 корен корен 548 16 февруари 22:40 конфиг
drwxr-xr-x 1 корен на корен 4096 16 февруари 22:43 mls
-rw-r - r-- 1 корен на корен 2425 юли 21 2020 семанадж.конф
drwxr-xr-x 1 корен на корен 4096 16 февруари 22:40 целенасочено
Нека сега видим как да активираме SELinux в системата. Препоръчваме първо да зададете режим SELINUX на разрешителен и неприложен.
nano / etc / selinux / configСега редактирайте директивата SELINUX като:
SELINUX = разрешителноСлед като запазите файла, издайте рестартиране на системата.
рестартирайтеЗАБЕЛЕЖКА: Силно препоръчваме да настроите директивата SELINUX на разрешителна, преди да приложите SELinux.
След като рестартирате системата, проверете за регистрационни файлове, докладвани от SELinux в / var / log / messages.
След това се уверете, че нямате грешки и наложете SELinux, като зададете директивата за налагане в / etc / selinux / config
И накрая, можете да видите състоянието на SELinux, като използвате командата sestatus:
Състояние на SELinux: активираноSELinuxfs монтиране: / sys / fs / selinux
Основна директория на SELinux: / etc / selinux
Име на заредена политика: насочена
Текущ режим: налагане
Режим от конфигурационен файл: грешка (успех)
Политика MLS статус: активиран
Политика deny_unknown status: разрешено
Проверка на защитата на паметта: действителна (сигурна)
Версия на политиката за максимално ядро: 31
Можете също да използвате командата setenforce, за да превключвате между различни режими на SELinux. Например, за да зададете режима на разрешителен, използвайте командата:
сетенфорс разрешителенТози режим е временен и ще бъде възстановен до такъв в конфигурационния файл след рестартиране.
sestatus SELinux статус: активиранSELinuxfs монтиране: / sys / fs / selinux
Основна директория на SELinux: / etc / selinux
Име на заредена политика: насочена
Текущ режим: разрешителен
Режим от конфигурационния файл: налагане
Политика MLS статус: активиран
Политика deny_unknown status: разрешено
Проверка на защитата на паметта: действителна (сигурна)
Версия на политиката за максимално ядро: 31
Политика и контекст на SELinux
За да избегнем объркване за начинаещите в SELinux, няма да се впуснем дълбоко в това как се прилагат правилата на SELinux, а просто да го докоснем, за да ви дадем представа.
SELinux работи чрез прилагане на политики за сигурност. Политиката на SELinux се отнася до правило, което се използва за дефиниране на права за достъп за всеки обект в системата. Обектите се отнасят до потребители, процеси, файлове и роли.
Всеки контекст е дефиниран под формата на потребител: роля: тип: ниво.
Например създайте директория във вашата домашна директория и прегледайте нейния контекст за сигурност на SELinux, както е показано в командите по-долу:
mkdir ~ / linuxhint_dirls -Z ~ / | grep linuxhint
Това ще покаже изхода, както е показано по-долу:
unconfined_u: object_r: user_home_t: s0 linuxhint_dirМожете също да намерите други директории с контекст на защитата като:
system: _u: object_r: user_home_t: s0Може да осъзнаете, че изходът по-горе следва синтаксиса на потребител: роля: тип: ниво.
Заключение
Това беше урок за начинаещи за SELinux с помощта на CentOS 8. Въпреки че урокът е предназначен за начинаещи, това е повече от достатъчно, за да стартирате краката си в SELinux и да премахнете плашещата природа на SELinux.
Благодаря ви за четенето.