SSH 서비스 설치 상태 확인
SSH 포트를 수정하기 전에 시스템에 SSH 관련 패키지가 올바르게 설치되어 있는지 확인해야 합니다. 다음 명령어를 사용하여 설치 여부를 검사할 수 있습니다.
[root@server ~]# rpm -qa | grep ssh
libssh2-1.4.3-10.el7_2.1.x86_64
openssh-7.4p1-16.el7.x86_64
openssh-server-7.4p1-16.el7.x86_64
openssh-clients-7.4p1-16.el7.x86_64
출력 결과에 openssh-server와 openssh-clients가 포함되지 않은 경우, 아래 명령어로 설치합니다.
yum install openssh-server openssh-clients -y
SSH 구성 파일 수정
기본적으로 SSH는 22번 포트를 사용하지만, 보안을 위해 다른 포트를 추가하거나 변경할 수 있습니다. 루트 권한으로 다음 파일을 편집합니다.
vim /etc/ssh/sshd_config
해당 파일 내에서 다음 줄을 찾습니다.
#Port 22
이 주석을 해제하고 기본 포트를 유지하면서 새로운 포트를 추가합니다. 예를 들어 12345번 포트를 사용하려면 다음과 같이 설정합니다.
Port 22
Port 12345
설정 후 저장하고 종료한 다음, SSH 서비스를 재시작합니다.
systemctl restart sshd
방화벽에 새 포트 등록
새로 지정한 포트가 방화벽에 의해 차단되지 않도록 하려면, 해당 포트를 방화벽 규칙에 추가해야 합니다. 아래 명령어를 사용하여 영구적으로 포트를 등록합니다.
firewall-cmd --permanent --add-port=12345/tcp
변경 사항을 적용하기 위해 방화벽을 다시 로드합니다.
firewall-cmd --reload
포트가 정상적으로 추가되었는지 확인합니다.
[user@server ~]$ firewall-cmd --list-ports
22/tcp 12345/tcp
SELinux 정책 조정
SELinux가 활성화된 환경에서는 단순히 포트를 열어주는 것 외에도, 해당 포트가 SSH 서비스용으로 허용되는지 확인해야 합니다. 먼저 SELinux 도구인 semanage가 설치되어 있는지 확인합니다.
[root@server ~]# semanage -h
명령어가 실행되지 않으면, 필요한 패키지를 설치합니다.
yum install policycoreutils-python-utils -y
설치 후 현재 SSH 포트 정책을 조회합니다.
[root@server ~]# semanage port -l | grep ssh
ssh_port_t tcp 22
12345번 포트가 목록에 없으므로, 이를 SSH 허용 포트로 추가합니다.
semanage port -a -t ssh_port_t -p tcp 12345
다시 목록을 확인하면 새 포트가 반영된 것을 볼 수 있습니다.
[root@server ~]# semanage port -l | grep ssh
ssh_port_t tcp 12345, 22
모든 설정 완료 후 시스템 재부팅을 권장합니다. 일부 환경에서는 재부팅 없이 정책이 완전히 적용되지 않을 수 있습니다.
새 포트로 연결 테스트
외부 클라이언트에서 새 포트를 통해 SSH 접속을 시도합니다.
ssh root@192.168.128.240 -p 12345
처음 접속 시 호스트 인증 경고가 나타날 수 있으며, yes를 입력하여 계속 진행합니다. 성공적으로 로그인되면 변경이 정상적으로 완료된 것입니다.
불필요한 포트 제거 (선택 사항)
보안 강화를 위해 기존 22번 포트 사용을 중단하려면, /etc/ssh/sshd_config 파일에서 Port 22 줄을 삭제하거나 주석 처리합니다. 이후 방화벽과 SELinux 설정에서도 동일하게 제거합니다.
firewall-cmd --permanent --remove-port=22/tcp
semanage port -d -t ssh_port_t -p tcp 22
변경 후 SSH 서비스와 방화벽을 재시작하여 설정을 적용합니다.