Вопрос или проблема
Профиль AppArmor: Запретить доступ в интернет
Я хочу запретить интернет-доступ для некоторых приложений. Поэтому сначала я попытался запретить интернет-доступ для ping, но это не сработало.
Вот профиль /etc/apparmor.d/bin.ping
/{usr/,}bin/ping {
#include <abstractions/base>
# забрать доступ к ipv4
deny network inet,
# ipv6
deny network inet6,
# сырой сокет
deny network raw,
}
Но пинг все равно работает после перезагрузки apparmor
с помощью
/etc/init.d/boot.apparmor restart
ping google.de
PING google.de (64.15.112.99) 56(84) bytes of data.
64 bytes from cache.google.com (64.15.112.99): icmp_seq=1 ttl=57 time=11.8 ms
64 bytes from cache.google.com (64.15.112.99): icmp_seq=2 ttl=57 time=15.3 ms
ИЗМЕНЕНИЕ:
Я забыл упомянуть, что я использую OpenSuse 13.1
Вам нужно либо удалить строку #include <abstractions/base>
, либо добавить строку #include <tunables/global>
в начало файла перед определением профиля. Это связано с тем, что abstractions/base использует переменные, определенные в tunables/global.
Документация здесь: https://gitlab.com/apparmor/apparmor/-/wikis/Documentation
разрешения файлов и другое здесь: https://gitlab.com/apparmor/apparmor/-/wikis/QuickProfileLanguage#file-permissions
Рекомендуется посмотреть как мягкое введение: https://www.youtube.com/watch?v=PRZ59lxLlOY
Возьмем, к примеру, просмотрщик pdf atril, если профиля не существует, создайте один:
sudo aa-genprof /usr/bin/atril # выполняйте действия в приложении, чтобы вызвать события
sudo aa-logprof # чтобы настроить профиль, записанный в /etc/apparmor.d/usr.bin.atril
пример профиля, примените через
sudo aa-enforce /etc/apparmor.d/usr.bin.atril
и попробуйте нажать ссылку в pdf, аудит sudo dmesg -w
покажет apparmor="DENIED"
# Последнее изменение: Вс Дек 13 23:28:03 2020
#include <tunables/global>
/usr/bin/atril {
#include <abstractions/base>
#include <abstractions/lightdm>
# забрать доступ к ipv4
deny network inet,
# ipv6
deny network inet6,
# сырой сокет
deny network raw,
owner /** rwm,
}
блокирует приложение: справка->о программе->вебсайт от открытия; настройте другие соответствующие через aa-logproof
Ответ или решение
Для того чтобы запретить доступ к интернету для приложения с использованием профилей AppArmor, необходимо внести некоторые изменения в профиль приложения. В вашем случае, вы пытаетесь запретить доступ к интернету для утилиты ping
.
Вот шаги, которые помогут вам настроить профиль правильно:
-
Измените ваш профиль
/etc/apparmor.d/bin.ping
:Убедитесь, что ваш профиль включает строки для определения глобальных переменных и не содержит ненужных комментариев. Пример обновленного профиля:
# Last Modified: (укажите актуальную дату) #include <tunables/global> /usr/bin/ping { #include <abstractions/base> # Запретить доступ к IPv4 deny network inet, # Запретить доступ к IPv6 deny network inet6, # Запретить доступ к необработанным сокетам deny network raw, }
-
Перезапустите службу AppArmor:
После внесения изменений в профиль вам необходимо перезапустить службу AppArmor, чтобы изменения вступили в силу. Выполните следующую команду:
sudo systemctl restart apparmor
или, если используете init.d:
sudo /etc/init.d/boot.apparmor restart
-
Проверьте статус профиля:
Для убедительности вы можете проверить статус профиля, чтобы убедиться, что он загружен и находится в состоянии enforced (принудительного выполнения):
sudo aa-status
-
Тестирование:
Теперь повторите команду
ping
, чтобы проверить, заблокирован ли доступ к интернету:ping google.de
Вы должны увидеть сообщение об ошибке, подобное "ping: google.de: Name or service not known" или "ping: transmit failed: Network is unreachable".
-
Дополнительные профили:
Если вы хотите запретить доступ к интернету и другим приложениям, вы можете сгенерировать их профили с помощью команды
aa-genprof
, как указано в вашем запросе:sudo aa-genprof /usr/bin/название_приложения
После создания профиля редактируйте его, добавляя те же строки
deny network inet,
,deny network inet6,
, иdeny network raw,
, прежде чем применять изменения. -
Логи и отладка:
Если после перезапуска и тестирования доступ всё еще не заблокирован, используйте команду для просмотра сообщений от AppArmor:
sudo dmesg -w
В логах вы сможете увидеть сообщения о том, какие действия были заблокированы, и это поможет вам уточнить настройки профиля, если это потребуется.
Соблюдая эти шаги, вы сможете успешно запретить интернет-доступ для определенных приложений с помощью AppArmor на вашей системе OpenSUSE.