Настройка правил

Список правил в LIDS-е называется ACL (access control list). Как уже упоминалось выше, конфигурация LIDS-a производиться с помощью команды «lidsconf» и хранится в файле «/etc/lids/lids.conf». Не вздумайте редактировать данный файл вручную, его содержимое желательно изменять только командой
"lidsconf".

С помощью правил вы можете спрятать файлы/процессы,
разрешить доступ к ним только определенным программам и т.д., все будет зависеть от вашей фантазии. Создание правил базируется на предоставлении доступа к каким либо объектам или субъектам. В качестве объекта может выступать любая программа, файл, папка (со всеми вложенными в нее файлами), или способность, а в качестве субъекта должна выступать любая
защищенная программа (вам может показаться это все непонятным, но в последствии, я уверен, вы найдете эту технологию создания правил очень удобной). Перед тем как мы приступим к созданию правил, давайте ознакомимся с командой
"lidsconf".

Формат вызова:

lidsconf -A [-s субъект] -o объект|способность [-d] [-t от-до] [-i уровень] -j ДЕЙСТВИЕ — позволяет добавить правило.
lidsconf -D [-s субъект] [-o объект] — удаляет все правила в которых будут найдены указанные субъекты или объекты.
lidsconf -Z — удаляет все правила.
lidsconf -U — обновляет inode файлов (что это такое читайте ниже).
lidsconf -L — показывает список всех правил
lidsconf -P — устанавливает/изменяет пароль

Опции:

-s субъект — указывает на субъект.
-o объект — указывает на объект.
-d — устанавливает правило для текущей области домена.
-I уровень — устанавливает уровень наследования правила.
-t от-до — позволяет установить время действия правила, время записывается в формате часы_минуты (например 2401)
-j ДЕЙСТВИЕ — выбор действия. Есть такие варианты действий :
READONLY — только для чтения (в старых версиях нужно было указывать READ ).
WRITE — для записи и => для чтения.
APPEND — доступ только для добавления и => для чтения.
DENY — запретить какой либо доступ.
IGNORE — игнорировать все ДЕЙСТВИЯ.
GRANT — позволяет разрешить/создать способность для субъектов.

Теперь давайте приступим непосредственно к созданию правил.

По умолчанию у вас уже есть наиболее часто используемые правила, чтобы просмотреть их введите команду
# lidsconf -L. Если вы захотите их использовать, то
для начала должны будете обновить соответствующие inode
файлы, так как они на разных системах различные, и те которые указаны в файле «/etc/lids.conf», навряд ли будут соответствовать вашим. Так что вводите команду:

# lidsconf -U. 

Для тех, кто не знает что такое inode, объясняю: в файловой системе ext2 inode является указателем на то место, в котором на диске размещен индексный узел файла. Inode содержит информацию
о файле, например разрешения файла, вместе с указателем на то место, где могут быть найдены данные файла, и т.д. При создании новых правил 
LIDS ориентируется не только на его имя и путь к нему, но и на его inode, что позволяет обеспечить наиболее высокий уровень безопасности.
Я советую вам приняться за составление своих правил, которые бы соответствовали вашим требованиям безопасности и вашей системе. Так что удаляйте весь ACL со всеми правилами в нем:

# lidsconf -Z. 

Правила обычно добавляются в той последовательности, которая представлена в данном материале.

a) В начале вы должны определить права доступа к объектам (если ниже в качестве объектов будут выступать файлы или каталоги, которых нету в вашей системе, то вам для них не надо составлять правила):

1.Только для чтения :

# lidsconf -A -o объект -j READONLY

Как упоминалось выше, в качестве объекта вы можете указать файлы, каталоги и т.д. Я предлагаю вам в качестве объектов для чтения использовать:

/sbin
/usr/bin
/usr/sbin
/usr/local/bin
/usr/local/sbin
/usr/X11R6/bin
/boot
/etc/skel
/etc/modules
/etc/passwd
/etc/rc.d
/etc/sysconfig
/etc/bashrc
/etc/crontab
/lib
/usr/src/linux

если вам этот список не подходит измените его под свои требования (но при этом учтите
эти изменения при создании остальных правил).

2.Только для добавления:

# lidsconf -A -o объект -j APPEND

К этому правилу желательно отнести каталог /var/log со всеми в нем файлами логов, так как при взломе систем злоумышленники обычно затирают логи, если же вы поставите логи только на добавление, то они не смогут не чего в них изменить.

3.Запретить какой либо доступ (то есть для системы объект станет не существующим) .

# lidsconf -A -o обьект -j DENY

Не мешает отнести файл «/etc/shadow» (так как там обычно хранятся пароли в зашифрованном виде), каталог «/etc/lids» (чтобы никто не смог просмотреть настройку правил и т.д.), «/etc/lilo.conf» (обычно если у вас есть пароли на лило, то он храниться в plain-text в данном файле), «/var/www» (чтобы не кто не смог
дефейснуть ваш сайт и просматривать код CGI-сценариев и т.д.).

b) Теперь вы должны определить тип доступа для субъектов, например файл «/etc/shadow»(объект) мы спрятали от системы, но в нем нуждаются такие программы как «/bin/login», «/bin/su»(субъекты), то есть данным субъектам мы должны определить тип доступа к объекту «/etc/shadow», «Только для чтения» (READONLY), поэтому вам нужно будет ввести команды:

# lidsconf -A -s /bin/login -o /etc/shadow -i 0 -j READONLY
# lidsconf -A -s /bin/su -o /etc/shadow -i 0 -j READONLY

(опция -i указывает на количество дочерних процессов запущенных субьектом
(/bin/login и /bin/su) которые будут иметь доступ к «/etc/shadow»: 0 — нету, -1 — их количество неограниченно, если вы не используете данную опцию, то их количество по умолчанию будет равняться 0).
Так же вы должны поступить со следующими программами :

Субъект Объект Тип доступа
/sbin/depmod /lib/modules/2.4.18/ modules.dep WRITE
/sbin/lilo /etc/lilo.conf READONLY
/sbin/lidsadm /etc/lids READONLY
/sbin/lilo /boot READONLY
/bin/login /var/log IGNORE
/usr/bin/kdm /etc/shadow READONLY
/usr/bin/kdm /var/log IGNORE
/etc/rc.d/rc.sysinit /var/log IGNORE
/sbin/init /var/log WRITE
/usr/sbin/utempter /var/log IGNORE
/usr/sbin/httpd /var/www READONLY
/usr/sbin/httpd /var/log IGNORE

c) Завершающим действием в создании правил для LIDS-a является передача субъектам каких либо способностей, опять рассмотрим это на примере: при настройке способностей мы запретили способность в системе подгружать модули (CAP_SYS_MODULE), но некоторые команды нуждаются в ней, а именно программа «/bin/mount» и т.д., поэтому мы должны разрешить данную способность для этой программы, это можно реализовать с помощью команды

# lidsconf -A -s /bin/mount -o CAP_SYS_MODULE -i 0 -j GRANT

Таким же образом вы должны передать следующим субъектам такие способности:

Субъект Способность
/bin/mount CAP_SYS_ADMIN
/bin/mount CAP_SYS_MODULE
/bin/mount CAP_SYS_RAWIO
/bin/mount CAP_DAC_OVERRIDE
/bin/mount CAP_DAC_READ_SEARCH
/bin/umount CAP_SYS_ADMIN
/bin/umount CAP_SYS_MODULE
/bin/umount CAP_SYS_RAWIO
/bin/umount CAP_DAC_READ_SEARCH
/bin/umount CAP_DAC_OVERRIDE
/usr/X11R6/bin/ XF86_SVGA CAP_SYS_RAWIO
/sbin/mingetty CAP_SYS_TTY_CONFIG
/sbin/update CAP_SYS_ADMIN
/sbin/sysctl CAP_SYS_ADMIN
/usr/sbin/logrotate CAP_DAC_READ_SEARCH
/sbin/hwclock CAP_SYS_TIME
/sbin/swapon CAP_SYS_ADMIN
/sbin/lilo CAP_SYS_RAWIO
/usr/bin/kdm CAP_SYS_RAWIO
/usr/X11R6/bin/startx CAP_SYS_NICE
/bin/login CAP_FOWNER
/bin/login CAP_DAC_OVERRIDE

Все, с настройкой правил пока покончено (почему пока потом увидите). Теперь вам нужно сделать так, чтобы
LIDS инициализировался после загрузки вашей системы и всех демонов, поэтому в файл «/etc/rc.d/rc.local» добавьте такие строки:

lidsadm -I # подробнее об этой команде вы прочтете ниже
lidsconf -U # обычно если ваша система была выключена не должным образом, после ее загрузки будет запускаться программа fsch, которая проверяет ext2 раздел и изменяет inode некоторых файлов при их необходимости, поэтому некоторые правила будут не работать, поэтому мы и обновляем
inode.

Желательно добавить их где-то в середине файла, чтобы они не сильно светились.

Администрирование LIDS-a

Перед тем как перезагрузиться и запускать вашу систему с пропатченным ядром, вы должны знать, каким образом можно отключить/включить LIDS из консоли.
LIDS администрируется с помощью соответствующей команды, «lidsadm» (она уже упоминалась выше), для того чтобы воспользоваться ею вам нужно будет ввести пароль установленный вами для
LIDS-a.

Формат команды таков:

lidsadm -S — [(+|-)LIDS_FLAG] […] — позволяет включить/выключить определенные флаги (перечислены ниже).
lidsadm -I — позволяет инициализировать LIDS, то есть связать его с ядром (проще говоря запустить).
lidsadm -V — выводит текущее состояние флагов.

Основные флаги:

LIDS — позволяет включить/выключить LIDS на текущей консоли.
LIDS_GLOBAL — позволяет включить/выключить LIDS глобально, то есть во всей системе.
RELOAD_CONF — LIDS обращается к файлам конфигурации только 1 раз при загрузке, так что если вы после загрузки добавите какие-то правила, или разрешите/запретите какую-то способность то вам нужно будет перезапустить LIDS, для этого используется этот флаг.

Например ниже приведенная команда отключит LIDS на текущей консоли, и перезапустит LIDS с новыми правилами (если оные добавлялись):

# lidsadm -S — -LIDS +RELOAD_GONF

Внимание! Все сообщения/ошибки/нарушения правил LIDS-a можно просмотреть в файле /var/log/messages.

Теперь вы можете смело перезагружать вашу машину и загружать ядро с LIDS-ом …
Я больше чем уверен, что при первой загрузке LIDS не позволит запуститься половине ваших демонов/программ, и т.д., поэтому вы должны
будете создать для них соответствующие правила. Вообще трудность настройки LIDS-a состоит в том, что вы сами должны определить какие программы будут иметь доступ к определенным файлам или смогут производить определенные действия в системе, а какие нет. Также не забывайте выключить LIDS перед тем, как добавить новые правила, и перезапускать его чтобы изменения вступили в силу.

Общие советы

Для того чтобы спрятать процесс какой-то программы, вы должны передать ей способность CAP_HIDDEN:

# lidsconf -A -s /sbin/klogd -o CAP_HIDDEN -j GRANT

после чего данную прогу klogd нельзя будет увидеть в списке процессов «ps -x» и т.д.

Чем больше способностей вы запретите использовать, тем больше правил вам придется создавать, поэтому старайтесь не сильно усердствовать, запрещая их.

Обход защиты LIDS-a

Как вы уже наверное догадались, имея физический доступ к компьютеру защиту LIDS-а можно обойти, для это следует просто загрузить систему с другого ядра (вы не забыли создать загрузочную дискету про которую писалось в начале статьи?), в версиях под более старые ядра это можно было произвести еще проще, набрав при загрузке системы в LILO следующее :

boot: linux security=0

Ну зато во всем остальном LIDS, при разумной настройке, держится на высоте (а именно в обеспечении удаленной и локальной безопасности).
При его настройке вы должны стараться сделать его работу незаметной для пользователей.
Пока вроде под рассмотренную в данном материале версию LIDS-a серьезных багов не было, но зато есть ряд недочетов, которые допустили создатели LIDS-a. Если вам интересна эта информация, то подпишитесь на Maillist с их официального сайта. Чаще всего многие люди не берутся устанавливать
LIDS только из-за его трудной настройки, но мы ведь не ищем легких путей.
Сайт LIDS-a: www.lids.org
(или, если он будет в дауне, воспользуйтесь данным миррором
http://lids.gnuchina.org).

P.S. Если у вас возникнут вопросы насчет LIDS-a пишите мне, я постараюсь помочь:
lynx@xakep.ru.

Удачи!

Оставить мнение

Check Also

Безопасность превыше всего. 9 простых трюков, которые сделают жизнь линуксоида секьюрнее

Жизнь обычных людей складывается из мелочей. Жизнь линуксоида складывается из множества ма…