내부 웹서버에 wordpress 설치까지 진행되어 pfsense - 웹 서버 인프라의 구축은 마무리 되었다.
이제 내부 웹 서버로 들어오는 트래픽을 탐지하고 차단하는 환경까지 구축해본다.
네트워크 트래픽 탐지는 Suricata를 사용해 진행하자
Suricata
Snort를 대체하기 위해 생성된 Network Security Monitoring(NSM) 오픈소스 프로그램으로, 대표적으로 layer 7에서의 IPS/IDS 역할을 수행한다
Pfsense는 package manager 서비스 를 통해 suricata 패키지의 설치를 지원한다.
web-gui > System > Package Manager에 Available Packages를 통해 suricata를 검색
Install, Confirm으로 설치
설치 후, Services > Suricata 탭이 생성된다
탐지 룰의 세팅부터 적용하자
Suricata는 Rule 기반의 IPS로, 탐지를 위한 Rule이 있어야 동작한다.
Global Settings에서 다양한 Rule 목록과 다운로드를 진행할 수 있다.
가장 보편적으로 사용하는 ETOpen Emerging Threats rule을 사용하자
Install ETOpen Emerging Threats rules 체크, 하단의 Update interval을 설정
(ruleset을 업데이트 하는 주기를 설정하는 구간으로 12시간이나 1일을 추천)
Update 탭으로 넘어가 Rule 업데이트를 해준다. 최초 설정에서 rule이 받아진 후 update interval 마다 자동으로 업데이트가 진행된다.
Rule 설정이 끝났다. 이제 이 rule을 바탕으로 탐지를 진행할 구간(interface)를 설정해주자
Interface > add
Suricata가 탐지할 인터페이스를 세팅하는 구간으로, WAN/LAN 중 아무 곳이나 설정해준다.
하단의 Logging Settings에서 Suricata가 어떤 log를 수집할 지 설정해준다. 일단은 기본값만 로깅하는 것으로 하고 넘어간다.
하단에 EVE Output Settings에서는 suricata가 수집한 로그를 json타입의 output을 설정해주는 구간이다.
여기서 Enable을 해줘야 output을 확인할 수 있다.
Enable해주면 output에 대해 상세한 설정을 할 수 있는데, 이 중 주요한 설정만 보고 넘어가자.
- EVE Output Type : 수집한 log의 output을 내보낼 타입을 설정, FILE/SYSLOG/REDIS 설정이 가능
- EVE Log Alerts : Rule에 탐지된 로그를 내보내줌
- EVE Logged Traffic : 로깅할 트래픽의 프로토콜 설정
이하 자세한 내용은 Suricata 공식 docs 참조
인터페이스 세팅 후, WAN Categories에서 다운받았던 ETOpen Emerging Threats rules 목록을 볼 수 있다.
이들 중 인터페이스에 적용할 룰셋을 enable 시켜줘야 적용이 된다. 모든룰을 적용시키는 경우 suricata가 무거워져 원활하게 동작하지 않을 수 있으므로 필요한 룰셋만 적용시켜준다.
일단 인터페이스는 default로 구성후 생성, suricata status의 버튼으로 해당 인터페이스를 on/off 시킬 수 있다.
Suricata가 실행되면 Logs View 탭에서 인터페이스 별로 로그내용을 모두 확인할 수 있다.
- alerts.log : suricata의 ruleset에 의해 탐지된 로그
- eve.json : EVE output setting에서 설정한 output 파일
- http.log : http 프로토콜 트래픽 로그
suricata를 IPS 모드로 전환해 사용해보자
interface 세팅에 Alert and Block Settings에서 Block Offenders 체크하면 IPS 모드가 활성화되며 IPS Mode 설정을 할 수 있다.
Legacy mode와 Inline mode가 존재하는데, 사용해본 결과 탐지된 ip를 block하느냐 안하느냐의 차이 정도밖에 없다.
- Legacy mode : default action이 BLOCK, Block On DROP Only를 활성화 해주면 rule action이 block인 경우에만 block함
- Inline mode : default action이 단순 ALERT, inline mode에서 block하고자하는 경우 rule action을 block으로 수정해주어야 한다.
Kill States를 활성화하면 block된 ip의 접근을 kill한다.
이렇게 IPS mode를 활성화하면 의도치 않게 본인의 ip가 block되는 경우가 있는데, 이런 경우 pfsense설정도 만질 수 없게 된다.
이런 불상사를 막기 위해 미리 whitelist에 ip를 등록시켜두는 것이 좋다.
Service > Suricata > Pass List에서 ip를 등록 시킬 수 있다.
이렇게 pfsense 구축과 suricata 패키지로 IPS/IDS 기능도 동작하도록 간단하게 구성해보았다.
이 인프라는 실제 필자가 IPS/IDS 인프라를 공부할때 직접 구성했던 것으로, 실서비스에도 적용해 운영한적이 있다.
약 3개월 정도 이 인프라로 운영을 했었는데, suricata의 굉장히 크리티컬한 문제점과 몇몇 불편했던점을 바탕으로 인프라를 새로 구성했다.
이 이야기는 다음에 이어서 정리해보기로 한다.