본문 바로가기
Middleware/WebtoB

WebtoB - Linux 에서 1024 이하 well-known 포트를 사용하도록 설정하기

by nxCore 2023. 3. 3.

 

 

Linux 환경에서는 well-known 포트 (1~1024 포트) 를 사용하기 위해서는 root 권한이 필요합니다.

http.m 설정파일에 well-known 포트를 사용하도록 구성된 경우, 컴파일 시에 [CFL-00368] 경고 문구가 출력됩니다.

[webtob5@CentOS7-WAS1 ~]$ wscfl -i http.m
[CFL-00368] Configuration uses privileged listen ports (those below 1024). These ports generally require root privilege. The user may run WebtoB as a superuser, or change the owner of htl to root and enable the setuid (sticky) bit on htl.

Current configuration:
        Number of client handler(HTH) = 1
        Supported maximum user per node = 16384
        Supported maximum user per handler = 16384

Successfully created the configuration file (/sw/webtob5/config/wsconfig) for node CentOS7-WAS1.
The host name of the running machine is CentOS7-WAS1.

 

별도 작업을 해주지 않으면 well-known 포트를 사용하는 설정으로 WebtoB 기동 시 다음과 같은 bind error 가 출력되며 포트 리스닝이 되지 않고 페이지 접속이 되지 않습니다.

[webtob5@CentOS7-WAS1 ~]$ wsboot

Booting WebtoB on node (CentOS7-WAS1)
Starting WSM at Fri Mar  3 13:27:11 2023
Starting HTL at Fri Mar  3 13:27:11 2023
Starting HTH at Fri Mar  3 13:27:11 2023
         Current WebtoB Configuration:
                Number of client handlers (HTH) = 1
                Supported maximum user per node = 5
                Supported maximum user per handler = 5
[2023-03-03T13:27:11] [HTL(2307)] [F] [HTL-00048] bind error. Listen port (80) is in use or address (0.0.0.0) is invalid. Try to bind to that port again in 10 seconds.  errno=13(Permission denied)
[2023-03-03T13:27:11] [HTL(2307)] [F] [HTL-00048] bind error. Listen port (443) is in use or address (0.0.0.0) is invalid. Try to bind to that port again in 10 seconds.  errno=13(Permission denied)

 

두 가지 방법으로 WebtoB 에서 well-known 포트를 사용할 수 있도록 설정할 수 있습니다.

아래 두 가지 방법 중 하나만 작업해주면 됩니다.

티맥스소프트 표준 작업 절차 상 setuid 설정이 기본이나, root 권한이 모두 부여되는 setuid 특성 상 보안 문제가 우려되는 경우에는 setcap 을 이용하면 됩니다.

 

  • setuid 설정 방법
  1. root 계정으로 로그인
  2. WebtoB 설치 경로($WEBTOBDIR) 아래의 bin 디렉토리로 이동
  3. htl 프로세스의 소유자, 그룹 수정 - 소유자는 root, 그룹은 WebtoB 실행 계정이 속한 그룹
  4. setuid 설정
[root@CentOS7-WAS1 bin]# pwd
/sw/webtob5/bin
[root@CentOS7-WAS1 bin]# ls -al htl
-rwxr-x--- 1 webtob5 was 555104 12월 26 08:11 htl
[root@CentOS7-WAS1 bin]# chown root:was htl
[root@CentOS7-WAS1 bin]# chmod 4750 htl
[root@CentOS7-WAS1 bin]# ls -al htl
-rwsr-x--- 1 root was 555104 12월 26 08:11 htl

 

  • setcap 설정 방법
  1. root 계정으로 로그인
  2. WebtoB 설치 경로($WEBTOBDIR) 아래의 bin 디렉토리로 이동
  3. setcap 설정
[root@CentOS7-WAS1 bin]# pwd
/sw/webtob5/bin
[root@CentOS7-WAS1 bin]# ls -al htl
-rwx------ 1 webtob5 was 555104 12월 26 08:11 htl
[root@CentOS7-WAS1 bin]# setcap 'cap_net_bind_service=+ep' htl
[root@CentOS7-WAS1 bin]# getcap htl
htl = cap_net_bind_service+ep
[root@CentOS7-WAS1 bin]# ls -al htl
-rwx------ 1 webtob5 was 555104 12월 26 08:11 htl

 

경우에 따라서는 http.m 설정파일에 추가 설정이 필요할 수 있습니다. (setuid, setcap 설정해도 오류 발생 시)

*NODE 절 설정에 IPCPERM = 0777 옵션을 추가해주시기 바랍니다.

*DOMAIN
webtob1

*NODE
CentOS7-WAS1    WEBTOBDIR="/sw/webtob4",
                SHMKEY = 54000,
                DOCROOT="/sw/webtob4/docs",
                PORT = "8080",
                HTH = 1,
                ERRORDOCUMENT = "503",
                JSVPORT = 9900,
                IPCPERM = 0777,		### 이 부분을 추가 설정
                LOGGING = "log1",
                ERRORLOG = "log2",
                SYSLOG = "syslog"

 

설정이 완료된 뒤 WebtoB 를 기동하면 오류 없이 WebtoB 에서 well-known 포트를 사용할 수 있습니다.

댓글