Читаем Спецвыпуск журнала «Хакер» 47, октябрь 2004 г. полностью

Мы рассмотрим типичный сценарий установки, настройки и сопровождения сервера с точки зрения security-параноиков. Мне не хотелось бы давать разрозненные советы из серии «хозяйке на заметку», поэтому мы пройдем по шагам все этапы от установки ОС до запуска сервисов, обращая внимание на важные моменты. Я не буду предлагать здесь детальное руководство по настройке каждого сервиса, а лишь дам общие советы, которые нужно иметь в виду. По этой же причине я не завязываюсь на конкретную ОС – кто-то любит Linux, кто-то FreeBSD, а кто-то по долгу службы обхаживает Solaris. Замечания по определенной ОС, если таковые встретятся, будут даваться по ходу.


Спасительные флаги

Веселье начинается уже при разметке винчестера на партиции при установке системы. В Linux-мире как-то не принято обращать на это серьезное внимание, и один большой корневой раздел (/) на всю систему там – норма. Иногда, правда, выделяют /home. Но этого все равно мало. Не зря опыт поколений рекомендует иметь как минимум следующие разделы:

/ – корневой;

/home – если сервер будет иметь много пользовательских учетных записей (хостинг, хранение почты, FTP-архив, да практически всегда);

/tmp – обязательно выделяй /tmp в отдельный раздел диска;

/var – для хранения логов, спула почты, бэкапов и прочего мусора;

/usr – для исполняемых файлов, библиотек, исходных текстов системы.

Пользователи BSD могут прочитать более подробное описание исторически сложившейся иерархии в man 7 hier, для остальных систем существует схожий (хотя и спорный) документ Filesystem Hierarchy Standart (FHS, www.pathname.com/fhs). Но какое это имеет отношение к безопасности? Дело в удобстве оперирования флагами монтирования. Любая файловая система позволяет указать набор флагов, с которыми будет примонтирована соответствующая партиция, и некоторые из них имеют непосредственное отношение к безопасности системы. Покажу это на примере FFS (Fast File System), практически все остальные FS имеют схожие по названию флаги (см. «man mount» в своей системе).

noexec – запрещает исполнять файлы;

nosuid – запрещает повышение привилегий для исполняемых suid/sgid файлов. Иными словами, теряется suid-бит и программа выполняется как обычная;

nosymfollow – запрещает использование символических («мягких») ссылок;

nodev – запрещает использование файлов устройств.

В общем случае операционке, безусловно, нужно иметь возможность исполнять файлы. Также в системе обязательно присутствует некоторое количество суидных программ, да и ссылки тоже, как правило, имеются. Но есть ли смысл в суидных файлах, например, в каталоге /tmp? Часто хакеры бросают суидный /bin/sh куда-нибудь в складки /tmp или здесь же компилируют эксплоит, пока еще не имея прав рута, но надеясь их получить. То же касается и пользователей в их домашних каталогах. Вряд ли среднестатистический хостер, дающий своим клиентам доступ по ssh для правки\заливки контента, нуждается в том, чтобы эти клиенты что-то у себя запускали или, тем более, компилировали и затем запускали. Поэтому очень часто на /tmp и /home оправданы флаги nosuid, а нередко и noexec. В некоторых случаях они могут помешать, например, noexec на /tmp не позволит пересобрать мир (make world) на FreeBSD, но это не более чем кратковременное исключение. Нет нужды пояснять, что в случае одного большого раздела (/) такая манипуляция флагами была бы исключена. Сам же корневой раздел, включающий каталоги с конфигурационными файлами системы, базовыми бинарниками, библиотеками и ядром, вполне реально монтировать в режиме read-only.

Не лишен смысла также трюк против злонамеренных операций с ядром (таких, как его перекомпиляция и замена :)), заключающийся вот в чем. Каталог /boot, в котором находятся ядро, в случае BSD и модули с конфигурационным файлом loader.conf, а в случае Linux – файл предварительной загрузки модулей initrd, оформляется в виде отдельного раздела на каком-нибудь съемном носителе (USB-флэшка), с него производится загрузка, а затем, после запуска системы и загрузки всех модулей, раздел размонтируется и носитель вынимается (кладется в сейф :)). Подменить ядро, initrd или подсунуть модуль становится на порядок проблематичней.

Помимо флагов на FS существуют дополнительные атрибуты безопасности на файлы. В BSD атрибуты выставляются и просматриваются командой chflags(1), в Linux – chattr(1)/lsattr(1). Так, из полезных флагов chfags(1) можно выделить:

sappnd – позволяет открывать файл только в режиме «append only»;

schg – выставляет флаг «immutable», такой файл нельзя переместить, удалить или переименовать;

sunlnk – запрещает удаление файлов.

Эти флаги имеет право выставлять/снимать только суперпользователь. Но даже если взломщик получил права рута, они могут спасти от катастрофы, если помимо флагов приняты другие меры безопасности.


Выживает сильнейший
Перейти на страницу:

Похожие книги

Стив Джобс. Уроки лидерства
Стив Джобс. Уроки лидерства

Эта книга – редкая возможность увидеть Стива Джобса таким, каким его видели лишь его самые близкие сотрудники, и разгадать загадку этого легендарного человека. Это возможность понять и освоить оригинальный стиль лидерства Джобса, благодаря которому Apple стала одной из величайших компаний и смогла выпускать продукты, изменившие нашу жизнь. Автор книги, Джей Эллиот, бывший старший вице-президент компании Apple, долгое время работал бок о бок со Стивом Джобсом и сформулировал главные уроки «iЛидерства», которые помогут совершить прорыв компании любого размера и из любой отрасли. Интуитивный и творческий подход Джобса, о котором рассказывается в этой книге, позволит вам преобразить свой бизнес и свою жизнь.Для широкого круга читателей – для всех, кто хочет воспользоваться уроками выдающегося бизнес-лидера.

Джей Эллиот , Вильям Л Саймон , Вильям Л. Саймон , Виктория Шилкина

Деловая литература / Биографии и Мемуары / Публицистика / Прочая компьютерная литература / Управление, подбор персонала / Документальное / Финансы и бизнес / Книги по IT
Тайны и секреты компьютера
Тайны и секреты компьютера

Эта книга предназначена для тех, кто самостоятельно осваивает мир информационных технологий. Программирование в среде Microsoft Office, устройство сетей Internet и Fidonet, работа системы электронной почты, структура системного реестра Windows и файловой системы, строение жидкокристаллических дисплеев и проблема наличия различных кодировок русского языка, — про все это рассказывается в ней. Многообразие тем и легкий стиль изложения сделают ее вашим спутником на долгое время, и вы всегда сможете найти в ней нужную именно в данный момент информацию.Если Вы интересуетесь компьютерными технологиями, желали бы расширить свои знания и умения в этой области, то она Вам наверняка понравится.

Антон Орлов , Антон Александрович Орлов

Зарубежная компьютерная, околокомпьютерная литература / Фантастика / Фэнтези / Прочая компьютерная литература / Книги по IT