Настройка серверов и сайтов на Linux/Unix под "ключ". Услуги системного администратора. Всегда онлайн в телеграм.

Регистрация Войти
Вход на сайт
Качественные бесплатные шаблоны dle скачать с сайта
» » » Укрепляем BSD с помощью уровней безопасности

Укрепляем BSD с помощью уровней безопасности

10-02-2012
Автор: synergix
Просмотров: 8 600
Комментариев: 0
Версия для печати

Уровни безопасности — это один из тех инструментов, что может быть использован для поддержания состояния системы на должной отметке. В этой статье раскрывается как конфигурировать уровни безопасности посредством securelevel для OpenBSD, FreeBSD, NetBSD и DragonFlyBSD.
Назначение функции уровня безопасности заключается в ограничении возможностей ядра, в зависимости от выбираемого уровня. По умолчанию,полная функциональность во все BSD-ядра включена, включая возможность производить изменения на этапе старта системы.
Изменения проводятся в соответствии с настройками в файле rc.conf. Уровень безопасности может быть повышен в работающей системе, но понизить получится только из однопользовательского режима, либо перезагрузившись. Во FreeBSD, очевидно, опция REGRESSION
вкомпилирована в ядро, так, чтобы можно было задействовать значение sysctl для понижения уровня безопасности. Настройки этого уровня совпадают практически для всего семейства BSD. В Листинге 1 приведены начальные значения для каждой операционной системы: FreeBSD 8.2, OpenBSD 5.0, NetBSD 5.1, DragonFlyBSD 2.10.



Листинг 1. Следующие значения используются при старте каждой системы.
FreeBSD 8.2
kern.securelevel: -1

OpenBSD 5.0
kern.securelevel=1

NetBSD 5.1
kern.securelevel = -1

DragonFlyBSD 2.10
kern.securelevel: -1


Самой отличительной системой является OpenBSD, в которой уровень безопасности по умолчанию равен 1. Другие же три системы находятся по умолчанию в незащищенном режиме. В OpenBSD и NetBSD применяются одинаковые настройки, также как и в паре FreeBSD / DragonFlyBSD. На уровне со значением -1, все устройства/файлы/память можно читать и писать в них. Как указывается в man-справке, эти настройки во FreeBSD, NetBSD и DragonFlyB-SD должны быть изменены на нужные.

Файловые свойства могут быть усилены с помощью утилиты chflags, как проиллюстрировано в Листинге 2.

Уровень безопасности может быть повышен за счет обновления с помощью утилиты sysctl значения для переменной kern.securelevel.



freebsd# ls
test.conf
freebsd# chflags schg test.conf
freebsd# ls -lo
total 2
-rw-r-----  1 root  wheel  schg 22 Nov 16 12:00 test.
conf
freebd# rm -rf test.conf
rm: test.conf: Operation not permitted
freebsd# chflags noschg test.conf
freebsd# rm -rf test.conf
freebsd# ls
freebsd# 
freebsd# echo “LogEntry: Test” >> test.log
freebsd# wc -l test.log
       1 test.log
freebsd# chflags sappnd test.log
freebsd# ls -lo
 total 2
-rw-r--r--  1 root  wheel  sappnd 15 Nov 16 12:24 test.log
freebsd # echo “LogEntry : Test ” > > test.log
freebsd # wc –l test.log
       2 test.log
freebsd# rm -rf test.log 
rm: test.log: Operation not permitted

freebsd# chflags nosappnd test.log 
freebsd# rm -rf test.log 
freebsd# ls 
freebsd# 

Работаем с флагами  schg и sappnd в OpenBSD
# ls
test.conf
# chflags schg test.conf
# ls -lo
total 4
-rw-r--r--  1 root  wheel  schg 11 Nov 16 11:23 test.
conf
# rm -rf test.conf
rm: test.conf: Operation not permitted
# chflags noschg test.conf
chflags: test.conf: Operation not permitted
# echo “LogEntry: Test” >> test.log
# wc -l  test.log
       1 test.log
#chflags sappnd test.log
# echo “LogEntry: Test” >> test.log 
# wc -l test.log
       2 test.log
# rm -rf test.log
rm: test.log: Operation not permitted
# chflags nosappnd test.log
chflags: test.log: Operation not permitted



Вывод команды chflags для систем For FreeBSD, NetBSD и DragonFlyBSD, которые находятся на первом уровне безопасности, аналогичен ситуации с Open-BSD, т.е. когда она уже находится на стандартном для нее первом уровне. Применение флага schg для конфигурационных файлов, позволяет заблокировать их изменение, и тем самым сохранить целостность системы. Такую же операцию можно произвести и над лог-файлами. Во FreeBSD и DragonFlyBSD можно ограничить загрузку и выгрузку из памяти модулей ядра.


Это повлияет на работу утилит kldload и kldunload. Другой важной стороной является то, как реализованы уровны безопасности внутри jail-контейнеров FreeBSD. Контейнер внутри может использовать более высокое значение, даже если сам хост использует более низкое. Данная особенность позволяет хосту искусно манипулировать нужными файлами даже находящими внутри jail-контейнера. Другой отличительной особенностью в операционных системах семейства BSD является максимальный уровень безопасности.

Во FreeBSD и DragonFlyBSD используется максимальное значение 3, что по функционалу равно второму уровню в OpenBSD и NetBSD. Разница заключается в разном формате работы с сетевыми настройками, которые используются в OpenBSD и NetBSD на уровне 2, но не используются во FreeBSD/DragonFlyBSD. Для последних, этот функционал располагается в третьем уровне. Второй уровень безопасности препятствует переводу времени часов назад, или же увеличению более, чем на одну секунду вперед. Такая настройка, будучи применена вместе с флагом sappnd, позволяет вести лог-файлы не только в полной сохранности, но и быть абсолютно точными с тем временем, когда туда добавлялись новые записи событий. На третьем уровне безопасности (равному уровня 2 в отношении OpenBSD/NetBSD) уже правила файрвола нельзя будет изменить. Системный уровень нужно будет понизить, прежде чем внести изменения в операционную систему. Примерный вывод команд для OpenBSD приведен в Листинге 4.


Хотя эти функции действительно очень помогают заблокировать операционную систему на модификацию, они должны быть хорошо изучены и поняты прежде, чем вы отправите систему в реальную эксплуатацию. В книге по FreeBSD в разделе, посвященном безопасности, отмечается, что системные файлы перед загрузкой должны быть защищены — тогда применение различных уровней безопасности будет эффективным. Если же атакующий способен запустить какой-либо свой код, прежде чем уровень выставлен, то защиту можно будет обойти. Помимо этого, надо учитывать, что для обновления системы придется или же переходить в однопользовательский режим, либо выводить ее полностью из работы. Как и любой другой инструмент безопасности, настройка уровня безопасности само по себе не является решением. Он просто предоставляет механизм поддерживания целостности работающей операционной системы. Существует ряд других, более гибких, вариантов ограничения доступа к файлам. Например, контрольные листы доступа (access control lists — ACL) и мандатный контроль доступа (mandatory access controls — MAC).
Задействуя все доступные инструменты в BSD-системах, можно содержать серверы в крайне защищенном состоянии, и на протяжении всего срока эксплуатации держать в том виде, в котором они были настроены в самом начале.

Рейтинг статьи:
  • 0
Нашли ошибку?   
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо зайти на сайт под своим именем.

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.