지난번에 모든 네트워크 망 구성을 끝냈다. 이제 시나리오에 맞게 방화벽 정책을 구성해 주면 된다.

우선 Untangle에서 Apps -> Install Apps에 들어가서 방화벽을 다운로드 받는다. 방화벽을 다운로드 받아야 룰 적용이 가능하다.

방화벽 설치 완료

다운로드가 완료되면, Apps에 다음과 같이 방화벽 아이콘이 보이게 된다.

아이콘을 눌러서, Rules에서 방화벽 정책을 설정할 수 있다. 명세를 따라서 방화벽 정책을 세운다.

 

1. 방화벽의 모든 접근 통제는 화이트리스트 기반으로 운영되어야 한다.

화이트리스트 기반 Rule을 적용하기 위해, Block all 규칙을 추가한다.

Block All

 

2. 웹 서버는 외부에서 HTTP 접속이 가능해야 한다.

해당 정책을 위해, 외부와 웹 서버 간 통신하는 HTTP 통신만 오픈해 준다. 

Allow WAN to Web Server HTTP

실제로 휴대폰을 이용하여 접속해 본 결과, 정상적으로 접속되는 것을 확인할 수 있다.

휴대폰 접속 화면(포트가 짤렸다)

3. 웹 서버는 오피스망의 개발자 PC만 HTTP포트와 SSH 포트 접속이 가능해야 한다.

해당 정책을 위해, 개발자 PC와 웹 서버 간 통신하는 HTTP 포트와 SSH 포트를 오픈해 준다. 이때, 독립성을 위해 HTTP와 SSH 정책을 각각 설정해 준다.

Allow Developer to Web Server HTTP
Allow Developer to Web Server SSH

이렇게 각각 설정해 준 뒤, 개발자 PC에서 확인해 본 결과, HTTP와 SSH가 정상 접속되는 것을 확인할 수 있다.

 

HTTP, SSH 정상 접속 확인

4. HIDS 관리 서버는 에이전트 정책 관리를 위해 오피스망 단말 전체를 대상으로 필요한 포트만 활성시킨다.

Wazuh 관리 서버의 경우, 기본 포트 및 프로토콜을 다음과 같이 명시하고 있다.

Wazuh 포트 및 프로토콜

이중 Elastic Stack의 경우, 서버 내부에서 자체적으로 사용하기 때문에 방화벽의 영향을 받지 않는다. 또한 Wazuh Server에서도 내부적으로 동작하는 것들은 방화벽의 영향을 받지 않기 때문에, Agent와 통신하는 포트만 열어 주면 된다. 독립성을 위해 포트들은 각각 열어 주되, TCP와 UDP의 경우 동일한 기능을 수행하기 때문에 통합해서 정책을 생성해 준다.

Allow Agent to Wazuh Connection Service
Allow Agent to Wazuh Registration Service
WAZUH 정상 작동 확인

정책 설정을 완료하면 Wazuh가 정상적으로 연결되어 작동되는 것을 확인할 수 있다.

5. HIDS 관리 서버의 수정과 서비스 관리를 위하여 관리자 PC에서만 SSH 접속 가능하도록 설정

관리자 PC에서만 SSH 접속이 가능하도록 정책을 설정해 준다.

Allow Manager to HIDS Server SSH

정책 설정을 완료하면 관리자 PC에서는 HIDS 서버로 접속이 가능하고, 개발자 PC에서는 접속이 불가능하다.

관리자 정상 접속
개발자 접속 불가

6. 방화벽 접근은 오직 관리자 PC에서만 접근 가능하며, 관련 설정은 초기 설정 외에 모두 관리자 PC에서만 수행

기본 Access Rule에 방화벽에 관리자 PC에서만 웹으로 접속 가능하도록 정책을 수정한다.

Allow Manager to Firewall HTTP

이후 기본 Access Rule 중 HTTP/HTTPS로 서버에 접속할 수 있는 방법을 제거한다.

기본 Access Rule 제거

적용해 주면, 개발자는 접속이 불가능하고, 관리자만 접속이 가능해진다.

관리자 접속 확인
개발자 접속 불가능

7. 내부의 모든 망은 외부와의 인터넷이 불가능하다.

실제로 관리자 PC, 개발자 PC에서 외부 포탈 접속을 시도한 결과, 모두 접속이 불가능했다.

개발자 PC 외부접속 불가
관리자 PC 외부접속 불가

반응형

 

웹 서버 구축을 위해 우분투를 하나 별도로 생성한다. 우분투 홈페이지에서 현재 안정화된 버전인 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 포트를 이용하여 웹 서버에 접속할 수 있다.

 

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

반응형

+ Recent posts