간결한 버전: Java 7이 SELinux에서 실행되도록 하는 가장 안전한 방법은 무엇입니까?
긴 버전:
잘못된 용어를 사용했다면 미리 죄송합니다. 저는 사실 Linux 기술에 대한 지식이 거의 없는 Java 개발자일 뿐입니다.
방금 보안이 강화된 Linux가 포함된 CentOS 버전 5.3(최종 릴리스)에 Java 7을 설치했습니다. 설치가 완료된 후(Oracle에서 tar.gz 파일의 압축을 풀어 "설치"했습니다 /usr/java/jdk/jdk1.7.0_25
) 실행하면 java -version
다음 오류가 발생합니다.
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`
SELinux 때문일 수 있다는 기사를 발견하고 setenforce 0
문제가 사라졌는지 확인하려고 했습니다. 명령을 실행했고 Java가 작동했습니다. 하지만 이 기사에서는 setenforce 0
인터넷에 연결된 호스트에 머무르는 것이 위험하다고 말하고 있는데 내 호스트는 인터넷에 연결되어 있었습니다.
다음 방법을 제안하는 다른 글도 있지만 위험할 수 있다고 해서 아직 시도해보지 않았습니다.
chcon -t textrel_shlib_t /usr/jre1.7.0_10/lib/i386/client/libjvm.so
...위 명령에서 명령 끝에 있는 경로는 내 JDK의 경로로 대체됩니다.
내가 찾을 수 없는 것은 SELinux에서 Java 7을 안전하게 실행하는 방법(많은 것을 의미할 수 있음)에 대한 "공식적인" 내용입니다. 나에 대한 정보를 갖고 있는 사람이 있나요?
편집하다: 편집을 언급한 기사를 찾았습니다 /etc/selinux/config
. 아래 예와 같이 설정했습니다. 이를 통해 Java를 실행할 수 있지만 이제 몇 가지 보안 허점이 있는 것 같습니다.
# 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
답변1
현재 설치 정리
RPM 파일을 다운로드합니다(http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html)
yum -y localinstall /path/to/downloaded-java.rpm
나머지는 알아서 처리됩니다.