[네트워크 보안] Snort와 barnyard2 연동하기

비전·2024년 11월 2일

네트워크 보안

목록 보기
8/14

우분투 리눅스 기반의 설명입니다.
프로젝트 진행 내용에 최대한 모든 내용을 적으려고 노력했지만,
중간에 빠진 내용이 있을 수 있습니다.

0. 개요

Snort는 오픈소스 기반의 침입 탐지 및 방지 시스템으로, 네트워크 패킷을 분석하고 잠재적인 공격을 실시간으로 탐지합니다.
Barnyard2는 Snort와 함께 사용되어 Snort가 생성한 로그 데이터를 효율적으로 관리하고 처리하는 도구입니다. Snort는 탐지한 결과를 로컬 파일에 저장할 수 있지만, 이 과정에서 시스템 리소스가 많이 소모될 수 있습니다. Barnyard2는 Snort로 부터 생성된 로그를 받아 이를 외부 데이터베이스로 전송함으로써 Snort의 성능을 향상 시킵니다.

크게 3가지(Snort, Barnyard2, MySQL)로 분류해 설정할 수 있습니다.

기본적으로 인터페이스명이 eth0으로 설정되어야 합니다.
바꾸는 방법 -> https://velog.io/@hackk/시스템-보안-네트워크-인터페이스-명-바꾸기-ens-eth

사전 설치 방법

  • 사전 설치
### 스노트 설치
sudo apt-get install snort # 설치과정에서 나오는 창에 인터페이스 주소를 입력할 수 있습니다.
snort -V

### MySQL 설치
#mysql 설치
apt install mysql-server
apt install mysql-client

###barnyard2 설치
wget https://github.com/firnsy/barnyard2/archive/master.tar.gz -O barnyard2-master.tar.gz
#압축해제
tar xvf barnyard2-master.tar.gz
  • 필요한 패키지 설치
apt-get install net-tools #ifconfig 명령어 사용을 위해 net-tools 설치
apt install libmysqlclient-dev
apt install libtool
apt install libpcap-dev
apt install libdumbnet-dev
apt install libdaq-dev
apt install libpcap-dev
apt install make

1. Snort

스노트 설치

sudo apt-get install snort
snort -V

설정파일

경로 : /etc/snort/snort.conf

  • 스노트 설정파일 내용
output unified2: filename snort.log, limit 128
output alert_unified2: filename snort.alert, limit 128, nostamp

2. MySQL

사용자 생성 및 권한 부여

  • MySQL 접속
mysql -u root -p
  • SQL 사용자 생성 및 권한 부여
-- DB 생성
CREATE DATABASE snort;

-- 사용자 생성
CREATE USER 'snort'@'localhost' IDENTIFIED BY 'root';

-- 모든 권한 부여
GRANT ALL PRIVILEGES ON snort.* TO 'snort'@'localhost';

-- 변경사항 적용
FLUSH PRIVILEGES;

-- 나가기
exit

3. barnyard2

기본 세팅

# 이미 사전에 설치한 반야드2 압축해제
tar xvf barnyard2-master.tar.gz

cd barnyard2-master
./autogen.sh
./configure --with-mysql=/usr/include/mysql/ --with-mysql-libraries=/usr/lib/aarch64-linux-gnu/

make
maek install
cp /root/Desktop/barnyard2-1.9/etc/barnyard2.conf /etc/snort/ 

mkdir /var/log/barnyard2 
chmod 666 /var/log/barnyard2 
touch /var/log/snort/barnyard2.waldo 
chown snort.snort /var/log/snort/barnyard2.waldo

#MySQL 데이터 베이스 생성
#barnyard2-master/schemas 경로에서
mysql -p < create_mysql snort

설정파일

경로 : /etc/snort/barnyard2.conf

  • barnyard2 설정파일 내용
# Snort에서 탐지한 네트워크 규칙을 어느 데이터베이스에 로깅할지 정보를 입력합니다.
output database: log, mysql, user=snort password=root dbname=snort host=localhost

input_type : file
input_file: /var/log/snort

input unified2
 
#config reference_file:      /etc/snort/reference.config
config reference_file:      /var/log/snort/snort.log
config classification_file: /etc/snort/classification.config
config gen_file:            /etc/snort/gen-msg.map
#config sid_file:            /etc/snort/sid-msg.map

반야드2에서 MySQL 정보를 입력해 연동합니다.

4. 오류 모음

  • spo_alert_fwsam.c 내용
    spo_alert_fwsam.c 에서 typedef int socket 지움
  • dumbnet.h 내용
    아래 파일로 변경
/*
 * dnet.h
 *
 * Copyright (c) 2001 Dug Song <dugsong@monkey.org>
 *
 * $Id: dnet.h 529 2004-09-10 03:10:01Z dugsong $
 */

#ifndef DNET_H
#define DNET_H

#include <dumbnet/os.h>

#include <dumbnet/eth.h>
#include <dumbnet/ip.h>
#include <dumbnet/ip6.h>
#include <dumbnet/addr.h>
#include <dumbnet/arp.h>
#include <dumbnet/icmp.h>
#include <dumbnet/tcp.h>
#include <dumbnet/udp.h>

#include <dumbnet/intf.h>
#include <dumbnet/route.h>
#include <dumbnet/fw.h>
#include <dumbnet/tun.h>

#include <dumbnet/blob.h>
#include <dumbnet/rand.h>

#endif /* DNET_H */
----
  • dnet 오류
    dnet.h 파일을 /usr/include/로 옮기고 이름을 dumbnet.h로 변경합니다.
    decode.c 파일에서 #include <dnet.h>#include <dumbnet.h>로 수정합니다.

참고로 dnet.h 헤더파일은 깃허브에서 따로 가져왔습니다.

  • my_bool -> bool 변경

연동완료

반야드에서 제공하는 MySQL 쿼리문중에서 iphdr 테이블의 정보를 조회했습니다.

profile
아는 만큼 보인다

0개의 댓글