You dont have javascript enabled! Please download Google Chrome!
INIDOG
SElinux status enabled

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

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 파일에서 Port7777 로 변경했는지 확인한 후, systemctl restart sshd 또는 service sshd restart 를 실행하여 포트 변경 후 적용이 되는지 확인할 수 있습니다. (Journalctl 관련 메세지가 출력되지 않으면 됩니다.)

 

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

이 글에 대해 어떻게 생각하시나요?
유용한 포스트였나요? 여러분의 의견을 하단의 Vote와 댓글로 남겨주세요 🙂
유용합니다!
아쉽습니다.

여러분의 의견을 댓글로 남겨주세요.

avatar
error: 경고: 콘텐츠가 보호되고 있습니다. 복사 및 무단 사용을 금지합니다.