Настройка apparmor в ubuntu

Using AppArmor

The optional apparmor-utils package contains command line utilities that you can use to change the AppArmor execution mode, find the status of a profile, create new profiles, etc.

  • apparmor_status is used to view the current status of AppArmor profiles.

  • aa-complain places a profile into complain mode.

  • aa-enforce places a profile into enforce mode.

  • The directory is where the AppArmor profiles are located. It can be used to manipulate the mode of all profiles.

    Enter the following to place all profiles into complain mode:

    To place all profiles in enforce mode:

  • apparmor_parser is used to load a profile into the kernel. It can also be used to reload a currently loaded profile using the -r option after modifying it to have the changes take effect.
    To reload a profile:

  • can be used to reload all profiles:

  • The directory can be used along with the apparmor_parser -R option to disable a profile.

    To re-enable a disabled profile remove the symbolic link to the profile in . Then load the profile using the -a option.

  • AppArmor can be disabled, and the kernel module unloaded by entering the following:

  • To re-enable AppArmor enter:

Немного теории

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

Профили могут работать в двух режимах:

  • Enforce — ядро гарантирует соблюдение правил, указанных в файле профиля, все нарушения блокируются, а также записываются в файл журнала, где могут быть очень легко просмотрены.
  • Complain — режим обучения, программа будет только регистрировать нарушения ничего не блокируя.

Таким образом, для каждой программы, которую нужно контролировать создается файл профиля, если его нет или он отключен, программа выполняется без ограничений. Это гарантирует, стабильную работу системы и позволяет контролировать работу программ.

Inspect the current state

AppArmor profiles can be set to different modes:

  • complain mode: violations to the policy will only be logged

  • enforce mode: operations that violate the policy will be blocked.

Note that deny rules in profiles are enforced/blocked even in complain mode.

Find out if AppArmor is enabled (returns Y if true):

$ cat /sys/module/apparmor/parameters/enabled

List all loaded AppArmor profiles for applications and processes and detail their status (enforced, complain, unconfined):

$ sudo aa-status

List running executables which are currently confined by an AppArmor profile:

$ ps auxZ | grep -v '^unconfined'

List of processes with tcp or udp ports that do not have AppArmor profiles loaded:

$ sudo aa-unconfined
$ sudo aa-unconfined --paranoid

Using aa-logprof to Refine the Profile

The tool will parse the AppArmor messages and suggest policy rules which would permit certspotter to run under confinement.

There is no problem with letting certspotter read this file which specifies the maximum number of open socket connections, so we type A to allow it.

certspotter uses the network to retrieve information from the certificate transparency logs. We have the choice to either specifically allow this first network related access or to use the existing nameservice abstraction which grants common access patterns. You can review the details of the abstraction in . This access pattern makes sense for certspotter, so let’s allow it.

We don’t have a problem with certspotter knowing the system’s hostname, so let’s Allow it.

certspotter reads the watchlist to determine which domains to monitor. We want certspotter to work for all users of the system and not just ourselves, so suggested rule 1 is better than rule 2. However we also know that certspotter uses the directory to write information that it discovers, its lock file and other data, so this ‘r’ rule will be insufficient. Additionally, we would prefer to use the tunable rather than the globbed path. For now, let’s accept it as a placeholder and take a TODO to touch it up later.

When we touch up the watchlist rule, we should cover all of these entries about files in , so we will Ignore these suggested rules for now.

<rule suggestions for other files in $HOME/.certspotter omitted>

When you Save the profile, automatically causes the profile to be reloaded which immediately silences all of the AppArmor messages about certspotter using the network.

AppArmor deny rules

We’re feeling especially paranoid today, so we are going to add in a few rules to ensure that certspotter can’t exfiltrate some of the data from . While AppArmor profiles are default-deny by default, adding explicit deny rules can guard against profile mistakes:

The fake directory doesn’t exist on this system, but the policy rule is still valid and AppArmor will enforce rules on it if it ever gets created someday. Remember when specifying a directory itself to use the trailing ‘/’; this is how AppArmor tells the difference between a file and a directory.

Don’t forget to reload the policy!

Ok, let’s restart certspotter and see if it works:

It seems to be working with no new denials being generated, so let’s take AppArmor out of complain mode for this profile and set it to enforcing:

Disable AppArmor framework

Systems should not generally need to have AppArmor disabled entirely. It is highly recommended that users leave AppArmor enabled and put the problematic profile into complain mode (see above), then file a bug using the procedures found in https://wiki.ubuntu.com/DebuggingApparmor. If AppArmor must be disabled (eg to use SELinux instead), users can:

sudo systemctl stop apparmor
sudo systemctl disable apparmor

On Ubuntu systems prior to Ubuntu 16.04 LTS:

sudo invoke-rc.d apparmor stop
sudo update-rc.d -f apparmor remove

To disable AppArmor in the kernel to either:

  • adjust your kernel boot command line (see /etc/default/grub) to include either

  • * ‘apparmor=0’
  • * ‘security=XXX’ where XXX can be «» to disable AppArmor or an alternative LSM name, eg. ‘security=»selinux»‘

  • remove the apparmor package with your package manager. Do not ‘purge’ apparmor if you think you might want to reenable AppArmor at a later date

История

  • В июне 2008 Novell выпускает AppArmor 2.3 с использованием другой итерации патчей vfs и расширения к соответствующему движку.
  • В мае 2009 Canonical Inc. берет на себя обслуживание и разработку AppArmor.
  • Выпущен AppArmor 2.4, основанный на большом обновлении ядра в AppArmor 2.3.
  • В июле 2010 г. модуль безопасности AppArmor слился с деревом security-next. Основные функции появились в официальном ядре Linux 2.6.36. Для работы с текущим пользовательским пространством требуется несколько небольших исправлений совместимости.
  • В мае 2013 года поддержка инструмента была внедрена в Debian 7 Wheezy.

Configuration

Auditing and generating profiles

To create new profiles the Audit framework should be running. This is because Arch Linux adopted systemd and does not do kernel logging to file by default. AppArmor can grab kernel audit logs from the userspace auditd daemon, allowing you to build a profile.

Note that also offers deny rules which are actually not strictly necessary as according to the basic AppArmor logic everything is forbidden what is not explicitly allowed by a rule. However, deny rules serve two purposes:

  1. deny rules silence logging and make subsequent runs of aa-logprof less noisy. It is important to keep in mind that deny rules are enforced also in complain mode — hence, if an application does not work properly even in complain mode it should be checked if a deny rule in the profile or in one of the included abstractions is the culprit.

In addition to the default profiles in , there are more predefined profiles in . Note that those are not necessarily deemed production-ready, so manual intervention or usage of may be required.

Understanding profiles

Profiles are human readable text files residing under describing how binaries should be treated when executed. A basic profile looks similar to this:

/etc/apparmor.d/usr.bin.test
#include <tunables/global>

profile test /usr/lib/test/test_binary {
    #include <abstractions/base>

    # Main libraries and plugins
    /usr/share/TEST/** r,
    /usr/lib/TEST/** rm,

    # Configuration files and logs
    @{HOME}/.config/ r,
    @{HOME}/.config/TEST/** rw,
}

Most common use cases are covered by the following statements:

  • — read: read data
  • — write: create, delete, write to a file and extend it
  • — memory map executable: memory map a file executable

Remember that those permission do not allow binaries to exceed the permission dictated by the Discretionary Access Control (DAC).

Installation

AppArmor is available in all .

To enable AppArmor as default security model on every boot, set the following kernel parameter:

lsm=landlock,lockdown,yama,apparmor,bpf

Note: The kernel parameter sets the initialization order of Linux security modules. The kernel’s configured value can be found with and the current value with .

  • should be omitted from as it will always get included automatically.

Install for userspace tools and libraries to control AppArmor. To load all AppArmor profiles on startup, enable .

Custom kernel

When , it is required to set at least the following options:

CONFIG_SECURITY_APPARMOR=y
CONFIG_AUDIT=y

To enable the AppArmor Linux security model by default and omit the need to set kernel parameters, additionally set the option and specify as the first «major» module in the list:

CONFIG_LSM="landlock,lockdown,yama,apparmor,bpf"

Проектирование приложения с поддержкой MAC

Системное ПО Описание
ОС Astra Linux Special Edition / SELinux ОС с поддержкой MAC. Предоставляет хранилище информации о мандатных разрешениях пользователей, связанное с хранилищем пользователей операционной системы. Предоставляет механизмы контроля доступа к объектам, защищаемым MAC (объектам файловой системы, запуску приложений в режиме мандатной метки и т.д.).
СУБД PostgreSQL (PostgresPro) Имеет интеграцию с хранилищем учетных записей и мандатных меток ОС. СУБД предоставляет функциональность присваивания мандатной метки к таким объектам, как кластер, база данных, таблица, столбец и запись.
Веб-сервер с поддержкой MAC (Apache Http Server) Ретранслирует мандатную метку от запроса клиента с поддержкой MAC и запускает обработчик приложения (скрипт/службу) с идентичной меткой и передачей данных аутентификации пользователя.
Браузер с поддержкой MAC (Mozilla Firefox) Считывает мандатную метку сеанса пользователя (графической оболочки пользователя) и добавляет ее в запросы к веб-приложениям.
  • Пользователи приложения должны быть зарегистрированы в хранилище пользователей операционной системы. Как минимум должен быть какой-то идентификатор, позволяющий однозначно сопоставить пользователя приложения с пользователем операционной системы (обычно это логин).
  • Пользователям приложения на уровне механизма MAC операционной системы должны быть настроены мандатные разрешения на определённые мандатные метки (диапазоны мандатных меток).
  1. Пользователь входит в ОС под своей личной УЗ в режиме требуемой ему метки. Запускает приложение. Процесс приложения наследует мандатную метку.
  2. Приложение взаимодействует с БД на PostgreSQL, отображая пользователю, к примеру, только записи таблиц БД с текущей мандатной меткой.
  1. Пользователь входит в ОС под своей личной УЗ в режиме требуемой ему метки. Запускает браузер с поддержкой MAC, в нашем примере — Mozilla Firefox («обычный» браузер для этих целей не подойдет). Процесс браузера наследует мандатную метку.
  2. Пользователь запрашивает адрес ресурса приложения с поддержкой мандатных меток. Браузер формирует запрос, добавляя в него мандатную метку.
  3. Запрос обрабатывает веб-сервер с поддержкой мандатных меток, в нашем примере — Apache Http Server. Веб-сервер (процесс которого работает в режиме минимальной мандатной метки) считывает мандатную метку запроса, находит приложение-обработчик запускает его процесс с переданной мандатной меткой.
  4. Приложение взаимодействует с БД на PostgreSQL, ретранслируя в запросах мандатную метку.

Как избежать MAC, когда его уже не избежать

  • Кроссплатформерность приложения (ограниченную только лишь возможностями языков программирования) и его независимость от среды выполнения.
  • Возможность использования современных инструментов виртуализации (например, Docker) с целью автоматизации.
  • Простоту тестирования и отладки функций, которые не связаны непосредственно с MAC.

Рекомендации:

Добавить параметр включения/отключения поддержки мандатных меток в приложении.

Во всех местах, требующих взаимодействия с MAC, прежде всего проверять значение параметра.

При отладке и тестировании необходимо отлаживать (на стороне команды разработки) и тестировать (на стороне команды тестирования) оба режима работы приложения.

Разделяй и властвуй

Рекомендация:  Следует разделить приложение на модули и классифицировать их по режимам обработки мандатных меток.

  • Минимальная метка. Модуль обрабатывает данные в режиме минимальной мандатной метки (минимальная метка, в которой функционируют процессы ОС — например, 0 мандатная метка) либо без мандатной метки.
  • Одна метка. Модуль работает с данными только одной мандатной метки выше минимальной мандатной метки (любой метки, отличной от той, в которой функционируют процессы ОС).
  • Несколько меток. Модуль работает с данными сразу нескольких мандатных меток (как метки, в которой функционируют процессы ОС, так и других меток, отличных от метки процессов ОС).

Рекомендация: При проектировании следует обеспечивать минимальную связность (cohesion) модулей, работающих в различных парадигмах обработки мандатных меток. 

Сила

Градусы

В некоторых системах пользователи имеют право решать, предоставлять ли доступ любому другому пользователю. Для этого у всех пользователей есть доступ ко всем данным. Это не обязательно верно для системы MLS. Если существуют отдельные лица или процессы, которым может быть отказано в доступе к каким-либо данным в системной среде, то системе необходимо доверять для обеспечения соблюдения MAC. Поскольку могут быть разные уровни классификации данных и допусков пользователей, это подразумевает количественную шкалу надежности. Например, для системной среды, содержащей засекреченную совершенно секретную информацию и не прошедших проверку пользователей, указана более высокая надежность, чем для среды с секретной информацией и пользователями, имеющими статус по крайней мере конфиденциально. Для обеспечения согласованности и устранения субъективности в отношении степеней надежности, обширный научный анализ и оценка рисков по этой теме позволили создать знаковую эталонную стандартизацию, в которой количественно оцениваются возможности устойчивости систем и сопоставляются их степени доверия, гарантируемые для различных сред безопасности. Результат задокументирован в CSC-STD-004-85. Были определены два относительно независимых компонента устойчивости: уровень доверия и функциональность. Оба они были указаны с такой степенью точности, которая гарантирует значительную уверенность в сертификации, основанной на этих критериях.

Оценка

В Общие критерии основаны на этой науке и он намерен сохранить уровень доверия , как уровни EAL и спецификации функциональности как Protection Profiles . Из этих двух основных компонентов объективных тестов устойчивости точно сохранились только уровни EAL. В одном случае уровень C2 TCSEC (не относящаяся к категории MAC) довольно точно сохранялся в общих критериях, как профиль защиты контролируемого доступа (CAPP). Профили защиты многоуровневой безопасности (MLS) (такие как MLSOSPP, аналогичные B2) являются более общими, чем B2. Они соответствуют MLS, но не имеют подробных требований к реализации, как их предшественники Orange Book , уделяя больше внимания целям. Это дает органам по сертификации больше субъективной гибкости при принятии решения о том, адекватно ли технические характеристики оцениваемого продукта достигают цели, что потенциально снижает согласованность оцениваемых продуктов и упрощает получение сертификата для менее надежных продуктов

По этим причинам важность технических деталей профиля защиты имеет решающее значение для определения пригодности продукта

Такая архитектура не позволяет аутентифицированному пользователю или процессу на определенной классификации или уровне доверия получить доступ к информации, процессам или устройствам на другом уровне. Это обеспечивает механизм сдерживания пользователей и процессов, как известных, так и неизвестных (неизвестная программа (например) может содержать ненадежное приложение, в котором система должна отслеживать и / или контролировать доступ к устройствам и файлам).

Установим Postfix, Dovecot, MySQL, phpMyAdmin, rkhunter, Binutils

Установим Postfix, Dovecot, MySQL, rkhunter и binutils с помошью команды:apt install -y postfix postfix-mysql postfix-doc mysql-client mysql-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve dovecot-lmtpd  sudo patch

Когда установщик попросит указать какую почтовый конфигурацию выбрать указываем Internet Site, в качестве System mail name указываем hostnameGeneral type of mail configuration: <— Internet SiteSystem mail name: <— server1.example.comОткроем TLS/SSL и submission порты в Postfix, для этого откроем файл /etc/postfix/master.cfvi /etc/postfix/master.cfи раскомментируем секции submission,  smtps, а также по первые 3 строчки в каждой секции и добавим к обеим  секциям строку (не забываем 2 пробела в начале строки): -o smtpd_client_restrictions=permit_sasl_authenticated,reject

Выполним перезагрузку postfix service postfix restartЧтобы базы данных были доступны удалено отредактируем файл /etc/mysql/mysql.conf.d/mysqld.cnf и закомментируем стоки: bind-address           = 127.0.0.1mysqlx-bind-address    = 127.0.0.1Ниже добавим строку:mysqlx=OFF

vi /etc/mysql/mysql.conf.d/mysqld.cnf

Перезапустим mysql и проверим, что сетевой доступ к mysql включен командой:service mysql restart && netstat -tap | grep mysql

Состояние рынка СУИД в России

В России увеличение спроса на СУИД наметилось недавно, и на средства УИД российские компании расходуют всего 2% бюджета информбезопасности. По мнению экспертов, это во многом обусловлено тем, что внедрение технологий УИД требует наличия в компании пакета нормативно-методических документов, обеспечивающих строгую формализацию процесса предоставления доступа пользователей к информационным ресурсам. Именно из-за отсутствия комплексного документационного обеспечения в области ИБ многие российские предприятия пока не готовы к внедрению СУИД.

Как сдерживающий фактор распространения данных продуктов эксперты называют высокую цену — от 60 до 100 долл. на пользователя, а также то, что данные решения находятся на стыке функций ИТ-департамента и подразделения безопасности (что затрудняет принятие и реализацию организационно-административных мер по УИД). К настоящему времени в России внедрено всего несколько СУИД. Однако можно предположить, что в ближайшем будущем в этом направлении будет осуществлен прорыв. Именно сейчас запускаются крупные и интересные проекты, которые предусматривают поэтапное развертывание УИД в течение одного-двух лет.

Сегодня в России СУИД представляют интерес для больших предприятий и организаций с развитой ИТ-инфраструктурой, таких как крупные телекомоператоры, банки, страховые компании, промышленные холдинги, нефтегазовые корпорации и госструктуры. Оценивая ежегодный объем закупок на российском рынке СУИД на несколько ближайших лет, наши эксперты приводят широкую вилку — от пяти до нескольких десятков миллионов долларов. При этом они учитывают, что количество потенциальных заказчиков, на ближайшие три-пять лет составит около сотни компаний при стоимости проекта от 1 млн. долл.

Примечания

  1. Управление идентификацией и доступом (Identity and Access Management)
  2. Из выступления Алябьев Андрей, Главный специалист отдела информационной безопасности Глобэксбанк на конференции TAdviser Security Day 2016
  3. Презентация Муравлев Вячеслав Викторович, Архитектор решений, группа компаний CUSTIS «Гибридный подход к управлению правами доступа: когда стандартного IDM не хватает», 2016 год CNews FORUM<
  4. Ежегодный индекс Gemalto Authentication and Identity Management Index 2017 рассказывает о новейших тенденциях и проблемах, связанных с конвергенций личных и рабочих учётных записей, использованием мобильных технологий в рабочем окружении и управлением доступом. В рамках опроса, проведённого независимой исследовательской фирмой Vanson Bourne, было проинтервьюировано 1150 ИТ-руководителей по всему миру с целью выяснить их мнение о различных аспектах защиты учётных записей и о политиках строгой аутентификации, применяемых уже сегодня или запланированных ко внедрению в будущем.

Tips for evaluating your AppArmor policy

Some tips when evaluating your AppArmor policy:

  • AppArmor provides additional permission checks to traditional Discretionary Access Controls (DAC). DAC is always checked in addition to the AppArmor permission checks. As such, AppArmor cannot override DAC to provide more access than what would be normally allowed.
  • AppArmor normalizes path names. It resolves symlinks and considers each hard link as a different access path.
  • Deny rules cannot be overridden by an allow rule.
  • Creation of files requires the create permission (implied by w) on the path to be created. Separate rules for writing to the directory of where the file resides are not required. Deletion works like creation but requires the delete permission (implied by w). Copy requires ‘r’ of the source with create and write at the destination (implied by w). Move is like copy, but also requires delete at source.
  • The profile must be loaded before an application starts for the confinement to take effect, but policy may be reloaded will the application is running with the rules taking effect immediately. You will want to make sure that you load policy during boot before any confined daemons or applications. This is done for you in Ubuntu.

Aha! The tip about deny rules not being able to be overridden by an allow rule is why we can’t just deny all of to certspotter and just allow it access to .

For a final test, let’s add a cron job for certspotter as the project recommends.

Remember to check periodically to see if any new denials have been generated. For bonus points, try running through the certspotter package tests to exercise less common code path.

Generating a basic profile

The easiest way to get started is to create a skeleton profile, set AppArmor to complain mode for your target and then use the tool to evaluate the denials.

We’ll use to generate the skeleton policy; let’s see what it generates (be sure to specify the absolute path to the application):

Looks pretty basic, so let’s write that output into the profile file (the name of the file can be anything; it is the contents of the file which matter):

and then load the profile into the kernel:

Trying to run certspotter, results in an immediate (safe) crash.

This basic profile doesn’t allow certspotter access to resources it needs, so let’s look at the AppArmor denial messages to see what went wrong.

Enabling profiles

Debian packages that install profiles to /etc/apparmor.d/ automatically enable them (complain mode). Other profiles need to be copied to this directory and manually set to complain or enforce mode.

For example to install an «extra» profile from the /usr/share/apparmor/extra-profiles/ directory provided by apparmor-profiles and set it to complain mode:

# list available profiles
$ ls /usr/share/apparmor/extra-profiles/

# install the profile
$ sudo cp /usr/share/apparmor/extra-profiles/usr.bin.example /etc/apparmor.d/

# set the profile to complain mode
sudo aa-complain /etc/apparmor.d/usr.bin.example

To set a profile to enforce mode, use aa-enforce instead of aa-complain. Beware though: many profiles are not up-to-date and will break functionality in enforce mode, be ready to !

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: