항상 그런 소리를 들었습니다. Oracle은... 여기까지. 이번에는 OCI에서 만든 가상머신을 토대로 어떻게 네트워크를 구성해 포트 접근을 허용하는지에 대해서 다루어보겠습니다.


방화벽 관리하기

OCI에서는 기본적으로 접근 제어를 위한 몇 가지 방법을 제공합니다.

  • 서브넷 아래에 보안 규칙 추가하기
  • 네트워크 보안 정책 설정하기

이렇게 보통 2가지 방법을 사용할 수 있습니다. 여기에서는 서브넷 아래에 보안 규칙을 설정함으로써 접근 제어를 구성해보겠습니다.

먼저 로그인을 하여 컴퓨트 인스턴스 목록에서 원하는 인스턴스를 선택하면 위와 같은 화면을 보시게 됩니다. 그리고 기본 VNIC 패널에서 서브넷 항목을 클릭하면 해당 서브넷 설정으로 이동할 수 있게 됩니다. 서브넷 설정에서 보안 목록을 확인하실 수 있고 해당 보안 목록을 통해 접근 제어를 하시면 됩니다.

기본적으로는 흔히 공유기에서 설정하실 수 있는 포트포워딩과 매우 흡사하게 디자인되어 있고 보통의 디자인이니 크게 어렵지는 않습니다. 보안 목록은 해당 서브넷을 사용하는 모든 인스턴스에 전역으로 적용되니 원하시는 보안 목록에서 작업하시면 됩니다. 보안 목록에서 파란색 '수신 규칙 추가' 버튼을 사용하여 다음과 같이 기본적인 웹 서버 구성을 완료할 수 있습니다.

  • 소스 CIDR: 0.0.0.0/0으로 설정하여 모든 소스에서 오는 트래픽을 받습니다.
  • IP 프로토콜: HTTP 프로토콜은 TCP 프로토콜 위에서 동작합니다.
  • 대상 포트 범위: 80,443으로 설정하여 2개 포트에 대한 접근을 허용합니다. 이 때 공백은 없어야 합니다.

서버 iptables에 규칙 추가하기

여기까지 하셨으면 이제 끝이 아닌가 싶지만 기본적으로 제공되는 이미지에는 iptables 규칙이 따로 추가되어 있어 실제로는 아직 접근이 되지 않습니다. SSH로 서버로 먼저 접근하여 iptables 규칙에 예외를 추가하거나 해당 규칙을 삭제하면 됩니다. 아래 사진에는 HTTP와 HTTPS 서비스가 예외로 등록된 상황입니다.

아래 명령을 사용하면 TCP 프로토콜에서 ens3 인터페이스로 80번과 443번 포트 접근을 허용하게 됩니다. 기본적인 네트워크 인터페이스 이름은 ens3로 모든 인스턴스에 대해 동일하게 적용됩니다. 만약 네트워크 인터페이스 이름이 다른 경우에는 ifconfig 명령을 통해 어떤 인터페이스에 올바른 IP 주소 할당이 되었는지 확인해주시면 됩니다.

sudo iptables -I INPUT 5 -i ens3 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -I INPUT 5 -i ens3 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT

여기까지 입니다.