Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #68, ИЮЛЬ 2006 г.

железобетонный сервер

_MIF_ (ROOT@SECURITYLAB.CO.IL)

Спецвыпуск: Хакер, номер #068, стр. 068-052-3


# Сколько процессов может запускать пользователь

:maxproc=64:\

# Пускать юзера в систему только если его домашняя дира существует и доступна

# юзеру

:requirehome:true\

# Время устаревания пароля

:passwordtime=90d:\

# Остальное берем из профиля default

:tc=default:

Здесь я указал лишь основные параметры. Список всех параметров и их описание можно найти в Handbook (см. врезку)

[Hard]

Теперь к вопросу о файловой системе. Самый важный файл настроек в данном случае - /etc/fstab. Он применяется при загрузке, и указывает системе, как работать с тем или иным разделом файловой системы, что с ним может делать пользователь, а что - нет. Открываем /etc/fstab и приводим его примерно в такой вид:

/dev/ad1s1b none swap sw 0 0

/dev/ad1s1a / ufs rw 1 1

/dev/ad1s1e /tmp ufs rw,noexec 2 2

/dev/ad1s1f /usr ufs rw 2 2

/dev/ad1s1g /usr/home ufs rw,nosuid,nodev 2 2

/dev/ad1s1d /var ufs rw,nodev 2 2

/dev/acd0 /cdrom cd9660 ro,noauto 0 0

Очень важно поставить параметр noexec на /tmp. Данная опция запрещает запускать что-либо на файловой системе, даже если на файле установлен chmod 777. Я лично видел очень много взломов отлично защищенных серверов именно из-за этой ошибки, которую, почему-то, очень многие допускают. Нельзя забывать, что в /tmp может писать почти любой процесс в системе. Опция nosuid говорит системе игнорировать suid-биты файлов, а nodev запрещает создание/существование в разделе специальных устройств.

[System::sysctl.]

Теперь перейдем к тюнингу самой операционной системы. Открываем /etc/sysctl.conf и пишем туда следующее:

Листинг файла /etc/sysctl.conf

# Запрещает юзерам видеть процессы соседа, и, разумеется рутовые.

security.bsd.see_other_uids=0

# Пускаем запросы на закрытые порты в черные дыры

net.inet.tcp.blackhole=2

net.inet.udp.blackhole=1

# Указываем размер очереди сокета

kern.ipc.somaxconn=1024

# Отрубаем ip-редиректы

net.inet.icmp.drop_redirect=1

net.inet.icmp.log_redirect=1

net.inet.ip.redirect=0

# Назначаем размеры буфера для TCP-подключений. Если на сервер ожидается большая # нагрузка, и у него много памяти – лучше поставить 65535. Значение выше 65535

# не рекомендуется.

net.inet.tcp.sendspace=32768

net.inet.tcp.recvspace=32768

# Обновляем ARP-таблицу каждые 20 минут

net.link.ether.inet.max_age=1200

# Запрещаем отвечать на все лишние запросы.

net.inet.icmp.maskrepl=0

net.inet.ip.sourceroute=0

net.inet.ip.accept_sourceroute=0

net.inet.icmp.bmcastecho=0

Конечно же здесь указаны не все параметры sysctl. Для полного описания всех возможностей не хватило бы и журнала, поэтому я указал самые основные и необходимые. Многие параметры для sysctl можно изменять и динамически:

sysctl <параметр>=<значение>

Например: sysctl kern.maxprocperuid=1000

Теперь необходимо продублировать часть настроек в /etc/rc.conf:

# Дублируем настройки sysctl

icmp_drop_redirect="YES"

icmp_log_redirect="YES"

icmp_bmcastecho="NO"

tcp_drop_synfin="YES"

[логи.]

Очень важным аспектом системного администрирования является слежение за поведением сервера. Для этого существует отличная утилита logcheck. Устанавливаем:

Назад на стр. 068-052-2  Содержание  Вперед на стр. 068-052-4