웹 서버 구축을 위해 우분투를 하나 별도로 생성한다. 우분투 홈페이지에서 현재 안정화된 버전인 20.04 LTS 버전의 ISO 파일을 다운로드 받았다. 이후 해당 이미지를 이용하여 VM을 생성해 볼 것이다.

VMware의 좌측 상단 메뉴에서 File - New Virtual Machine을 클릭한다. 그러면 New Virtual Machine Wizard가 나올 것이다. 이때, Custom으로 Next를 눌러 준다.

New VM Wizard

이후 Next를 누르다 보면, Install할 ISO를 고르는 창을 확인할 수 있다. 이때, Installer disk image file을 클릭하고, Browse를 통해 다운로드 받았던 우분투 ISO 이미지를 클릭한다.

우분투 이미지 선택

Next를 눌러서 리눅스 초기 계정 설정을 진행해 준다. 여기서 Username과 Password는 실제로 우분투에 들어가는 정보이기 때문에, 필히 기억해 두길 바란다.

계정 설정

이후 VM의 이름과 위치를 지정해 준다.

이름과 위치 설정, 원하는 대로 하면 된다.

이후 프로세서와 코어, 메모리, 네트워크, I/O 컨트롤러, 디스크 타입, 사이즈 등을 설정해 준다. 나중에 변경할 수 있으니 넘어가도 괜찮다. 마지막으로, 아래의 창이 뜨고, Finish를 누르면 설정이 끝난다.

설정 완료

이후 자동으로 부팅이 시작되고, 우분투가 설치되며, 자동으로 부팅까지 완료된다.

이후 웹 서버 형태를 갖추기 위해, apache2를 이용하여 웹 서버를 만들어 준다. apache2를 설치하면 자동으로 실행 및 서비스 등록까지 마치기 때문에, /var/www/html 내부의 파일만 변경하여 웹을 운용할 수 있다.

VI 편집기를 이용해 간단하게 HTML 하나를 만들고, 접속해서 확인해 본다.

웹 서버 구동 확인

웹 서버가 정상적으로 구동되는 것을 확인하였다.

이후 IPS와 웹 서버를 연동한다. IPS에는 별도의 정책을 넣지 않을 예정이며, 추후 룰을 추가해 줄 예정이다.

우리는 Suricata를 이용하여 IPS를 활용한다. 우선, 평소처럼 Suricata가 포함되어 있는 CentOS의 네트워크 인터페이스 설정을 변경해 준다. 이때, VMnet을 바꾼 뒤, 해당 VMnet에 맞게 수동으로 이더넷 설정을 변경해 줘야 한다.

변경하기 위해서, /etc/sysconfig/network-scripts/ifcfg-{Ethernet name} 형태의 파일을 이용한다.

ifcfg 파일

해당 파일을 열면, 이더넷 IP와 서브넷마스크, 게이트웨이 등을 변경할 수 있다. 우리는 eth0과 eth1을 사용할 예정이기 때문에, 두 파일을 각각 수정해 준다.

이후, service network restart를 해주게 되면, 네트워크가 재시작되면서 정상적으로 ip주소가 변경된다.

IP 변경 확인

이후, iptables에 FORWARD 정책을 NFQUEUE로 넣어 준다. 이를 통해, Suricata 프로그램을 통해 정상적으로 포워딩을 진행할 수 있다. 이때, NAT 설정까지 해 주면 Suricata를 통해서 완벽하게 포워딩이 진행되지만, 중간 방화벽 구간에서 확인하기 어렵다는 단점이 있다. 따라서 우리는 방화벽에서 직접 라우팅을 진행해 줄 예정이다. 우선 지금은 해당 정책까지만 넣고, Suricata를 실행시켜 준다.

Suricata 실행

Suricata가 실행되고, Web Server의 IP를 위치에 맞게 재설정해 준다. 그러면 당연하게, 웹 서버가 외부와 연결이 되지 않을 것이다. 그 이유는 돌아오는 패킷에 대해 NAT설정을 Suricata에서 안 해줬기 때문인데, 이를 위해 방화벽에서 정적 라우팅을 수행해 준다.

우리가 필요한 라우팅은 방화벽으로 192.168.60.0/24 대역의 Dest IP가 들어왔을 경우, 이를 IPS쪽으로 념겨줘야 한다. 따라서 방화벽에서 정적 라우팅을 진행한다.

Untangle에서 Config - Network - Routes에 들어가면 정적 라우팅을 수행할 수 있다.

정적 라우팅 수행

이렇게 정적 라우팅을 수행하면 웹 서버가 다시 외부와 연결이 가능해진 것을 확인할 수 있다.

또한, 외부에서 접속이 가능하도록, VMware 내에서 포트포워딩 설정을 진행해야 하는데, 이는 Virtual Network Editor의 NAT 설정에서 진행할 수 있다.

NAT Settings 위치

해당 버튼을 클릭하면, Port Forwarding 정책을 추가할 수 있다. 필자는 5050포트로 들어오는 IP를 우선 방화벽의 특정 포트로 보내주고, 방화벽은 그 특정 포트에서 받은 정보를 웹 서버의 80포트로 전달해 주도록 포트포워딩을 구성해 주면 된다.

방화벽에서는 6060포트를 사용하도록 하자. 5050포트로 들어오는 IP를 방화벽의 80포트로 보내주고, 방화벽에서 80포트로 정보를 받으면 웹 서버의 80포트로 전달해 주도록 포트포워딩을 구성해 본다.

우선 VMware의 NAT Settings에서 5050포트로 들어오는 정보를 방화벽의 6060포트로 전달하도록 포트포워딩을 구성한다.

1차 포트 포워딩

이후 방화벽에서 6060포트로 들어오는 정보를 웹 서버의 80포트로 전달해 줘야 한다. Untangle에서 Config-Network-Port Forward Rules에 들어간다. 여기서 포워딩 관련 룰을 추가할 수 있다. 이때, Switch to Advanced 버튼을 통해 디테일한 설정을 추가해 준다.

2차 포트 포워딩

이렇게 포트 포워딩을 수행해 준 뒤, Host PC의 5050포트만 열어 주면 외부에서도 Host PC의 5050 포트를 이용하여 웹 서버에 접속할 수 있다.

 

이렇게 인프라 구축은 완료하였다.

반응형

지난 포스트에서 방화벽 설치를 완료하였다. 별도의 정책이 없이 일단은 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 설정 완료

 

반응형

지난번에 큰 명세는 끝내 놓은 상태에서, 가상 보안 인프라 환경 구축을 시작한다.

우선 Untangle을 설치한다.

Untangle 설치 및 네트워크 구성

Untangle의 설치 자체는 간단하다. 그냥 단순히 Next만 눌러주면 되고, 일반 소프트웨어를 설치하는 방식과 유사하다고 볼 수 있다. Untangle을 설치하고 나면 로그인 창이 뜨고, 설치 시 넣어 준 아이디와 패스워드를 입력하면 다음과 같은 대시보드를 확인할 수 있다.

Untangle 대시보드

Untangle에서 중요한 것은 네트워크 설정이다. 단순히 Next만 모두 눌러준 뒤 부팅이 정상적으로 수행되었다면, 우선 Config - Network에서 Interface 창을 켜 준다. 현재 필자는 모든 설정이 완료되어 있는 상태이지만, 독자를 위해 다시 처음부터 설정을 진행할 예정이다.

우선 VMnet을 이용하여 가상 네트워크 망을 새로 만들어야 한다. 우리가 필요한 망은 1번에서 제시한 구성도처럼, 디폴트로 존재하는 NAT망을 제외하고 Office, Internal DMZ, IPS, External DMZ Zone이 필요하다.

Untangle과 연결하는 망은 NAT, Office, Internal DMZ, IPS뿐이지만, 나중에 External DMZ 망도 만들어야 하기 때문에 미리 네트워크 세팅을 해 줄 것이다. 

우선 VMware 설정의 Edit - Virtual Network Editor로 들어간다.

Virtual Network Editor

이곳에서 전체 VMnet들의 네트워크 설정이 가능하다. 관리자 권한이 아닐 경우, 확인만 가능하고 변경이 불가능하므로 우측 하단의 Change Settings 버튼을 통해 관리자 권한으로 변경한다. 이후 Reloading이 되면, 설정 변경이 가능하다.

Virtual Network Editor

처음에는 디폴트로 VMnet0, VMnet1, VMnet8이 구성되어 있을 것이다. 그중 VMnet8은 NAT으로 기본 설정되어 있다. 우리가 NAT로 사용하던 네트워크가 사실은 VMnet8인 것이다.

우리는 각 망을 모두 Host-only로 구성할 것이다. VMnet에는 Bridged, NAT, Host-only 구성이 존재하는데, 각각의 구성에 대한 내용은 여러 블로그에 충분히 잘 정리되어 있으니 별도로 서술하지는 않는다. 우리가 필요한 구성은 각 VMware 가상 머신끼리 연결되는 것이기 때문에, Host-only 구성을 사용한다.

Add Network 버튼을 누르고, 사용할 VMnet을 고른다. 이후 Rename Network 버튼을 통해 이름을 Office로 변경해 준다. 이름의 경우, 나중에 가상 머신의 네트워크를 세팅할 때 사용되기 때문에, 알아보기 쉬운 이름을 사용하면 된다. 필자는 사전에 정해둔 각 네트워크의 별칭을 사용할 예정이다. 

이후 하단의 Host-only로 칸을 옮겨 주고, 체크박스 2개를 모두 지워 준다. 체크박스의 의미는 각각 호스트PC와 연결한다는 것, 그리고 DHCP 서비스를 사용하는 것인데, 우리는 둘 다 사용하지 않을 예정이므로 둘 다 지워 준다.

이후 Subnet IP와 Subnet mask를 설정해 준다. 필요로 하는 네트워크 ID와 Netmask를 각각 넣어주면 된다. 필자는 Office 망을 192.168.30.0/24로 설정할 예정이기 때문에, Subnet IP에 192.168.30.0, Subnet mask에 255.255.255.0을 기입해 줬다.

네트워크 생성 예시

위 그림과 같이 네트워크를 생성해 주면 된다. 같은 방식으로, Internal DMZ, IPS, External DMZ 영역을 각각 만들어 준다.

VMnet 세팅 완료

이렇게 VMnet 세팅이 완료되었다. 이제 VMnet을 사용 가능하다.

해당 VMnet들을 방화벽인 Untangle에 연결해 줘야 한다. 이를 위헤 네트워크 인터페이스를 추가해 준다.

VMware에서는 VM별로 네트워크 인터페이스를 설정해 줄 수 있는데, 우측 하단의 인터페이스 창에서 우클릭을 통해 Settings로 들어가도 되고, 좌측 라이브러리 창 또는 상단의 탭을 이용하여 Settings에 들어갈 수 있다.

VM Settings

Settings에서는 위와 같은 창이 뜰 것이다. 여기서 네트워크 어댑터를 추가해 주면 된다. 보통 1개로 구성되어 있을 텐데, 메인 어댑터로 두고, Office, Internal, IPS에 연결할 총 3개의 네트워크 인터페이스를 추가해 준다. 각각 우측의 Network Connection에서 Custom으로 설정하고, 우리가 미리 설정해 둔 VMnet 중 별칭을 통해 확인해서 연결해 주면 된다.

네트워크 인터페이스 설정 완료

이렇게 설정이 완료되었다. 이후 Untangle에 들어가서 Config - Network에 들어가면 우리가 연결해 준 인터페이스들이 정상적으로 올라온 것을 확인할 수 있다.

Config - Network
Unknown Interface가 올라온다.

 

인터페이스들이 올라왔으면, edit을 눌러 준다. 이후 Config type을 Addressed로 바꿔 주고, WAN 인터페이스(외부망과 연결되는 인터페이스)만 하단의 Is WAN Interface 칸을 클릭해 준다. 우리는 NAT 영역의 주소가 WAN 인터페이스이다.

그리고 Static으로 주소, 넷마스크, 게이트웨이, DNS를 각각 설정해 준다. 동일한 방식으로 나머지 3개의 인터페이스도 모두 설정해 주고, 우측 하단의 Save를 누르면 방화벽의 네트워크 설정은 끝난다.

네트워크 인터페이스 설정
네트워크 인터페이스 설정 완료

방화벽의 네트워크 설정이 완료되었다. 추가로, 방화벽이 NAT 역할까지 해 줘야 하기 때문에, 하단의 IPv4 Options인 NAT 트래픽을 설정해 준다.

WAN NAT 설정

 

이렇게 방화벽 네트워크 설정이 완료되었다.

반응형

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

가상 보안 인프라이기 때문에, 가상 머신인 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

 

 

인프라 구성도

보안 인프라 구성도

반응형

기사 원문

www.boannews.com/media/view.asp?idx=96296

 

다크웹에서 입소문 나고 있는 악성 문서 생성 서비스, 에터사일런트

다크웹에서 새로운 범죄 서비스가 발견됐다. 악성 마이크로소프트 워드 문서를 제작해 주는 것으로, 공격자들이 여전히 오피스 소프트웨어의 매크로를 적극 활용하고 있다는 사실을 보여준다.

www.boannews.com

 

"다크웹에서 새로 생겨 입소문이 퍼지고 있는 서비스가 있다. 악성 매크로가 심겨진 워드 문서를 만들어주는 서비스로, 효과 좋고 가격도 낮아 인기가 점점 높아지고 있다. 이건 단순히 이 서비스 하나의 문제가 아니다. 다크웹이 범죄자들이 살 만한 곳으로 변하고 있다는 뜻이다." - 기사 中...

 

기사에서는 최근 다크웹에서 발견된 새로운 범죄 서비스에 대해서 이야기하고 있다. 워드 문서를 만들어 주는 서비스인데, 내부에 매크로를 사용하여 악성 문서를 제작하는 사이트이다. 보안 업체인 인텔 471에서 해당 보고서를 발표하였다. 이 서비스의 이름은 애터사일런트라고 하는데, 도큐사인 문서인 것처럼 보이지만, 악성 매크로를 내포하거나 이미 공개된 취약점에 대한 익스플로잇이 감춰져 있는 형태로 악성 문서가 제작된다고 기사에서 밝히고 있다.

다행스럽게도 많은 조직에서 매크로를 금지하고 있지만, 이러한 서비스 성행의 이유는 결국 당하는 사람이 존재하기 때문이다. 실제로 필자가 군에서 업무를 볼 때도 사무 자동화를 위하여 VBA, VBS를 이용한 매크로 서비스를 자주 사용하였고, 만약 해당 PC에 악성 매크로 파일이 잠입한다면 거대한 문제를 일으킬 수 있었을 것이다.

하지만 이러한 자동화 도구 자체를 금지할 수는 없는 노릇이다. 해당 문제점을 어떻게 해결해야 할까? 소프트웨어 개발사 역시 해당 기능들의 약용 가능성에 대해 알고 있기 때문에 나름대로의 보안 설정을 통해 매크로 기능이 바로 실행되지 않도록 방지하고 있다. 또한, 매크로 프로그램 역시 일종의 프로그램으로 판단해야 하고, 내부에서 제작하거나 외부에서 매크로를 만들어서 들여올 경우에도 보안성 검토를 필히 받아야 한다.

기사에서는 에터사일런스가 시그니처 기반 탐지 기술을 회피할 수 있도록 다양한 변종 제작도 가능하다는 것을 언급하고 있다. 또한 해당 서비스는 사이버 범죄 산업 내에서 해킹 도구, 공격 도구가 얼마나 흔히 거래되는지를 보여주기도 한다. 따라서 사이버 범죄는 더욱 활성화 될 것이고, 이러한 상황 속에서, 보안에 대한 투자는 필수적이다.

아무리 단단한 벽을 세우더라도, 빈틈이 존재한다면 해당 빈틈을 뚫고 공격할 수 있다. 따라서 단기간의 투자가 아닌, 장기적인 관점에서 꾸준히 모니터링하고, 지속적인 관심을 보이는, 보안에 대한 새로운 문화가 정착해야 한다.

반응형

원본 기사

www.boannews.com/media/view.asp?idx=96071

 

[황민주의 보안에세이] ‘양치기 소년과 늑대’ 이야기의 교훈, 거짓말하면 안 된다?

보안은 ‘취약성’과의 싸움이다. 전쟁의 양상과 비슷하다. 상대의 취약한 점을 찾기 위해 벌어지는 치열한 ‘정보전’이 전쟁의 시작이다. 상대의 약점을 알고 나면 승리의 7부 능선을 넘어섰

www.boannews.com

 

이 기사를 보면서 새로운 인사이트를 가질 수 있었다. 단순히 양치기 소년의 거짓말이 문제였던 게 아니라, 결국 문제점을 파악하지 못하고 상황에 안일해졌던 주민들도 문제는 아니었을까? 기사에서 말하듯이, 오탐이 발생했으면 이후에는 같은 일이 발생하지 않도록 방법을 강구해야 했다. 실질적인 조치가 필요하다는 것이다. 또한 늑대에 대한 경보의 가치에 대해 생각했어야 하는데, 경보의 가치가 마을 주민들 모두에게 위험이 될 수 있는 문제였다면, 주민들도 한번 더 고려했을 것이라고 말한다.

기업에서의 보안도 결국 이와 비슷하게 생각할 수 있다. 각종 위험이 존재하고, 경제적 손실이 있지만, 보안에 대한 중요성은 잠시만 부각될 뿐, 실질적인 방법을 강구하지는 않고 있다. 단순히 현재의 경제적 손실에만 집중하고, 보안에 대한 투자로 인한 추후의 손실 방지에는 깊은 고려를 하지 않는 것이다. 위의 사례에서도, 결국 귀찮아진(단순한 손해가 발생) 마을 주민(실질적 관리자)들은 인해 양치기 소년(보안 대책)에게 더이상 투자를 더 하지 않았고, 이는 결국 마을 전체로 보았을 때 큰 손해로 다가오게 되었다.

이때 마을 주민들이 지켜야 할 것이 무엇인지, 그리고 이 가치가 어느 정도인지를 먼저 파악했다면 상황이 조금 더 달라지지 않았을까? 그리고 이를 지킬만한 충분한 안전장치가 되어 있는지 다시 점검했다면, 즉 양치기 소년에게 자신의 임무에 대해 잘 인식시켜 주고, 손해가 발생했더라도 지속적으로 문제를 해결해 왔다면 큰 문제가 발생하지는 않았을 것이다. 이는 결국 기업의 보안 문화와 직접적으로 비유될 수 있다. 사소한 문제, 사소한 손해일지라도, 그 문제점을 지속적으로 해결해 왔는지는 추후 큰 문제를 막을 수 있는 발판이 된다. 이러한 당연한 것들을 지키는 사회가 보안 강국을 만들지 않을까 싶다.

반응형

+ Recent posts