SELinux

Противодействие хакерским угрозам

Модераторы: Olej, adminn, vikos

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

SELinux

Непрочитанное сообщение Olej » 22 окт 2012, 20:09

Для не администратора какой-то ответственной корпоративной сети SELinux (IMHO) - большая гадость.
Т.е. для пользователей индивидуальных компьютеров, собственных небольших LAN, и, уж тем более, для программистов-разработчиков.

Я совершенно не понимаю, для чего сборщики дистрибутивов Fedora, например, а). делают SELinux включенным по умолчанию + б). настраивают его на высокий уровень запретов.

Нет, я готов понять и согласиться - SELinux: бронежилет для корпоративного пингвина:
Система SELinux (Security-Enhanced Linux — Linux с улучшенной безопасностью) была разработана Агентством Национальной Безопасности США и всего за несколько лет стала стандартом в области систем контроля прав доступа.
Именно благодаря SELinux-дистрибутиву RHEL5, работающему на серверах IBM, удалось получить сертификат безопасности EAL4 Augmented with ALC_FLR.3, который в то время имела лишь одна операционная система — Trusted Solaris.
Т.е. я понимаю, что от гордости такой "в зобу дыханье спёрло", и не одарить таким счастьем по дефаулту всех, кто его и не дух не желает даже, - это было бы слабо... :cry:

Но даже автор этой публикации:
Это делает систему привлекательной для госучреждений и военных, однако кажется не совсем понятным, зачем она нужна администраторам рядовых серверов, а уж тем более — обычным пользователям (в Fedora SELinux по умолчанию включен).

Итак...
По крайней мере, мне нужно время от времени бывает убить SELinux.
И сделать это бывает нужно 2-мя способами: а). на время, на сеанс, до следующей перезагрузки + б). навсегда (а потом, возможно, восстановить).

Неприятность в том, что все описания управления SELinux фрагментарны, но куда хуже, что они очень сильно устаревают: в новых дистрибутивах часто просто нет тех путей, возможностей и т.д., которые описываются в публикациях 2009-2010 годов.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: SELinux

Непрочитанное сообщение Olej » 22 окт 2012, 20:13

Olej писал(а):а). на время, на сеанс, до следующей перезагрузки

Код: Выделить всё

[root@notebook selinux]# setenforce 0

Код: Выделить всё

bash-4.2$ man setenforce

setenforce(1)                                  SELinux Command Line documentation                                 setenforce(1)
       
NAME
       setenforce - modify the mode SELinux is running in.
       
SYNOPSIS
       setenforce [ Enforcing | Permissive | 1 | 0 ]
       
DESCRIPTION
       Use Enforcing or 1 to put SELinux in enforcing mode.
       Use Permissive or 0 to put SELinux in permissive mode.
       
       If  SELinux  is  disabled  and  you  want  to  enable  it,  or SELinux is enabled and you want to disable it, please see
       selinux(8).

AUTHOR
       Dan Walsh, <dwalsh@redhat.com>

SEE ALSO
       selinux(8), getenforce(8), selinuxenabled(8)
Ну и подсмотреть можно, что в итоге получилось:

Код: Выделить всё

bash-4.2$  getenforce
Permissive

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: SELinux

Непрочитанное сообщение Olej » 22 окт 2012, 20:17

Olej писал(а): б). навсегда
Подправить /etc/selinux/config (там всё понятно - без комментариев ;-) ) :

Код: Выделить всё

[root@notebook selinux]# cat /etc/selinux/config 
# 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=disabled
# SELINUX=enforcing
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 
После чего, естественно - перезагрузка.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: SELinux

Непрочитанное сообщение Olej » 22 окт 2012, 20:19

Утверждается (в обсуждениях), что ещё существует, как минимум, 2 способа (т.е. 2 + 2) останавливать-запускать SELinux ...

Если разберусь дальше + проверю (если не наскучит ;-) ) - напишу.

Или может кто ещё что подскажет, удобное для использования???

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: SELinux

Непрочитанное сообщение Olej » 23 окт 2012, 11:39

Olej писал(а): Подправить /etc/selinux/config (там всё понятно - без комментариев ;-) ) :

Код: Выделить всё

[root@notebook selinux]# cat /etc/selinux/config 
# 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=disabled
# SELINUX=enforcing
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 
После чего, естественно - перезагрузка.
И вот что мы увидим на следующий день ;-) - после перезагрузки:

Код: Выделить всё

bash-4.2$ getenforce
Disabled
Чего мы даже не можем добиться командой setenforce.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: SELinux

Непрочитанное сообщение Olej » 23 окт 2012, 19:02

Olej писал(а): По крайней мере, мне нужно время от времени бывает убить SELinux.
Но если вам уж категорически нужно разрешить работу сервиса (меня интересовал FTP сервер, но это может быть любой сервис) при работающем SELinux, то это тоже не такая уж большая проблема. Но вам придётся для этого:

- Прелопатить достаточно много документации - SELinux не столько сложный, сколько объёмный и громоздкий;

- Неплохим началом для знакомства может быть тот текст, который я показал в первом сообщении открывающем тему;

- Настроить SELinux.

В простейшем варианте подстроить политику SELinux можно изменив значения метаправил SELinux.
Подсмотреть какие метаправила интересуют нас для нашей службы (FTP) можно (в порядке подсказки) и в конфигурационном файле /etc/proftpd.conf :

Код: Выделить всё

[root@notebook etc]# cat /etc/proftpd.conf | head -n30
...
#
# setsebool -P allow_ftpd_anon_write=1
#   This allows the ftp daemon to write to files and directories labelled
#   with the public_content_rw_t context type; the daemon would only have
#   read access to these files normally. Files to be made available by ftp
#   but not writeable should be labelled public_content_t.
#
# setsebool -P allow_ftpd_full_access=1
#   This allows the ftp daemon to read and write all files on the system.
#
# setsebool -P allow_ftpd_use_cifs=1
#   This allows the ftp daemon to read and write files on CIFS-mounted
#   filesystems.
#
# setsebool -P allow_ftpd_use_nfs=1
#   This allows the ftp daemon to read and write files on NFS-mounted
#   filesystems.
...
А детально посмотреть все какие есть переключатели SELinux и какие для них установлены метаправила можно так:

Код: Выделить всё

[root@notebook selinux]# semanage boolean -l
Переключатель SELinux          State  Default Описание

ftp_home_dir                   (выкл.,выкл.)  ftp_home_dir
smartmon_3ware                 (выкл.,выкл.)  smartmon_3ware
xdm_sysadm_login               (выкл.,выкл.)  xdm_sysadm_login
xen_use_nfs                    (выкл.,выкл.)  xen_use_nfs
...
Этот вывод очень объёмный, поэтому есть смысл смотреть только те переключатели, которые относятся к нашим интересам:

Код: Выделить всё

[root@notebook etc]# semanage boolean -l | grep ftp
ftp_home_dir                   (выкл. ,выкл.)  ftp_home_dir
tftp_anon_write                (выкл.,выкл.)  tftp_anon_write
allow_ftpd_full_access         (выкл.,выкл.)  allow_ftpd_full_access
allow_ftpd_use_nfs             (выкл.,выкл.)  allow_ftpd_use_nfs
allow_ftpd_anon_write          (выкл.,выкл.)  allow_ftpd_anon_write
sftpd_enable_homedirs          (выкл.,выкл.)  sftpd_enable_homedirs
allow_ftpd_use_cifs            (выкл.,выкл.)  allow_ftpd_use_cifs
httpd_can_connect_ftp          (выкл.,выкл.)  httpd_can_connect_ftp
ftpd_use_passive_mode          (выкл.,выкл.)  ftpd_use_passive_mode
...
Изменить то, что нам нужно:

Код: Выделить всё

[root@notebook etc]# setsebool ftp_home_dir  on
И становится так:

Код: Выделить всё

[root@notebook etc]# semanage boolean -l | grep ftp
ftp_home_dir                   (вкл. ,выкл.)  ftp_home_dir
tftp_anon_write                (выкл.,выкл.)  tftp_anon_write
allow_ftpd_full_access         (выкл.,выкл.)  allow_ftpd_full_access
allow_ftpd_use_nfs             (выкл.,выкл.)  allow_ftpd_use_nfs
allow_ftpd_anon_write          (выкл.,выкл.)  allow_ftpd_anon_write
sftpd_enable_homedirs          (выкл.,выкл.)  sftpd_enable_homedirs
allow_ftpd_use_cifs            (выкл.,выкл.)  allow_ftpd_use_cifs
httpd_can_connect_ftp          (выкл.,выкл.)  httpd_can_connect_ftp
ftpd_use_passive_mode          (выкл.,выкл.)  ftpd_use_passive_mode
...
P.S. Так как я показал изменение значения - это временно, на время сеанса. Если же нам нужно сделать такое изменение постоянным (перманентным) делаем так:

Код: Выделить всё

[root@notebook etc]# setsebool ftp_home_dir  on
Соответственно, и 2 состояния показаны для переключателей: ("на сейчас", "на всегда").

В принципе, это всё, этого достаточно для того, чтобы FTP сервер работал без проблем с защитами.
Это - только набросок того, как открыть службу FTP ... но по такой же логике это можно сделать с любым сервером.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: SELinux

Непрочитанное сообщение Olej » 24 окт 2012, 17:10

Olej писал(а):Утверждается (в обсуждениях), что ещё существует, как минимум, 2 способа (т.е. 2 + 2) останавливать-запускать SELinux ...
Имеется в виду вот эта, массово кочующая с места на место по интернету заметка: Отключение SELinux (здесь например).
Метод 3: Отключение SELinux в загрузчике Grub
...
Метод 4: Отключаем SELinux только для определенных сервисов - HTTP/Apache
...
Но здесь как-раз опять же тот случай, как и с другими публикациями, что я уже писал:
Неприятность в том, что все описания управления SELinux фрагментарны, но куда хуже, что они очень сильно устаревают: в новых дистрибутивах часто просто нет тех путей, возможностей и т.д., которые описываются в публикациях 2009-2010 годов.
Большинство путей-файлов упоминающихся в этой публикации (хотя она толковая) - так их давно уже не существует в природе. :cry:

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: SELinux

Непрочитанное сообщение Olej » 29 авг 2016, 17:30

Olej писал(а):Большинство путей-файлов упоминающихся в этой публикации (хотя она толковая) - так их давно уже не существует в природе. :cry:
Ещё раз появилась необходимость отключить эту гадость ... которая включена в Fedora, CentOS etc. по умолчанию...

CentOS 7 настройка сервера
Обновлено: 23.08.2016 Написано: 20.12.2015

Отключаем SELinux. Его использование и настройка отдельный разговор. Сейчас я не буду этим заниматься. Так что отключаем:

Код: Выделить всё

# mcedit /etc/sysconfig/selinux
меняем значение

Код: Выделить всё

SELINUX=disabled
Чтобы изменения вступили в силу, перезагружаемся:

Код: Выделить всё

# reboot

Код: Выделить всё

[olej@dell SNMP]$ getenforce
Disabled

Аватара пользователя
perseus
Писатель
Сообщения: 99
Зарегистрирован: 11 май 2017, 18:01
Откуда: Щёлково, Московская обл.
Контактная информация:

Re: SELinux

Непрочитанное сообщение perseus » 15 июн 2017, 14:18

Ещё раз появилась необходимость отключить эту гадость ... которая включена в Fedora, CentOS etc. по умолчанию...
Что то меня сомнения берут, что эта штука отключается, скорее всего она просто нам показывает якобы она отключилась, а сама делает что ей надо - это же АНБ :lol:

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: SELinux

Непрочитанное сообщение Olej » 15 июн 2017, 14:38

perseus писал(а):
Ещё раз появилась необходимость отключить эту гадость ... которая включена в Fedora, CentOS etc. по умолчанию...
Что то меня сомнения берут, что эта штука отключается, скорее всего она просто нам показывает якобы она отключилась, а сама делает что ей надо - это же АНБ :lol:
Нет, она отключается ... если её вот так правильно отключить.
Смысл и назначение SELinux, если очень грубо и в 2-х словах:
- ввести тонкое регламентирование прав на разные действия в системе "поштучно"...
- не "root и все прочие пользователя", а для каждого и любого пользователя разрешить ему что можно и что не можно...
- в принципе, и root-у в этом случае можно не всё разрешать ;-)
В принципе, это очень близко к тому, что называют мандатным регламентом доступа, применяемым в таких клонах Linux специального применения как МСВС или Astra Linux.
Ничего порочного в таком регламенте нет, а сама система SELinux открыта в исходных кодах и передана опенсорс сообществу.
Но это нужно только в администрировании ответственных корпоративных серверов, или серверов содержащих секретную или особо секретную информацию. Потребителю персональной Linux рабочей станции это никаким боком не нужно из-за очень существенного роста и путаности управления правами пользователей.

В Fedora сервис SELinux запущен по умолчанию после установки ОС.
Во всех других Linux дистрибутивах она присутствует (т.е. это штатная составная часть ОС), но по умолчанию не запускается.

Ответить

Вернуться в «Безопасность»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя