본문 바로가기

Linux

CentOS 7/8 SSH Port 변경 (feat firewalld, selinux)

반응형

· 테스트 환경

OS : CentOS 8.2 Minimal

테스트 환경


· SSH 상태 확인

기본적으로 sshd 데몬의 Port는 TCP 22로 설정되어 있다.

# systemctl status sshd

sshd 데몬 상태

· SSH Port 변경

# vi /etc/ssh/sshd_config

변경 전 sshd_config 파일

sshd_config 파일 내부에서 Port 22 부분의 22를 사용하고자 하는 Port 번호로 바꾸어 준다.

앞에 # 표시는 주석처리이므로 지워준다. Port가 주석처리 되어 있으면 기본으로 22번을 사용하도록 되어 있다.

변경 후 sshd_config 파일

# systemctl restart sshd # systemctl status sshd

Port 2222로 변경 후 sshd 상태

만약 sshd 데몬 서비스가 제대로 올라오지 않거나 ssh로 접속이 잘 안될 때는 아래 2가지 방화벽과 SELinux를 반드시 점검해보도록 하자.


· Firewalld Port Open

sshd 서비스포트를 다른 포트로 바꾸어도 firewalld 데몬에서 해당포트를 열어주지 않으면 ssh 접속을 할 수 없는 난처한 상황에 처할 수 있다. 따라서 sshd 포트 변경하여 서비스 재시작 하기전에 firewall-cmd를 사용하여 변경하고자하는 포트를 열어줘야 한다. firewalld 데몬을 종료하는 것도 방법이 될 수 있지만 추천하지 않는다.

# firewall-cmd --permanent --zone=public --add-port=2222/tcp # firewall-cmd --reload

포트를 2222 번을 오픈 하였으니, 이제 다른곳에서 ssh 원격접속을 할 수 있다.

아래 명령어는 방화벽을 꺼버리는 명령어이다. (참고로 적어놨다.)

# systemctl stop firewalld # systemctl disable firewalld


· SELinux

SELinux 는 Linux의 보안을 강화해 주는 보안 강화 커널이다. CentOS/RHEL 를 사용하다보면 기본적으로 활성화 되어 있는데, SELinux가 기본적으로 ssh로는 22번 포트를 허용해주도록 설정이 되어 있다. 따라서 이것을 변경해 줘야 sshd 서비스 데몬이 제대로 올라온다.

selinux를 사용하면서 sshd 포트를 수정하기위해서는 semanage라는 툴이 필요하다. 필요하다면 설치하도록하자

# yum install policycoreutils-python-utils

​ # semanage port -a -t ssh_port_t -p tcp 2222 # semanage port -l | grep 2222

semanage 툴을 사용하여 selinux에서 허용하는 ssh포트를 2222로 변경하였다. 이제 sshd 데몬을 재시작할 때 에러 없이 잘 재시작 될 것이다.

위 과정이 번거롭다면 일시적으로 selinux 해제하는 방법도 있다.

# setenforce 0 # getenforce

Enforcing 상태는 selinux가 활성화 된 상태이고, Permissive는 일시중지된 상태이다.

SElinux를 영구히 종료하기 위해서는

# vi /etc/selinux/config

SELINUX=enforcing -> SELINUX=disabled로 수정하고 서버를 재부팅하면 된다.

반응형

'Linux' 카테고리의 다른 글

CentOS 7 DVD Repository - yum  (0) 2024.04.03
Free 명령어 정리  (0) 2024.04.03
CentOS 7 Raw Device 설정  (0) 2024.04.03