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를 클릭해 줍니다.
3) Edit virtual machine settings를 클릭 후 Networak Adapter를 VMet8으로 설정해 줍니다. 그리고 CD/DVD를 선택하여 Use ISO image file을 조금 전에 다운로드한 파일로 넣어줍니다.
4) Power on this virtula machine을 클릭하여 실행합니다.
5) 아래 사진을 보고 다음과 같이 설정합니다. (운영체제 설정)
[설치 설명]
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
1: Setup 클릭
2: PW입력
7: IP주소 입력
8: Subnet Mask 입력
9: 게이트웨이 입력
10: DNS 입력
11: 도메인명
12: 설정확인
13: 재부팅
7) NSM 툴 설치는 다음과 같이 설정합니다.
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 ( ): 모든 트래픽에 대해서 ( ) 조건에 일치하는지 탐지해 보겠다. 만약 일치한다면 관리자에게 알려주겠어. 그리고 로그로도 남기겠어.