Что может пойти не так, если мы отключим selinux [закрыто]

9

Мы унаследовали кучу используемых серверов от другой команды. В некоторых из них включен SELinux, в некоторых нет. Из-за SELinux у нас возникли проблемы с настройкой ssh ​​без пароля, нашего веб-сервера и т. Д. Мы нашли способ обойти это на сайте stackexchange , который должен запускаться:

restorecon -R -v ~/.ssh

Однако, поскольку нам не нужно, чтобы SELinux выполнял то, что мы делаем, было бы проще отключить его, чем помнить, что каждый должен запускать вышеупомянутый cmd с любыми разрешениями dir.

Можем ли мы отключить SELinux без каких-либо последствий в будущем или лучше просто переизобразить сервер? Стоит отметить одну вещь; наша ИТ-группа действительно занята, поэтому переизображение сервера не стоит в их списке, если только это не является абсолютно необходимым (нужен очень хороший бизнес-кейс) ... или кто-то подкупает своего босса бутылкой скотча или виски.

ОБНОВЛЕНИЕ: Спасибо за все предложения и советы. Все эти серверы будут использоваться как внутренние серверы разработки. Не будет никакого доступа к этим машинам извне, поэтому безопасность не является для нас большой проблемой. На наших текущих серверах, которые мы используем (насколько мне известно), не включен SELinux. Некоторые из тех, которые мой менеджер только что приобрел, и те, которые мы собираемся отключить, чтобы все в нашем кластере было одинаковым.

Classified
источник
1
Я ответил на аналогичный вопрос на Android.se: Насколько опасен тот факт, что SELinux находится в «разрешающем» режиме? Что я должен опасаться? , Основное различие между режимом «Permissive» и отключением SELinux заключается в том, что вы больше не будете получать сообщения журнала AVC, и что SELinux не будет обновлять метки файлов, поэтому вам потребуется пометить файлы перед повторным включением.
WhiteWinterWolf
"Что возможно могло пойти не так?"
Scai
3
@scai На самом деле это хороший вопрос. Как отмечает Сато Кацура , SELinux сложно эффективно использовать. Ложное чувство безопасности вредно для безопасности.
Рифмоид

Ответы:

14

SELinux - это функция безопасности операционной системы. Он предназначен для защиты некоторых частей сервера от других.

Например, если вы запускаете веб-сервер и имеете некоторый «уязвимый» код, который позволяет злоумышленнику запускать произвольные команды, тогда SELinux может помочь смягчить это, запретив вашему веб-серверу доступ к файлам, которые он не может видеть.

Теперь вы можете отключить SELinux, и он не должен ничего ломать. Сервер продолжит работать в обычном режиме.

Но вы отключите одну из функций безопасности.

Стивен Харрис
источник
10
SELinux работает хорошо только при правильной настройке. Однако SELinux настолько сложен, что никто не имеет времени и / или знаний, чтобы правильно его настроить, и, таким образом, он либо отключается, либо становится постоянной болью в тылу для администратора. Тем не менее, вы, ребята, продолжаете вкладывать в это веру как средство защиты .
Satō Katsura
3
Я согласен с тем, что selinux - это PITA для администрирования, но все же справедливо и совершенно точно назвать его функцией безопасности. для тех, кто хочет или нуждается в том, чтобы тратить время на его изучение и администрирование (не я), это неоценимо - например, системные администраторы для большого, высококлассного веб-сайта, который является привлекательной целью для сценаристов во всем мире.
Cas
2
@SatoKatsura Просто потому, что это сложно настроить или трудно понять, не оправдывает отключение механизма безопасности. При условии, что этот механизм безопасности действительно необходим, что не всегда легко решить.
Scai
@scai Я не говорил, что он должен (или не должен) быть отключен. Что я говорю, так это то, что основная модель SELinux имеет недостатки. Некоторые люди утверждают, что все механизмы безопасности, которые могут быть отключены, имеют недостатки.
Satō Katsura
@SatoKatsura да, поэтому пароли совершенно и совершенно бессмысленны, потому что их можно отключить (например, с помощью pam или nss или просто с помощью пустого пароля). Кстати, я никогда не утверждал, что вы сказали, что selinux должен быть отключен. я просто оспаривал ваше утверждение, что это не настоящая функция безопасности.
Cas
8

Есть разные взгляды на SELinux. Во многих случаях некоторые приложения не очень хорошо работают с SELinux, поэтому это решение является спорным (например, Oracle).
Как правило, SELinux - это защитный механизм, который создает еще одно препятствие на пути плохого парня, желающего подорвать вашу систему.

В моей предыдущей роли системного администратора в крупных компаниях ... я вообще отключил SELinux. У меня не было времени отследить все ошибки SELinux на всех системах, используемых пользователями, разработчиками и менеджерами.

Прежде чем отключить что-то, вы можете начать с перемаркировки файлов в системе до того, какими они должны быть. Самый простой способ, который я нашел, это ввести команду:

 # /sbin/fixfiles onboot

ИЛИ

 # touch /.autorelabel

Затем перезагрузите компьютер и подождите, пока системе потребуется примерно столько же времени, чтобы проверить и сбросить ошибочные метки SELinux в системе. После этого вы можете быть в порядке, так как он исправляет и исправляет несоответствующие метки SELinux, которые могли быть изменены до попытки администрирования сервера.

Однако, если этого не произойдет, система не пострадает, если SELinux не будет работать в принудительном режиме. Это просто дополнительный уровень защиты.

Якорь,
источник
3
спорный, а не немой. Но совершенно правильно; не все системы нуждаются в selinux.
phyrfox
+1 за рекомендацию попробовать глобально поменять файлы перед отключением SELinux в качестве запасного варианта. SELinux предназначен для предотвращения неожиданного поведения программного обеспечения и пользователей. В системах, где нет четко определенного ожидаемого поведения, SELinux действительно может принести больше вреда, чем пользы (политики, предоставляемые ОС, стараются быть как можно более общими, но иногда этого недостаточно).
WhiteWinterWolf
Спасибо! /sbin/fixfiles onbootу меня работал на CentOS, не так с touch /.autorelabel. Запуск sealert -a /var/log/audit/audit.logпоказывает 0 предупреждений сейчас. @mdpc В чем разница между этими двумя командами?
Джозеф К.
5

Проще говоря, отключение механизмов обязательного контроля доступа (MAC), таких как SELinux , не является хорошей идеей и может поставить вас в невыгодное положение с точки зрения безопасности, если злоумышленник успешно обойдет контроль доступа на основе имен, реализованный Discretionary Access Control (DAC).

Будь это я, я бы сделал что-то вроде

semanage fcontext -a -t ssh_home_t ~/.ssh # Adding the policy
restorecon -R -v ~/.ssh # Applying the policy

чтобы быть более уверенным в метке типа, назначенной рекурсивно из~/.ssh

sjsam
источник
1
Это стилизованный "SELinux". Linux - это не аббревиатура, а часть "SE" - это инициализм.
Рифмовидная
@Rhymoid: Это действительно хорошая заметка .. На самом деле то, что я написал, было случайным.
sjsam
2

Вообще говоря, вы не должны отключать SELinux. Есть инструменты, которые могут помочь вам понять, что пошло не так. Мой любимый пример использования sealert:

sealert -a /var/log/audit/audit.log

В OFC вы всегда можете установить SELinux в разрешающий режим для отладки, но если вы отключите или разрешите SELinux, то Red Hat считает серьезным недостатком безопасности.

Алекс Барановский
источник