NSM / Security Onion

Security Onion

네트워크 보안 모니터링(NSM; Network Security Monitoring)과 침입탐지시스템(IDS) 역할을 수행하는 장비입니다. 이것은 보통 교육용 또는 소규모 네트워크 감시로 적합합니다.

 

NSM : IDS 기능을 수행할 뿐만 아니라 효율적으로 감시하고 분석하는 역할을 수행합니다. 수집도구, 분석도구, IDS가 함께 동작합니다.

 

Security Onion 구조

네트워크 보안 관제 프로그램은 수집도구와 분석도구로 나눠집니다. 수집도구에는 Argus, Netsniff-NG, ETC가 있습니다. 이 도구들이 데이터를 수집을 하는데, 이 수집된 데이터 중 공격용 패킷이 있는지를 탐지하는 시스템이 있는데 그것은 IDS가 합니다. IDS에는 NIDS엔진과 HIDS엔진으로 나뉘는데 NIDS엔진에는 Snort/Suricate(시그너쳐), Bro(이상징후)가 있고, HIDS엔진에는 OSSEC가 있습니다.

 

Sguil(스구일)

수집에서 끝나는 것이 아닌 수집된 데이터를 로그로 볼 수 있는 툴이 필요합니다. 스구일은 NIDS가 탐지를 했으면 그것을 화면으로 보여주는 도구입니다. 

 

- 네트워크 보안 모니터링(NSM) 및 분석도구

- NSM 장비가 수집한 세션 데이터와 패킷 데이터 또는 탐지한 경고 데이터에 접근과 출력을 제공하는 직관적인 GUI

- 침입 발생 시 경고를 출력하고 이벤트 확인과 검색, 패킷 분석 기회를 제공

- 스쿼트는 스구일의 데이터베이스에 저장된 데이터를 시각적으로 표현

- 스구일에서 확인 가능한 데이터는 스노트/수리카타로 얻은 NIDS 경고 데이터, OSSEC으로부터 얻은 HIDS 경고데이터, Prads로부터 얻은 세션/자산 데이터, Bro로부터 얻은 HTTP로그 데이터가 있습니다.

 

Security Onion 설치 및 환경설정

다운로드 : https://github.com/Security-Onion-Solutions/security-onion/blob/master/old/Verify_ISO_14.04.4.2.md

 

1) Create a New Virtual Machine을 클릭합니다.

 

2) 다음과 같이 설정해 주고 Next를 클릭해 줍니다.

012345678910111213

 

3) Edit virtual machine settings를 클릭 후 Networak Adapter를 VMet8으로 설정해 줍니다. 그리고 CD/DVD를 선택하여 Use ISO image file을 조금 전에 다운로드한 파일로 넣어줍니다.

 

4) Power on this virtula machine을 클릭하여 실행합니다.

5) 아래 사진을 보고 다음과 같이 설정합니다. (운영체제 설정)

012345

 

[설치 설명]

2: 현재 인터넷이 연결되어 있지 않았고, 하드 용량은 괜찮다.

3: 기존에 있는 것 다 지우고 Security Onion을 설치하겠다.

4: 살고 있는 지역 선택

6: 이름 및 패스워드 설정, 자동 로그인 (ID/PW : security/security)

 

6) 네트워크 설정 다음과 같이 설정합니다. 

IP : 192.168.10.100

SUB : 255.255.255.0

GW : 192.168.10.2

DNS : 192.168.10.2

0123456789101112

 

1: Setup 클릭

2: PW입력

7: IP주소 입력

8: Subnet Mask 입력

9: 게이트웨이 입력

10: DNS 입력

11: 도메인명

12: 설정확인

13: 재부팅

 

7) NSM 툴 설치는 다음과 같이 설정합니다. 

01234567891011121314
0123456789101112

 

1: Setup 클릭

2: PW입력

4: 네트워크 설정했기 때문에 Yes, Skip 클릭

5: evalutation mode : 처음 설치 시(전체셋팅 되어 있음), production mode : 사용자 정의 설치 

6: 규모가 큰 망에서는 수집과 분석을 나눠서 설치할 수 있음. 

    Server : 분석 / Sensor : 수집+IDS / Standalone: 수집+분석+IDS

8: 스구일, 엘사 등 분석도구를 사용할 때 쓸 username 설정 (security)

9,10: PW설정

11: 로그 저장 일자

12: db수정가능일자

13: NIDS 도구 선택

14: IDS Rulsset

       - 이전에 만들어진 rules의 집합
       - 무료제공(1), 유료판매(2,3,4)

       - 자체 룰 생성

15: 패킷 수집 용량

16: IDS엔진 활성화

17: Bro 활성화

18: Bro 사용 시 파일 추출에 대한 것이 나오는데, 일단 사용 안 함

28: 설정값 확인

 

Security Onion 간단하게 살펴보기

1. Sguil 살펴보기

Sguil을 열고 Username과 PW를 입력합니다. NIDS와 HIDS를 모두 보기 위해 Select All을 하고 Start 합니다. 

모니터를 한눈에 볼 수 있습니다. OSSEC에 의해 감지된 정보들이 나옵니다. 

 

분석도구로 우리 시스템에 어떤 변화가 있었는지 우리 망에 어떤 로그들이 있었는지를 스구일을 통해 확인할 수 있습니다. 

 

2. 관리자 패스워드 지정하기

화면에서 오른쪽 마우스를 클릭하고 Open Terminal Here을 선택합니다.

 

(명령어 입력)

security@security: ~/Desktop $ sudo passwd root

Enter new UNIX passwd: 1234

Retype new UNIX passwd: 1234

security@security: ~/Desktop $ sudo su - 

root@security: ~#

 

3. NIDS, Snort, Sguil 등이 어디에 있는지 살펴보기

root@security: ~# cd /etc/nsm

root@security: / etc/nsm# ls -l

 

root@security: / etc/nsm/templates# cd templates

root@security: / etc/nsm/templates# ls -l

 

root@security: / etc/nsm/templates# cd snort

root@security: / etc/nsm/templates/snort# ls -l

 

#snort 환경설정 파일

root@security: / etc/nsm/templates/snort# nano snort.conf

 

root@security: / etc/nsm/templates/snort#  cd /etc/nsm

root@security: / etc/nsm# ls -l

# 이 폴더(rules)에는 IDS가 생성해 놓은 침입탐지룰이 저장되어 있음

root@security: / etc/nsm# cd rules

root@security: / etc/nsm/rules# ls -l

 

#무료로 제공되는 침입 탐지 룰

root@security: / etc/nsm/rules# nano downloaded.rules

# enter를 누르면서 볼 수 있음

root@security: / etc/nsm/rules# cat downloaded.rules | less

 

Snort(스노트)

Snort는 오픈소스로 시그니처 기반의 NIDS입니다. 네트워크 패킷을 수집하여 트래픽을 모니터링합니다. 준비된 규칙과 비교하여 침입탐지 및 경고를 발생시킵니다. 

*시그니처 기반: 침입탐지를 문자열로 판단하는 것(패킷 데이터에서 악의적인 문자열을 탐지하여 침입여부를 결정)

스노트는 공격자를 찾아내기 위해, 악성코드를 찾아내기 위해 스노트 자체에도 패킷을 수집하는 기능이 있습니다. 

- 스니퍼 : 네트워크 패킷을 수집

- 패킷 디코더 : 수집된 패킷은 디코더로 전처리기와 탐지 엔진이 파싱할 수 있도록 정규화

- 전처리기 : 특정 행위가 발견된 패킷을 탐색 엔진에 전송

- 탐색엔진 : 해당 패킷이 스노트 규칙에 매칭되는지 확인

- 경고/로그 : 스노트 규칙에 매칭된다면 콘솔 창이라 분석 도구에 경고를 출력하고 기록

 

Suricata(수리카타)

Suricata는 Snort의 단점을 개선하고 장점을 수용한 NIDS입니다. 멀티 코어 및 멀티 스레드를 시원하여 대용량 트래픽을 실시간 처리할 수 있습니다.(속도 좋음) Snort Rule이 완벽 호환되고 Snort의 대부분의 기능을 지원합니다. 하드웨어 벤더의 개발 지원으로 하드웨어 가속 지원을 하며 스크립트언어(Lua)를 지원합니다. 

 

Snort(스노트) 문법

스노트는 두 부분으로 구성이 되어 있는데 Rule 헤더와 Rule 옵션으로 구성되어 있습니다. 헤더 부분에는 송신지 IP, 송신지 Port번호, 수신지 IP, 수신지 Port번호로 되어 있습니다. 누가 어떤 포트를 달고 어디로, 어떤 서비스로 가는지 볼 수 있습니다. 위의 그림은 송신지에서 수신지로 가는 트래픽 중에, 즉 Telnet(23)으로 접속하는 트래픽 중에 hacker라는 문자가 발견되면 이것을 관리자에게 알려줘라(alert) 라는 의미입니다. 규칙 옵션 부분에는 내가 탐지하려는 시그니처가 들어갑니다. 

헤더 부분은 Action: 어떻게 할 것인가? / Protocol: 어떤 류의 프로토콜에 대해서 / 그다음 구체적으로 송수신지의 IP, Port번호로 구성

 

Action

 

Inline모드로 IDS가 배치된 경우 Action

 

Protocol

예를 들어 Destination Port가 80번이면 Protocol 부분에는 tcp가 옵니다. 만약 53이면 udp가 옵니다. 또 특별히 포트를 설정하여 보고 싶지 않으면 ip로 설정해도 됩니다. 

 

IP, Port

ex) alert ip any any -> any any ( ): 모든 트래픽에 대해서 ( ) 조건에 일치하는지 탐지해 보겠다. 만약 일치한다면 관리자에게 알려주겠어. 그리고 로그로도 남기겠어.