Auf meinem System läuft CentOS 6.4 mit Apache 2.2.15. SElinux erzwingt dies und ich versuche, über meine Python / wsgi-App eine Verbindung zu einer lokalen Instanz von Redis herzustellen. Ich erhalte den Fehler 13, Erlaubnis verweigert. Ich könnte dies über den Befehl beheben:
setsebool -P httpd_can_network_connect
Ich möchte jedoch nicht, dass httpd eine Verbindung zu allen TCP-Ports herstellen kann. Wie kann ich festlegen, zu welchen Ports / Netzwerken httpd eine Verbindung herstellen darf? Wenn ich ein Modul erstellen könnte, mit dem httpd eine Verbindung zu Port 6379 (redis) oder einem beliebigen TCP auf 127.0.0.1 herstellen kann, wäre dies vorzuziehen. Ich bin mir nicht sicher, warum meine Paranoia so groß ist, aber hey ...
Weiß jemand?
apache-2.2
redhat
selinux
redis
wilder Bürger
quelle
quelle
Antworten:
Standardmäßig erlaubt die SELinux-Richtlinie nur den Zugriff von Diensten auf erkannte Ports, die diesen Diensten zugeordnet sind:
- Fügen Sie den Redis-Port (6379) zur SELinux-Richtlinie hinzu
Sie können
setroubleshoot-server
RPM auch installieren und ausführen:sealert -a /var/log/audit/audit.log
- Sie erhalten einen schönen Bericht mit nützlichen Vorschlägen (einschließlich des obigen Befehls).PHP-Skript zum Testen der Verbindung:
quelle
http_port_t
schlägt fehl , da Port 25 bereits (für einen anderen SELinux - Typ) verwendet wird:ValueError: Port tcp/25 already defined
. Die richtige Möglichkeit, httpd eine Verbindung zu Port 25 zu ermöglichen, besteht darin, den entsprechenden SELinux-Richtlinien-Booleschen Wert aufsetsebool -P httpd_can_sendmail on
(siehegetseebool -a
) zu setzen. (Fortsetzung in Teil 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
. Dann klappt es!getsebool -a
Befehl (einer wenigere
).semanage port -m -t http_port_t -p tcp 25
siehesemanage port --help
setsebool -P httpd_can_connect_zabbix true
Möglicherweise müssen Sie verwenden
Wenn Semanage fehlt, fügen Sie das Paket policycoreutils-python hinzu
quelle
semanage
ist möglicherweise inpolicycoreutils-python-utils
(zumindest auf Fedora 23)semanage
inpolicycoreutils-python
.Sie könnten selinux vorübergehend in den zulässigen Modus versetzen und httpd eine Verbindung zu redis herstellen lassen und dann mit audit2allow ein benutzerdefiniertes Richtlinienmodul generieren und erstellen
quelle