Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #69, СЕНТЯБРЬ 2004 г.

Делаем FreeBSD безопасной

Сергей Можайский aka techniX

Xakep, номер #069, стр. 069-116-1


(technix@frenzy.org.ua)

FreeBSD: Top Security

Итак, ты решил построить сервер на базе FreeBSD. Хороший выбор. Однако любой сервер является лакомым кусочком для хакера, и даже не стоит сомневаться в том, что рано или поздно он подвергнется атаке. Поэтому в первую очередь стоит заняться не настройкой различных сервисов, а защитой системы от взлома. Конечно, в системе, установленной с настройками по умолчанию, защита находится на достаточном уровне. Однако мы можем сделать наш сервер настоящим крепким орешком. Ну что, начнем строить защиту своей FreeBSD-системы?

Консольные твики

Как известно, загрузившись в однопользовательском режиме, можно изменить пароль суперпользователя. Нам следует устранить эту досадную недоработку. Отредактируем файл /etc/ttys таким образом, чтобы при загрузке с опцией boot -s система запрашивала пароль

console none unknown off insecure

Также следует запретить прямой вход с консоли пользователя root. Для этого в том же файле нужно сменить статус консоли на insecure. Вот пример для нулевой консоли:

ttyv0 "/usr/libexec/getty Pc" cons25 on insecure

Для того чтобы только пользователь root мог видеть все запущенные процессы, добавь в /etc/sysctl.conf следующую запись:

kern.ps_showallprocs=0

Ваши права?

Права доступа к файлам - одна из отличительных особенностей UNIX-систем. Давай назначим эти права как следует. На некоторые системные файлы стоит установить такие флаги доступа, чтобы они были доступны только суперпользователю. Вот примерный список:

# chmod 700 /root

# cd /etc

# chmod 600 syslog.conf rc.conf newsyslog.conf hosts.allow login.conf

Некоторые системные файлы стоит защитить даже от суперпользователя. Для этого существуют модификационные флаги, установить которые можно командой chflags. К ним относятся флаг appnd, который переводит файл в режим добавления данных, и флаг chg, делающий файл изменяемым только для пользователя root. Подробности по использованию этой команды можно прочесть на странице руководства, посвященного chflags (man chflags).

Файловую систему с пользовательскими каталогами лучше смонтировать с параметром -nosuid, который игнорирует suid-биты на файлах. Вот пример строчки из /etc/fstab, монтирующий /usr/home с флагом nosuid (nodev здесь также не помешает - прим.ред.):

/dev/ad0s1h /usr/home ufs rw,nosuid 2 2

Утилита suidcontrol (www.watson.org/fbsd-hardening/suidcontrol.html) поможет установить правильную политику в отношении suid/sgid-файлов в системе.

Чтобы при загрузке удалялось содержимое каталога /tmp, добавляем в /etc/rc.conf строку

clear_tmp_enable="YES"

Уровни защиты ядра

Ядро FreeBSD может работать на нескольких уровнях защиты (securelevel). Значение этого уровня варьируется от -1 до 3. Для нас интересны последние три режима. В режиме 1 (безопасный режим) нельзя снимать модификационные флаги с файлов, а смонтированные дисковые устройства и файлы устройств /dev/mem, /dev/kmem не могут быть открыты для записи. В режиме 2 (режим повышенной безопасности), в дополнение к предыдущему, запрещена прямая запись на диски, независимо от того, смонтированы они или нет. В режиме 3 (режим безопасности сети), кроме ограничений второго режима, запрещено изменение правил файрволов и ограничений скорости канала. Для включения уровней защиты следует добавить в /etc/rc.conf строки

Содержание  Вперед на стр. 069-116-2