VLAN 구성으로 망분리
- -
지금까지 진행한 것은 다음과 같다.
1. VMware 위에 가상화 OS ESXi를 설치
2. vSphere Client(ESXi를 관리하는 인터페이스)에 pfSense 설치
3. vSphere Client(ESXi를 관리하는 인터페이스)에 pfSense 관리자 페이지 접속용 VM(윈도우7) 설치
4. vSphere 접속용 WAN과 일반적으로 사용할 WAN, LAN을 구성
이제 테스트 환경을 만들기 위해 퍼블릭 웹 영역, 오피스 영역, 내부 웹 영역, 데이터베이스 영역에 해당하는 VM을 설치하고 VLAN으로 망분리를 할 것이다.
1. VLAN 구성
VLAN을 사용하면 한 대의 스위치만으로 여러 대의 분리된 스위치로 사용할 수 있고 많은 네트워크 정보를 하나의 포트로 전송할 수 있다. 즉, VLAN을 나누면 그만큼 망을 구간별로 나눌 수 있으며 서로 다른 VLAN끼리의 통신은 라우터까지 거슬러 올라갔다가 이뤄지기 때문에 망 간의 접근 제어가 가능하다.
참고로 이러한 특성 때문에 역할별, 서비스별 VLAN을 나누는 것을 망 분리라고 한다.
구분 | 설명 |
VLAN 10 | 퍼블릭 웹 영역, 외부에 열어놓는 웹 서버의 영역으로 고객들이 웹 서버에 접속하면 이 VLAN까지 연결된다. |
VLAN 20 | 오피스 영역, 사무실에서 PC를 쓰는 직원들이 이 VLAN에서 활동한다. |
VLAN 30 | 내부 웹 영역, 외부에 오픈할 필요는 없고 사내 직원들만 접속하는 웹서버가 놓일 영역이다. 밖에서 들어올 일이 없으므로 공인 IP 주소를 가질 필요가 없다. |
VLAN 40 | 데이터베이스 영역, DB 서버를 놓을 영역으로 내부 웹 영역과 마찬가지로 공인 IP 주소를 가질 필요가 없다. |
최종적으로 구현할 VLAN 영역은 위 표와 같다.
2. 각 환경에 맞는 VM 설치
VM 설치과정은 너무 길어서 따로 적지 않았다.
구분 | 버전 | 설명 |
LAB_UBUNTU_DB | Ubuntu server 16.04 LTS | 데이터 베이스 영역 (VLAN 40) |
LAB_UBUNTU_WEB | Ubuntu server 16.04 LTS | 퍼블릭 웹 영역 (VLAN 10) |
LAB_UTM_PFSENSE | pfSense 2.2.4 | pfSense가 설치된 VM |
LAB_WIN2012_INTRANET | Windows Server 2012 R2 | 내부 웹 영역 (VLAN 30) |
LAB_WINDOWS_PFSENSE | Windows 7 | 오피스 영역, pfSense 관리자 페이지 접속을 위한 VM (VLAN 20) |
지금까지 설치한 환경을 정리하면 위 표와 같다.
3. pfSense를 이용한 망 분리 구현
3.1 VLAN 생성
이제 VLAN으로 망 분리를 구현하는 작업만 남았다. 한 개만 설치하면 나머지 과정은 전부 같으므로 대표로 오피스 영역의 VLAN 생성하는 과정만을 적을 것이다.
[Interfaces] - [Assign] - [VLANs] 메뉴를 선택한 후 빨간 박스 아이콘(+)을 눌러서 새로운 vlan을 생성한다.
오피스 영역은 VLAN 20으로 할당할 예정이므로 VLAN tag 20, 설명을 office_20으로 설정한다. (em0은 LAN 영역)
[Interfaces Assignments]의 [Available network ports]에서 VLAN 20을 선택한 후 빨간 박스 아이콘(+)을 누른다.
그러면 OPTN(N은 숫자)로 하나가 추가되어있는데 그걸 클릭한다.
[Enable Interface]를 선택한 후 설명에 VLAN20_OFFICE를 입력한다. IPv4는 Static IPv4로 설정하고 IPv6는 사용하지 않을 것이기에 None으로 설정한다. 마지막으로 IPv4 address는 10.20.1.1/24로 설정한다. (VLAN 20이므로 10.20.~으로 했다.)
저장 후 꼭 Apply Changes를 선택해야 한다.
위 과정을 통해서 하나의 VLAN이 생성되었다. 이제 이 VLAN이 어떤 통신을 해야 할지 방화벽에 ACL 룰을 넣는 작업을 진행해야 원하는 통신이 가능해진다.
[Firewall] - [Rules] 메뉴에서 VLAN20_OFFICE를 선택하고 빨간 박스 아이콘(+)을 누른다.
protocol은 any로 설정하고 source는 VLAN20_OFFICE net을 선택한다.
저장 후 꼭 Apply Changes를 선택해야 한다.
위 과정을 통해서 VLAN에서 통신이 되도록 설정했다. 이제 이 대역에서 DHCP를 활성화해 IP 주소를 할당받을 수 있게 만들 것이다.
[Enable DHCP server on VLAN20_OFFICE interface]를 클릭하고 범위에 10.20.1.2 ~ 10.20.1.50으로 설정한다. 이렇게 하면 50개 정도의 IP주소까지만 DHCP에서 할당받는 IP 주소로 처리된다.
3.2 VLAN 태깅
다음으로 방화벽(pfSense)에서 만든 VLAN과 실제 서버의 랜선이 꽂혀 있는 스위치와 VLAN ID를 맞추는 작업을 해야 한다. 지금까지 방화벽에서 VLAN 생성, ID 부여(20)도 했으므로 스위치에서 20으로 연결해야 방화벽과 스위치의 정보가 서로 전달되며 랜선이 꽂힌 포트가 어떤 VLAN을 사용할지 지정할 수 있게 된다. (위 작업을 VLAN 태깅이라고 함)
스위치에 VLAN 태깅을 하려면 원래 스위치의 콘솔로 들어가서 ID를 부여해야 하지만 본 프로젝트에서는 ESXi의 가상 스위치를 사용하고 있으므로 vShpere에서 스위치 설정을 할 수 있다.
VLAN 태깅 작업을 위해 vSphere에 접속한다. 호스트 서버를 클릭한 뒤 [구성] - [네트워킹]을 누른다. vSwitch2가 LAN으로 되어있으므로 vSwitch2의 [속성]을 누른 후 새로운 창이 뜨면 [추가]를 눌러 VLAN 태깅을 시작한다.
네트워크 레이블은 VLAN_20으로 하고 pfSense에서 넣은 VLAN ID와 똑같은 20으로 설정한다.
위의 설정을 마치면 LAN의 [편집]을 클릭한다. 그 후 LAN의 VLAN ID를 모두(4095)로 변경한다.
마지막으로 LAB_WINDOWS_PFSENSE을 종료하고 설치 시에 LAN으로 설정했던 네트워크 레이블을 VLAN_20으로 바꾸어준다.
재부팅한 후 ip를 확인해보면 10.20.1.2이다. 이제 오피스 영역은 10.20.1.0/24의 IP 주소에 위치하며 정상적으로 LAN과 대역이 분리되었다. (LAN의 대역은 192.168.2.0/24)
이제 나머지 VLAN에 대해서도 위의 작업을 진행하면 된다.
모든 설정을 마치면 위와 같은 나누어져 있을 것이다. 이제 VLAN을 다 만들었고 각 IP 주소도 해당 VLAN에서 할당된 대역으로 받고 있다. 하지만 지금은 VLAN을 만들었을 뿐이지 접근 제어는 되지 않는 상태이다. 왜냐하면 VLAN에서 밖으로 나가는 모든 트래픽을 허용하는 ACL 룰만 만들고 다른 VLAN으로 접근하는 것을 차단하는 룰은 만들지 않았기 때문이다. 즉, VLAN은 다르지만 접속에 아무런 문제가 없는 상태이다. 이제 접근 제어 룰을 만들어 이를 해결할 것이다.
3.3 ACL 룰 작성
RFC1918에 의거해 사설 주소를 모두 차단하는 기본적인 룰을 만들고 필요한 부분만 여는 방식을 사용한다.
pfSense에서 [Firewall] - [Aliases]를 선택한 후 빨간 박스 아이콘(+)을 누른다.
이름은 RFC1918로 설정하고 타입은 Networks로 지정하고 세부 설정은 위 그림과 같게 한다. 이제 RFC1918이라는 Aliases가 만들어졌으며 이는 모든 사설 대역을 포함하는 IP 주소 범주가 된다.
RFC1918
국제 인터넷 표준화 기구(IETF)에서 공포한 표준으로 지정된 IP 주소를 사설망으로 규정하고 해당 IP 주소들은 공인 망으로 사용하지 않고 각 기업 내에서 사설망으로만 사용하는 것을 지키기로 한 원칙
pfSense 메뉴에서 [Firewall] - [Rules]를 클릭한 후 VLAN10_WEB 탭을 선택한 후 빨간 박스 아이콘(+)을 누른다.
설정을 위와 같이해서 아까 만들었던 RFC1918 alias를 적용한다.
VLAN10 끼리의 트래픽을 허용하는 룰을 추가한다.
최종 설정을 마치면 위 그림과 같다. 참고로 pfSense에서 방화벽 룰의 순서는 중요하다. 룰의 적용 순서는 맨 밑에서부터 위로 올라간다. 즉, 가장 먼저 적용된 첫 번째 룰은 VLAN10에서 밖으로 나가는 모든 트래픽을 허용하는 룰이다.
적용순서 | 구분 | 설명 |
1 | 기본 룰 | VLAN10에서 밖으로 나가는 모든 트래픽 허용 |
2 | deny vlan10(web) to internal | RFC1918에 해당하는 트래픽, 즉 VLAN끼리의 내부 트래픽 차단 |
3 | permit vlan10(web) to vlan10(web) | VLAN10끼리의 트래픽을 허용 |
3번 룰을 설정한 이유는 2번 룰만 설정할 경우 VLAN10 끼리의 트래픽이 동작하지 않기 때문이다. 이제 VLAN 20,30,40에 대해서도 똑같은 작업을 하면 된다.
참고로 vlan20에 대한 룰을 적용하면 192.168.2.1로 접속하고 있던 pfSense 웹 콘솔이 끊긴다. 이는 VLAN 20 대역끼리만 통신이 가능하기 때문이며 VLAN 20의 게이트웨이니 10.20.1.1로 접속하면 된다.
3.4 필요한 포트/IP 허용
지금까지의 과정을 거쳐 4개의 VLAN을 완전히 분리했다. 이제 한 서버가 해킹당해도 다른 서버로 넘어가지 못한다. 즉 오피스에서 직원 PC가 해킹당해도 다른 서버로 전이될 수 없다. 이 상태에서는 서로 접근하는 것이 불가능하기 때문이다.
오피스 영역에서 허용해야 할 것들을 정리했다.
1. 서비스 서버는 외부에서 일반인도 들어올 수 있으므로 사무실에서도 접근이 가능해야 한다. 즉 오피스 영역에서도 라이브 서버 대역의 서비스 포트(http/https)의 접근을 허용
2. 직원들만 접속할 수 있는 사내망에 접근해야 하므로 역시 서비스 포트(http/https) 접근이 가능해야 한다. 단, 이 서버는 외부에서는 접근이 불가능해야 한다.
3. 사무실에서는 서비스 서버 관리를 해야 하므로 서비스 대역에 있는 라이브 서버의 SSH 접속이 가능해야 한다. 단, 외부에서는 SSH 접근이 불가능해야 한다.
4. 사무실에서는 내부 서버 관리를 해야 하므로 인트라넷 대역에 있는 내부 서버들의 SSH 접속이 가능해야 한다. 단, 외부에서는 SSH 접근이 불가능해야 한다.
3.4.1 오피스 영역에서 라이브 서버 대역의 서비스 포트(http/https) 접근 허용
서비스망 웹서버로 가는 80번 포트가 접근 허용이 되었다. 443번 포트도 똑같이 설정하여 추가한다.
룰 추가를 마친 후 화면은 위 그림과 같다.
VLAN10 대역에서 웹서버 nginx를 실행하고 VLAN20 대역에서 접속한 결과 포트가 허용되어 정상적으로 접속이 된다.
3.4.2 나머지 정책 설정
위에서 언급한 모든 룰을 설정한 결과는 위 그림과 같다.
'정보보안 > 인프라' 카테고리의 다른 글
유해차단 시스템 구축 및 pfSense 버전 업데이트 (0) | 2020.07.28 |
---|---|
pfSense에서 NAT 설정 (0) | 2020.07.14 |
[error] VMware player에서 ubuntu 설치시 kernel panic 발생 (0) | 2020.07.08 |
프로젝트 환경 구성 (1) | 2020.07.08 |
[error] Windows10에서 vSphere Client 사용 시 VM의 마우스가 안 움직이는 현상 (0) | 2020.07.07 |
소중한 공감 감사합니다