오라클 클라우드 프리티어(4) - 무료 VPS 사용

Share

Last Updated on 4월 14, 2024 by Jade(정현호)

안녕하세요 
포스팅 글은 오라클 클라우드 프리티어 연재글로써 이번 글에서는 보안 룰셋 설정과 Linux OS의 Firewall 설정, 서버간 route 허용, Oracle Cloud 사용량 확인에 관한 내용을 확인해보도록 하겠습니다. 

• 오라클 클라우드 프리티어 연재 첫번째 글


오라클 클라우드 프리티어 구성 후 Ubuntu 환경에 Nginx PHP MariaDB 환경 구성을 원하시면 아래 포스팅 이어서 참조하세요 

 

들어가기전에

해당 포스팅은 오라클 클라우드 프리티어, APM 스택구성, 도메인 설정, 워드프레스 구축까지 이어지는 연재 글의 중간글 입니다.

하단의 링크를 통해 다음 단계의 포스팅을 보실 수 있습니다.


이전글
오라클 클라우드 프리티어(1) - 무료 VPS 사용
https://hoing.io/archives/304

오라클 클라우드 프리티어(2) - 무료 VPS 사용
https://hoing.io/archives/318

오라클 클라우드 프리티어(3) - 무료 VPS 사용
https://hoing.io/archives/346
      

보안 룰셋 과 OS의 방화벽 설정

컴퓨트 인스턴스에서 Nginx 나 Apache 와 같은 웹 서버 서비스를 구동하거나 기타 다른 서비스 데몬을 시작하였다면 접속 할 수 있게 보안 정책에서 허용이 필요 하며, 오라클 클라우드는 네트워크 상 수신 규칙(Inbound Rule) 과 OS 자체 방화벽 두곳에 대해서 설정을 해야 합니다.
        

수신 규칙 추가

먼저 수신 규칙 부터 추가하도록 하겠습니다.

메뉴에서 네트워킹 -> 가상 클라우드 네트워크 를 선택합니다.




VCN 을 선택합니다.




공용 서브넷 을 선택합니다.




Default Securirty.. 를 선택합니다.




수신 규칙을 만들어 줘야 하며 위와 같은 형태로 생성을 합니다. 여기서는 TCP:80 포트를 수신 규칙에 추가하는 것을 예제로 작성된 내용입니다.
소스 CIDR : 0.0.0.0/0
소스 포트 범위 : 특별히 지정하지 않습니다 , 모두 
대상 포트 범위 : 80
설명 : 설명 란은 옵션 이라서 쓰지 않아도 됩니다.




위와 같이 생성을 하게 되면 TCP:80 포트에 대해서는 모든 IP 대상으로 해서 접속이 가능한 상태가 되게 됩니다.
만약 특정 서비스 포트는 특정 IP(예를 들어 나의 PC) 나 나의 IP 대역의 C 클래스 대역만 허용하고 싶을 경우 아래와 소스 CIDR 을 아래와 같이 설정하시면 됩니다.

123.123.123.123 이라는 IP 만 접속 허용 : 123.123.123.123/32
123.123.123.0 C 클래스 대역대 접속 허용 : 123.123..123.0/24


수신 규칙이 만들어졌다면 위와 같이 확인이 되게 됩니다.
이후 OS에서 방화벽인 firewall 이 존재하기 때문에 OS 방화벽에서도 포트오픈이나 정책을 수립해줘야 합니다



           

OS 방화벽 OPEN

클라우드 서비스 마다 정책은 다르며, 오라클 클라우드는 클라우드의 네트워크 상의 수신규칙(Inbound) 설정 외에 OS 자체 방화벽 활성화가 기본 정책 입니다.

그래서 외부에서 오라클 클라우드로 접속하려면 수신 규칙 추가 이외 OS 의 방화벽도 오픈 해야 합니다.

OS 별로 설정하는 방화벽 데몬이 다르고 그에 따라서 설정 방법이 다르므로 사용하는 OS 에 따라서 아래 내용을 참고하시면 됩니다.
          

CentOS - Firewall

CentOS 나 Oracle Linux 또는 Rocky Linux 에서는 firewalld 를 사용하고 있습니다.

# 80 포트 추가

firewall-cmd --permanent --add-port=80/tcp 

# 80 포트 삭제
firewall-cmd --permanent --remove-port=80/tcp 

# 정책 재반영
firewall-cmd --reload

# 설정된 정책 확인
firewall-cmd --list-all

# 특정 IP에 대해 특정 Port에 접근 허용
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address=123.123.123.123 port port="1234" protocol="tcp" accept'
         

Ubuntu - iptables

우분투에서는 방화벽을 iptables 로 사용되고 있습니다.

먼저 iptables 에 정책이 설정되어 있는지 확인합니다 설정이 되어 있다면 원하는 포트를 오픈 해야 합니다.
설정이 되어 있지 않다면(사용하지 않으면) 아래 내용은 생략해도 됩니다.


설정된 정책 확인
ubuntu$ sudo iptables -nL


만약 아래와 같이 내용이 출력 된다면 설정된 정책이 없는 것입니다.

Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination


정책이 설정되어 iptables 를 사용 사용중이라면 아래 내용대로 설정을 하시면 됩니다.


iptables 룰 정책 저장을 위한 패키지 설치

ubuntu$ sudo apt-get install iptables-persistent netfilter-persistent
-> 우분투의 iptables 는 OS를 재부팅 하게 되면 설정된 내용이 초기화되기 때문에 설정하기 전에 2개의 패키지 설치가 필요합니다.


특정 포트 오픈 규칙 추가( -I : 가장 먼저 추가)
ubuntu$ sudo iptables -I INPUT -p tcp -m tcp --dport 8080 -j ACCEPT

특정 포트 오픈 규칙 삭제
ubuntu$ sudo iptables -D INPUT -p tcp -m tcp --dport 8080 -j ACCEPT

포트 오픈시 특정 IP(123.123.123.123) 로 만 허용
iptables -I INPUT -p tcp -s 123.123.123.123 --dport 8009 -j ACCEPT

위의 "포트 오픈시 특정 IP 로 만 허용" 정책 삭제
iptables -D INPUT -p tcp -s 123.123.123.123 --dport 8009 -j ACCEPT


정책 영구 저장
ubuntu$ sudo netfilter-persistent save


[참고] 리눅스 VM 컴퓨터 생성 이후 SSH 관련 보안 설정을 하지 않았다면 먼저 Fail2ban 설치 및 설정 보시면 좋습니다.

            

서버간 라우팅 허용 정책

오라클 클라우드 프리티어의 경우 기본적으로 2대의 컴퓨트 인스턴스를 생성하여 사용할 수 있습니다
(ARM A1 인스턴스 제외하고)

생성된 2개의 컴퓨트 인스턴스가 같은 IP 대역대 라도 수신 규칙이 있어야 서로 간의 통신이 가능 합니다.


예를 들어 2번 서버에 MySQL 이 구동중이라면 MySQL 사용 포트인 TCP:3306 포트를 수신 규칙에 추가해줘야 합니다.

포트 별로 추가해줄 수 있지만 아래와 같이 대역대로, 모든 프로토콜을 설정하면 서버간 통신에 대해서는 모드 수신/송신이 가능해지게 됩니다.

CIDR - 10.0.0.0/16


          

컴퓨트 인스턴스 콘솔 접속

사용중인 컴퓨터 인스턴스의 재부팅 과정을 확인하고 싶거나 문제가 생겨서 다운된 인스턴스를 기동하였으나 여전히 SSH 가 접속이 안되는 등 여러 경우에 경우 콘솔 기능을 사용하면 문제 해결 등에서 도움을 받을 수 있습니다.

보통의 경우 인스턴스가 부팅 된 다음 직접 서버의 모니터 앞에서 부팅 과정이나 SSH 데몬 서비스 활성화 이전에 문제가 생긴 부분에 대해서 확인할 수 있습니다.

또한 패스워드가 설정된 계정이 있다면 콘솔을 통해서 로그인도 가능 합니다.
콘솔을 사용하려면 사용하려는 계정의 그룹에 권한을 부여해야 합니다. 

먼저 오라클 클라우드 웹 콘솔에 관리자 계정으로 접속 후 -> ID & 보안 -> 그룹으로 이동합니다





리스트 중에서 권한을 부여할 그룹을 찾습니다. 포스팅에서는 기본 생성되는 관리자 그룹인 Administrators 를 사용하도록 하겠습니다




그룹을 확인하였다면 그 다음으로 ID&보안 -> 정책 으로 이동합니다.




"정책 생성" 을 클릭합니다.




정책을 생성하면 되며 정책 이름 과 설명은 편한 정책 명이나 자유롭게 사용할 수 있습니다.
아래 정책 작성기에 정책을 추가하면 되며 아래와 같이 정책 입력기가 나오지 않는다면 "수동 편집기 표시" 를 선택해서 입력창이 활성화되도록 합니다.

# 정책내용 예시
Allow group 그룹명 to manage instance-console-connection in tenancy
Allow group 그룹명 to read instance in tenancy

# Administrators 그룹을 사용할 때의 예시
Allow group Administrators to manage instance-console-connection in tenancy
Allow group Administrators to read instance in tenancy

위의 정책 과 아래 이미지를 참조하여 정책을 추가한 후에 하단의 "생성" 버튼을 클릭하여 정책을 생성합니다.




정책 생성이 완료된 다음에는 컴퓨트  -> 인스턴스 로 이동합니다.




사용중인 인스턴스를 클릭한 후 하단의 콘솔 접속 -> Cloud Shell 접속 실행 을 클릭합니다.




정책이 정확히 설정되었다면 아래와 같이 콘솔에 접속되는 것을 확인하실 수 있으며 콘솔에 접속이 완료가 된 다음에 엔터 를 한번 입력하면 아래와 같이 로그인 입력을 기다리는 것을 확인하실 수 있습니다.


테스트를 위해서 아래와 같이 인스턴스를 재부팅 해보겠습니다.




그럼 아래와 같이 부팅 하는 내용 등을 확인할 수 있습니다.


종료는 우측 상단에 X 표시를 누르면 클라우드 쉘 - 콘솔 커넥션이 종료되게 됩니다.



이와 같이 사용할 수 있으며, 부팅시 문제점을 확인하거나 부팅 시의 메세지 등을 확인 및 트러블 슈팅이 필요할 경우 콘솔 기능을 이용해보시면 도움이 되실 수 있으실 것입니다.

여기에서 사용된 클라우드 쉘은 2020년 2월 11일에 추가된 기능으로 콘솔의 기능으로도 사용할 수 있지만 웹 상에서 SSH 클라이언트 형태로도 사용할 수 있습니다.

해당 클라우드 쉘에 대한 더 자세한 내용은 아래 포스팅을 참조하시면 됩니다

          

Oracle Cloud 사용량 확인

오라클 클라우드를 사용한지 약 3개월 넘게 사용 중에 있습니다.

4개월 정도 지나가는 시점에서 한달에 제공되는 트래픽 량 10TB 중에서 얼마만큼 사용하였는지 확인해보고자 비용분석 리포팅을 확인해보았습니다

[오라클 클라우드 프리티어 제공 트랙픽량]


거버넌스 & 관리 -> 비용 분석 으로 이동합니다.




먼저 기간을 선택합니다 그리고 표시 항목에서 "사용량" 을 선택 후 적용을 클릭합니다
보통 저는 한달에 9~10GB 정도 사용하는 것으로 확인되었습니다
이렇게 사용량을 확인하면서 사용하면 될 것 같습니다.





이어지는 글
MFA - 2차 인증 - OTP 설정


웹 서비스 시작 - 리눅스에 APM(Apache + PHP + MySQL) 설치 연동



연관된 다른 글
다른 스택이나 다른 운영 체제나 다른 버전은 아래 포스팅을 참조하시면 됩니다.

Ubuntu 환경에 Nginx PHP MariaDB 구성

Ubuntu 환경에 APM 구성

CentOS7.8 환경에 Apache + Tomcat + JDK 연동 설치

CentOS7.8 Nginx+PHP-FPM+MySQL 구성

CentOS 8 버전에 APM(Apache PHP-FPM MariaDB) 구성

CentOS 8 버전에 LEMP(Nginx PHP-FPM MariaDB) 구성

Ubuntu 환경에 Nginx + Node.js 구성



2
0
글에 대한 당신의 생각을 기다립니다. 댓글 의견 주세요!x