본문 바로가기
Linux

리눅스 - 1-1024 PORT(Well-Know-Ports) 사용방법 3가지(SetUid, IPTables, Capabilities)

by 올엠 2024. 2. 21.
반응형

리눅스에 웹 서비스나 FTP등의 서비스를 사용한다면, 추가로 서비스를 설치하고 해당 서비스를 웹 서비스는 80, FTP 21등의 포트를 사용하는 것이 좋다. 

다만 새로 설치한 서비스는 기본적으로 80 포트로 통신을 허용하지 않기 때문에 거부 메세지와 함께 포트가 열리지 않게 된다.

이러한 Well-Know-Ports라는 것을 리눅스에서는 다음 3가지 방법으로 사용할 수 있다.

실행파일에 SetUid 적용: 가장 쉽지만 보안상의 이슈가 있을 수 있다.

IPTables를 이용한 포트 바인딩: 네트워크 포트를 포워드하는 방법이다.

capabilities 설정으로 포트 허용 설정: 가장 좋은 방법이라는 생각이 든다. 다만 커널 2.6.24 이상에서만 사용이 가능하다.

1. SetUid 적용

chown root.[Usergroup] run-application

chmod 4775 run-application

실행파일의 소유권을 Root로 설정하여 권한을 위임받도록 한다. UserGroup도 구분하여 실행하고자 하는 경우 User가 속한 그룹을 지정하여 입력해도 되지만, 입력을 하지 않을 경우 중간 구분기호인 “.”을 사용하지 않아도 된다.

chmod를 통해 SetUid 설정 퍼미션 4000을 넣어주고, 755는 그룹에 대한 사용자에게 쓰기 권한을 부여하게 된다.

 

2. IPTables를 이용한 포트 바인딩

iptables -t nat -A PREROUTING -i {네트워크인터페이스} -p tcp --dport {well-know-port} -j REDIRECT --to-ports {run-application-port}

IPTables를 이용해서 80으로 접속한 세션을 8080이나 어플리케이션이 사용하는 포트로 Redirect하는 방법이다.

 

3. Capabilities 설정으로 포트 허용 설정

Capabilities 설정인 setcap을 이용하여 권한을 부여하게 된다. 네트워크 권한인 CAP_NET_BIND_SERVICE 에 권한을 추가해주면 된다. 그리고 정상적으로 권한이 추가되었는지 getcap을 통해 확인이 가능하다.

setcap 'cap_net_bind_service=+eip' /usr/bin/nc

getcap /usr/bin/nc

만약 Kibana를 80으로 서비스 하고자 한다면, 다음과 같은 명령을 통해 진행할 수 있다.

setcap 'CAP_NET_BIND_SERVICE=+eip' /usr/share/kibana/node/bin/node

 

 

반응형