어제와 동일하게 VyOS를 배웠고 Zone 기반 방화벽을 배웠다.
우리는 총 3개의 존(zone) public,private, DMZ를 구성하여, 각 존에 방화벽을 활성화 할 예정이다.
방화벽 설정 전 선행되어야 하는 기본 설정이 있다.
먼저 vyos에서 존을 정의해준다
vyos@vyos# set zone-policy zone public interface eth0
vyos@vyos# set zone-policy zone private interface eth1
vyos@vyos# set zone-policy zone dmz interface eth2
# public,private,dmz 존 정의.
vyos@vyos# commit
# 반영
존을 반영하자마자 각 xshell에서 접속이 끊긴다. 방화벽 설정으로
이제 각 정책을 구성해서 그림과 같이 되도록 한다.

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
vyos@vyos# set firewall name PUBLIC_TO_PRIVATE rule 10 state related enable
vyos@vyos# set firewall name PUBLIC_TO_PRIVATE rule 10 protocol all
vyos@vyos# set zone-policy zone private from public firewall name PUBLIC_TO_PRIVATE
vyos@vyos# set firewall name PRIVATE_TO_PUBLIC rule 20 action accept
# 특정 프로토콜 이하를 명시하지 않으면 '모든 트래픽을 다 허용하겠다' 라는 뜻.
# 2번 정책 = 모든 트래픽 다 허용.
vyos@vyos# set zone-policy zone public from private firewall name PRIVATE_TO_PUBLIC
# 정책 적용.
vyos@vyos# commit
이후 확인을 위해 DNAT를 통해 xshell에서 mint로의 접속이 차단되었는지 확인 하고 mint에서 ping 8.8.8.8로 나가서 2. 정책이 설정되었는지도 확인한다.
vyos@vyos# set firewall name PRIVATE_TO_DMZ rule 30 action accept
# 모두 허용
vyos@vyos# set zone-policy zone dmz from private firewall name PRIVATE_TO_DMZ
vyos@vyos# commit
3번 정책만 세워서는 mint(private) 에서 dmz서버(dmz)로 통신이 안된다.
vyos@vyos# set firewall name DMZ_TO_PRIVATE rule 40 action accept
vyos@vyos# set firewall name DMZ_TO_PRIVATE rule 40 protocol all
vyos@vyos# set firewall name DMZ_TO_PRIVATE rule 40 state established enable
vyos@vyos# set firewall name DMZ_TO_PRIVATE rule 40 state related enable
# 4번 정책
vyos@vyos# set zone-policy zone private from dmz firewall name DMZ_TO_PRIVATE
# 적용
vyos@vyos# commit
vyos@vyos# set firewall name DMZ_TO_PUBLIC rule 50 action accept
vyos@vyos# set firewall name DMZ_TO_PUBLIC rule 50 protocol all
vyos@vyos# set firewall name DMZ_TO_PUBLIC rule 50 state established enable
vyos@vyos# set firewall name DMZ_TO_PUBLIC rule 50 state related enable
# 5번 정책 생성
vyos@vyos# set zone-policy zone public from dmz firewall name DMZ_TO_PUBLIC
vyos@vyos# set firewall name PUBLIC_TO_DMZ rule 60 action accept
vyos@vyos# set firewall name PUBLIC_TO_DMZ rule 60 protocol
vyos@vyos# set firewall name PUBLIC_TO_DMZ rule 60 protocol tcp
vyos@vyos# set firewall name PUBLIC_TO_DMZ rule 60 destination port 22,80
# 정책 생성. 허용하겠다. tcp중에서, 목적지포트가 22,80인 애들만! = 22,80 허용
# destination 포트는 = DNAT에서의 translation 포트 = 내부 포트
vyos@vyos# set zone-policy zone dmz from public firewall name PUBLIC_TO_DMZ
vyos@vyos# commit
이렇게해서 zone 방화벽에 대해서 배웠다.
오늘은 이론보다는 실습하는 시간이 조금 많았다. 그래서 더 재미있었고 의미있었다 난 개발보다 이런 엔지니어가 더 맞는것같고 재미있는것 같다.