Windows, Linux, Others.

SELinux를 사용하는 서버에서 특정 서비스 포트 변경하기

S

SELinux를 사용하는 서버에서 특정 서비스 포트 변경하기


SELinux (Secure Enhanced Linux/보안 강화 리눅스)는 최신 리눅스 운영체제에 적용된 향상된 보안 정책 모듈입니다. 이 모듈을 사용하여 세부적으로 접근 권한을 설정할 수 있다는 것은 장점이지만, 간혹 이유 모를 원인으로 발생하는 에러들의 일부가 SELinux가 켜져있어서 발생하기 때문에 리눅스 관리에 있어 다소 불편할 수 있습니다.

SElinux status enabled
▲ SElinux가 켜져 있을 때 모습

 

 

 

 

 

 

이 때문에 SELinux를 사용할 때 시스템 보안 정책에 의해 특정 서비스 포트를 변경하려고 하면 아래 메세지가 출력되며 거부될 수 있습니다.

Redirecting to /bin/systemctl restart sshd.service
Job for sshd.service failed because the control process exited with error code. See "systemctl status sshd.service" and "journalctl -xe" for details.
(위 메세지는 SSH 데몬 설정에서 22번 기본 포트를 변경하려고 할 시에 발생하는 메세지 입니다.)

Journalctl 관련된 에러 메세지는 주로 설정 파일의 문법 오류로도 나타나지만 SELinux로 인해 서비스 포트 변경이 차단 되어서 나타나기도 합니다.

SSH 포트를 변경할 경우 /etc/ssh/sshd_config 파일을 살펴보면 아래와 같이 SELinux가 켜져있을 때의 조치를 안내하고 있습니다.

# If you want to change the port on a SELinux system, you have to tell
# SELinux about this change.
# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER

보통 이와 같은 문제를 해결하기 위해 주로 SELinux 자체를 끄고는 하지만, 이 글에서는 SELinux를 끄지 않고 포트 변경을 수행하는 방법을 알려드리고자 합니다.

먼저, semanage 명령어를 사용하기 위해 아래 패키지를 설치합니다. 이미 해당 명령어를 사용할 수 있다면 건너뛰셔도 됩니다.

# yum install policycoreutils-python

다음으로, semanage 명령어를 Root 권한으로 실행합니다. 예로 22번을 사용하는 SSH 서비스 포트를 7777 포트로 변경하고자 하면 아래 명령어로 포트 변경을 요청할 수 있습니다.

# semanage port -a -t ssh_port_t -p tcp 7777

usage: semanage port [-h] [-n] [-N] [-S STORE] [ --add -t TYPE -p PROTOCOL -r RANGE ( port_name | port_range ) | --delete -p PROTOCOL ( port_name | port_range ) | --deleteall | --extract | --list -C | --modify -t TYPE -p PROTOCOL -r RANGE ( port_name | port_range ) ]
-a, --add Add a record of the port object type
-t TYPE, --type TYPE SELinux Type for the object
-p PROTO, --proto PROTO
Protocol for the specified port (tcp|udp) or internet protocol version for the specified node (ipv4|ipv6).

적용이 완료되었다면 이제 포트 변경을 수행할 수 있습니다.
위 예시에서는 /etc/ssh/sshd_config 파일에서 Port를 7777 로 변경했는지 확인한 후, systemctl restart sshd 또는 service sshd restart 를 실행하여 포트 변경 후 적용이 되는지 확인할 수 있습니다.
(Journalctl 관련 메세지가 출력되지 않으면 됩니다.)

이런 방식으로 SELinux를 끄지 않고 포트 변경을 할 수 있습니다.

댓글 달기

Windows, Linux, Others.

최근 글

최근 댓글

카테고리