지난 포스트에서 방화벽 설치를 완료하였다. 별도의 정책이 없이 일단은 NAT를 제공하는 게이트웨이 형태로 운영되고 있기 때문에, 방화벽 정책을 설정하기 전에 우선 각 네트워크 영역에 필요한 이미지들을 설치한다.

우선 첫번째는 Office Zone이다. 해당 zone에는 개발자 PC, 관리자 PC가 존재한다. 각각 윈도우7 이미지를 이용하여 구성하고, 네트워크를 구성해 준다.

네트워크 인터페이스 구성 방법은 이전의 방법과 동일하게 Office VMnet에 연결하면 된다. 그리고 윈도우 7 이미지 내부에서 네트워크 설정을 진행해 준다.

제어판 - 네트워크 및 인터넷 - 네트워크 및 공유 센터 에 들어가면 현재 이미지 내 네트워크 상태를 확인할 수 있다. 처음 들어가면 당연히 인터넷 연결이 되지 않고 있다. 네트워크 영역에 맞게 설정을 진행한다. 

네트워크 및 공유 센터

해당 창에서 연결 부분에 있는 로컬 영역 연결을 클릭하면 네트워크 정보를 확인할 수 있다. 해당 네트워크 정보에서 속성을 클릭한 뒤, 로컬 영역 연결 속성을 확인할 수 있는데, 여기서 IPv4에 해당하는 항목을 더블클릭한다. 그러면 IPv4 설정을 진행할 수 있다.

로컬 영역 연결 속성

그러면 IPv4 속성에서 IP주소를 설정해 줄 수 있다. 여기서 수동으로 IP를 지정해 주면 된다. 이후, 잠시 기다리면 링크가 정상적으로 연결되는 것을 확인할 수 있다.

관리자 PC IP 설정
인터넷 연결 확인

이후, 동일한 방법으로 다른 PC도 IP를 설정해 준다.

 

다음으로, HIDS 서버를 구축한다. 필자는 HIDS 서버를 위해 기존에 미리 구축해 둔 우분투 서버를 이용할 예정이다. 우분투 설치의 경우, 차후 IPS에 연결하는 웹 서버를 구축할 때 우분투를 새로 구축할 예정이므로, 그때 상세히 서술한다.

기존의 우분투 서버에 우선 네트워크를 구성한다. 기존에 하던 대로 VMnet을 이용해서 네트워크 인터페이스를 Internal로 설정해 주고, 우분투 내부에서 네트워크 설정을 진행한다.

우분투의 경우, 우측 상단의 아이콘을 통해 네트워크 설정을 진행할 수 있다. 아이콘을 클릭하고, Settings에 들어간다.

이후 설정처럼 생긴 버튼을 누르면 네트워크 설정을 진행할 수 있다.

IP 설정

이후 IPv4 설정으로 들어가 Manual로 주소 및 DNS를 설정해 주면 된다.

이후 네트워크를 한번 껏다 켜거나, 해당 이미지를 재부팅하면 정상적으로 인터넷이 연결되는 것을 확인할 수 있다. 

인터넷이 정상적으로 연결되었다면, 해당 서버의 기능을 정상적으로 수행하기 위해 Wazuh를 설치한다.

Wazuh의 경우, https://wazuh.com/start/ 에서 다운로드 가이드를 확인할 수 있다. Wazuh 서버의 설치 방식에는 All-in-one이 있고, Distributed가 존재하는데, 한 서버에 모든 구성 요소를 담을 예정이기 때문에 All-in-one 방식으로 설치한다.

해당 명령어를 통해 Wazuh 서버를 한번에 설치할 수 있다. 이때, 꼭 root 권한으로 수행되어야 하기 때문에 루트 계정에서 수행한다.

# curl -so ~/all-in-one-installation.sh https://raw.githubusercontent.com/wazuh/wazuh-documentation/4.1/resources/open-distro/unattended-installation/all-in-one-installation.sh && bash ~/all-in-one-installation.sh -i

위의 명령어를 사용하면 한번에 설치할 수 있지만, 필자는 각 구성요소를 step-by-step 방식을 이용하여 설치할 예정이다. 

우선 설치를 위해 JDK11, wget, curl, unzip, libcap 등의 패키지가 필요한데, 아래 명령어를 따라가면서 차근차근 실행해 준다.

# apt install -y curl apt-transport-https unzip wget libcap2-bin software-properties-common lsb-release gnupg2
# add-apt-repository ppa:openjdk-r/ppa
# apt update
# export JAVA_HOME=/usr/ && apt install -y openjdk-11-jdk

이후 Wazuh를 설치하기 위해 아래 step을 수행한다.

# curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH 
# echo "deb https://packages.wazuh.com/4.x/apt/ stable main" | tee -a /etc/apt/sources.list.d/wazuh.list 
# apt-get update

# apt-get install wazuh-manager

# systemctl daemon-reload
# systemctl enable wazuh-manager
# systemctl start wazuh-manager

이후 Wazuh에서 사용하는 모듈 중 하나인 Elasticsearch를 설치한다

# apt install elasticsearch-oss opendistroforelasticsearch

# curl -so /etc/elasticsearch/elasticsearch.yml https://raw.githubusercontent.com/wazuh/wazuh-documentation/4.1/resources/open-distro/elasticsearch/7.x/elasticsearch_all_in_one.yml

# curl -so /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/roles.yml https://raw.githubusercontent.com/wazuh/wazuh-documentation/4.1/resources/open-distro/elasticsearch/roles/roles.yml
# curl -so /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/roles_mapping.yml https://raw.githubusercontent.com/wazuh/wazuh-documentation/4.1/resources/open-distro/elasticsearch/roles/roles_mapping.yml
# curl -so /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/internal_users.yml https://raw.githubusercontent.com/wazuh/wazuh-documentation/4.1/resources/open-distro/elasticsearch/roles/internal_users.yml

# rm /etc/elasticsearch/esnode-key.pem /etc/elasticsearch/esnode.pem /etc/elasticsearch/kirk-key.pem /etc/elasticsearch/kirk.pem /etc/elasticsearch/root-ca.pem -f

# mkdir /etc/elasticsearch/certs
# cd /etc/elasticsearch/certs
# curl -so ~/search-guard-tlstool-1.8.zip https://maven.search-guard.com/search-guard-tlstool/1.8/search-guard-tlstool-1.8.zip
# unzip ~/search-guard-tlstool-1.8.zip -d ~/searchguard
# curl -so ~/searchguard/search-guard.yml https://raw.githubusercontent.com/wazuh/wazuh-documentation/4.1/resources/open-distro/searchguard/search-guard-aio.yml
# ~/searchguard/tools/sgtlstool.sh -c ~/searchguard/search-guard.yml -ca -crt -t /etc/elasticsearch/certs/
# rm /etc/elasticsearch/certs/client-certificates.readme /etc/elasticsearch/certs/elasticsearch_elasticsearch_config_snippet.yml ~/search-guard-tlstool-1.8.zip ~/searchguard -rf

# systemctl daemon-reload
# systemctl enable elasticsearch
# systemctl start elasticsearch

# /usr/share/elasticsearch/plugins/opendistro_security/tools/securityadmin.sh -cd /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/ -nhnv -cacert /etc/elasticsearch/certs/root-ca.pem -cert /etc/elasticsearch/certs/admin.pem -key /etc/elasticsearch/certs/admin.key

 

이후 해당 명령을 쳤을 때 다음과 같은 output이 나오면 된다.

# curl -XGET https://localhost:9200 -u admin:admin -k
 {
   "name" : "node-1",
   "cluster_name" : "elasticsearch",
   "cluster_uuid" : "J4EAfzd7R4KZv-31jBAuNA",
   "version" : {
     "number" : "7.10.0",
     "build_flavor" : "oss",
     "build_type" : "rpm",
     "build_hash" : "51e9d6f22758d0374a0f3f5c6e8f3a7997850f96",
     "build_date" : "2020-11-09T21:30:33.964949Z",
     "build_snapshot" : false,
     "lucene_version" : "8.7.0",
     "minimum_wire_compatibility_version" : "6.8.0",
     "minimum_index_compatibility_version" : "6.0.0-beta1"
   },
   "tagline" : "You Know, for Search"
 }

이후 Wazuh에서 사용하는 모듈 중 하나인 Filebeat를 설치한다.

# apt-get install filebeat

# curl -so /etc/filebeat/filebeat.yml https://raw.githubusercontent.com/wazuh/wazuh-documentation/4.1/resources/open-distro/filebeat/7.x/filebeat_all_in_one.yml

# curl -so /etc/filebeat/wazuh-template.json https://raw.githubusercontent.com/wazuh/wazuh/4.1/extensions/elasticsearch/7.x/wazuh-template.json
# chmod go+r /etc/filebeat/wazuh-template.json

# curl -s https://packages.wazuh.com/4.x/filebeat/wazuh-filebeat-0.1.tar.gz | tar -xvz -C /usr/share/filebeat/module

# mkdir /etc/filebeat/certs
# cp /etc/elasticsearch/certs/root-ca.pem /etc/filebeat/certs/
# mv /etc/elasticsearch/certs/filebeat* /etc/filebeat/certs/

# systemctl daemon-reload
# systemctl enable filebeat
# systemctl start filebeat

이후 해당 명령을 쳤을 때 다음과 같은 output이 나오면 된다.

# filebeat test output
 elasticsearch: https://127.0.0.1:9200...
   parse url... OK
   connection...
     parse host... OK
     dns lookup... OK
     addresses: 127.0.0.1
     dial up... OK
   TLS...
     security: server's certificate chain verification is enabled
     handshake... OK
     TLS version: TLSv1.3
     dial up... OK
   talk to server... OK
   version: 7.10.0

이후 마지막으로, Wazuh에서 사용하는 모듈 중 하나인 Kibana를 설치한다.

# apt-get install opendistroforelasticsearch-kibana

# mkdir /usr/share/kibana/data
# chown -R kibana:kibana /usr/share/kibana/data

# cd /usr/share/kibana
# sudo -u kibana /usr/share/kibana/bin/kibana-plugin install https://packages.wazuh.com/4.x/ui/kibana/wazuh_kibana-4.1.4_7.10.0-1.zip

# mkdir /etc/kibana/certs
# cp /etc/elasticsearch/certs/root-ca.pem /etc/kibana/certs/
# mv /etc/elasticsearch/certs/kibana_http.key /etc/kibana/certs/kibana.key
# mv /etc/elasticsearch/certs/kibana_http.pem /etc/kibana/certs/kibana.pem

# setcap 'cap_net_bind_service=+ep' /usr/share/kibana/node/bin/node

# systemctl daemon-reload
# systemctl enable kibana
# systemctl start kibana

이후, 해당 서버의 Kibana 웹을 통해 Wazuh를 사용할 수 있다.

Kibana의 초기 아이디와 패스워드는 admin/admin이며, Kibana의 기본 포트는 5601이기 때문에 해당 포트로 접속하면 Wazuh를 확인할 수 있다.

Wazuh Manager 설치 완료

 

이후 명세와 같이, 오피스망에 Wazuh Agent를 설치한다. 오피스망은 윈도우이기 때문에, 홈페이지에서 Wazuh Agent 윈도우 설치 파일을 다운로드 받아서 설치 및 배포를 진행한다.

다운로드 받은 폴더에서 CMD 창을 켜서, 해당 명령을 수행한다.

> wazuh-agent-4.1.4-1.msi /q WAZUH_MANAGER="<SERVER_IP>" WAZUH_REGISTRATION_SERVER="<SERVER_IP>"

필자의 경우, 다음과 같이 명령을 수행했다.

다른 PC들도 동일하게 적용해 준다. 이후 Wazuh Manager에서 Agent를 확인해 보면, PC들이 추가된 것을 확인할 수 있다.

Agent 설정 완료

 

반응형

각종 오픈소스 도구들을 이용하여 가상 보안 인프라 구축 실습을 진행한다.

가상 보안 인프라이기 때문에, 가상 머신인 VMware를 이용하여 실습을 진행하고, 네트워크 인프라 역시 VMware를 기반으로 수행할 예정이다.

우선 시나리오, 구성 및 명세, 구성도를 작성한다.

 

시나리오

- 우리 기업에서, 고객을 위한 웹 서비스를 운영할 방침이다. 동시에 사내 보안 인프라까지 구축할 생각이다.

- 운영을 위한 서버에는 내부망, 외부 DMZ망이 존재한다.

- 직원 PC와 내부망은 외부와의 통신을 단절한다.

- 직원 PC에는 위협 탐지를 위해 HIDS를 운영한다. 이상 여부 확인 서버를 구축한 후, 위협 모니터링도 진행할 예정이다.

- 외부 DMZ망에는 웹 서버가 존재한다. 해당 서버에는 개발자가 업무망에서만 접근 및 개발 수정이 가능하도록 지정하고, 나머지 접근은 차단한다.

- 웹 서버에서는 외부와 웹 서비스(HTTP)만 통신이 가능하다.

- 인프라는 화이트리스트 방식으로 구축한다. 또한 DMZ망 영역에 존재하는 서버들은 중앙에서 방화벽에 의한 통제를 받아 처리한다. 또한 방화벽이 핵심 백본 통신망으로 구성되어, 적절한 관리 통제를 실시해야 한다.

- 방화벽의 접근 통제는 오직 관리자에 의해서만 접근 및 수정이 가능하며, 이외의 연결은 허용되지 않는다.

 

인프라 구성

- 방화벽, IPS, 개발자 PC, 관리자 PC, 웹 서버, HIDS 관리 서버(Endpoint Management Server)

- 통신망의 경우 외부 DMZ망, 내부망, 오피스망으로 구분한다.

- 각 통신은 최소한의 원칙에 따라 구성되도록 하며, 필요하지 않은 보안 정책은 차단하여 접근 통제를 수행한다.

- 직원 PC의 경우 윈도우, 서버의 경우 리눅스를 사용할 예정이다.

- HIDS 관리 프로그램은 오픈소스 프로그램인 Wazuh를 사용한다.

- 방화벽은 오픈소스 프로그램인 Untangle을 사용한다.

- IPS는 오픈소스 프로그램인 Suricata를 사용한다.

 

인프라 구성 명세

No. 가상 이미지 사용 구분 운영체제 자원(RAM) 네트워크 위치 VMnet IP대역 IP주소
1 Firewall 방화벽 Debian
(Untangle)
2GB Office Zone 192.168.30.0/24 192.168.30.1
2 Internal DMZ 192.168.40.0/24 192.168.40.1
3 IPS Zone 192.168.50.0/24 192.168.50.1
4 WAN 192.168.10.0/24 192.168.10.150
5 개발자PC PC Windows 7 1GB Office Zone 192.168.30.0/24 192.168.30.100
6 관리자PC PC Windows 7 1GB Office Zone 192.168.30.0/24 192.168.30.200
7 HIDS 관리 서버 Server Ubuntu 20.04
(Wazuh)
4GB Internal DMZ 192.168.40.0/24 192.168.40.3
8 IPS IPS CentOS 6.9
(Suricata)
2GB IPS Zone 192.168.50.0/24 192.168.50.2
9 External DMZ 192.168.60.0/24 192.168.60.1
10 웹 서버 Server Ubuntu 20.04 1GB External DMZ 192.168.60.0/24 192.168.60.3

 

 

인프라 구성도

보안 인프라 구성도

반응형

+ Recent posts