오라클 클라우드에서는 OCI에서 제공하는 이미지를 사용할 경우 다른 CSP와 다르게 VM 단, 즉 호스트 단에서 방화벽을 열어줘야 한다. 예를 들어서 웹 서버인 경우 80 Port를 방화벽에서 열어줘야 정상적으로 통신이 가능합니다.
오라클 클라우드에서는 오라클 리눅스 7이상인 경우 fiewalld을 사용중 이고 다른 OS의 경우 이미지 버전마다 조금씩 차이가 나는 것 같지만 대체적으로 iptables를 사용하고 있습니다.
iptables란?
Netfilter는 커널 내부에서 동작하는 패킷 처리 시스템으로 작동하며 패킷 필터링, NAT(네트워크 주소 변환)과 같은 프레임워크를 제공합니다, 그러나 사용자는 Netfilter를 직접 제어하지는 않으며 iptables를 통해 관리자는 네트워크 트래픽을 제어하는 규칙을 설정하고 패킷 처리를 관리할 수 있습니다.
패킷 필터링이란
트래픽이 네트워크를 통과하는 과정에서 필터링 규칙이 적용되는 것을 말합니다, 방화벽이 패킷을 받을 때, 사전에 설정된 필터링 규칙에 따라 패킷이 허용될지 차단될지 결정 됩니다.
일반적으로 허용(ACCEPT), 차단(DROP), 또는 거부(REJECT) 등의 동작을 수행합니다.
------> INPUT ------> 리눅스 서버 ------> OUTPUT ------>
| |
+------------------------ FORWARD --------------+
iptables에 정책 즉 필터링 규칙을 적용할 수 있는 부분이 나누어 집니다.
이러한 것을 필터링 규칙을 적용할 수 있는 논리적인 경로인 체인(Chain)을 통하여 패킷이 들어오고 나가는 경로에 대해서 정책을 적용할 수 있습니다.
INPUT 체인: 서버로 들어오는 패킷을 처리하는 체인
OUTPUT 체인: 서버에서 나가는 패킷을 처리하는 체인
FORWARD 체인: 패킷이 서버를 통과할 때 사용되는 체인
목적지가 아니기 때문에 현재의 서버로 패킷이 들어오지 않고, 다른 네트워크로 포워딩될 때 필터링 규칙을 적용합니다. 즉, 서버가 경유지로 사용되는 경우에 적용됩니다
iptables -A INPUT -s [발신지] --sport [발신지 포트] -d [목적지] --dport [목적지 포트] -j [정책]
# iptables -P INPUT ACCEPT
# iptables -P FORWARD ACCEPT
# iptables -P OUTPUT ACCEPT
-D 규칙 삭제
# 방화벽 규칙 확인
iptables -L
# 방화벽 규칙 백업
iptables-save > /etc/iptables/rules.v4.bak
# 방화벽 규칙 저장
iptables-save > /etc/iptables/rules.v4
# 방화벽 규칙 복원
iptables-restore < /etc/iptables/rules.v4
# 방화벽 규칙 초기화
iptables -F
Ubuntu 방화벽 포트 열기
# iptables 확인
sudo systemctl status iptables
# netfilter 확인
sudo systemctl status netfilter-persistent
# 우분투인 경우 ufw의 상태는 꼭 확인합니다.
sudo systemctl status ufw
sudo ufw status
#활성화 되어 있는 경우 비활성화 합니다.
sudo systemctl stop ufw
sudo systemctl disable ufw
=============
sudo ufw stop
sudo ufw disable
Firewall stopped and disabled on system startup
OCI에서 우분투 이미지에서 방화벽 규칙을 편집하기 위해 UFW 사용을 금지하고 있습니다, 왜냐하면 UFW를 사용하여 규칙을 편집하면 인스턴스가 부팅되지 않을 수 있습니다.
부팅되지 않는 이유는 UFW가 아래의 규칙을 제거하여 재부팅하는 동안 인스턴스의 Boot Volum 및 Block Volume에 연결할 수 없게 될 수 있습니다.
OCI에서는 모든 플랫폼 이미지에는 Linux 인스턴스의 "root" 또는 Windows Server 인스턴스의 "Administrators"만 인스턴스의 부팅 및 블록 볼륨을 제공하는 iSCSI 네트워크 엔드포인트(169.254.0.2:3260, 169.254.2.0/24:3260)로 나가는 연결을 만들 수 있도록 허용하는 규칙이 포함되어 있습니다.
방화벽에서 80 Port를 열어 보겠습니다.
# 방화벽 규칙 확인
sudo iptables -L
# 방화벽 규칙 백업
sudo iptables-save > /etc/iptables/rules.v4.bak
# 80 Port의 통신을 할 수 있게끔 ACCEPT 합니다.
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# iptables 규칙을 저장합니다.
sudo iptables-save > /etc/iptables/rules.v4
===
# iptables-service가 설치되어 있는 경우
sudo service iptables save
주의 해야할 점은 -A 옵션은 체인의 끝 가장 마지막으로 추가 되므로 맨 뒤에 적용됩니다. 만약에 REJECT 규칙이 맨 뒤에 적용이 되어 있는 경우 방화벽 규칙이 적용되지 않을 수 있습니다.
그런 경우 -I 옵션을 이용하여 REJECT보다 앞의 숫자를 넣어 규칙을 적용할 수 있습니다.
sudo iptables -I INPUT 5 -p tcp --dport 80 -j ACCEPT
복원이 필요한 경우 아래의 커맨드로 진행할 수 있습니다.
# 방화벽 규칙 복원
sudo iptables-restore < /etc/iptables/rules.v4.bak
다른 CSP 처럼 호스트 단에서 방화벽을 사용하지 않을 경우, 즉 비활성화 할 경우
# 방화벽 규칙 초기화
iptables -F
# 방화벽 규칙 확인
iptables -L
# iptables 규칙을 저장합니다.
sudo iptables-save > /etc/iptables/rules.v4
===
# 굳이 netfilter를 통해서 저장하고 싶은 경우
sudo netfilter-persistent save
===
# iptables-service가 설치되어 있는 경우
sudo service iptables save
iptables 중지 및 비활성화 하는 경우
sudo systemctl status iptables
sudo systemctl stop iptables
sudo systemctl disable iptables
Firewalld
Oracle Linux 7 이상 부터는 firewalld 데몬 서비스를 통해서 방화벽을 관리하고, 명령어는 firewall-cmd 명령어를 활용합니다.
# 방화벽 규칙 확인
sudo firewall-cmd --list-all
# 방화벽 실행 상태
sudo firewall-cmd --state
# zone 목록 확인
sudo firewall-cmd --get-zones
# 기본 존 확인
sudo firewall-cmd --get-active-zones
# zone을 지정해서 확인
firewall-cmd --zone=public --list-all
# 8080 Port 추가
# –permanent 옵션은 영구적으로 설정하는 옵션이지만, 반드시 –reload를 방화벽을 재시작해줘야 합니다.
sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp
sudo firewall-cmd --reload
# 임시로 포트 추가, / reload 없이 바로 반영되나 서버가 재부팅되면 설정도 사라짐
sudo firewall-cmd --add-port=8080/tcp
# 포트 제거
sudo firewall-cmd --remove-port=8080/tcp
# 서비스 추가
sudo firewall-cmd --add-service=ftp
# 서비스 제거
sudo firewall-cmd --remove-service=ftp
# zone 지정해서 추가
sudo firewall-cmd --zone=trusted --add-service=ftp
# 방화벽을 완전히 해제하고 모든 포트를 오픈하는 경우
sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service
'OCI > Security' 카테고리의 다른 글
OCI WAF -2 공격 및 방어 테스트 (0) | 2024.10.27 |
---|---|
OCI WAF -1 (1) | 2024.10.27 |
OCI Vulnerability Scanning (0) | 2024.10.22 |
특정 IP Console 접속 차단과 허용 (0) | 2024.05.29 |