본문 바로가기

개발 노트/Etc.

[Oracle Cloud] 오라클 Compute instance 에 Postgresql 셋팅

반응형

평생 무료로 사용 중인 오라클 compute instance 에서 postgresql 셋팅에 대해 간단하게 정리한다.

 

현재 시점 (2024/08/26) 기준이며 Oracel cloud UI, postgresql version 등에 따라 동작이 달라질 수 있지만 기본적인 틀은 크게 바뀌지 않을 거라고 생각한다.

 

나는 기본 포트 쓰는걸 보안적으로 가장 취약한 방안 중 하나로 생각하기 때문에 postgresql 기본 포트인 5432 포트 대신 25432 로 우회해서 사용하려 한다. 이것도 만약 전체 포트스캐닝에 감지되면 5432 포트와 유사성이 있어 취약할 수 있기 때문에 아예 다른 포트로 사용하는게 좋긴하다.

 

1. Compute Instance 에 security group 에 postgresql 에서 사용할 Port 를 오픈한다.

이동 경로는 "인스턴스 상세 정보 -> VNIC -> 서브넷 (XXX) -> 보안 목록" 리스트의 항목을 선택하면 된다. 

Oracle instance 는 보안그룹 정책을 VNIC 서브넷의 보안 목록이 자동 적용된다고 한다.

* 소스 IP 를 만약 자신의 공인 IP 를 알고 있다면 입력해서 접근 제한을 좁히는게 좋다.

 

2. Postgresl 설치 및 설정

나는 ubuntu 24 이미지로 postgresql 을 설치하여 사용했다.

설치는 간단하게 아래 명령어로 가능하다.

sudo apt update
sudo apt install postgresql

 

이후에는 다음 경로의 파일들의 내용을 수정한다.

sudo vi /etc/postgresql/16/main/postgresql.conf

 

 

listen_address 는 '*' 로 설정하고 port 는 앞서 얘기한 25432 포트를 사용한다.

sudo vi /etc/postgresql/16/main/pg_hba.conf

 

 

 

위 한 줄을 추가하여 접근 가능한 host 에 전체 IP 접근이 가능하도록 설정한다. 여기서도 앞선 보안그룹 설정과 마찬가지로 자신의 공인 IP 를 안다면 해당 IP 로 설정이 가능해 보인다.

 

모든 설정을 마치고 postgresql 을 재시작한다.

sudo systemctl restart postgresql

netstat -nltp | grep 25432

 

재시작 후 netstat 명령어로 port 를 확인해보면

 

위와 같이 뜬 것을 확인해볼 수 있다.

 

3. iptables 에 port 추가

sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 25432 -j ACCEPT
sudo netfilter-persistent save

 

열려 있는 25432 포트를 linux 자체에서도 열려있음을 알 수 있게 iptables 에도 추가해 주어야 한다. 실제 이 부분에서 애먹었기에 이 글을 남긴다.

 

 

이후 PC 에서 telnet 명령으로 테스트 시 port 가 정상으로 열려 있음을 확인할 수 있다.

 

위 설정 중에 1, 3번은 기본적으로 Oracle compute instance 의 port 오픈 방법이기에 알아두면 좋다.

반응형