[인공지능 보안을 배우다] 나홀로 프로젝트 도전_0222

daniayo·2025년 2월 22일

공부하기 싫다.. 아 왜이렇게 하기가 싫지.. 시간은 얼마 남지도 않았는데.. 번아웃번아웃~ 나는 번을 한 적도 없으니까 그냥 아웃아웃~

오늘의 목표 : 보안 솔루션 설치까지 하고 싶은데,, 일단 네트워크 연결부터 완벽하게 성공시키고..

네트워크 연결이 성공!!!!하였다! 원인은 VM의 네트워크 어댑터 연결이였다.

  • Ubuntu VM (라우터 역할)
    • 어댑터 1 (내부 네트워크) → Host-Only (Windows VM과 연결, 예: enp0s1)
    • 어댑터 2 (외부 네트워크) → Bridged (실제 네트워크에 연결, 예: enp0s2)
  • Windows VM (클라이언트 역할)
    • 어댑터 1 → Host-Only (Ubuntu VM과 연결, 인터넷은 Ubuntu를 통해 나감)


쨔쟌~ 인터넷이 연결되는 모습을 확인할 수 있다!!

2. 보안 솔루션 설치

IDS 역할을 하는 스노트(snort)와 광범위한 패킷 분석 플랫폼인 브로(bro)를 설치한다.

스노트 설치

스노트는 대표적인 무료 오픈소스 네트워크 기반 침입 탐지 시스템(NIDS)이다. 책을 기반으로 프로젝트를 진행하기 때문에 스노트 2.9.11.1 버전을 사용한다.

우분투 운영체제를 최신으로 업데이트 한 이후, 네트워크 어댑터를 설정한다. 네트워크 어댑터는 브릿지 어댑터(enp0s2)를 기입해야 한다.

  • 필수 패키지 설치
sudo apt install -y build-essential libpcap-dev libpcre3-dev libdumbnet-dev bison flex openssl zlib1g-dev liblzma-dev libssl-dev
  • DAQ 다운로드 및 설치
wget https://www.snort.org/downloads/snort/daq-2.0.7.tar.gz

tar -xvzf daq-2.0.7.tar.gz
cd daq-2.0.7
./configure
make
sudo make install
  • 스노트 다운로드 및 설치
wget https://www.snort.org/downloads/archive/snort/snort-2.9.20.tar.gz
tar -xvzf snort-2.9.20.tar.gz
cd snort-2.9.20
./configure --enable-sourcefire
make
sudo make install

configure를 할때!

ERROR!  LuaJIT library not found. Go get it from http://www.luajit.org/ (or)
Try compiling without openAppId using '--disable-open-appid'
configure: error: "Fatal!"

이러한 에러가 떠서,

sudo apt update
sudo apt install -y luajit libluajit-5.1-dev

이렇게 해결하였다.
rpc/rpc.h 파일을 찾을 수 없다는 에러의 경우,

sudo apt update
sudo apt install -y libtirpc-dev
export CFLAGS="-I/usr/include/tirpc"
export LDFLAGS="-ltirpc"

이렇게 해결하였다.

  • 공유 라이브러리 업데이트 및 실행 확인
sudo ldconfig
sudo ln -s /usr/local/bin/snort /usr/sbin/snort

  • 폴더 생성 및 권한 설정
# snort 사용자 및 그룹 생성 : 
sudo groupadd snort
sudo useradd snort -r -s /sbin/nologin -c SNORT_IDS -g snort

# snort 디렉토리 생성 :
sudo mkdir /etc/snort
sudo mkdir /etc/snort/rules
sudo mkdir /etc/snort/rules/iplists
sudo mkdir /etc/snort/preproc_rules
sudo mkdir /usr/local/lib/snort_dynamicrules
sudo mkdir /etc/snort/so_rules

# rule 및 ip 목록 저장을 위한 기본 파일 생성 :
sudo touch /etc/snort/rules/iplists/black_list.rules
sudo touch /etc/snort/rules/iplists/white_list.rules
sudo touch /etc/snort/rules/local.rules
sudo touch /etc/snort/sid-msg.map

# 로깅 디렉토리 생성 :
sudo mkdir /var/log/snort
sudo mkdir /var/log/snort/archived_logs

# 권한 조정 :
sudo chmod -R 5775 /etc/snort
sudo chmod -R 5775 /var/log/snort
sudo chmod -R 5775 /var/log/snort/archived_logs
sudo chmod -R 5775 /etc/snort/so_rules
sudo chmod -R 5775 /usr/local/lib/snort_dynamicrules

sudo chown -R snort:snort /etc/snort
sudo chown -R snort:snort /var/log/snort
sudo chown -R snort:snort /usr/local/lib/snort_dynamicrules
  • 설치 폴더에서 기본 파일 복사
cd snort-2.9.20/etc/

sudo cp *.conf* /etc/snort
sudo cp *.map /etc/snort
sudo cp *.dtd /etc/snort
cd ~/snort-2.9.20/src/dynamic-preprocessors/build/usr/local/lib/snort_dynamicpreprocessor/
sudo cp * /usr/local/lib/snort_dynamicpreprocessor/
  • 스노트 설정 파일 수정
# Setup the network addresses you are protecting
ipvar HOME_NET 20.20.20.0/24
# Path to your rules files (this can be a relative path)
# Note for Windows users:  You are advised to make this an absolute path,
# such as:  c:\snort\rules
var RULE_PATH /etc/snort/rules
var SO_RULE_PATH /etc/snort/so_rules
var PREPROC_RULE_PATH /etc/snort/preproc_rules

# If you are using reputation preprocessor set these
# Currently there is a bug with relative paths, they are relative to where snor>
# not relative to snort.conf like the above variables
# This is completely inconsistent with how other vars work, BUG 89986
# Set the absolute path appropriately
var WHITE_LIST_PATH /etc/snort/rules/iplists
var BLACK_LIST_PATH /etc/snort/rules/iplists
...
include $RULE_PATH/local.rules

이후 다 삭제
  • 동작 테스트를 위한 룰셋 작성 (ping 탐지)
sudo nano /etc/snort/rules/local.rules

alert icmp any any -> $HOME_NET any (msg:"ICMP test detected"; GID:1; sid:10000001; rev:001; classtype:icmp-event;)
  • 설치 완료 검증

우분투 가상머신에서

sudo /usr/local/bin/snort -A console -q -u snort -g snort -c /etc/snort/snort.conf -i enp0s1

의 코드를 입력하고 윈도우 가상머신에서 ping 20.20.20.1을 실행하였을때,

윈도우 가상머신

우분투 가상머신

위와 같이, 터미널 화면에 ICMP alert가 뜬다.

스노트 최신 룰셋 다운로드 및 적용

스노트에 가입 후, Oinkcode를 받고, 최신 룰셋 파일 버전을 다운로드 받는다.
24.2.22 기준 snortrules-snapshot-29190.tar.gz

  • 스노트 환경설정 파일 내부의 모든 '#include' 주석문 제거
sudo sed -i 's/\#include \$RULE\_PATH/include \$RULE\_PATH/' /etc/snort/snort.conf
  • 스노트 압축해제 및 룰셋 파일 적용
sudo tar -xvzf snortrules.tar.gz -C /etc/snort

cd /etc/snort/etc
sudo cp ./*.conf* ../
sudo cp ./*.map ../
cd /etc/snort
sudo rm -Rf /etcc/snort/etc
  • 스노트 설정 파일 수정 (데쟈뷰~~~)
    sudo nano /etc/snort/snort.conf
# Setup the network addresses you are protecting
ipvar HOME_NET 20.20.20.0/24

...

# Path to your rules files (this can be a relative path)
# Note for Windows users:  You are advised to make this an absolute path,
# such as:  c:\snort\rules
var RULE_PATH /etc/snort/rules
var SO_RULE_PATH /etc/snort/so_rules
var PREPROC_RULE_PATH /etc/snort/preproc_rules

# If you are using reputation preprocessor set these
var WHITE_LIST_PATH /etc/snort/rules/iplists
var BLACK_LIST_PATH /etc/snort/rules/iplists

...

# unified2 
# Recommended for most installs
output unified2: filename merged.log, limit 128, nostamp, mpls_event_types, vla>

# Additional configuration for specific types of installs
output alert_unified2: filename snort.alert, limit 128, nostamp
output log_unified2: filename snort.log, limit 128, nostamp

...

include snort $RULE_PATH/local.rules
  • 스노트 룰셋 적용 확인
sudo snort -T -i enp0s1 -c /etc/snort/snort.conf

Snort successfully validated the configuration!
Snort exiting

한계다. 겁나 힘들다. 이거 언제 끝나냐.

브로 설치

브로(www.bro.org)는 강력한 네트워크 분석 프레임워크로, 네트워크 수준의 로그 수집뿐만 아니라 HTTP 통신, DNS 응답, SSL과 같은 애플리케이션 정보도 로그로 기록할 수 있는 도구다.

였는데,, 시간이 지나 브로가 zeek로 이름을 변경했다고 한다..~

zeek 설치

  • 설치 파일 다운로드 및 압축 해제
mkdir ~/zeek_src
cd zeek_src/
wget https://download.zeek.org/zeek-5.0.0.tar.gz
tar xzvf zeek-5.0.0.tar.gz
  • 필수 패키지 설치
sudo apt-get install libpcap*
sudo apt-get install bind9 cmake make python-dev swig
  • openssl 설치
cd ~/zeek_src/zeek-5.0.0
make clean
cmake .
make
sudo make install
  • zeek 설치
cd ~/zeek_src/zeek-5.0.0/
./configure && make && sudo make install


zeek 설치가 진짜 시간이 겁나겁나겁나겁나 오래걸려서,, 영원히 끝나지 않는 17%의 늪.. 아니 진짜 이정도로 오래걸릴줄 몰랐지ㅠㅠㅠㅠ 용량 이슈인가..?
환경변수와 zeek 설정, 불필요한 zeek 설정 제거는 카페 마감이슈로 내일부터 다시.. 시작하게 되었다..

profile
댜니에요

0개의 댓글