LXF83:AppArmor

Материал из Linuxformat.

(Различия между версиями)
Перейти к: навигация, поиск
(Новая: == Армированный Linux == ''AppArmor – отличный, гибкий инструмент безопасности для Linux. Его создатель, '''Криспи...)
Строка 2: Строка 2:
''AppArmor – отличный, гибкий инструмент безопасности для Linux. Его создатель, '''Криспин Коуэн''', поведает вам о нем.''
''AppArmor – отличный, гибкий инструмент безопасности для Linux. Его создатель, '''Криспин Коуэн''', поведает вам о нем.''
-
Основная беда безопаснос-
 
-
ти приложений – невоз-
 
-
можно сказать, как пове-
 
-
дет себя ваше прило-
 
-
жение в нестандартных
 
-
условиях: число состоя-
 
-
ний и вариантов ввода слишком велико,
 
-
чтобы исчерпывающе протестировать даже
 
-
небольшую программу. Когда это вылива-
 
-
ется в проблему? Когда некто обнаружива-
 
-
ет, что определённый набор входных дан-
 
-
ных приводит к некорректному поведению
 
-
программы, и разрабатывает приложение,
 
-
эксплуатирующее найденную уязвимость
 
-
(подобные приложения так и называют –
 
-
эксплойты, exploits).
 
-
Для решения проблемы эксплойтов и
+
Основная беда безопасности приложений – невозможно сказать, как поведет себя ваше приложение в нестандартных условиях: число состояний и вариантов ввода слишком велико, чтобы исчерпывающе протестировать даже небольшую программу. Когда это выливается в проблему? Когда некто обнаруживает, что определённый набор входных данных приводит к некорректному поведению программы, и разрабатывает приложение, эксплуатирующее найденную уязвимость (подобные приложения так и называют – эксплойты, exploits).
-
разработан AppArmor. AppArmor обеспе-
+
-
чивает безопасность приложений, застав-
+
-
ляя их делать только то, что они обяза-
+
-
ны делать и не более того. Конкретно,
+
-
AppArmor контролирует файлы и функции
+
-
POSIX.1e (см. man 7 capabilities), к
+
-
которым приложение имеет доступ, пос-
+
-
кольку контроль над этими ресурсами и
+
-
привилегиями на вашей машине и есть
+
-
мечта злоумышленника. В данной статье
+
-
мы разъясним, как настроить и исполь-
+
-
зовать AppArmor для защиты ваших про-
+
-
грамм и системы от атак.
+
-
AppArmor полностью интегрирован в
+
Для решения проблемы эксплойтов и разработан AppArmor. AppArmor обеспечивает безопасность приложений, заставляя их делать только то, что они обязаны делать и не более того. Конкретно, AppArmor контролирует файлы и функции POSIX.1e (см. man 7 capabilities), к которым приложение имеет доступ, поскольку контроль над этими ресурсами и привилегиями на вашей машине и есть мечта злоумышленника. В данной статье мы разъясним, как настроить и использовать AppArmor для защиты ваших программ и системы от атак.
-
SUSE Linux 10.1, SLES 9 SP3 и SUSE Linux
+
-
Enterprise 10. Он устанавливается и работа-
+
-
ет по умолчанию, но использует скромный
+
-
набор профилей (об этом позже). Намного
+
-
больший набор профилей можно найти
+
-
в /etc/apparmor/profiles/extras/; вы
+
-
можете скопировать их в /etc/apparmor.d,
+
-
где хранятся активные профили. В SUSE,
+
-
интерфейс пользователя Yast содержит
+
-
кнопку AppArmor, которая выводит гра-
+
-
фический эквивалент описываемых здесь
+
-
инструментов genprof и logprof.
+
-
AppArmor вступил в жизнь как пропри-
+
AppArmor полностью интегрирован в SUSE Linux 10.1, SLES 9 SP3 и SUSE Linux Enterprise 10. Он устанавливается и работает по умолчанию, но использует скромный набор профилей (об этом позже). Намного больший набор профилей можно найти в /etc/apparmor/profiles/extras/; вы можете скопировать их в /etc/apparmor.d, где хранятся активные профили. В SUSE, интерфейс пользователя Yast содержит кнопку AppArmor, которая выводит графический эквивалент описываемых здесь инструментов genprof и logprof.
-
етарная система, но после приобретения
+
 
-
Immunix Inc в 2005 году фирмой Novell
+
AppArmor вступил в жизнь как проприетарная система, но после приобретения Immunix Inc в 2005 году фирмой Novell приложение выпускается по лицензии GPL. С тех пор AppArmor был портирован на Slackware, Ubuntu и Pardus Linux, турецкий дистрибутив.
-
приложение выпускается по лицензии GPL.
+
-
С тех пор AppArmor был портирован на
+
-
Slackware, Ubuntu и Pardus Linux, турецкий
+
-
дистрибутив.
+
Для установки AppArmor в Ubuntu, выполните
Для установки AppArmor в Ubuntu, выполните
sudo dpkg -i apparmor-* libapparmor1_2.0-0ubuntu2_i386.deb linux-image-2.6.15-21-386_2.6.15-21.32mr1_i386.deb
sudo dpkg -i apparmor-* libapparmor1_2.0-0ubuntu2_i386.deb linux-image-2.6.15-21-386_2.6.15-21.32mr1_i386.deb
-
Заметьте, что эти пакеты включают
+
Заметьте, что эти пакеты включают новое ядро, поскольку для поддержки AppArmor необходима небольшая заплатка для ядра. Ubuntu основан на Debian, так что пакеты прекрасно подойдут для Debian, MEPIS и прочих систем на базе Debian. Если вы хотите использовать AppArmor в другой системе Linux, потребуется его портировать – см. врезку «Двигаемся дальше» на странице 47.
-
новое ядро, поскольку для поддержки
+
-
AppArmor необходима небольшая заплатка
+
-
для ядра. Ubuntu основан на Debian, так
+
-
что пакеты прекрасно подойдут для Debian,
+
-
MEPIS и прочих систем на базе Debian.
+
-
Если вы хотите использовать AppArmor в
+
-
другой системе Linux, потребуется его пор-
+
-
тировать – см. врезку «Двигаемся дальше»
+
-
на странице 47.
+
=== Обезопасим NTPD ===
=== Обезопасим NTPD ===
-
Теории достаточно; обратимся к примеру.
+
Теории достаточно; обратимся к примеру. Рассмотрим NTPD, Network Time Protocol Daemon. Он обеспечивает синхронизацию вашей системы с главным сервером вашей локальной сети или с интернетом – важная задача! Однако для изменения вашего системного времени NTPD потребуются привилегии суперпользователя (root), а также открытый сетевой порт, чтобы узнавать время на главном сервере. В итоге получается убойная комбинация: открытый сетевой порт и доступ к процессам с правами суперпользователя – классический пример из руководства по безопасности. Злодей, нашедший уязвимость в коде NTPD, сможет атаковать демона NTP и получить права суперпользователя на вашем компьютере.
-
Рассмотрим NTPD, Network Time Protocol
+
 
-
Daemon. Он обеспечивает синхронизацию
+
Права суперпользователя отнять нельзя – ведь тогда NTPD не сможет менять время; открытый сетевой порт удалить тоже нельзя – тогда NTPD не сможет узнавать время. Тут-то и поможет AppArmor, ограничив привилегии NTPD посредством профиля безопасности. Вот AppArmor-профиль для программы ntpd:
-
вашей системы с главным сервером вашей
+
-
локальной сети или с интернетом – важная
+
-
задача! Однако для изменения вашего сис-
+
-
темного времени NTPD потребуются при-
+
-
вилегии суперпользователя (root), а так-
+
-
же открытый сетевой порт, чтобы узнавать
+
-
время на главном сервере. В итоге получа-
+
-
ется убойная комбинация: открытый сете-
+
-
вой порт и доступ к процессам с правами
+
-
суперпользователя – классический пример
+
-
из руководства по безопасности. Злодей,
+
-
нашедший уязвимость в коде NTPD, смо-
+
-
жет атаковать демона NTP и получить права
+
-
суперпользователя на вашем компьютере.
+
-
Права суперпользователя отнять
+
-
нельзя – ведь тогда NTPD не сможет менять
+
-
время; открытый сетевой порт удалить тоже
+
-
нельзя – тогда NTPD не сможет узнавать
+
-
время. Тут-то и поможет AppArmor, огра-
+
-
ничив привилегии NTPD посредством про-
+
-
филя безопасности. Вот AppArmor-профиль
+
-
для программы ntpd:
+
/usr/sbin/ntpd {
/usr/sbin/ntpd {
#include <abstractions/base>
#include <abstractions/base>
Строка 121: Строка 45:
/var/run/ntpd.pid w,
/var/run/ntpd.pid w,
}
}
-
Сейчас ntpd запускается от имени root,
+
Сейчас ntpd запускается от имени root, то есть имеет доступ ко всем функциям POSIX.1e. Но этот профиль ограничивает доступ ntpd семью функциями, описанными в коде. Будучи root-процессом, ntpd мог бы читать, записывать и запускать любой файл в файловой системе, но теперь ему доступны только файлы, описанные в профиле.
-
то есть имеет доступ ко всем функциям
+
{{Врезка
-
POSIX.1e. Но этот профиль ограничивает
+
| Выравнивание = right
-
доступ ntpd семью функциями, описанными
+
| Ширина = 200px
-
в коде. Будучи root-процессом, ntpd мог бы
+
| Заголовок = Википедия
-
читать, записывать и запускать любой файл
+
| Заголовок снизу = 1
-
в файловой системе, но теперь ему доступ-
+
| Содержание = '''Википе́дия''' — свободная энциклопедия.
-
ны только файлы, описанные в профиле.
+
}}
-
Что же произойдёт, при наличии данно-
+
 
-
го профиля, если злоумышленник припас
+
Что же произойдёт, при наличии данного профиля, если злоумышленник припас программу-эксплойт, направленную против ntdp? Будьте спокойны: ничего. У него нет прав на выполнение, а значит, простой shell-код [«полезная нагрузка» эксплойта, выполняющая задуманные злоумышленником действия, – прим. ред.] вида exec(sh) не пройдет. Если ntpd зачем-либо потребуется командная оболочка (shell), злоумышленник сможет запустить ее, но только из-под профиля, и сможет читать и записывать лишь файлы, принадлежащие ntpd на основании профиля. Короче говоря, злоумышленник сможет разве что изменить ваше системное время. AppArmor разрешил ntpd выполнять только конкретные операции – в литературе по безопасности это называется запуском приложения с наименьшими привилегиями.
-
программу-эксплойт, направленную против
+
-
ntdp? Будьте спокойны: ничего. У него нет
+
-
прав на выполнение, а значит, простой
+
-
shell-код [«полезная нагрузка» эксплойта,
+
-
выполняющая задуманные злоумышленни-
+
-
ком действия, – прим. ред.] вида exec(sh)
+
-
не пройдет. Если ntpd зачем-либо потребу-
+
-
ется командная оболочка (shell), злоумыш-
+
-
ленник сможет запустить ее, но только из-
+
-
под профиля, и сможет читать и записывать
+
-
лишь файлы, принадлежащие ntpd на осно-
+
-
вании профиля. Короче говоря, злоумыш-
+
-
ленник сможет разве что изменить ваше
+
-
системное время. AppArmor разрешил ntpd
+
-
выполнять только конкретные операции – в
+
-
литературе по безопасности это называет-
+
-
ся запуском приложения с наименьшими
+
-
привилегиями.
+

Версия 04:10, 10 марта 2008

Армированный Linux

AppArmor – отличный, гибкий инструмент безопасности для Linux. Его создатель, Криспин Коуэн, поведает вам о нем.


Основная беда безопасности приложений – невозможно сказать, как поведет себя ваше приложение в нестандартных условиях: число состояний и вариантов ввода слишком велико, чтобы исчерпывающе протестировать даже небольшую программу. Когда это выливается в проблему? Когда некто обнаруживает, что определённый набор входных данных приводит к некорректному поведению программы, и разрабатывает приложение, эксплуатирующее найденную уязвимость (подобные приложения так и называют – эксплойты, exploits).

Для решения проблемы эксплойтов и разработан AppArmor. AppArmor обеспечивает безопасность приложений, заставляя их делать только то, что они обязаны делать и не более того. Конкретно, AppArmor контролирует файлы и функции POSIX.1e (см. man 7 capabilities), к которым приложение имеет доступ, поскольку контроль над этими ресурсами и привилегиями на вашей машине и есть мечта злоумышленника. В данной статье мы разъясним, как настроить и использовать AppArmor для защиты ваших программ и системы от атак.

AppArmor полностью интегрирован в SUSE Linux 10.1, SLES 9 SP3 и SUSE Linux Enterprise 10. Он устанавливается и работает по умолчанию, но использует скромный набор профилей (об этом позже). Намного больший набор профилей можно найти в /etc/apparmor/profiles/extras/; вы можете скопировать их в /etc/apparmor.d, где хранятся активные профили. В SUSE, интерфейс пользователя Yast содержит кнопку AppArmor, которая выводит графический эквивалент описываемых здесь инструментов genprof и logprof.

AppArmor вступил в жизнь как проприетарная система, но после приобретения Immunix Inc в 2005 году фирмой Novell приложение выпускается по лицензии GPL. С тех пор AppArmor был портирован на Slackware, Ubuntu и Pardus Linux, турецкий дистрибутив.

Для установки AppArmor в Ubuntu, выполните

sudo dpkg -i apparmor-* libapparmor1_2.0-0ubuntu2_i386.deb linux-image-2.6.15-21-386_2.6.15-21.32mr1_i386.deb

Заметьте, что эти пакеты включают новое ядро, поскольку для поддержки AppArmor необходима небольшая заплатка для ядра. Ubuntu основан на Debian, так что пакеты прекрасно подойдут для Debian, MEPIS и прочих систем на базе Debian. Если вы хотите использовать AppArmor в другой системе Linux, потребуется его портировать – см. врезку «Двигаемся дальше» на странице 47.

Обезопасим NTPD

Теории достаточно; обратимся к примеру. Рассмотрим NTPD, Network Time Protocol Daemon. Он обеспечивает синхронизацию вашей системы с главным сервером вашей локальной сети или с интернетом – важная задача! Однако для изменения вашего системного времени NTPD потребуются привилегии суперпользователя (root), а также открытый сетевой порт, чтобы узнавать время на главном сервере. В итоге получается убойная комбинация: открытый сетевой порт и доступ к процессам с правами суперпользователя – классический пример из руководства по безопасности. Злодей, нашедший уязвимость в коде NTPD, сможет атаковать демона NTP и получить права суперпользователя на вашем компьютере.

Права суперпользователя отнять нельзя – ведь тогда NTPD не сможет менять время; открытый сетевой порт удалить тоже нельзя – тогда NTPD не сможет узнавать время. Тут-то и поможет AppArmor, ограничив привилегии NTPD посредством профиля безопасности. Вот AppArmor-профиль для программы ntpd:

/usr/sbin/ntpd {
#include <abstractions/base>
#include <abstractions/nameservice>
capability ipc_lock,
capability net_bind_service,
capability setgid,
capability setuid,
capability sys_chroot,
capability sys_resource,
capability sys_time,
/drift/ntp.drift rwl,
/drift/ntp.drift.TEMP rwl,
/etc/ntp.conf r,
/etc/ntp/drift* rwl,
/etc/ntp/keys r,
/etc/ntp/step-tickers r,
/tmp/ntp* rwl,
/usr/sbin/ntpd rix,
/var/lib/ntp/drift rwl,
/var/lib/ntp/drift.TEMP rwl,
/var/lib/ntp/drift/ntp.drift r,
/var/lib/ntp/var/run/ntp/ntpd.pid w,
/var/log/ntp w,
/var/log/ntp.log w,
/var/run/ntpd.pid w,
}

Сейчас ntpd запускается от имени root, то есть имеет доступ ко всем функциям POSIX.1e. Но этот профиль ограничивает доступ ntpd семью функциями, описанными в коде. Будучи root-процессом, ntpd мог бы читать, записывать и запускать любой файл в файловой системе, но теперь ему доступны только файлы, описанные в профиле.

Википедия

Википе́дия — свободная энциклопедия.

Что же произойдёт, при наличии данного профиля, если злоумышленник припас программу-эксплойт, направленную против ntdp? Будьте спокойны: ничего. У него нет прав на выполнение, а значит, простой shell-код [«полезная нагрузка» эксплойта, выполняющая задуманные злоумышленником действия, – прим. ред.] вида exec(sh) не пройдет. Если ntpd зачем-либо потребуется командная оболочка (shell), злоумышленник сможет запустить ее, но только из-под профиля, и сможет читать и записывать лишь файлы, принадлежащие ntpd на основании профиля. Короче говоря, злоумышленник сможет разве что изменить ваше системное время. AppArmor разрешил ntpd выполнять только конкретные операции – в литературе по безопасности это называется запуском приложения с наименьшими привилегиями.

Личные инструменты
  • Купить электронную версию
  • Подписаться на бумажную версию