리눅스에서 일반계정은 well known port 1024 이하는 사용이 불가능 합니다.
하지만 할 수 있는 방법이 있습니다.
1. setcap 명령어
가장 추천하는 방법으로, 가장 간편하고 직관적입니다.
실행 명령어에 setuid 권한 주듯이 1024 미만 포트의 사용권한을 주는 명령어 입니다.
예를 들어 톰캣은 자바로 실행되기에 자바 파일에 권한을 부여하면 됩니다.
설정
setcap 'cap_net_bind_service=+ep' /usr/lib/jvm/java-1.8.0-openjdk/bin/java
해제
setcap -r /usr/lib/jvm/java-1.8.0-openjdk/bin/java
확인
getcap /usr/lib/jvm/java-1.8.0-openjdk/bin/java
libjli.so 에러 해결
java에 권한 부여하고 실행시 에러가 날텐데 libjli.so 파일의 경로를 라이브러리 경로 설정 하면 됩니다.
/etc/ld.so.conf.d/java.conf 파일에(없으면 생성) 아래 한줄 추가
/usr/lib/jvm/java-1.8.0-openjdk/lib/amd64/jli
그리고 ldconfig 실행
2. 포트 포워딩
80포트로 접속하면 다른포트(ex: 7000)로 포트 포워딩 시키는 방법입니다.
OS마다 차이가 있고 iptables 또는 firewall-cmd로 하면 됩니다.
CentOS 7은 firewall-cmd 명령어로 해야하고 이 명령어 기준으로 설명 합니다.
서비스 시작
systemctl start firewalld
서비스 중지
systemctl stop firewalld
포트 포워딩 설정
firewall-cmd --permanent --zone=public --add-forward-port=port=80:proto=tcp:toport=7000:toaddr=192.168.1.100
포트 포워딩 해제
firewall-cmd --permanent --zone=public --remove-forward-port=port=80:proto=tcp:toport=7000:toaddr=192.168.1.100
설정 변경 후 재기동
firewall-cmd --reload
확인
firewall-cmd --list-all
저는 firewall-cmd로 설정을 해봤는데 이유는 모르겠지만 포트 포워딩이 되지 않아서 포기했습니다.
3. 기타 - setuid 설정, sudoers 설정, authbind 설치
setuid나 sudoers는 보안상 모순 됩니다.
java에 root권한을 설정하면 일반계정에 root 권한을 준것과 다름 없습니다.
그럴바에 그냥 root로 실행하는 것이 더 안전합니다.
authbind는 구글 찾아보니 정리된 문서들이 있으니 생략 하겠습니다.
'개발 - WEB, WAS, DB' 카테고리의 다른 글
Apache 1개 - Tomcat 여러개 mod_proxy 설정 방법 (0) | 2022.01.02 |
---|---|
Apache 1개 - Tomcat 여러개 AJP 설정 방법 (0) | 2022.01.01 |
VPN IP 차단방법(톰캣 IP 접근제한) (0) | 2020.07.23 |
tomcat 환경에서 mysql JDBC 연결시 - Communications link failure (0) | 2020.05.13 |
톰캣 오류 - java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException (0) | 2018.11.25 |