apparmor aa-logprof не спрашивает обо всех зависимостях
При попытке написать профиль apparmor для моего приложения python-flask (которое выполняется через gunicorn), я не могу получить aa-logprof, чтобы спросить меня обо всех зависимостях.
Если в режиме жалобы приложение работает должным образом, но aa-logprof не предлагает больше предложений (см. Полный профиль в этом посте). Везде, где я читаю, люди, кажется, утверждают, что aa-logprof должен спрашивать обо всех зависимостях, которые он читает из /var/log/syslog. Если я переключаюсь на принудительное выполнение, приложение перестает работать и умирает. Хвостовой системный журнал показывает, что сеть запрещена, что, конечно, происходит, потому что aa-logprof меня не спрашивал об этом. Мой вопрос не в том, как я могу включить сеть для приложения, а в том, что в моем подходе неверно, поскольку меня не спрашивают обо всех зависимостях?
Когда вы жалуетесь, сетевые ресурсы разрешены (и logprof не спросит меня об этом?!)
Feb 22 20:54:40 devshed kernel: [7991608.610578] type=1400 audit(1424634880.675:68975): apparmor="ALLOWED" operation="accept" profile="/usr/local/bin/gunicorn" pid=2350 comm="gunicorn" laddr=127.0.0.1 lport=5000 family="inet" sock_type="stream" protocol=6
Feb 22 20:54:40 devshed kernel: [7991608.716887] type=1400 audit(1424634880.783:68976): apparmor="ALLOWED" operation="accept" profile="/usr/local/bin/gunicorn" pid=2353 comm="gunicorn" laddr=127.0.0.1 lport=5000 family="inet" sock_type="stream" protocol=6
Когда в принудительном порядке, сетевой материал запрещен (и logprof также не спросит меня об этом?)
Feb 22 20:41:04 devshed kernel: [7990792.228716] type=1400 audit(1424634064.295:68737): apparmor="DENIED" operation="create" profile="/usr/local/bin/gunicorn" pid=2162 comm="gunicorn" family="inet" sock_type="stream" protocol=0
/usr/local/bin/gunicorn {
#include <abstractions/base>
#include <abstractions/bash>
#include <abstractions/python>
/bin/dash rix,
/bin/uname rix,
/etc/nsswitch.conf r,
/etc/services r,
/proc/*/mounts r,
/sbin/ldconfig rix,
/sbin/ldconfig.real rix,
/usr/bin/python2.7 ix,
/usr/local/bin/ r,
/usr/local/bin/gunicorn r,
/usr/share/mysql/charsets/Index.xml r,
/tmp/* rw,
/var/tmp/* a,
/var/www/api/app.log w,
/var/www/api/app/* r,
/var/www/api/* a,
}
1 ответ
Я не думаю, что это твоя вина. Версия 2.8.98-0ubuntu2 (присутствует в Ubuntu 14.10) apparmor-utils кажется глючной. aa-genprof регулярно вылетает (ошибки Python), и я заметил похожее поведение, описанное вами с помощью aa-logprof. Это заполняет некоторые из правил, но другие, кажется, не учтены.
Надеюсь, следующая версия будет лучше. Более новые версии уже отсутствуют, просто еще не включены.
Кстати, сбои в aa-genprof связаны с правилами сокетов, аналогичными тем, которые вы опубликовали, поэтому я подозреваю, что у парсера журналов есть некоторые проблемы.