본문 바로가기

Ryu's Tech

체크포인트 방화벽으로 오픈스택 vRouter 를 대체

Table of Contents

목표 및 의미

많은 네트워크/보안 기능들이 가상화가 되고 FWaaS나 LBaaS와 같은 부분들이 구현되는 중

오픈소스는 관리나 편의성들은 현재 여러 이유로 진행이 되고 있지는 않음.

(가상환경 내 트래픽, 공격받는 계층의 변화, 기존 하드웨어 박스에 맞춰진 설정, 클라우드 호환성, 수익 저하)

이러한 부분들이 점차 해결되면서 벤더의 방화벽이 가상환경에 들어갔을 경우 vRouter와 역할이 충돌할 가능성이 높고 그럴경우 vRouter를 대체하는 테스트

하지만 이 경우 Controller가 더이상 네트워크 트래픽을 처리 하지 않게됨. 다양한 고려가 필요하나 글의 목적은

vRouter를 대체하는 환경 구성이 가능한지, 다음글에서 오픈스택과 벤더의 API를 통해 VM에 대한 정책 연동을 테스트.

구성환경

 - VMware bridge 인터페이스로 전부 설정

 - 공유기에서 체크포인트 방화벽에 설정할 IP로 VM 대역 라우팅 추가 ( 10.0.0.0/22 에 대한 경로 192.168.0.20 )

설치환경

오픈스택 설치

vmware 가상환경 내 VM 3대에 오픈스택 오카타 자동 설치 스크립트로 설치.

QUIETYUM=1
INSTALL_HEAT=1
INIT_OPENSTACK=0
COMPUTENODE=2

HOST_ip[0]=192.168.0.11
HOST_name[0]=controller
HOST_pass[0]=qwe123

HOST_ip[1]=192.168.0.21
HOST_name[1]=compute1
HOST_pass[1]=qwe123

HOST_ip[2]=192.168.0.22
HOST_name[2]=compute2
HOST_pass[2]=qwe123

환경 구성 목표

앞의 스크립트에서 INIT_OPENSTACK을 제외했으므로 수동으로 네트워크 구성. vRouter를 vSEC(checkpoint 방화벽)으로 대체

이렇게 구성하면 vrouter가 없어지면서 controller를 통하지 않고 들어오게 됨.

vRouter를 대체해서 구성해 보려고 한 부분인데, 이것보다는 Controller에 nova를 얹어서 원래의 neutron 역할 위치를 동일하게 더 좋은것 같음. 일단은 최초 구성대로 배포

네트워크 설정

openstack network create --share --external --provider-physical-network provider --provider-network-type flat provider
openstack subnet create --network provider --allocation-pool start=192.168.0.101,end=192.168.0.199 --dns-nameserver 168.126.63.1 --gateway 192.168.0.1 --subnet-range 192.168.0.0/24 provider

openstack network create --share "internal service1"
openstack subnet create --network "internal service1" --allocation-pool start=10.0.1.101,end=10.0.1.199 --dns-nameserver 168.126.63.1 --gateway 10.0.1.254 --subnet-range 10.0.1.0/24 "internal service1-subnet"

openstack network create --share "internal service2"
openstack subnet create --network "internal service2" --allocation-pool start=10.0.2.101,end=10.0.2.199 --dns-nameserver 168.126.63.1 --gateway 10.0.2.254 --subnet-range 10.0.2.0/24 "internal service2-subnet"

openstack network create --share "monitoring service"
openstack subnet create --network "monitoring service" --subnet-range 10.10.254.0/24 "monitoring service-subnet"

Flavor 설정

openstack flavor create --vcpu 2 --ram 2048 --disk 20 --public "c2r2d20"
openstack flavor create --vcpu 8 --ram 16384 --disk 111 --public "c8r16d111"

Quota 설정

openstack quota set $(openstack quota show | grep -e "project[ ]" | awk '{print $4}') --cores -1 --instances -1 --subnets -1 --ports -1 --ram -1 --networks -1 --subnetpools -1 --floating-ips -1 --secgroups -1 --rbac-policies -1 --routers -1 --server-groups -1

이미지 설정

이미지는 centos7과 Check_Point_vSEC_R80.10_for_OpenStack 이미지를 사용.

centos7 이미지는 오픈스택 CentOS 이미지 만들기 문서를 참고하여 사용.

Checkpoint 이미지는 공유 가능한 부분인지 알수 없음. 벤더에 질문 후 가능할 시 공유.

체크포인트 방화벽 배포

checkpoint MGMT

아래 글 참조

2018/04/03 - [Ryu's Tech] - Checkpoint R80.10 VMware workstation으로 설치

위와 같이 설치 후 실제 방화벽 (Checkpoint Gateway) 설치시 자동등록을 위해 API 설정 오픈

아래 이미지 순서로 모든 IP에 대해서 API 설정을 변경해 주고 확인창에서와 같이 api restart 가 필요. > 아래 GW 글 참조

checkpoint GW

2018/04/03 - [Ryu's Tech] - Checkpoint R80.10 방화벽/게이트웨이 오픈스택에 HEAT로 설치

위 MGMT 이미지와 같은 버전이지만 오프스택용 qcow2 이미지.

해당파일은 별도로 다운 받는 페이지 안내가 보이지 않아서 공유 가능 여부 알수 없음. > Check_Point_vSEC_R80.10_for_OpenStack.qcow2

구성을 위해 서버 배포 yaml 파일에 아래 내용 추가 및 튜닝해서 사용. 

availability_zone: "nova:compute1"


테스트용 서버 배포

이미지 파일

공식 문서의 클라우드용 CentOS  이미지 만들기를 참고하여 centos7custom 이미지 사용

배포한 HEAT 템플릿

위 이미지가 ssh를 통한 단순 id/pw 접근이 불가능하기 때문에 cloud-init 을 통한 초기 root 접근 허용 및 패스워드 설정

heat_template_version: 2017-02-24
parameters:
svr1_ip:
type: string
default: 10.0.1.11
svr3_ip:
type: string
default: 10.0.2.11
resources:
svr1_port:
type: OS::Neutron::Port
properties:
name: "svr1_ip"
port_security_enabled: False
network: "internal service1"
fixed_ips:
- ip_address: { get_param: svr1_ip }
svr3_port:
type: OS::Neutron::Port
properties:
name: "svr3_ip"
port_security_enabled: False
network: "internal service2"
fixed_ips:
- ip_address: { get_param: svr3_ip }

svr_config:
type: OS::Heat::SoftwareConfig
properties:
group: ungrouped
config: |
#!/bin/sh
(
echo "qwe123"
echo "qwe123"
) | passwd --stdin root
sed -i "s/^PasswordAuthentication no/PasswordAuthentication yes/g" /etc/ssh/sshd_config
echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
service sshd restart
yum remove -y firewalld
svr1:
type: OS::Nova::Server
properties:
name: "svr1"
flavor: "c2r2d20"
image: "centos7custom"
availability_zone: "nova:compute2"
networks:
- port: { get_resource: svr1_port }
user_data_format: SOFTWARE_CONFIG
user_data: { get_resource: svr_config }
svr3:
type: OS::Nova::Server
properties:
name: "svr3"
flavor: "c2r2d20"
image: "centos7custom"
availability_zone: "nova:compute2"
networks:
- port: { get_resource: svr3_port }
user_data_format: SOFTWARE_CONFIG
user_data: { get_resource: svr_config }

배포된 네트워크 토폴로지

정책설정

기본 정책 확인

처음 배포하면 모든 정책이 drop으로 설정되어 있음.

정책 생성

정책은 상위 2줄을 추가시킴.

1. 체크포인트 게이트웨이 SSH 접속 허용 룰 (관리 및 확인용. 옵션)

2. vm 그룹에 대한 트래픽 허용

 * 이후 해당 그룹에 VM의 IP를 넣어서 트래픽 허용 예정.

 * dummy IP가 있는 이유는 그룹내 오브젝트가 최소1개 필요함.

3. 그 외 나머지는 Drop

아래 스샷은 윗 부분은 정책, 아래 작은 창은 vm 그룹 정보.

위와같이 설정 후 Publish 후 Install Policy로 방화벽에 배포

정책 적용 확인

배포 이후 vm IP가 정책에 따라 통신이 되지  않음.

현재 사용중인 컴퓨터 192.168.0.100에서 10.0.1.11로 ping 체크 실패.

방화벽 로그를 통해 정상적으로 방화벽 동작 확인.

두번째 룰인 체크포인트 게이트웨이와의 SSH 접속 가능 확인.