SSH(Secure Shell)는 컴퓨터 네트워크에서 안전하게 원격으로 데이터 통신을 수행하거나 명령을 실행할 수 있게 해주는 암호화된 프로토콜입니다.
SSH는 원격으로 시스템에 접근하고, 명령을 실행하며, 파일을 전송하는 데 사용되며, 통신 중 공격자에게 정보가 노출되지 않도록 보안을 강화합니다.
SSH는 주로 다음의 상황에서 사용됩니다:
- 원격 서버에 접속하여 명령 실행
- 원격 시스템에 파일을 안전하게 복사하기 위한 SCP(Secure Copy) 또는 SFTP(Secure File Transfer Protocol) 기능 사용
- 서버와 네트워크 기기의 관리 및 구성 작업
- SSH 터널링을 사용한 안전한 포트 포워딩 및 프록시 작업
SSH Default Port 변경하기
SSH의 기본 포트는 22번입니다.
SSH 설정 파일 열기: /etc/ssh/sshd_config 파일을 연 후 편집
$ sudo nano /etc/ssh/sshd_config
기존의 22번 설정라인에 주석(#)처리를 하고 아래 새로 Port 2222 포트를 지정합니다
SELinux 포트 변경 : SELinux가 활성화된 경우, 열려진 포트에도 SELinux 정책을 적용해야 합니다.
아래 명령어로 SELinux의 상태를 확인합니다.
$ sestatus
SELinux가 enable 상태일 경우 아래 명령어를 입력하여 SELinux 정책을 등록합니다.
$ sudo semanage port -a -t ssh_port_t -p tcp 2222
semanage : SELinux 관리 도구로, 종류별로 SELinux 정책을 관리합니다.
port -a : 포트를 추가하는 옵션입니다.
-t ssh_port_t : 적용할 SELinux 유형을 지정합니다. SSH 포트 변경에 해당하는 유형을 지정합니다.
-p tcp : 프로토콜을 지정합니다. 여기서는 TCP를 사용합니다.
2222 : 새로운 포트 번호입니다.
방화벽에서 포트 열기 : 변경된 포트를 방화벽에서 열어주어야 원격 접속이 가능합니다.
firewalld를 사용하는 경우, 다음 명령어를 사용하여 변경된 포트를 방화벽 오픈
$ sudo firewall-cmd --permanent --zone=public --add-port=2222/tcp
$ sudo firewall-cmd --reload
SSH 서비스 재시작 : 변경된 설정을 적용하려면 SSH 서비스를 재시작해야 합니다
$sudo systemctl restart sshd
위의 설정까지 끝이나면 아래와 같이 기존 접속하던 22포트로 접근하던 방식이 차단되며
아래 명령어와 같이 포트 번호를 지정하여야 ssh 접속이 가능합니다.
$ ssh -p 2222 [your-username]@[your-server-ip]
이후 접속 테스트를 하시면 “Connection refused” 문구와 함께 접속이 차단됩니다.
SSH 포트 변경 시 문제 사항
$ sudo semanage port -a -t ssh_port_t -p tcp 2222
해당 명령어가 작동하지 않을경우 패키지를 설치 해주셔야 합니다.
$ sudo dnf install policycoreutils-python-utils -y
SELinux가 꺼져있는 상태
위의 경우 SELinux 정책 등록 과정을 스킵하시고 설정하시면 됩니다.