Существует несколько сервисов, которые необходимо отключить:
#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) для автоматизации множества из указанных опций.