Jaki jest bezpieczny sposób na uruchomienie Java 7 na SELinux

9

Krótka wersja: Jaki jest najbezpieczniejszy sposób, aby umożliwić Java 7 uruchomienie na (z?) SELinux?

Długa wersja:

Z góry przepraszam, jeśli użyję niepoprawnej terminologii. Naprawdę jestem tylko programistą Java z niewielką ilością umiejętności obsługi Linuksa.

Właśnie zainstalowałem Javę 7 na CentOS wydanie 5.3 (wersja ostateczna), który najwyraźniej ma Security Enhanced Linux. Po zakończeniu instalacji (którą „zainstalowałem” przez rozpakowanie pliku tar.gz z Oracle w /usr/java/jdk/jdk1.7.0_25), uruchomiłem java -versioni otrzymałem ten błąd:

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`

Znalazłem kilka artykułów stwierdzających, że może to być spowodowane przez SELinux i spróbuję setenforce 0sprawdzić, czy problem zniknie. Uruchomiłem to polecenie i Java działała. Ale te same artykuły mówią, że pozostawienie setenforce 0hosta podłączonego do Internetu jest niebezpieczne, a mój host jest podłączony do Internetu.

Istnieją inne artykuły, które sugerują to następne podejście, ale także mówią, że może być niebezpieczne, więc jeszcze go nie wypróbowałem.

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

... w powyższym poleceniu ścieżka na końcu polecenia jest zastąpiona ścieżką mojego JDK.

Nie mogę znaleźć czegoś „oficjalnego” (co może znaczyć wiele rzeczy) na temat bezpiecznego uruchamiania Java 7 na (z?) SELinux. Czy ktoś ma dla mnie jakieś informacje?

Edycja: Odkryłem artykuł dotyczący edycji /etc/selinux/config. Ustawiłem jak pokazano na poniższej próbce. Pozwala to na uruchomienie Java, ale zakładam, że mam teraz pewne luki w zabezpieczeniach.

# 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
źródło
chconRozwiązanie wygląda rozsądne. Ostatnie rozwiązanie nie różni się zbytnio od setenforce 0.
Jordan
Czy możesz po prostu zainstalować go w swoim katalogu domowym?
Thorbjørn Ravn Andersen
@ ThorbjørnRavnAndersen: Cóż, przypuszczam, że mógłbym, ale działa on jako demon, a konkretnie serwer Tomcat, a jakoś wydaje się trochę niechlujny, gdy serwer Tomcat działa z mojego katalogu domowego.
John Fitzpatrick,
Zasadniczo dupe stackoverflow.com/q/14723474/560648 .
Wyścigi lekkości na orbicie

Odpowiedzi:

2
  1. Wyczyść bieżącą instalację

  2. Pobierz plik RPM ( http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html )

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

reszta zostanie zadbana.

użytkownik44441
źródło
Dzięki. Czy możesz rozwinąć temat „Wyczyść bieżącą instalację”? Masz na myśli usunięcie tego, co zainstalowałem?
John Fitzpatrick
Tak to prawda! Usuń bieżącą instalację Oracle Java. Postępuj zgodnie z instrukcjami „
samorozpakowującego się
4
Dlaczego to jest rozwiązanie?
Wyścigi lekkości na orbicie
Jeśli @LightnessRacesinOrbit nie wie, dlaczego jest to właściwe rozwiązanie, przeczytaj, czym jest SELinux . Zasadniczo skrypt RPM ustawia odpowiednie uprawnienia ACL itp.
eyoung100
3
@ eyoung100: Nie, chodzi mi o to, że ta odpowiedź niczego nie wyjaśnia. Powinien wyjaśnić, dlaczego usunięcie i zastąpienie instalacji powinno rozwiązać problem, a także podać odpowiednie kroki. Pytam również, ponieważ zainstalowałem z RPM, ale nadal mam problem.
Lekkość ściga się na orbicie