Was ist der sichere Weg, um Java 7 unter SELinux laufen zu lassen?

9

Kurzversion: Was ist der sicherste Weg, um Java 7 unter (mit?) SELinux laufen zu lassen?

Lange Version:

Entschuldigung im Voraus, wenn ich eine falsche Terminologie verwende. Ich bin wirklich nur ein Java-Entwickler mit einem geringen Anteil an Linux-Kenntnissen.

Ich habe gerade Java 7 unter CentOS Release 5.3 (Final) installiert, das anscheinend Security Enhanced Linux enthält. Nachdem die Installation abgeschlossen war (die ich durch Entpacken der tar.gz-Datei von Oracle "installiert" habe /usr/java/jdk/jdk1.7.0_25), wurde sie ausgeführt java -versionund es wurde folgende Fehlermeldung angezeigt :

Error: dl failure on line 864
Error: failed /usr/java/jdk1.7.0_25/jre/lib/i386/server/libjvm.so,
      because /usr/java/jdk1.7.0_25/jre/lib/i386/server/libjvm.so:
      cannot restore segment prot after reloc: Permission denied`

Ich habe ein paar Artikel gefunden, die besagen, dass dies an SELinux liegen kann, und um zu versuchen, herauszufinden, setenforce 0ob das Problem behoben ist. Ich habe diesen Befehl ausgeführt und Java hat funktioniert. Dieselben Artikel besagen jedoch, dass das Verlassen setenforce 0eines mit dem Internet verbundenen Hosts gefährlich ist und mein Host mit dem Internet verbunden ist.

Es gibt andere Artikel, die diesen nächsten Ansatz vorschlagen, aber auch sagen, dass er gefährlich sein kann, deshalb habe ich ihn noch nicht ausprobiert.

chcon -t textrel_shlib_t /usr/jre1.7.0_10/lib/i386/client/libjvm.so

... im obigen Befehl wird der Pfad am Ende des Befehls durch den Pfad meines JDK ersetzt.

Was ich nicht finden kann, ist etwas "Offizielles" (was viele Dinge bedeuten kann), wie Java 7 unter (mit?) SELinux sicher ausgeführt werden kann. Hat jemand irgendwelche Informationen für mich?

Bearbeiten: Ich habe einen Artikel entdeckt, der sich auf das Bearbeiten bezieht /etc/selinux/config. Ich habe wie im folgenden Beispiel gezeigt eingestellt. Dadurch kann Java ausgeführt werden, aber ich gehe davon aus, dass ich jetzt einige Sicherheitslücken habe.

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#       enforcing - SELinux security policy is enforced.
#       permissive - SELinux prints warnings instead of enforcing.
#       disabled - SELinux is fully disabled.
SELINUX=permissive
# SELINUXTYPE= type of policy in use. Possible values are:
#       targeted - Only targeted network daemons are protected.
#       strict - Full SELinux protection.
SELINUXTYPE=targeted
John Fitzpatrick
quelle
Die chconLösung sieht vernünftig aus. Die letzte Lösung ist nicht viel anders als setenforce 0.
Jordanm
Können Sie es stattdessen einfach in Ihrem Home-Verzeichnis installieren?
Thorbjørn Ravn Andersen
@ ThorbjørnRavnAndersen: Nun, ich nehme an, ich könnte es, aber es läuft als Daemon, genauer gesagt als Tomcat-Server, und irgendwie fühlt es sich etwas schlampig an, wenn ein Tomcat-Server von meinem Home-Verzeichnis aus ausgeführt wird.
John Fitzpatrick
Grundsätzlich ein Betrüger von stackoverflow.com/q/14723474/560648 .
Leichtigkeitsrennen im Orbit

Antworten:

2
  1. Bereinigen Sie die aktuelle Installation

  2. Laden Sie die RPM-Datei herunter ( http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html ).

    yum -y localinstall /path/to/downloaded-java.rpm
    

Ruhe wird erledigt.

user44441
quelle
Vielen Dank. Können Sie näher auf "Bereinigen der aktuellen Installation" eingehen? Meinst du entfernen, was ich installiert habe?
John Fitzpatrick
Ja, das ist richtig! Entfernen Sie Ihre aktuelle Oracle Java-Installation. Bitte folgen Sie "Selbstextrahierende Datei deinstallieren" java.com/de/download/help/linux_uninstall.xml#self
user44441
4
Warum ist das die Lösung?
Leichtigkeitsrennen im Orbit
Wenn @LightnessRacesinOrbit nicht weiß, warum dies die richtige Lösung ist, lesen Sie bitte, was SELinux ist . Grundsätzlich legt das RPM-Skript die richtigen Berechtigungen für ACLs usw. fest
eyoung100
3
@ eyoung100: Nein, mein Punkt ist, dass diese Antwort nichts erklärt. Es sollte erklärt werden, warum das Entfernen und Ersetzen der Installation das Problem beheben sollte, und die entsprechenden Schritte angegeben werden. Ich frage auch, weil ich von RPM installiert habe, aber immer noch das Problem habe.
Leichtigkeitsrennen im Orbit