Подробнее про классификационные метки см. статью Метка безопасности: структура и состав
При настройках ОС, принятых по умолчанию, изменения в правилах iptables не сохраняются после перезагрузки. Порядок действий по обеспечению восстановления правил см. Сохранение и восстановление правил iptables

Эта статья применима к:

  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7)
  • Astra Linux Special Edition РУСБ.10015-17
  • Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)
  • Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
  • с установленным оперативным обновлением БЮЛЛЕТЕНЬ № 20200327SE16 (оперативное обновление 5)

  • Astra Linux Special Edition РУСБ.10015-16 исп. 1
    с установленным оперативным обновлением Бюллетень № 20201007SE16

Данная статья неприменима к Astra Linux Special Edition РУСБ.10015-10.


Установка модулей iptables, поддерживающих работу с классификационными метками

В состав Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)с установленным оперативным обновлением БЮЛЛЕТЕНЬ № 20200327SE16 (оперативное обновление 5) включёны пакеты iptables, поддерживающие работу с  классификационными метками. Работа с  классификационными метками реализована с помощью дополнительного модуля тестирования  astralabel, обеспечивающего тестирование значений мандатных атрибутов  с помощью опций "–maclev", "–maccat" (подробности см. ниже).

Названия пакетов:

  • iptables-astralabel-generic - для использования с ядром generic;
  • iptables-astralabel-hardened - для использования с ядром hardened;
  • iptables-astralabel-common - общие для generic и hardened модули;

Для эффективного использования этих пакетов в межсетевой экран ufw также включена поддержка работы с классификационными метками.

По умолчанию при установке ОС эти пакеты не устанавливаются. Установка пакетов для загруженной версии ядра может быть выполнена с помощью графического менеджера пакетов (см. Графический менеджер пакетов synaptic) или из командной строки командой:

# для ядра generic
sudo apt install iptables-astralabel-common iptables-astralabel-`uname -r`

# для ядра hardened
sudo apt install iptables-astralabel-common iptables-astralabel-`uname -r`

При необходимости версии generic и hardened могут быть установлены одновременно. Набор вариантов пакетов в дистрибутиве конкретного обновления ОС соответствует набору доступных ядер. Проверить полный список доступных вариантов пакетов можно командой:
apt policy iptables-astralabel*


Использование модулей iptables, поддерживающих работу с классификационными метками

Модули iptables-astralabel поддерживают стандартный синтаксис командной строки, используемый в iptables, и предоставляют следующие дополнительные опции для контроля мандатных атрибутов сетевых пакетов:

ОпцияКомментарийПримеры
-m astralabelУказание на использование модуля astralabel для обработки сетевого трафика
--maclev <уровень>[:<уровень>]

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


Не принимать пакеты с иерархическими уровнями конфиденциальности от 1 до 3-х:

sudo iptables -A INPUT -m astralabel --maclev 1:3 -j DROP


Значение фильтра, задаваемого опцией maclev, может быть инверсировано с помощью модификатора "!".


Не пропускать исходящие пакеты, имеющие иерархический уровень конфиденциальности не равный нулю:

sudo iptables -A OUTPUT -m astralabel ! --maclev 0 -j DROP

Такое правило будет пропускать исходящие пакеты, имеющие нулевой иерархический уровень конфиденциальности и ненулевые неиерархические категории конфиденциальности.
--maccat <бит_категории>

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

Нумерация битов категорий начинается с единицы.

Не пропускать исходящие пакеты с установленными одновременно битами категорий 1 и 2:

sudo iptables -A OUTPUT -m astralabel --maccat 1 --maccat 2 -j DROP


Опции maclev и maccat могут применяться одновременно в одном правиле.
Результирующий фильтр будет представлять собой объединение фильтров, заданных этими опциями.

Не принимать пакеты с установленными битами категорий 1 и 2 и уровнем конфиденциальности 3:

sudo iptables -A INPUT -m astralabel --maclev 3 --maccat 1 --maccat 2 -j DROP


Если не указаны никакие опции для фильтрации пакетов то правило применяется ко всем пакетам, имеющим ненулевую классификационную метку. Т.е. правило

sudo iptables -A OUTPUT -m astralabel -j DROP

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

Использование ufw для работы с классификационными метками

Для управления сетевыми соединениями с учетом классификационных меток в межсетевой экран ufw добавлены опции maclev и maccat, по действию аналогичные соответствующим опциям iptables. Для того, чтобы эти опции работали, в системе должен быть установлен пакет iptables-astralabel-common и один из пакетов iptables-astralabel-generic или iptables-astralabel-hardened, соответствующий используемому ядру.

Примеры использования приведены ниже. В примерах используется протокол HTTP (TCP-порт 80):

ПримерКомментарийАналог в iptables
sudo ufw deny out 80/tcp macЗапрет отправки пакетов с ненулевой классификационной меткой-A OUTPUT -p tcp --dport 80 -m astralabel -j DROP
sudo ufw deny out 80/tcp maclev 2Запрет отправки пакетов, имеющих уровень конфиденциальности 2-A OUTPUT -p tcp --dport 80 -m astralabel --maclev 2 -j DROP
sudo ufw deny out 80/tcp maccat 3Запрет отправки пакетов, имеющих категорию конфиденциальности 3

-A OUTPUT -p tcp --dport 80 -m astralabel --maccat 3 -j DROP

Приведенные примеры работают с исходящим трафиком (указано направление out). Правила для входящего трафика создаются аналогично, только направление указывается не out, а in.
Возможность инверсии правил и возможность одновременного указания нескольких категорий в одном правиле текущей реализацией ufw не поддерживаются.


Особенности применения правил iptables

  1. Протокол ARP (IPv4) не подпадает под действие правил iptables, в том числе под действие правил использующих МРД.
  2. Протокол NDP (IPv6) подпадает под действие правил iptables, но пакеты этого протокола не маркируются классификационными метками. Правила, использующие МРД, обрабатывают такие пакеты как имеющие нулевые классификационные метки. Правило, запрещающее передачу пакетов с нулевыми классификационными метками, запретит и передачу пакетов протокола NDP. Например, правило:
    sudo ip6tables -A INPUT -m astralabel ! --maclev 1:3 -j DROP
    Если требуется разрешить передачу пакетов NDP нужно добавить соответствующие правила. Например:
    sudo ip6tables -A INPUT -p ipv6-icmp --icmpv6-type neighbour-solicitation -j ACCEPT
    sudo ip6tables -A INPUT -p ipv6-icmp --icmpv6-type neighbour-advertisement -j ACCEPT
    В зависимости от требований, предъявляемых к взаимодействию ОС и сетевого оборудования среды функционирования, может понадобиться разрешить и другие типы пакетов протокола NDP, а именно router-solicitation, router-advertisement, redirect.