80 port에 대하여 Root가 아닌 다른 계정으로 서비스 하기

보안 취약점으로 인해 서비스에 대한 기동을 root가 아닌 다른 계정으로 하라는 지침이 내려왔다.

하지만 1024 포트 이하에 대한 서비스 권한은 root만 가지고 있다. 기존에 했던 방법은 계정을 생성하고 root와 같은 그룹으로 묶어서 처리한 기억이 있다.

이번에 찾은 방법은 authbind라는 라이브러리를 이용 하는 방법이다.

예제는 pm2를 이용하였는데, 아마 생각은 다른 프로그램 역시 동작 할것이다.

우선 다음 명령어를 이용하여 authbind를 설치 하고 %user% 는 사용하려는 계정으로 바꿔서 진행하면 된다.

$> sudo apt-get install authbind
$> sudo touch /etc/authbind/byport/80
$> sudo chown %user% /etc/authbind/byport/80
$> sudo chmod 755 /etc/authbind/byport/80

그리고 변경해야 하는 내용은 사용하려는 서비스의 기동을 다음과 같이 하면 된다.

$> authbind --deep %명령어% 

일일이 치기 귀찮다면 다음과 같이 alias를 사용자 프로파일에 추가한다.

# ~/.bash 또는 ~/.zshrc
$> vi ~/.bash
# 가장 하단에 다음 내역 추가 
alias 명령어='authbind --deep 명령어'

# 프로파일 재반영
$> source ~/.bash

pm2를 예를 들면 다음과 같다.

# ~/.bash 또는 ~/.zshrc
$> vi ~/.bash
# 가장 하단에 다음 내역 추가 
alias pm2='authbind --deep pm2'

# 프로파일 재반영
$> source ~/.bash

pm2의 경우 update를 authbind를 이용하여 해야 한다.

$> authbind --deep pm2 update

추가적인 방법으로는 포트 포워딩을 이용하여 처리하는 방법도 있다.

참고자료


Posted by lahuman