- Межсетевой экран ufw и модули iptables, поддерживающие работу с классификационными метками
- Установка модулей iptables, поддерживающих работу с классификационными метками
- Использование модулей iptables, поддерживающих работу с классификационными метками
- Использование ufw для работы с классификационными метками
- Настройка встроенного фаервола
- Iskatel_znaniy
- Вложения
- oko
- Yustas
- Yustas
- oko
- Yustas
- oko
Межсетевой экран ufw и модули iptables, поддерживающие работу с классификационными метками
При настройках ОС, принятых по умолчанию, изменения в правилах iptables не сохраняются после перезагрузки.
Порядок действий по обеспечению восстановления правил см. Сохранение и восстановление правил iptables
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.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
Установка модулей 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 могут быть установлены одновременно. Набор вариантов пакетов в дистрибутиве конкретного обновления ОС соответствует набору доступных ядер. Проверить полный список доступных вариантов пакетов можно командой:
Использование модулей iptables, поддерживающих работу с классификационными метками
Модули iptables-astralabel поддерживают стандартный синтаксис командной строки, используемый в iptables, и предоставляют следующие дополнительные опции для контроля мандатных атрибутов сетевых пакетов:
Применение правила к пакетам, имеющим указанный иерархический уровень конфиденциальности.
Допускается задание двух значений уровня через символ «:», тогда правило будет применяться к пакетам, имеющих уровень конфиденциальности в указанном диапазоне включительно.
Не принимать пакеты с иерархическими уровнями конфиденциальности от 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, и тогда правило будет применяться только к пакетам, у которых установлены одновременно все указанные категории (биты).
Не пропускать исходящие пакеты с установленными одновременно битами категорий 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
Если не указаны никакие опции для фильтрации пакетов то правило применяется ко всем пакетам, имеющим ненулевую классификационную метку. Т.е. правило
запретит все исходящие пакеты, имеющие ненулевую классификационную метку (т.е. имеющие ненулевой уровень конфиденциальности и/или ненулевые категории конфиденциальности).
Использование ufw для работы с классификационными метками
Для управления сетевыми соединениями с учетом классификационных меток в межсетевой экран ufw добавлены опции maclev и maccat, по действию аналогичные соответствующим опциям iptables. Для того, чтобы эти опции работали, в системе должен быть установлен пакет iptables-astralabel-common и один из пакетов iptables-astralabel-generic или iptables-astralabel-hardened, соответствующий используемому ядру.
Примеры использования приведены ниже. В примерах используется протокол HTTP (TCP-порт 80):
-A OUTPUT -p tcp —dport 80 -m astralabel —maccat 3 -j DROP
Приведенные примеры работают с исходящим трафиком (указано направление out). Правила для входящего трафика создаются аналогично, только направление указывается не out, а in.
Возможность инверсии правил и возможность одновременного указания нескольких категорий в одном правиле текущей реализацией ufw не поддерживаются.
Настройка встроенного фаервола
1. Как с помощью встроенного фаервола закрыть для всего доступ, а потом открыть сетевой доступ только для конкретного приложения?
2. С помощью чего можно отслеживать сетевые атаки: подмену MAC, сканирование портов и тд. и т.п.?
Iskatel_znaniy
New member
1. Как с помощью встроенного фаервола закрыть для всего доступ, а потом открыть сетевой доступ только для конкретного приложения?
2. С помощью чего можно отслеживать сетевые атаки: подмену MAC, сканирование портов и тд. и т.п.?
Например можно открыть доступ вот такой командой sudo ufw allow from 192.168.0.2 to any port 22 для конкретного ip адреса для конкретного порта. Нужно просто узнать номер порта Вашего приложения и свой ip адрес. Вместо порта можно наверное указать и приложение. Потом в gufw в правилах посмотреть что получилось. Открытые порты можно смотреть, например, с помощью графической программы Zenmap. Есть так же команда netstat -ltupn А вообще вопрос интересный и надеюсь кто нибудь что нибудь подскажет еще интересное. Так же в fly-admin-dm нужно снять галочку с «Разрешить удаленные сессии». Можно так же с помощью программы Ksystemlog просматривать журналы, например, журнал авторизации. Так же можно смотреть историю команд history , посещения lastlog и время пребывания пользователя last имя пользователя . В gufw можно входящие запретить а исходящие разрешить. Просто сделать профиль «Дом». Так же с помощью, например, программки lynis посмотреть уязвимости в системе.
Вложения
oko
New member
*в сторону*
Алекс Юстасу.
to Yustas
netfilter (и его обертки-интерпретаторы в виде UFW и iptables) в AstraLinux вообще не умеет в приложения, ибо он не «брандмауэр». Зато умеет в L4/L5-протоколы, IP- и MAC-адреса и слегка в L7-уровень. Достаточно ли будет этого для вашего случая — не мне решать, ага.
Что до атак, то приведенные вами приколы решаются в зависимости от контекста. Тут бы следует подтянуть тезаурус на предмет «компьютерных атак» вообще и тех же IDS (СОВ) Snort/Surricata, которые можно поставить на AstraLinux в частности.
Yustas
New member
Юстас — Алексу
*Пить будешь?*
Нашёл вариант с iptables + создание группы.
Насчёт атак хотелось бы проще.
Yustas
New member
oko
New member
to Yustas
AstraLinux CommonEdition — устаревшая ветка, доступная для домашнего пользования. Special Edition — собственно, основной (платный и сертифицированный) продукт. Но в обеих ветках одна и та же GUI-утилита UFW для встроенного межсетевого экрана netfilter.
Как раз Snort/Surricata (не входят в состав ALCE/ALSE по дефолту) и предназначены для обнаружения вторжений (атак) на базе сигнатурного анализа трафика.
А что есть «создание группы в iptables»? Собственные цепочки фильтрации/обработки/трансляции? И что все-таки понималось под целевой задачей?
Yustas
New member
Целевая задача:
Найти замену Outpost Firewall.
Более подробно:
1. Закрыть досутуп для всех приложений.
2. Открыть досутуп только для необходимых.
3. Закрыть все порты.
4. Запретиь пинг и сканирование портов.
5. Сделаться невидимым в сети.
6. При попытке MITM, подмены DNS, и т.д. и т.п. получать уведомление.
iptables -P OUTPUT -j DROP
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -m owner —gid-owner internet -j ACCEPT
iptables -A OUTPUT -m state —state ESTABLISHED,RELATED -j ACCEPT
iptalbes -A OUTPUT -p tcp -j REJECT —reject-with tcp-reset
sg internet-c firefox
oko
New member
to Yustas
1. Для приложений не получится. Повторюсь, netfilter (подсистема фильтрации в составе ядра Linux) и его командные интерпретаторы (iptables) или GUI-интерфейсы (UFW) не оперируют запущенными программами/приложениями. Раньше в iptables был параметр -m owner —pid-owner PID, где PID — номер процесса (потока), назначаемый каждому запущенному приложению (просмотр через ps ax | grep имя_приложения). Но позже его убрали, посчитав избыточным. Плюс, это порождало бы проблемы при отлавливании PID для комплексных приложений (тот же firefox создает дополнительный процесс для каждой открытой вкладки браузера).
2. Можно использовать вашу схему с группами или аналогичную схему с фейк-юзерами как тут (конец поста). Но у меня на Linux Mint это не заработало, в ALSE тоже. Беда (отказ в доступе) в запуске графических приложений (которым нужен доступ к X-Server) из-под фейк-юзера, когда X-сессия запущена моим штатным пользователем. С группами проблема примерно аналогичная. Возможно, в ALCE разграничений меньше, поэтому там схема с группами сработает — не проверял, ибо не пользуюсь.
3. Не делайте «OUTPUT -m state —state ESTABLISHED,RELATED» — это поддержка «сессии» (по умолчанию, netfilter сессии не поддерживает). Грубо говоря, если добавлено такое правило, то на каждый разрешенный входящий (цепочка filter — INPUT) пакет netfilter будет автоматически добавлять разрешение исходящего (цепочка filter — OUTPUT) трафика. И, если у вас не сервер с работающим приложением, доступ к которому нужен извне, то вам такое (ESTABLISHED,RELATED) не нужно.
4. Отбивка «-j REJECT —reject-with tcp-reset» не вяжется с желанием «невидимости». Потому что при любой опции REJECT netfilter будет отправлять адресату уведомление о блокированном пакете в рамках выбранного протокола. И в цепочке OUTPUT (исходящие от вашей машины) это тем более смысла не имеет. В наше неспокойное время куда проще делать тупо «-j DROP«. Опять-таки, если у вас не сервер, доступный извне и стремящийся уведомить удаленных пользователей о своей принципиальной доступности, но неправильном трафике, который они к нему шлют.
5. С MiTM и подменой DNS средствами netfilter вы почти ничего не сделаете. Можно, конечно, контролировать целостность и состояние каждого пакета, логировать их, натравливать на лог какое-либо средство высокоуровневого анализа, выявлять аномалии по меткам приходящих ответов (например, искажения TTL и других полей L2, L3, L4 уровней), но. MiTM тем и отличается, что при пассивном методе (перехват и анализ трафика) узнать о нем на стороне источника (ваша машина) фактически невозможно. Или мы говорим о другом MiTM (например, подмена SSL-сертификата провайдером или кем-то еще)?. Вариантов слишком много и, что печально, защититься от них полностью столь примитивными инструментами как netfilter/iptables не получится.
ЗЫ Outpost Firewall был когда-то хорош. Но от MiTM на канале, от перехвата и манипуляции с DNS (или внедрения ложного DNS-сервера на канале) и т.п. он тоже не защищал ни разу.