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

Уровни безопасности — это один из тех инструментов, что может быть использован для поддержания состояния системы на должной  отметке.

Назначение функции уровня безопасности заключается в ограничении возможностей ядра, в зависимости от выбираемого уровня. По умолчанию, полная функциональность во все BSD-ядра включена,включая возможность производить изменения на этапе старта системы. Изменения проводятся в соответствии с настройками в файле rc.conf. Уровень безопасности может быть повышен в работающей системе, но понизить получится только из однопользовательского режима, либо перезагрузившись. Во FreeBSD, очевидно, опция REGRESSION вкомпилирована в ядро, так, чтобы можно было задействовать значение sysctl для понижения уровня безопасности.

Настройки этого уровня совпадают практически для всего семейства BSD.

 В Листинге 1

приведены начальные значения для каждой операционной системы: FreeBSD 8.2, OpenBSD 5.0, NetBSD 5.1, DragonFlyBSD 2.10.

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

Листинге 2.

 

Листинг 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

 

Листинг 2. 

Следующие команды применяются в семействе систем BSD для выставления флагов sappnd и schg (соответственно, «system append-only» и «system immutable»). Обратите внимание, как на этом фоне выделяется OpenBSD — она не позволяет изменить эти флаги, т.к. по умолчанию находится на первом безопасном уровне.

 Выставляем флаги schg и sappnd в системах FreeBSD, NetBSD и DragonFlyBSD:

 

f

reebsd# 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#

 

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

Вывод команды chflags для систем  FreeBSD, Net-BSD и 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) уже правила файрвола нельзя будет изменить. Системный уровень нужно будет понизить, прежде чем внести изменения в операционную систему.

Хотя эти функции действительно очень помогают заблокировать операционную систему на модификацию, они должны быть хорошо изучены и поняты прежде, чем вы отправите систему в реальную эксплуатацию. В книге по FreeBSD в разделе, посвященном безопасности, отмечается, что системные файлы перед загрузкой должны быть защищены — тогда применение различных уровней безопасности будет эффективным. Если же атакующий способен запустить какой-либо свой код,прежде чем уровень выставлен, то защиту можно будет обойти. Помимо этого, надо читывать, что для обновления системы придется или же переходить в однопользовательский режим, либо выводить ее полностью из работы.

Как и любой другой инструмент безопасности,настройка уровня безопасности само по себе не является решением. Он просто предоставляет механизм поддерживания целостности работающей операционной системы. Существует ряд других, более гибких, вариантов ограничения доступа к файлам.

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *