Mon système exécute CentOS 6.4 avec apache2.2.15. SElinux est en vigueur et j'essaie de me connecter à une instance locale de redis via mon application python / wsgi. Je reçois l'erreur 13, permission refusée. Je pourrais résoudre ce problème via la commande:
setsebool -P httpd_can_network_connect
Cependant, je ne veux pas exactement que httpd puisse se connecter à tous les ports TCP. Comment puis-je spécifier les ports / réseaux auxquels httpd est autorisé à se connecter? Si je pouvais créer un module permettant à httpd de se connecter au port 6379 (Redis) ou à n’importe quel autre TCP sur 127.0.0.1, ce serait préférable. Je ne sais pas pourquoi ma paranoïa est si forte à ce sujet, mais bon…
Quelqu'un sait?
apache-2.2
redhat
selinux
redis
savagecitizen
la source
la source
Réponses:
Par défaut, la stratégie SELinux n'autorisera l'accès aux services qu'aux ports reconnus associés à ces services:
- ajout du port Redis (6379) à la politique SELinux
Vous pouvez également installer
setroubleshoot-server
RPM et exécuter:sealert -a /var/log/audit/audit.log
- il vous donnera un bon rapport avec des suggestions utiles (y compris la commande ci-dessus).Script PHP pour tester la connexion:
la source
http_port_t
échoue parce que le port 25 est déjà utilisé (pour un autre type de SELinux):ValueError: Port tcp/25 already defined
. Pour autoriser httpd à se connecter au port 25, la méthode correcte consiste à définir la stratégie booléenne SELinux correspondante sur:setsebool -P httpd_can_sendmail on
(voirgetseebool -a
). (suite de la deuxième partie)sealert -b; sealert -a /var/log/audit/audit.log; grep perl /var/log/audit/audit.log | audit2allow -M mypol; semodule -v -i mypol.pp
. Alors ça marche!getsebool -a
commande (un de moinse
).semanage port -m -t http_port_t -p tcp 25
semanage port --help
setsebool -P httpd_can_connect_zabbix true
Vous devrez peut-être utiliser
Si semanage est manquant, ajoutez le paquet policycoreutils-python
la source
semanage
peut être danspolicycoreutils-python-utils
maintenant (au moins sur Fedora 23)semanage
danspolicycoreutils-python
.Vous pouvez mettre temporairement selinux en mode permissif et laisser httpd se connecter à redis, puis générer et construire un module de stratégie personnalisé à l'aide de audit2allow.
la source