오픈소스 방화벽 Opnsense 에서 IPS(침입탐지시스템) 활성화하기

오픈소스 방화벽 Opnsense 에서 IPS(침입탐지시스템) 활성화하기

안녕하세요. 달소입니다.

이번글에서는 제가 그동안 Opnsense를 오픈소스 방화벽이라고 불렀던 이유에 대해서 간단하게 설명드리고 그 기능인 IPS(침입탐지시스템)을 활성화시켜보도록하겠습니다.

기본적으로 Opnsense에서 IPS 기능을 사용하지않으면 굳이..(?) 사용할 필요가 없다고생각되기때문에 한번 활성화 시켜보시기 바랍니다.

IPS란?

IPS ( 침입 방지 시스템 )는 패킷이 어떤 식으로든 의심스러운지 확인하기 위해 네트워크 인터페이스를 통과할 때 각 패킷을 검사하여 한 단계 더 나아갑니다. 알려진 패턴과 일치하는 경우 시스템은 위협을 완화하기 위해 패킷을 삭제할 수 있습니다.

OPNsense의 IPS(Intrusion Prevention System) 시스템은 Suricata 를 기반으로 하며 Netmap 을 활용 하여 성능을 높이고 CPU 사용률을 최소화합니다. 이 심층 패킷 검사 시스템은 매우 강력하며 유선 속도로 보안 위협을 감지하고 완화하는 데 사용할 수 있습니다.

여기서 IDS/IPS기능으로 나뉘어지는데 IDS는 탐지만 하고 차단은 하지않는상태, IPS는 차단까지 하는 형태로 운영됩니다.(Suricata에서는 두가모드를 같이 지원합니다)

IPS/IDS의 경우 Rule 기반 탐지이기 때문에 기능을 활성화 한 뒤 룰 셋트를 반드시 받아줘야 한다는 점 참고하시면 되겠습니다.

Opnsense에서 IPS활성화하기

먼저 Opnsense의 관리자페이지로 접속해주세요.

분명 Firewall 밑에 있어야할것 같은데 Services 아래 있습니다 ㅎㅎ

저는 아래처럼 모든항목을 다 체크해줬습니다만
https://docs.opnsense.org/manual/ips.html 가이드를 참고하셔서 키면 되겠습니다.

간단하게 맨 위부터 설명드리자면

Enabled : IDS 활성화(탐지만)
IPS mode : IPS 모드 활성화(차단)
Promiscuous mode : 모든 트래픽을 감시
log쪽은 아래와 같습니다.
Pattern matcher : 패턴 일치 알고리즘을 제어합니다. Aho-Corasick이 기본값입니다. 지원되는 플랫폼에서는 Hyperscan이 최상의 옵션입니다. 상용 하드웨어에서 Hyperscan을 사용할 수 없는 경우 제안된 설정은 "Aho-Corasick"보다 성능이 더 좋은 "Aho-Corasick Ken Steele 변형"입니다.
Interfaces : 보호할 인터페이스(기본적으로 외부와 연결된 인터페이스인 WAN 입니다)
Rotate log : 로그 회전 빈도입니다.

이렇게 기본 설정을 해주시면 다음단계는 룰을 다운로드 받는것입니다.

차단 Rulesets Download

IDS/IPS를 처음 활성화할 때 시스템은 악성 트래픽을 탐지하거나 차단하는 규칙 없이 활성화됩니다. 다운로드 탭에는 시스템에서 사용할 수 있는 모든 규칙 세트가 포함되어 있습니다(플러그인을 사용하여 확장할 수 있음).

이 섹션에서는 다른 당사자가 제공한 규칙 집합 목록과 시스템에서 마지막으로 다운로드한 시기(설치된 경우)를 찾을 수 있습니다. 이전 버전(21.1 이전)에서는 여기에서 "필터"를 선택하여 설치된 규칙의 기본 동작을 경고에서 차단으로 변경할 수 있었습니다. 21.1부터 이 기능은 IDS/IPS 모듈 내 별도의 기능인 Policies 에서 다루게 되며 , 이 기능 은 규칙 세트에 대해 보다 세분화된 제어를 제공합니다.

기본적으로 룰셋은 모두 다운로드 해줄 예정이고 각 룰셋의 경우 공인된곳에서 가져온 룰셋이라고 보시면 됩니다.

ex)Emerging Threats

Emerging Threats (ET) 에는 다양한 IDS/IPS 규칙 세트가 있습니다. 무료 BSD 라이선스 버전과 유료 버전이 있습니다.

룰셋 정보 : https://docs.opnsense.org/manual/ips.html#available-rulesets

다운로드 및 업데이트를 누르면 자동으로 룰이 다운로드 받고 적용됩니다.

룰의경우 주기적으로 업데이트 해줘야 하는데 이는 스케줄 쪽에서 업데이트 일정을 매일 새벽 정도로 잡아주면 됩니다.

저 같은경우 매일 오전 6시에 업데이트 되도록 해놓았습니다.

룰 확인 및 변경하기

기본적으로 IPS를 처음적용하면 모든룰이 Alert로 설정되어있습니다.
제 뇌피셜로는 Drop으로 할 경우 서비스에 장애를 일으킬수도있으니 Alert이 뜨는 룰을 확인하고 정탐이면 Drop룰로 바꾸라는 큰 뜻 같기는 한데.. 꿈보다 해몽일수도요 ㅎㅎ

내용을 보시면 아시겠지만 대부분 알려진 취약점에 대한 룰이 되게 많습니다.
Black List IP나 그런게 아니라 CVE 같은 취약점도 포함됩니다.
가장 대표적 인게 작년 말에 핫했던 Log4j 취약점이죠. 아래와 같이 훌륭하게 잘되어있습니다.

이외에 커스텀 룰 같은경우 우측에 User define 에서 적용가능합니다.

간단한 출발지 목적지를 black list로 차단하는데 유용할듯하네요.

간단하게 출발지를 제 공인 ip를 사용해서 룰을 적용해보았습니다.

이제 어느정도 설정은 끝났다고 보시면됩니다.