본문 바로가기
OS & Server/Linux

[Centos7] root 계정이 아닌 일반 계정으로 Apache Tomcat 실행하기

by 주리니e 2022. 7. 15.
728x90

[Centos7] root 계정이 아닌 일반 계정으로 Apache Tomcat 실행하기

 

 

root계정으로 톰캣 실행 시 보안측면에서 문제가 발생한다. root 계정이기 때문에 마음대로 파일 업로드를 하거나 업로드한 파일을 이용해 root 권한을 탈취하여 악의적인 코드를 실행시킬 수 있다. 그래서 tomcat이라는 일반계정을 생성한 후  앞으로는 tomcat 계정으로 Apache Tomcat을 구동시키도록 한다.

# root 계정으로 실행된 톰캣 프로세스

$ ps -ef | grep tomcat
root      4054     1  0 14:24 ?        00:00:14 //bin/java -Djava.util.logging.config.file=/usr/share/tomcat10/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/share/tomcat10/bin/bootstrap.jar:/usr/share/tomcat10/bin/tomcat-juli.jar -Dcatalina.base=/usr/share/tomcat10 -Dcatalina.home=/usr/share/tomcat10 -Djava.io.tmpdir=/usr/share/tomcat10/temp org.apache.catalina.startup.Bootstrap start

 

  • tomcat 계정 설정
# tomcat group 생성
$ groupadd tomcat

# tomcat user 생성 /bin/nologin을 이용하여 계정 로그인을 금지하며 그룹 및 홈디렉토리를 설정한다.
$ useradd -M -s /bin/nologin -g tomcat -d /usr/share/tomcat10 tomcat

# tomcat 디렉토리 권한 설정
$ chown -R tomcat:tomcat /usr/share/tomcat10

# tomcat 유저 확인
$ cat /etc/passwd
tomcat:x:1001:1001::/usr/share/tomcat10:/bin/nologin

 

  • tomcat 계정으로 실행하기 위한 서비스 파일 생성
$ vi /usr/lib/systemd/system/tomcat.service

[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target

[Service]
Type=forking

ExecStart=/usr/share/tomcat10/bin/startup.sh
ExecStop=/bin/kill -15 $MAINPID

User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always

[Install]
WantedBy=multi-user.target

 

  • 서버 재부팅 시 톰캣 서비스 자동 시작
# 서비스 등록
$ systemctl enable tomcat.service

# 서비스 데몬 재로드
$ systemctl daemon-reload

 

  • 등록된 서비스 조회
$ systemctl list-unit-files --type service | grep tomcat
tomcat.service                                enabled

 

  • 톰캣 구동 테스트
# 톰캣 서비스 시작
$ service tomcat start
Redirecting to /bin/systemctl start tomcat.service

# tomcat 계정으로 실행된 톰캣 프로세스 확인
$ ps -ef | grep tomcat
tomcat    5043     1 94 16:19 ?        00:00:04 /usr/bin/java -Djava.util.logging.config.file=/usr/share/tomcat10/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/share/tomcat10/bin/bootstrap.jar:/usr/share/tomcat10/bin/tomcat-juli.jar -Dcatalina.base=/usr/share/tomcat10 -Dcatalina.home=/usr/share/tomcat10 -Djava.io.tmpdir=/usr/share/tomcat10/temp org.apache.catalina.startup.Bootstrap start

# 톰캣 서비스 종료
$ service tomcat stop
Redirecting to /bin/systemctl stop tomcat.service

 

728x90

댓글