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

Список правил в 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.

Удачи!

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии