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

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,

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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.