Личная неприкосновенность для тукса Денис «dhsilabs» Колисниченко Хакер, номер #095, стр. 095-114-5 # lidsconf -A -s /usr/X11/bin/X -o CAP_SYS_RAWIO -j GRANT А теперь разрешим Web-серверу Apache привязываться к непривилегированному порту: # lidsconf -A -s /usr/sbin/httpd -o CAP_BIND_NET_SERVICE -j GRANT Более безопасным будет вариант разрешения привязки Apache к портам 80 и 443: # lidsconf -A -s /usr/sbin/httpd -o CAP_BIND_NET_SERVICE \ 80-80,443-443 -j GRANT Синтаксис команды требует указания диапазона портов, поэтому, чтобы задать один порт (к примеру, 80), нужно ввести «80-80». Практика Вот теперь можно приступить к защите ОС Linux. Разработка ACL для всей системы - непростая и объемная задача, поэтому я рекомендую создать shell-сценарий, содержащий вызовы lidsconf. Первой командой будет lidsconf –Z. Эта директива удаляет все ранее существующие ACL. Сценарий можно поместить в /etc/lids, что сделает его невидимым за пределами LFS-сессии. Какие же системные файлы и каталоги требуют защиты LIDS? В первую очередь необходимо защищать содержимое каталогов /bin, /sbin, /lib, /usr/bin, /usr/lib, /usr/sbin и конфигурационные файлы в каталоге /etc. Подавляющее большинство конфигов в этом каталоге требуют доступ в режиме «только чтение», поэтому сначала можно установить для всего каталога режим READONLY, а затем разрешить доступ к некоторым отдельным файлам в WRITE, глобально или для определенных субъектов. Здесь наиболее важными файлами являются passwd/passwd- и shadow/shadow-: нужно запретить доступ к этим файлам (DENY) всем субъектам, кроме субъектов /bin/login, su и /usr/sbin/sshd, им полагается доступ READONLY. Но мы еще не учли утилиту /usr/bin/passwd. Ей нужен WRITE-доступ к файлу /etc/shadow, чтобы пользователь мог изменить свой пароль. Ирония заключается в том, что при смене пароля файл /etc/shadow создается заново, а не просто модифицируется, в результате чего изменяется инод (inode) файла. А поскольку LIDS привязывается не к имени, а к иноду файла, после его изменения LIDS уже не будет защищать сам файл. Кроме этого, программе passwd нужно предоставить WRITE-доступ ко всему каталогу /etc, поскольку запись файла - это изменение каталога. Если на месте passwd окажется бинарик злоумышленника, то он сможет получить доступ ко всем файлам в каталоге /etc. К сожалению, не существует простого способа решения этой проблемы: нужно либо использовать альтернативную схему аутентификации, например LDAP, либо открыть WRITE-доступ к /etc. Есть, правда, еще один способ, самый безопасный, но очень неудобный для администратора. Заключается он в запрещении WRITE-доступа к /etc. Для того чтобы изменить свой пароль, пользователь должен будет обратиться непосредственно к админу. Чтобы определить, к каким файлам и каталогам нужно обращаться тому или иному приложению, необходимо отслеживать системные вызовы open(), chdir(), mkdir() и т.д. Немного облегчить эту задачу позволяет LIDS-FAQ, расположенный по адресу http://www.lids.org/lids-faq/lids-faq.html. В нем ты найдешь ACL для различных приложений: login, su, MySQL, BIND, OpenSSH, Apache. Удачи. INFO Если по какой-то причине тебе потребовалось отключить LIDS, то при загрузке системы передай ядру параметр security=0. |