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 связаны с правилами сокетов, аналогичными тем, которые вы опубликовали, поэтому я подозреваю, что у парсера журналов есть некоторые проблемы.

Другие вопросы по тегам