Last Updated on 9월 4, 2022 by Jade(정현호)
안녕하세요
이번 포스팅은 오라클 클라우드 환경에서 사용중인 컴퓨트 인스턴스의 SSH 포트 변경에 대해서 확인 해보도록 하겠습니다.
1. 수신 규칙 추가
먼저 오라클 클라우드의 수신 규칙에 변경할 포트를 추가하도록 하겠습니다.
[참고] 해당 작업은 순서를 변경하거나 잘못 작업시 접속이 안될 수도 있습니다 작업 순서와 설정할 내역을 꼭 그대로 진행해야 합니다.
1-1 메뉴 이동
어드민 웹 콘솔 -> 네트워킹 -> 가상 클라우드 네트워크 로 이동 합니다.
1-2 구획 선택
생성한 구획을 먼저 선택 합니다.
1-3 VCN
VCN 을 선택 합니다.
1-4 공용 서브넷
생성되어 있는 공용 서브넷을 선택 합니다.
1-5 보안 목록 선택
기본적으로 생성되어 있는 보안 목록을 선택 합니다.
1-6 수신 규칙 추가
수신 규칙 추가 버튼을 클릭 후에 상세 내역으로 아래와 같이 설정을 합니다. 포스팅에서는 포트를 5020 으로 하였으며 포트번호는 사용하고자 하는 번호로 사용하시면 됩니다.(포트번호는 포스팅의 예시 입니다)
소스 CIDR : 0.0.0.0/0
소스 포트 범위 : 특별히 지정하지 않습니다 , 모두
대상 포트 범위 : 포트번호
설명 : 설명 란은 옵션 이라서 쓰지 않아도 됩니다.
모두 입력 되었다면 하단의 "수신 규칙 추가" 버튼을 클릭 하여 내용을 추가 합니다.
2. OS 방화벽 오픈
오라클 클라우드는 OS 방화벽도 설정되어 있습니다 그래서 OS 방화벽에서도 포트를 오픈을 해야 합니다.
OS 마다 사용하는 방화벽 데몬이 다르며 포스팅에서는 Ubuntu 와 CentOS/Oracle Linux 기준으로 설명 하도록 하겠습니다.
2-1 Ubuntu
우분투는 iptables 를 사용하며 아래 명령어로 방화벽을 오픈 하면 됩니다.
iptables 룰 정책 저장을 위한 패키지 설치
~$ sudo apt update
~$ sudo apt install iptables-persistent \
netfilter-persistent net-tools
우분투의 iptables 는 재부팅시내역이 초기화되기 때문에 아래 2개의 패키지를 설치가 필요합니다
설정된 정책 확인
~$ sudo iptables -nL
특정 포트 오픈 규칙 추가( -I 가장 먼저 추가)
~$ sudo iptables -I INPUT -p tcp -m tcp --dport 5020 -j ACCEPT
정책 영구 저장
~$ sudo netfilter-persistent save
우분투의 iptables 설정 후 위의 명령어를 통해 변경 사항을 저장해야 합니다.
적용 후 정책 확인을 하게 되면 아래 와 같이 포트 정책이 추가 된 것을 확인 할 수 있습니다.
~$ sudo iptables -nL Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:5020 < ...중략... >
참고로 추가된 포트의 정책 삭제는 아래와 같이 진행 하면 됩니다.
특정 포트 오픈 규칙 삭제
~$ sudo iptables -D INPUT -p tcp -m tcp --dport 5020 -j ACCEPT
2-2 CentOS/Oracle Linux
RPM 계열의 RHEL/CentOS/Oracle Linux 의 7버전 부터는 firewall 데몬에 의해서 관리가 되며 그에 따라 아래와 같이 포트를 오픈하면 됩니다.
포트 추가
firewall-cmd --permanent --add-port=5020/tcp
정책 재반영
firewall-cmd --reload
설정된 정책 확인
firewall-cmd --list-all
[참고1] 5020 포트 삭제
firewall-cmd --permanent --remove-port=5020/tcp
[참고1] SELinux 가 활성화된 상태
Oracle Cloud의 CentOS,Oracle Linux(RPM 계열) 은 SELinux 가 기본적으로 활성화가 되어 있습니다.
해당 기능을 Disable 하지 않아서 SELinux가 동작중이라면 아래와 같이 SELinux 에서 포트 허용 명령어를 추가로 수행이 필요 합니다.
sudo semanage port -a -t ssh_port_t -p tcp 5020
3. sshd 설정 변경
OS의 sshd 에서 포트 설정을 변경을 진행하도록 하겠습니다 Ubuntu 나 CentOS/Oracle Linux 모두 동일 합니다.
3-1 sshd_config 수정
vi 나 기타 편집기를 통해서 sshd_config 파일을 수정하면 되며 Port 번호 형태로 입력을 하면 됩니다.
sudo vi /etc/ssh/sshd_config
Port 5020
Port 정보를 입력 하였다면 저장 후 편집을 종료 합니다.
3-2 sshd 데몬 재시작
이제 데몬 서비스를 재시작 하도록 하겠습니다.
포트가 변경되어도 접속한 세션은 유지가 됨으로 비상시 사용의 의미로 세션은 1,2개는 계속 유지를 해두는 것이 좋습니다.
~$ sudo systemctl restart sshd
3-3 접속 확인
먼저 포트 번호가 정상적으로 변경되었는지는 netstat 를 통해서 확인 할 수 있습니다.
ssh 로 grep 하여 확인하였을 때 5020 으로 LISTEN 하고 있음을 알 수 있으며, 기존 세션은 22번 포트로 여전히 접속 중인 상태라는 걸 확인할 수 있습니다.
~$ sudo netstat -antp | grep ssh tcp 0 0 0.0.0.0:5020 0.0.0.0:* LISTEN 89367/sshd: /usr/sb tcp 0 0 1.1.1.1:22 123.123.123.123:62584 ESTABLISHED 88559/sshd: userid <--현재 접속한 세션 tcp6 0 0 :::5020 :::* LISTEN 89367/sshd: /usr/sb
[참고] 위에서 나온 IP 는 모두 예시 입니다.
새롭게 변경한 포트로 접속을 하면 아래와 같이 추가 세션 및 기존 세션이 접속해 있는 내역을 같이 볼 수 있습니다.
~$ sudo netstat -antp | grep ssh tcp 0 0 0.0.0.0:5020 0.0.0.0:* LISTEN 89367/sshd: /usr/sb tcp 0 0 1.1.1.1:5020 123.123.123.123:62664 ESTABLISHED 89462/sshd: userid <-- 추가로 접속한 세션 tcp 0 0 1.1.1.1:22 123.123.123.123:62584 ESTABLISHED 88559/sshd: userid tcp6 0 0 :::2080 :::* LISTEN 89367/sshd: /usr/sb
여기 까지 진행하여 정상적으로 변경한 포트로 ssh 가 접속되는 것을 확인 하였습니다. 그 다음으로 기존 수신 규칙을 정리하도록 하겠습니다.
4. 수신 규칙 삭제
기본으로 생성되어져 있는 22번 포트에 대한 수신 규칙을 정리 하도록 하겠습니다.
웹 콘솔에서 가상네트워크 등으로 이동합니다 UI 상 경로는 위에서 설명한 내역과 동일 합니다.
보안 정책의 수신 규칙 항목에서 소스 0.0.0.0 / 대상 포트 범위 : 22 인 수신 규칙에 대해서 체크 박스에 체크 후에 "제거" 버튼을 클릭 합니다.
아래와 같이 다시 한번 규칙 삭제를 확인 하게 되며 "제거" 를 클릭하면 수신 규칙이 삭제가 되게 됩니다.
이번에는 SSH 포트변경에 대해서 확인해 보았으며 여기 까지 진행되었다면 모든 과정이 완료된 것 입니다
관련된 다른 글
Principal DBA(MySQL, AWS Aurora, Oracle)
핀테크 서비스인 핀다에서 데이터베이스를 운영하고 있어요(at finda.co.kr)
Previous - 당근마켓, 위메프, Oracle Korea ACS / Fedora Kor UserGroup 운영중
Database 외에도 NoSQL , Linux , Python, Cloud, Http/PHP CGI 등에도 관심이 있습니다
purityboy83@gmail.com / admin@hoing.io