📌VyOS Firewall
- Zone 기반 방화벽.
VyOS에서는 방화벽을 "firewall rule set" 형태로 설정하고, 이를 특정 인터페이스나 Zone(영역)에 적용할 수 있어.
✅Stateful Firewall
- 연결 상태를 추적해서 자동으로 응답 패킷을 허용할 수 있어.
- 예를 들어, 내부에서 외부로 요청을 보냈다면, 응답 패킷은 별도의 규칙 없이도 허용됨.
- 하지만 ACL(Access Control List)은 Stateless라서 수동으로 왕복 트래픽을 설정해야 해.
✅Zone 기반 방화벽(Zone-based Firewall, ZBF)
- Zone(영역)을 정의하고, 특정 Zone 간의 트래픽을 제어할 수 있어.
- zone-policy를 사용해서 공개(public), 내부(private), DMZ 같은 영역을 나누고 설정할 수 있음.
✅인터페이스 기반 Firewall 설정 가능
- 특정 인터페이스(예: eth0, eth1)에 직접 방화벽 규칙을 적용할 수도 있음.
- 하지만 Zone 기반 설정이 더 관리하기 쉬워서 일반적으로 Zone을 많이 사용함.
📌state
state = 세션의 상태
stateful = 상태가 존재하고 기억함, 융통성이 있는 상태임
stateless = 상태가 없고 기억하지 않음, 융통성이 없는 상태임
- 들어왔으면 나갈 때도 기록을 남겨야 됨
- client는 서버로 진입이 가능함, 하지만 돌아올 때는 돌아오는 정책에 맞게 가야 되는데, 디폴트로 모두 막아져 있는 상태임. 하지만 state를 기억하는 statueful 방화벽이기 때문에 이전에 수립되거나 관계가 있는 것들은 밖으로 나갈 수 있음
- port를 열었다고 되는 게 아니라 관련된 서비스를 오픈해야 연결이 됨
- prviate로 들어오면 모든 애들이 차단되는데, 특별히 state에 기록이 남아있는 애들만 허용해 줌
실습
전에 만들어 둔 vyos를 사용할 것 임
vyos@vyos# delete nat destination
vyos@vyos# commit
private, public, dmz 각 존을 설정.
vyos@vyos# set zone-policy zone public interface eth0
[edit]
vyos@vyos# set zone-policy zone private interface eth1
[edit]
vyos@vyos# set zone-policy zone dmz interface eth2
[edit]
vyos@vyos# comiit
- 각 인터페이스(eth0, eth1, eth2)가 속한 zone을 정의
- 외부 통신이 안되고 내부 통신도 안 되는 걸 알 수 있음
- private설정한 순간 mint 존에 있는 거 말고 나머지 외부들이 단절된 걸 알 수 있음
- zone을 설정한 순간 각 존이 폐쇄된다는 사실을 확인 가능
- 내가 구성할 정책
private
private 공간에 외부에서 들어오는 거 불가능
dmz서버에서 들어오는 거 불가능
하지만 private서버에서 외부로 나가는 건 가능
dmz존으로 가는 거 가능
dmz
dmz존 접근은 http, ssh접근가능 private에서 접근 가능
하지만 dmz에서 외부로 나가는 건 불가능
private 공간에 외부에서 들어오는 거 가능 설정하기
vyos@vyos# set firewall name PUBLIC_TO_PRIVATE rule 10 action accept
- 허용
vyos@vyos# set firewall name PUBLIC_TO_PRIVATE rule 10 state established enable
- 내가 established enable 보낸 요청의 응답을 받아오는 것(public으로 http)
vyos@vyos# set firewall name PUBLIC_TO_PRIVATE rule 10 state related enable
- related는 established와 연결과 연관된 추가 연결을 받아오는 것(ftp)
vyos@vyos# set firewall name PUBLIC_TO_PRIVATE rule 10 protocol all
PUBLIC_TO_PRIVATE: 방화벽 규칙 집합의 이름
rule 10: 규칙 번호 (우선순위, 낮을수록 먼저 적용됨)
action drop: 트래픽 차단
destination address 10.10.3.0/24: 내부 네트워크(Private) 대상
protocol all: 모든 프로토콜 차단
vyos@vyos# set firewall name PRIVATE_TO_PUBLIC rule 20 action accept
vyos@vyos# set zone-policy zone public from private firewall name PRIVATE_TO_PUBLIC
- 내부에서 외부로 나가게만 만들면 ping을 받아줄 수 없음
- 그래서 외부에서 내부로 들어올 때 받아줄 명령어를 입력해야 됨
- established or related 된 트래픽을
vyos@vyos# set zone-policy zone private from public firewall name PUBLIC_TO_PRIVATE
vyos@vyos# commit
- 1번 정책 적용
- 1번 정책 적용 후 통신이 잘 되는 걸 확인
- private에서 dmz로 향하는
- 3번을 정책을 적용시켰지만 안된다. 배려해 주는 정책이 없기 때문임
- 4번 정책 생성 및 반영
- 3,4 둘 다 반영 후 mint에서 web으로 통신되는 걸 확인.
- 적용
public에서 dmz로 http와 ssh 허용.
- 먼저 안되는 걸 확인
- 정책 생성
- 반영
- 반영 후 client에서 web으로 접속이 되는걸 확인
vyos@vyos# set firewall name PUBLIC_TO_DMZ rule 61 protocol udp
[edit]
vyos@vyos# set firewall name PUBLIC_TO_DMZ rule 61 action accept
[edit]
vyos@vyos# set firewall name PUBLIC_TO_DMZ rule 61 destination port 69
[edit]
- tftp를 허용하기 위한 정책 추가
vyos@vyos# set nat destination rule 200 inbound-interface eth0
[edit]
- eth0 인터페이스를 통해 들어오는 패킷에 대해서만 DNAT 적용
- 즉, 외부(인터넷)에서 eth0을 통해 들어오는 트래픽만 변환함
vyos@vyos# set nat destination rule 200 destination port 69
[edit] # 외부에서 69번 포트로 들어오는 트래픽을 잡아라
vyos@vyos# set nat destination rule 200 translation port 69
[edit] # 외부에서 69번 포트로 온 요청을 내부 네트워크의 특정 서버로 전달해라
vyos@vyos# set nat destination rule 200 translation address 172.16.101.80
[edit]
- 외부에서 온 트래픽을 내부 서버(172.16.101.80)로 전달
- NAT 변환 후 목적지 IP가 172.16.101.80이 됨
vyos@vyos# set nat destination rule 200 protocol udp
[edit]
vyos@vyos# commit
- tftp를 위한 DNAT 설정
- 클라이언트에서 잘 되는 걸 확인 가능
'AWS Cloud School 8기 > 서버가상화_클라우드 이미지' 카테고리의 다른 글
VyOS 실습 (코드만) (0) | 2025.02.11 |
---|---|
ACL(ACcess-List) (0) | 2025.02.09 |
VyOS/ (VyOS nat 해제) (0) | 2025.02.06 |
web + db + tomcat 실습(코드만) (3) | 2025.02.06 |
3-Tier Architecture (3계층 아키텍처)/ Reverse Proxy (리버스 프록시) (0) | 2025.02.06 |