Apache Tomcat에 대한 사용자의 액세스 권한 모범 사례


22

다양한 개발자가 공유하는 Linux 상자가 있습니다. 공유 위치 (/ opt / tomcat)에있는 Apache Tomcat에 war 파일을 배포하려고합니다.

그들은 sudo 액세스 권한이 없으므로 tomcat 디렉토리에 대한 폴더 권한을 변경해야합니다.

아래 디렉토리 구조 /opt/tomcat는-

bin/

conf/

lib/

logs/

temp/

webapps/

work/

위 상황에서 모범 사례 는 무엇입니까 ? 사용자에게 가장 적합한 액세스 권한은 무엇입니까? 당분간 나는 webapps 및 logs에 대한 권한을 777로 변경했습니다.

감사

답변:


32

나는 이것을 이렇게한다 :

우리는 바람둥이 사용자를 바람둥이 폴더의 소유자로 두었습니다.

# chown -R tomcat:tomcat /opt/tomcat

사용자는 Tomcat의 구성을 수정할 수 없습니다 .

# chmod -R g+r /opt/tomcat/conf

사용자는 다른 폴더를 수정할 수 있습니다 :

# chmod -R g+w /opt/tomcat/logs
# chmod -R g+w /opt/tomcat/temp
# chmod -R g+w /opt/tomcat/webapps
# chmod -R g+w /opt/tomcat/work

새 파일에 대한 고정 비트를 활성화하여 권한을 정의하십시오.

# chmod -R g+s /opt/tomcat/conf
# chmod -R g+s /opt/tomcat/logs
# chmod -R g+s /opt/tomcat/temp
# chmod -R g+s /opt/tomcat/webapps
# chmod -R g+s /opt/tomcat/work

마지막으로 Tomcat을 사용할 수있는 사용자를 원하는 Tomcat 그룹을 추가합니다.

# usermod -a -G tomcat MIUSER

4
-a 태그없이 수행하면 tomcat 그룹에 사용자를 추가하지만 이들이 속한 다른 모든 그룹에서 MIUSER를 제거합니다 (이것은 더 이상 sudo 그룹이 아님). 방금 서버 중 하나의 기본 계정에서 그룹을 복구하기 위해 신속하게 조치를 취해야했지만 여전히 해당 그룹을 보유한 이전 세션에서 그룹을 검색했습니다. 이 답변을 읽는 다른 사용자에게 경고의 말.
Axoren

응답에 옵션을 추가했습니다. 감사합니다
intropedro

Tomcat을 Tomcat 사용자로 시작하는 방법은 무엇입니까? 광산은 악마로 시작되었으며 현재는 루트로 실행됩니다.
Stephane

1
안녕하세요 Stephane, 우분투에서 Tomcat은 Tomcat 사용자로 실행 중이며 변수 TOMCAT8_USER 및 TOMCAT8_GROUP과 함께 / etc / default / tomcat8 파일에 있습니다. 다른 리눅스에서는 모르겠다.
intropedro

+s사용자 / 그룹 ID가 설정되어 있지 않습니까? 맨 페이지 +t는 끈적 끈적 하다고 말합니다 .
bmaupin

13

Non-Tomcat settingsTomcat의 보안 하우투의 부분은이 주제에 대한 유용한 정보를 제공합니다. 여기를 봐:

Tomcat은 루트 사용자로 실행해서는 안됩니다. Tomcat 프로세스 전용 사용자를 작성하고 해당 사용자에게 운영 체제에 필요한 최소 권한을 제공하십시오. 예를 들어 Tomcat 사용자를 사용하여 원격으로 로그온 할 수 없어야합니다.

파일 권한도 적절하게 제한되어야합니다. ASF에서 Tomcat 인스턴스를 예로 들면 (자동 배포가 비활성화되고 웹 응용 프로그램이 분해 된 디렉터리로 배포되는 경우) 표준 구성은 Tomcat 그룹의 루트가 소유 한 모든 Tomcat 파일을 소유하고 소유자는 읽기 / 쓰기 권한을 갖도록하는 것입니다. , 그룹에는 읽기 권한 만 있고 world에게는 권한이 없습니다. root가 아닌 Tomcat 사용자가 소유 한 logs, temp 및 work 디렉토리는 예외 입니다. 즉, 공격자가 Tomcat 프로세스를 손상하더라도 Tomcat 구성을 변경하거나 새 웹 응용 프로그램을 배포하거나 기존 웹 응용 프로그램을 수정할 수 없습니다. Tomcat 프로세스는 이러한 권한을 유지하기 위해 umask 007로 실행됩니다.


설명 된 접근 방식이 Tomcat뿐만 아니라 다른 서비스 (데이터베이스, 리버스 프록시 등)에서도 채택 될 수 있는지 궁금합니다. 그것이 실현 가능하거나 현명하다고 생각하십니까?
Paolo

1

최소 권한 원칙 을 따라야합니다 . 서버 (아마도 www-data확인해야 할 것입니다)는 대부분의 파일을 읽고 (모두 말하자) 로그에만 쓸 수 있어야합니다. 웹 개발자는 필요한 곳에 글을 쓸 수 있습니다. 파일 소유자 만 파일을 삭제할 수 있도록 디렉토리에 고정 비트를 설정하십시오.

실제로 그룹을 작성하고 (예 webdev:) 모든 개발자와 서버를 그룹에 추가해야합니다 ( usermod -aG webdev <user>또는 usermod -A webdev <user>Linux 특성에 따라). chown모든 파일과 디렉토리를 웹 서버 사용자에게, chmod 모든 디렉토리를 500으로, 모든 파일을 400으로 ( bin실행 파일도 500이어야하는 경우 제외 ).

/opt/tomcat그룹 (570) 에 대한 쓰기 권한을 부여 하고 자신이 소유 한 파일 만 제거 할 수 있도록 고정 비트를 설정하십시오 (chmod 1570). 서버에 로그에 대한 쓰기 권한을 부여하고 개발자에 대한 읽기 권한을 부여하십시오 (폴더의 경우 0740, 파일의 경우 0640, 고정 비트는 필요하지 않음). 다른 의미 (파일이 실행 가능한 경우 소유자의 권한으로 실행).

그런 다음 webdev일부 디렉토리에 대한 쓰기 권한 (1570)을 부여해야합니다 . 여기에 시행 착오가 필요하며 응용 프로그램에 따라 다를 수 있습니다. 해당 폴더는 1570이어야하고 다른 폴더는 0500이어야합니다.

개발자는 파일에 대한 읽기 액세스 권한을 그룹에 부여하여 서버가 파일을 읽을 수 있고 (640), 디렉토리에서 실행할 수도 있습니다 (750).


1

@intropedro의 대답은 좋은 것이라고 생각합니다. 패키지 설치 프로그램을 사용하면 많은 골칫거리를 줄일 수 있습니다. 적어도 우분투에서 Tomcat 7 apt-get install tomcat7은 다음과 같은 "표준"설치 디렉토리 세트를 생성합니다.

  • /etc/tomcat7 구성 파일의 경우
  • /var/lib/tomcat7 핵심 라이브러리의 경우
  • /usr/share/tomcat7 공유 리소스

모든 권한은 최소 권한 원칙으로 올바르게 설정되므로 사용자를 그룹에 추가 tomcat7하면 배포가 가능합니다. 또한, 톰캣 서버는 다른 사람들 (예를 들어 sudo service tomcat start또는 대안 적으로 /etc/init.d/tomcat start) 로서 시작 및 중지 될 수있는 서비스로서 설정된다 . Tomcat은 재부팅시 자동으로 시작되며 "다시 시작"명령이 있습니다. RHEL / CentOS 사용자를위한 동등한 yum 패키지가 있다고 확신합니다. (예, 로컬 OSX 설치를위한 homebrew 설치 프로그램이 있습니다).

문제가 발생하는 경우에 좋은 유틸리티있다 /usr/share/bin라는 configtest.sh권한이나 다른 오류가보고하는 경우 있음. 심볼릭 링크 추가를 제안 하는 공개 버그가 있습니다 .

우리는 여전히 우분투 trusty(14.04)를 운영하고 있습니다 . 최신 버전을 실행하는 사람들에게는 Tomcat 8 apt-get repo가 ​​있다고 생각합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.