Настройка FreeBSD при помощи sysctl

Утилита sysctl дает возможность не только просмотреть параметры ядра, но и изменить некоторые из них. С помощью sysctl можно увеличить производительность и улучшить безопасность системы в целом не пересобирая ядро. Просмотреть все настройки можно следующим образом:

# cd ~
# mkdir sysctl
# sysctl -A >sysctl/sysctl.txt
# ee sysctl/sysctl.txt

Альтернативный вариант с постраничным разбитием
# sysctl -A | less

Увидеть только определенные настройки из раздела security.bsd можно с помощью такой команды:

# sysctl security.bsd

Флаг -d после sysctl добавит к перечню настроек их описание.

Сами настройки располагаются по принципу древовидной структуры, их часто называют MIB (Management Information Base). Перечень основных разделов описан в таблице ниже:

Раздел sysctl Назначение
kern Основные настройки ядра
vm Настройки подсистемы виртуальной памяти
vfs Настройки файловой системы
net Настройки сети
debug Настройки отладки
hw Настройки "железа" сервера
machdep Настройки, которые зависят от аппаратной платформы
user Информация о пользовательских возможностях
p1003_1b Параметры POSIX
compat Совместимость с другими операционными системами
security Настройки безопасности
dev Информация о "железе" сервера

Изменить настройки sysctl можно передав переменную и её новое значение. Например, чтобы изменить значение security.bsd.see_other_gids с 1 на 0, нужно выполнить следующую команду:

# sysctl security.bsd.see_other_gids=0

Это изменение будет применено немедленно и действительно до перезагрузки системы. Чтобы сохранить это значение на все время существования системы, нужно добавить его в файл /etc/sysctl.conf:

security.bsd.see_other_gids=0

Применить настройки из /etc/sysctl.conf без перезагрузки системы можно так:

# /etc/rc.d/sysctl restart

Многие настройки sysctl изменять нельзя, некоторые нужно применять сразу при загрузке системы (в основном это переменные раздела hw) - для этого служит другой файл: /etc/loader.conf.

Полезные настройки sysctl

Все настройки, описанные ниже, тестировались на FreeBSD 8.4.

Отключение ICMP редиректа

Почему ICMP редирект включен по умолчанию в FreeBSD остается загадкой, так как при его наличии система остается открытой для атак из вне (подробнее тут). Для отключения ICMP редиректа нужно добавить в /etc/sysctl.conf 3 строки:

net.inet.ip.redirect=0
net.inet6.ip6.redirect=0
net.inet.icmp.drop_redirect=1

Доступ к просмотру системных процессов

Чтобы обычные пользователи не могли видеть чужие процессы, и соответственно, что запущено на сервере, необходимо переключить установленные по умолчанию параметры security.bsd.see_other_gids и security.bsd.see_other_uids из 1 в 0. Если оставить security.bsd.see_other_gids значение 1, то пользователь сможет видеть процессы группы, в которой он состоит.

Защита от сканирования портов

По умолчанию в FreeBSD параметры net.inet.tcp.blackhole и net.inet.udp.blackhole установлены в ноль, из-за чего при попытке подключиться на порты, которые не прослушиваются приложениями, сообщение о невозможности подключения к этим портам выдается очень быстро. Чтобы усложнить работу сканера портов рекомендуется net.inet.tcp.blackhole установить значение 2, а net.inet.udp.blackhole = 1 (значение 2 для net.inet.udp.blackhole отсутствует за ненадобностью). Значение 1 для net.inet.tcp.blackhole заставляет FreeBSD отклонять все SYN пакеты (пакеты устанавливающие соединение) пришедшие на никем не обслуживаемые порты без отсылки отправителю RST пакетов, значение 2 отбрасывает вообще все, а не только SYN пакеты, на закрытый порт. В случае установки значений net.inet.tcp.blackhole=2 и net.inet.udp.blackhole=1 сканирование портов будет протекать заметно дольше.

Проверить скорость ответа сервера до и после изменения параметра net.inet.tcp.blackhole можно при помощи telnet, подключаясь им на заранее известный, ни кем не обслуживаемый порт: open 192.168.5.5 27. Если используется блокировка неиспользуемых портов в FireWall, не забудьте перед тестом разрешить доступ к тестируемым портам, иначе разницы по скорости может и не быть. Даже если неиспользуемые порты блокируются в FireWall, изменить настройки ядра на более безопасные будет не лишним.

Настройка FireWall ipfw в sysctl

Просмотреть настройки FireWall ipfw можно такой командой: sysctl net.inet.ip.fw. Описание переменных для настройки ipfw - ниже.

Переменная R/W Описание и значения
net.inet.ip.fw.static_count R Кол-во статичных правил установленных для ipfw. Другими словами, здесь указан счетчик количества правил прописанных администратором для ipfw.
net.inet.ip.fw.default_to_accept R Открыт или закрыт FireWall по умолчанию. Т.е. если, например, сбросить все правила (ipfw -f flush) и net.inet.ip.fw.default_to_accept равен единице, то ipfw будет пропускать все соединения, и соответственно, если сервер управляется удаленно, администратор не потеряет доступ к нему. Отредактировать это значение можно пересобрав ядро FreeBSD, добавив в /boot/loader.conf строку net.inet.ip.fw.default_to_accept=1 или отредактировав rc.conf, добавив переменную firewall_type="open".
net.inet.ip.fw.tables_max W Максимальное кол-во динамических таблиц ipfw, с 7 версии FreeBSD этот параметр можно изменить через sysctl. По умолчанию значение net.inet.ip.fw.tables_max равно 128.
net.inet.ip.fw.default_rule R Номер правила по умолчанию, которое устанавливается переменной net.inet.ip.fw.default_to_accept. Изменить значение можно в /boot/loader.conf. По умолчанию значение net.inet.ip.fw.default_rule = 65535
net.inet.ip.fw.verbose_limit W Максимальное кол-во сообщений, записываемых в лог-файл (/var/log/security), если значение равно нулю - ограничений нет.
net.inet.ip.fw.verbose R .
net.inet.ip.fw.autoinc_step R .
net.inet.ip.fw.one_pass R .
net.inet.ip.fw.dyn_keepalive R .
net.inet.ip.fw.dyn_short_lifetime R .
net.inet.ip.fw.dyn_udp_lifetime R .
net.inet.ip.fw.dyn_rst_lifetime R .
net.inet.ip.fw.dyn_fin_lifetime R .
net.inet.ip.fw.dyn_syn_lifetime R .
net.inet.ip.fw.dyn_ack_lifetime R .
net.inet.ip.fw.dyn_max R .
net.inet.ip.fw.dyn_count R .
net.inet.ip.fw.curr_dyn_buckets R .
net.inet.ip.fw.dyn_buckets R .
net.inet.ip.fw.enable R .

Опубликовано: 2013/08/06
HTML-код ссылки на эту страницу:
<a href="https://petrenco.com/freebsd.php?txt=178" target="_blank">Настройка FreeBSD при помощи sysctl</a>
11871
Комментарии
Отличная статья !
Добавить комментарий
Ваш e-mail: (не виден посетителям сайта)
Ваше имя:
Комментарий:
Символы с картинки:
Только выделенные поля формы добавления комментариев обязательны к заполнению.