Bsdadmin.ru

Записки администратора FreeBSD

Путь на сайте

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

Необходимые шаги по защите сервера 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) для автоматизации множества из указанных опций.
 

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