Архив Категории: FreeBSD

FreeBSD

Необходимые шаги по защите сервера FreeBSD_3

Существует несколько сервисов, которые необходимо отключить:

#chmod ugo= /usr/bin/rlogin

#chmod ugo= /usr/bin/rsh

Любые сторонние утилиты установленные вами, должны быть ограничены для регулярных пользователей.

#chmod o= /usr/local/bin/nmap

#chmod o= /usr/local/bin/nessus

Конфигурация системы для запуска демонов

Пришло время включить или отключить определённые сервисы, изменив /etc/rc.conf.

Мы отключим sendmail, как небезопасный.

#echo ‘sendmail_enable=»NONE»‘ >> /etc/rc.conf

По умолчанию, для ядра установлен уровень безопасности -1,

т.е. отсутствие защиты.

Возможно вам понадобится уровень 2 или более безопасный уровень 3. Если вы хотите получить больше информации об уровнях безопасности обратитесь к man страницам по init(8).

После загрузки ядра уровень безопасности может только возрастать

#echo ‘kern_securelevel_enable=»YES»‘ >> /etc/rc.conf

#echo ‘kern_securelevel=»3″‘ >> /etc/rc.conf

Если  не используете NFS, отключите portmap:

#echo ‘portmap_enable=»NO»‘ >> /etc/rc.conf

inetd — является небезопасным, поэтому  убедимся, что он отключен.

#echo ‘inetd_enable=»NO»‘ >> /etc/rc.conf

Очищаем каталог /tmp при запуске системы, что будет гарантировать отсутствие вредоносных элементов во временных файлах.

#echo ‘clear_tmp_enable=»YES»‘ >> /etc/rc.conf

Если не используется удалённая машина для хранения логов, убедимся, что syslogd не использует сетевой сокет.

#echo ‘syslogd_flags=»-ss»‘ >> /etc/rc.conf

Перенаправление сообщений ICMP может использоваться атакующими для направления вас на другой маршрутизатор. Поэтому будем игнорировать эти сообщения и журналировать их.

#echo ‘icmp_drop_redirect=»YES»‘ >> /etc/rc.conf

#echo ‘icmp_log_redirect=»YES»‘ >> /etc/rc.conf

Следующий параметр является весьма желательным, поскольку он будет регистрировать все попытки обращения к закрытым портам. Это необходимо, в случае, если кто-то пытается получить доступ к системе через определённый порт.

#echo ‘log_in_vain=»YES»‘ >> /etc/rc.conf

Установка переменных ядра

Есть ряд переменных ядра которые следует установить. Мы добавим их в /etc/sysctl.conf чтобы сделать их постоянными.

Первое — запретим пользователям видеть информацию о процессах выполняемых с другим UID.

#echo «security.bsd.see_other_uids=0» >> /etc/sysctl.conf

Второе изменение необходимо для вступления в силу концепции «чёрной дыры» (blackhole), когда пакеты RST не отправляются в ответ на запрос закрытых портов.

Поэтому, мы можем достаточно просто блокировать сканирование портов на начальном уровне.

#echo «net.inet.tcp.blackhole=2» >> /etc/sysctl.conf

#echo «net.inet.udp.blackhole=1» >> /etc/sysctl.conf

Мы будем генерировать случайные ID для IP пакетов, а не увеличивать их последовательно на единицу. Это позволяет предотвратить удалённое наблюдение скорости пакетов генерируемых счётчиком.

Данная возможность доступна в FreeBSD 5.3. и более старших ветвях.

#echo «net.inet.ip.random_id=1» >> /etc/sysctl.conf

Записи ядра

Есть несколько параметров безопасности, которые мы можем зафиксировать на уровне ядра.

Сначала отключим комбинацию Alt+Ctl+Del, чтобы исключить возможность локальной перезагрузки сервера с клавиатуры. Добавим следующие строки:

# nano -w /usr/srs/sys/i386/conf/MYKERNEL

options SC_DISABLE_REBOOT # Disable Ctrl+Alt+Del

options RANDOM_IP_ID # Enables random IP ID generation

Опция RANDOM_IP_ID доступна только для ветки 5.3 и выше.

Соберите собственное ядро.

Как только вы закончите сборку ядра, установите его и перезагрузите систему. Войдите в систему и обновите дерево портов.

Опциональные настройки для скрытой (stealth) системы.

Следующие опции  используются для шлюзов, syslog серверов или выделенных брандмауэров. Вы можете использовать их и на обычных серверах, однако это приведет к снижению производительности.

Вы можете настроить FreeBSD на сброс SYN/FIN пакетов:

#echo ‘tcp_drop_synfin=»YES»‘ >> /etc/rc.conf

Добавьте следующие записи в файл конфигурации ядра для сброса SYN/FIN пакетов и включения невидимого перенаправления. Невидимое (stealth) перенаправление передаёт пакеты не изменяя TTL.Это полезно для скрытия брандмауэра при использовании traceroute.

# nano -w /usr/src/sys/i386/conf/MYKERNEL

options TCP_DROP_SYNFIN # Enables the ability to drop SYN/FIN packets

options IPSTEALTH # Enable stealth forwarding

Вы можете использовать утилиту lockdown (/usr/ports/security/lockdown) для автоматизации множества из указанных опций.