Mi sistema ejecuta CentOS 6.4 con apache2.2.15. SElinux está aplicando y estoy tratando de conectarme a una instancia local de redis a través de mi aplicación python / wsgi. Me sale el error 13, permiso denegado. Podría solucionar esto a través del comando:
setsebool -P httpd_can_network_connect
Sin embargo, no quiero exactamente que httpd pueda conectarse a todos los puertos tcp. ¿Cómo puedo especificar a qué puertos / redes se permite conectar httpd? Si pudiera hacer un módulo para permitir que httpd se conecte al puerto 6379 (redis) o cualquier tcp en 127.0.0.1, eso sería preferible. No estoy seguro de por qué mi paranoia es tan fuerte en esto, pero bueno ...
¿Nadie sabe?
apache-2.2
redhat
selinux
redis
ciudadano salvaje
fuente
fuente
Respuestas:
Por defecto, la política de SELinux solo permitirá el acceso a los servicios a puertos reconocidos asociados con esos servicios:
- agregue el puerto Redis (6379) a la política de SELinux
También puede instalar
setroubleshoot-server
RPM y ejecutar:sealert -a /var/log/audit/audit.log
- le dará un buen informe con sugerencias útiles (incluido el comando anterior).Script PHP para probar la conexión:
fuente
http_port_t
falla porque el puerto 25 ya se utiliza (para otro tipo SELinux):ValueError: Port tcp/25 already defined
. La forma correcta de permitir que httpd se conecte al puerto 25 es configurar la política booleana de SELinux correspondiente en:setsebool -P httpd_can_sendmail on
(vergetseebool -a
). (continúa en la 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
. Entonces funciona!getsebool -a
comando (uno menose
).semanage port -m -t http_port_t -p tcp 25
, consultesemanage port --help
setsebool -P httpd_can_connect_zabbix true
Es posible que necesite usar
Si falta semanage, agregue el paquete policycoreutils-python
fuente
semanage
puede estarpolicycoreutils-python-utils
ahora (al menos en Fedora 23)semanage
enpolicycoreutils-python
.Puede poner temporalmente a selinux en modo permisivo y dejar que httpd se conecte a redis, luego generar y construir un módulo de política personalizado usando audit2allow
fuente