Java 7'nin SELinux üzerinde çalışmasına izin vermenin güvenli yolu nedir


9

Kısa sürüm: Java 7'nin SELinux ile çalışmasına izin vermenin en güvenli yolu nedir?

Uzun versiyon:

Yanlış terminoloji kullanırsam önceden özür dilerim. Gerçekten sadece Linux becerilerinin yetersiz dağılması olan bir Java geliştiricisiyim.

Görünüşe göre Security Enhanced Linux'a sahip CentOS sürüm 5.3'e (Final) Java 7'yi yükledim. Yükleme tamamlandıktan sonra (ki "in" tar.gz dosyasını Oracle'dan açarak yükledim /usr/java/jdk/jdk1.7.0_25), koştum java -versionve şu hatayı aldım:

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`

Bunun SELinux nedeniyle olabileceğini belirten setenforce 0ve sorunun giderilip giderilmediğini görmek için birkaç makale buldum . Bu komutu çalıştırdım ve Java çalıştı. Ancak aynı makaleler setenforce 0internete bağlı bir ana bilgisayara bırakmanın tehlikeli olduğunu ve ev sahibimin internete bağlı olduğunu söylüyor .

Bir sonraki yaklaşımı öneren ancak tehlikeli olabileceğini söyleyen başka makaleler de var, bu yüzden henüz denemedim.

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

... yukarıdaki komutta, komutun sonundaki yol JDK'mın yoluyla değiştirilir.

Ne bulamıyorum Java resmi (ile?) Güvenli bir şekilde SELinux üzerinde çalıştırmak için "resmi" (birçok şey anlamına gelebilir) bir şeydir. Benim için herhangi bir bilgi var mı?

Düzenleme: Düzenleme ile ilgili bir makale keşfettim /etc/selinux/config. Aşağıdaki örnekte gösterildiği gibi ayarladım. Bu, Java'nın çalışmasına izin verir, ancak şimdi bazı güvenlik deliklerim olduğunu varsayıyorum.

# 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

chconÇözelti makul görünüyor. Son çözüm bundan çok farklı değil setenforce 0.
jordanm

Bunun yerine ana dizininize yükleyebilir misiniz?
Thorbjørn Ravn Andersen

@ ThorbjørnRavnAndersen: Sanırım yapabildim, ama daha spesifik olmak için bir daemon, bir Tomcat sunucusu olarak çalışıyor ve bir şekilde ev dizinimden çalışan bir Tomcat sunucusuna sahip olmak biraz özensiz geliyor.
John Fitzpatrick

Yanıtlar:


2
  1. Mevcut kurulumu temizle

  2. RPM dosyasını indirin ( http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html )

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

dinlenme halledilir.


Teşekkürler. "Mevcut kurulumu temizle" konusunu açıklayabilir misiniz? Yüklediğimi kaldırmak mı demek istiyorsun?
John Fitzpatrick

Evet bu doğru! Mevcut Oracle Java kurulumunuzu kaldırın. "Kendiliğinden açılan dosya kaldırma" takip ediniz java.com/en/download/help/linux_uninstall.xml#self
user44441

4
Bu neden çözüm?
Yörüngedeki Hafiflik Yarışları

@LightnessRacesinOrbit bunun neden doğru çözüm olduğunu bilmiyorsa, lütfen SELinux'un ne olduğunu okuyun . Temelde RPM betiği, ACL'nin vb. Uygun izinlerini ayarlar
eyoung100

3
@ eyoung100: Hayır, benim açımdan bu cevap hiçbir şeyi açıklamıyor. Kurulumu kaldırmanın ve değiştirmenin sorunu neden çözmesi ve bunun için gerekli adımları atması gerektiğini açıklamalıdır . Ayrıca soruyorum çünkü RPM'den yükledim ama hala problem var.
Yörüngedeki Hafiflik Yarışları
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.