apparmor aa-logprof não está perguntando sobre todas as dependências

2

Ao tentar escrever um perfil apparmor para meu aplicativo python-flask (que é executado via gunicorn), não consigo fazer com que o logprof me pergunte sobre todas as dependências.

Se estiver no modo de reclamação, o aplicativo funciona como esperado, mas o logprof não apresenta mais sugestões (veja o perfil completo por último neste post). Em todo lugar que eu leio, as pessoas parecem afirmar que o logprof deve perguntar sobre todas as dependências, que ele lê em / var / log / syslog em si. Se eu alternar para aa-enforce, o aplicativo falha e morre. O syslog de cauda mostra a rede negada, o que, é claro, acontece porque não fui questionado pelo logprof. Minha pergunta não é como eu posso ativar a rede para o aplicativo, mas sim o que na minha abordagem está incorreta, já que não me perguntam sobre todas as dependências?

Quando em reclamações, coisas da rede são permitidas (e o logprof não vai me perguntar sobre isso ?!)

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

Quando for imposta, o material da rede é negado (e o logprof não vai me perguntar sobre isso também?)

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,
}
    
por 3molo 22.02.2015 / 21:00

1 resposta

1

Eu não acho que seja sua culpa. A versão 2.8.98-0ubuntu2 (presente no Ubuntu 14.10) do apparmor-utils parece estar com bugs. O aa-genprof trava regularmente (erros python) e notei um comportamento semelhante ao descrito por você com o logprof. Ele preenche algumas das regras, mas outras parecem ser deixadas de fora.

Espero que a próxima versão seja melhor. Versões mais recentes já estão fora não incluídas ainda.

A propósito, as falhas no aa-genprof estão conectadas a regras de soquete semelhantes às que você postou, então suspeito que o analisador de log tenha alguns problemas.

    
por bytephunk 23.03.2015 / 16:40