Meu sistema está executando o CentOS 6.4 com apache2.2.15. O SElinux está em vigor e estou tentando conectar-me a uma instância local de redis através do meu aplicativo python / wsgi. Eu recebo o erro 13, permissão negada. Eu poderia corrigir isso através do comando:
setsebool -P httpd_can_network_connect
No entanto, não quero exatamente que o httpd possa se conectar a todas as portas tcp. Como posso especificar a quais portas / redes o httpd pode se conectar? Se eu pudesse criar um módulo para permitir que o httpd se conectasse à porta 6379 (redis) ou qualquer tcp no 127.0.0.1, isso seria preferível. Não sei por que minha paranóia é tão forte nisso, mas ei ...
Ninguem sabe?
apache-2.2
redhat
selinux
redis
savagecitizen
fonte
fonte
Respostas:
Por padrão, a política do SELinux permitirá apenas o acesso de serviços a portas reconhecidas associadas a esses serviços:
- adicione a porta Redis (6379) à política do SELinux
Você também pode instalar
setroubleshoot-server
RPM e execute:sealert -a /var/log/audit/audit.log
- ele vai te dar um bom relatório com sugestões úteis (incluindo comando acima).Script PHP para testar a conexão:
fonte
http_port_t
falha porque a porta 25 é já utilizado (para outro tipo SELinux):ValueError: Port tcp/25 already defined
. A maneira correta de permitir que o httpd se conecte à porta 25 é definir a política SELinux correspondente em:setsebool -P httpd_can_sendmail on
(consultegetseebool -a
). (continuação na parte 2)sealert -b; sealert -a /var/log/audit/audit.log; grep perl /var/log/audit/audit.log | audit2allow -M mypol; semodule -v -i mypol.pp
. Então funciona!getsebool -a
comando (um a menose
).semanage port -m -t http_port_t -p tcp 25
, pode modificá-la: veja:semanage port --help
setsebool -P httpd_can_connect_zabbix true
Você pode precisar usar
Se falta a semântica, adicione o pacote policycoreutils-python
fonte
semanage
pode estar empolicycoreutils-python-utils
agora (pelo menos no Fedora 23)semanage
nopolicycoreutils-python
.Você pode colocar temporariamente o selinux no modo permissivo e permitir que o httpd se conecte ao redis, em seguida, gere e construa um módulo de política personalizado usando o audit2allow
fonte