Все о Linux. LinuxRSP.Ru


Cвежие новости Linux и BSD, анонсы статей и книг прямо в почтовый ящик!
Подписаться письмом


 Сегодняшние новости:

25 лет исполнилось ядру Linux

Релиз KDevelop 5.0

Oracle открывает код JDK9 для ARM

Выпущен Timewarrior 1.0.0

Релиз Android 7.0

Percona Memory Engine для MongoDB на базе WiredTiger

PowerShell открыт и доступен для Linux

Форк TrueCrypt: VeraCrypt 1.18

Релиз Snapcraft 2.14

Релиз Go 1.7

Стабильный выпуск рабочего стола Lumina

Вышла первая версия аналога OpenCV - DCV 0.1

Выпуск минималистичной программы для мониторинга jsonmon 3

В MIT разработали новый язык программирования

Первый релиз Qt5Gtk2

Godot 2.1 - новая версия открытого игрового движка

Свободная цифровая станция звукозаписи: Ardour 5.0

Обновление SkypeWeb Plugin for Pidgin

Вышла версия 3.0 Android File Transfer для Linux (и для OS X)

Программный аналог MIDI-контроллера для создания музыки: Launchpadd v1.3

Mozilla спонсирует поддержку Python 3.5 в PyPy

Ef 0.08 - программа для моделирования динамики заряженных частиц

Обновление текстового редактора TEA до версии 42.0.0

Релиз OpenOrienteering Mapper 0.6.4

Вышли Guix и GuixSD 0.11

Релиз Opera 39

Выпуск LibreOffice 5.2

В OpenSSH обнаружены и устранены некоторые уязвимости

Эмулятор FCEUX 2.2.3

Компания Билайн переходит на российскую СУБД с открытым исходным кодом Tarantool

Google

 Новые статьи :

Утилиты для восстановления потерянных данных в Linux

Лучшие файловые менеджеры для Android

20 лучших бесплатных книг о Linux

Как сгенерировать открытый/закрытый SSH-ключ в Linux

Grive - клиент Google Drive для Linux с открытым исходным кодом

Протокол IPv6: варианты подключения

Сервер из образа: DHCP + TFTP + Initrd + OpenVZ

Обзор веб-панелей управления хостингом

Приёмы работы с Vim

Nginx как Reverse Proxy для сайта, использующего SSL

Разработка модулей ядра Linux

Мониторинг нагрузки http-сервера Apache 2

Перевод комментариев к файлу конфигурации Squid

Решение проблем при использовании "1c предприятие" 8.2 в Linux

Advanced Bash-Scripting Guide Искусство программирования на языке сценариев командной оболочки







Rambler's Top100





 
 

LIDS

Правила доступа

Вся настройка LIDS делается с помощью одной программы - lidsadm. lidsadm работает в двух режимах - настройки правил доступа и ввода команд администрирования. Каждому режиму соответствует несколько параметров запуска.

Как я уже указывал, установки правил доступа находятся в файле /etc/lids/lids.conf. Изначально он не пустой. Авторы внесли туда наиболее часто используемые правила доступа. Можешь посмотреть его содержимое - все равно ничего не поймешь.:) Да оно и не надо. Файл этот просматривается и изменяется посредством lidsadm. Посмотреть установки можно с помощью команды lidsadm -L. Ты должен увидеть следующее:


LIST
Subject ACCESS TYPE Object
-----------------------------------------------------
Any File READ /sbin
Any File READ /bin
Any File READ /boot
Any File READ /lib
Any File READ /usr
Any File DENY /etc/shadow
/bin/login READ /etc/shadow
/bin/su READ /etc/shadow
Any File APPEND /var/log
Any File WRITE /var/log/wtmp
/sbin/fsck.ext2 WRITE /etc/mtab
Any File WRITE /etc/mtab
Any File WRITE /etc
/usr/sbin/sendmail WRITE /var/log/sendmail.st
/bin/login WRITE /var/log/lastlog
/bin/cat READ /home/xhg
Any File DENY /home/httpd
/usr/sbin/httpd READ /home/httpd
Any File DENY /etc/httpd/conf
/usr/sbin/httpd READ /etc/httpd/conf
/usr/sbin/sendmail WRITE /var/log/sendmail.st
/usr/X11R6/bin/XF86_SVGA NO_INHERIT RAWIO
/usr/sbin/in.ftpd READ /etc/shadow
/usr/sbin/httpd NO_INHERIT HIDDEN

Данные правила доступа прекрасно подходят для большинства случаев. Но использовать ты их не сможешь, т.к. в файле /etc/lids/lids.conf кроме имен файлов, хранятся также номера inode'ов, а они не будут совпадать с номерами inode'ов на твоей Linux-партиции.:) Информацию об inode'ах можно обновить. Делается это командой lidsadm -U. Кроме этого некоторые правила доступа неправильны. Объекты типа RAWIO и HIDDEN в данной версии не работают. Советую очистить все правила доступа и создать их заново. Очистить можно командой lidsadm -Z.

Правила доступа состоят из трех элементов: субъекта (в оригинале subject), объекта (в оригинале object) и цели (в оригинале target). Объектом является любой файл или каталог, на который и должны действовать правила доступа и защита LIDS. Если в качестве объекта указывается каталог, то все файлы в нем и вложенные каталоги с их файлами автоматически становятся объектами. Субъектом является любая защищенная программа, которой дают доступ к защищаемому объекту, т.е. прежде чем использовать программу в качестве субъекта, ее саму надо защитить средствами LIDS от посягательств, применив к ней правила доступа как к объекту. Если субъект не указан, то субъектом является любая программа. Целью является тип доступа - доступ на чтение (READ), запись (WRITE), запрет на какой-либо доступ (DENY), открытие только для дозаписи (APPEND) и игнорирование защиты (IGNORE). Не слишком замудренно?:) Покажу на примерах.

Добавление нового правила происходит по команде:


lidsadm -A -s субъект -o объект -j цель

Для начала необходимо защитить каталоги /bin, /sbin, /etc, /usr/bin, /usr/sbin, /lib, /boot определив для них доступ только на чтение всем программам.


lidsadm -A -o /bin -j READ
lidsadm -A -o /sbin -j READ
lidsadm -A -o /etc -j READ
lidsadm -A -o /usr/bin -j READ
lidsadm -A -o /usr/sbin -j READ
lidsadm -A -o /lib -j READ
lidsadm -A -o /boot -j READ

Данные настройки защитят систему от установки rootkit'а или какого другого "трояна". Но в Linux'е есть программы, которые пишут в вышеперечисленные каталоги. Например, /bin/mount, /bin/umount, /sbin/fsck.ext2 пишут в файл /etc/mtab и создают временные файлы в /etc. В каталог /etc также пишут /etc/rc.d/rc.local (создает файлы /etc/issue и /etc/issue.net) и /etc/rc.d/rc.sysinit (очищает /etc/mtab и создает /etc/HOSTNAME). Лучше закомментировать строки, отвечающие за запись в /etc в этих скриптах. Но можно и дать им доступ - хуже не будет. В каталог /lib/modules/2.2.16-5tr пишет /sbin/depmod (пересоздает /lib/modules/2.2.16-5tr/modules.dep, название каталога зависит от версии твоего ядра). Таким образом получается:


lidsadm -A -s /bin/mount -o /etc -j WRITE
lidsadm -A -s /bin/umount -o /etc -j WRITE
lidsadm -A -s /sbin/fsck.ext2 -o /etc/mtab -j WRITE
lidsadm -A -s /etc/rc.d/rc.local -o /etc -j WRITE
lidsadm -A -s /etc/rc.d/rc.sysinit -o /etc/HOSTNAME -j WRITE
lidsadm -A -s /etc/rc.d/rc.sysinit -o /etc/mtab -j WRITE
lidsadm -A -s /sbin/depmod -o /lib/modules/2.2.16-5tr -j WRITE

Естественно, я указал не все программы, которые должны иметь доступ в каталог /etc. Вычислять остальные программы я предоставляю тебе.:)

Файл /etc/shadow лучше спрятать вообще. Это защитит от кражи паролей пользователей.


lidsadm -A -o /etc/shadow -j DENY

Если оставить все так, ни один пользователь (как и сам root) не сможет зарегистрироваться в системе.:) Доступ к /etc/shadow требуют многие программы. К ним можно смело отнести /bin/login, /bin/su. Также пользователям может потребоваться доступ по ftp.


lidsadm -A -s /bin/login -o /etc/shadow -j READ
lidsadm -A -s /bin/su -o /etc/shadow -j READ
lidsadm -A -s /usr/sbin/in.ftpd -o /etc/shadow -j READ

В описании LIDS есть прекрасный пример защиты от замены головной страницы web-сервера, самой любимой шутки хакеров.:) Сначала прячем от всех и вся каталог /home/httpd:


lidsadm -A -o /home/httpd -j DENY

Затем даем демону httpd доступ на чтение на этот каталог:


lidsadm -A -s /usr/sbin/httpd -o /home/httpd -j READ

То же можно сделать и с файлами конфигурации web-сервера:


lidsadm -A -o /etc/httpd/conf -j DENY
lidsadm -A -s /usr/sbin/httpd -o /etc/httpd/conf -j READ

Неплохо было бы также защитить от изменений файлы логов. Сначала надо сделать каталог /var/log доступным только для дозаписи:


lidsadm -A -o /var/log -j APPEND

Некоторые файлы дожны быть доступны для записи:


lidsadm -A -s /bin/login -o /var/log/lastlog -j WRITE
lidsadm -A -o /var/log/wtmp -j WRITE
lidsadm -A -s /usr/sbin/sendmail -o /var/log/sendmail.st -j WRITE

Если ты пользуешься /usr/sbin/logrotate, то лучше предоставить этой программе доступ на запись ко всему каталогу:


lidsadm -A -s /usr/sbin/logrotate -o /var/log -j WRITE

В качестве объекта правил доступа может также служить способность, т.е. если ты отключил какую-то способность для всех программ, ты можешь предоставить ее какой-то определенной. Целью в данном случае могут являться - предоставлять потомкам процесса данную способность (INHERIT) или не предоставлять (NO_INHERIT). Предположим, если ты убрал способность CAP_SYS_RAWIO у всех программ, то такая способность должна быть предоставлена X-серверу, причем этой способностью не должны обладать его потомки.


lidsadm -A -s /usr/X11R6/bin/XF86_SVGA -t -o CAP_SYS_RAWIO -j NO_INHERIT

Заметь: для использования способности в качестве объекта правил доступа, должно применяться сочетание параметров -t -o, а не просто -o, как в случае с доступом к файлам.

Еще один пример: если ты отменил способность CAP_SYS_ADMIN, то она понадобиться /bin/update и ее потомкам.


lidsadm -A -s /bin/update -t -o CAP_SYS_ADMIN -j INHERIT

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


lidsadm -A -s /usr/sbin/httpd -t -o CAP_HIDDEN -j NO_INHERIT
lidsadm -A -s /sbin/syslogd -t -o CAP_HIDDEN -j NO_INHERIT
lidsadm -A -s /sbin/klogd -t -o CAP_HIDDEN -j NO_INHERRIT

Таким образом в списке процессов не будет видет http-сервер, system logger и kernel logger, хотя они могут быть запущены.:)

Если какое-то правило доступа тебе уже не нужно, или оно внесено ошибочно, его можно удалить командой lidsadm -D.


lidsadm -D -s субъект -o объект -j цель

Можно указывать только субъект или только объект, в этом случае удалятся все правила, в которых встречается указанный субъект или объект. Если указан и субъект, и объект, удалится правило, в котором присутствует и указанный субъект, и указанный объект одновременно.

Это далеко не полный список правил, который должен быть. Список правил зависит от программного обеспечения, которое у тебя установлено и работает, и от тех способностей, что ты отключил. Тебе придется попотеть, прежде чем твоя система заработает должным образом.:)

Сейчас уже ты можешь перегрузить систему, после чего сможешь убедится в работоспособности системы. Если что-то пойдет не так, ты всегда сможешь загрузить Linux c выключенным LIDS. Для этого в строке ввода lilo надо указать security=0.


LILO boot: linux security=0

Также в процессе работы можно отключить LIDS и изменить любые способности и правила доступа. Об этом - в следующей главе.:)

Предыдущая

Содержание

Следующая


(c)Ерижоков А.А., 2000.
Использование данного документа разрешено только с согласия автора и с указанием первоисточника: DH's Linux Site



      

Связь | О проекте LinuxRSP | Реклама | О Linux
© 1999-2017 LinuxRSP