리눅스

[KaliLinux_Ubuntu] 보안 인프라 구축 실습 정리 | Snort 3 · Nmap · IDS/IPS

palantirops 2026. 5. 11. 18:09
보안 인프라 구축 실습 정리 | Snort 3 · Nmap · IDS/IPS
🔍 Nmap 🛡️ Snort 3 📡 IDS / IPS 🐧 Ubuntu

보안 인프라 구축 실습 정리

네트워크 스캔 · 패킷 분석 · Snort 3 설치 · IDS/IPS 개념 완전 정리

1

모의 해킹 프로세스 (Kill Chain)

공격자의 시각으로 보안을 이해하는 프레임워크. 각 단계를 알아야 방어도 가능하다.

단계명칭설명
1정찰 (Reconnaissance)ping, 포트 스캔, 서비스 스캔으로 정보 수집
2무기화 (Weaponization)취약점 분석, 공격 코드 준비
3전달 (Delivery)악성 코드 전송
4공격 (Exploitation)취약점 실제 공격
5설치 (Installation)백도어 설치
6C&C원격 제어
7목표 달성데이터 탈취, 시스템 파괴
2

Nmap — 네트워크 스캔

호스트 탐색 (살아있는 IP 확인)

bash
sudo nmap -sn 172.16.11.0/24
결과에서 확인할 것 → Host is up (통신 가능) · MAC Address (가상머신 여부 판단)

자주 쓰는 옵션 모음

명령어설명
nmap -sn <target>포트 스캔 없이 호스트만 탐색 (Ping Scan)
nmap -p <범위> <target>특정 포트 범위 스캔
nmap -p- <target>모든 TCP 포트 스캔 (0~65535)
nmap -sV <target>열린 포트의 서비스 버전 감지
nmap -O <target>운영체제 감지
nmap -A <target>공격적 스캔 (OS + 버전 + 스크립트 + traceroute)
nmap -sS <target>SYN 스캔 (3-way handshake 미완성, 은밀함)
nmap -sT <target>TCP 연결 스캔 (포트 열림/닫힘 확인)
nmap -sU -p <범위> <target>UDP 포트 스캔
nmap -T<0-5> <target>속도 조절 (0=가장 느림, 5=가장 빠름)
nmap -iL <파일> <target>파일에서 대상 호스트 읽어서 스캔
nmap --script <스크립트> <target>NSE 스크립트로 정보 수집
nmap -p 80,443,22 <target>특정 포트만 스캔
3

tcpdump — 패킷 캡처

패킷을 실시간으로 캡처하는 도구. 어떤 트래픽이 오가는지 확인할 때 사용.

bash
# 기본 실행 (모든 패킷 캡처)
sudo tcpdump

# 특정 인터페이스 지정
sudo tcpdump -i eth0
4

hping3 — DoS 공격 테스트

bash
# SYN Flooding — SYN 패킷 1000개 전송
sudo hping3 172.16.11.235 -S -c 1000
공격 유형설명
SYN Flooding다량의 SYN 패킷으로 서버 자원 고갈
LAND Attack출발지/목적지 IP를 동일하게 설정 → 시스템 루프 유발
Smurf Attack출발지 IP 변조 후 브로드캐스트로 다량 응답 유도
5

Snort 3 설치 전체 흐름

Step 5-1
의존성 패키지 설치
bash
sudo apt install build-essential libpcap-dev libpcre3-dev libnet1-dev \
zlib1g-dev luajit hwloc libdumbnet-dev bison flex liblzma-dev openssl \
libssl-dev pkg-config libhwloc-dev cmake cpputest libsqlite3-dev uuid-dev \
libcmocka-dev libnetfilter-queue-dev libmnl-dev autotools-dev \
libluajit-5.1-dev libunwind-dev libfl-dev -y

sudo apt install libpcre2-dev -y
sudo apt install -y git
Step 5-2
libdaq 설치 — Snort 데이터 수집 부품
bash
sudo git clone https://github.com/snort3/libdaq.git
cd libdaq
sudo ./bootstrap
sudo ./configure
sudo make
sudo make install
cd ~
Step 5-3
gperftools 설치 — 성능 향상 도구
bash
sudo wget https://github.com/gperftools/gperftools/releases/download/gperftools-2.13/gperftools-2.13.tar.gz
sudo tar xzf gperftools-2.13.tar.gz
cd gperftools-2.13
sudo ./configure
sudo make install
sudo ldconfig
Step 5-4
Snort 3 빌드 및 설치
bash
# snort3 소스 폴더에서 실행
sudo ./configure_cmake.sh --prefix=/usr/local --enable-tcmalloc
sudo make install
sudo ldconfig

# 설치 확인
sudo snort -V
Step 5-5 · 트러블슈팅
apt 오류 날 때 (잠금 파일 충돌)
bash
sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock*
sudo dpkg --configure -a
sudo apt update
6

Snort NIC 설정 (프로미스큐어스 모드)

프로미스큐어스 모드란?
일반 NIC는 자신의 MAC 주소가 목적지인 패킷만 처리한다. 이 모드를 켜면 네트워크 상의 모든 패킷을 수신해서 분석할 수 있다. Snort 같은 IDS가 전체 망을 감시하려면 반드시 필요하다.

수동으로 켜기

bash
sudo ip link set dev enp0s3 promisc on
sudo ethtool -K enp0s3 gro off lro off

# 확인
ip addr
sudo ethtool -k enp0s3 | grep receive-offload

부팅 시 자동 실행 서비스 등록

bash
sudo vi /usr/lib/systemd/system/snort3-nic.service
ini
[Unit]
Description=Set Snort 3 NIC in promiscuous mode and Disable GRO, LRO on boot
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/sbin/ip link set dev enp0s3 promisc on
ExecStart=/usr/sbin/ethtool -K enp0s3 gro off lro off
TimeoutStartSec=0
RemainAfterExit=yes

[Install]
WantedBy=default.target
bash
sudo systemctl daemon-reload
sudo systemctl start snort3-nic
sudo systemctl enable snort3-nic
7

Snort 설정 파일 수정

bash
sudo vi /usr/local/etc/snort/snort.lua

188번 라인 — 네트워크 대역 설정

lua
HOME_NET = '172.16.11.0/16'
EXTERNAL_NET = '!$HOME_NET'

197번 라인 — 룰 파일 연결

lua
ips =
{
    variables = default_variables,
    rules = [[
        include /usr/local/etc/snort/rules/local.rules
    ]]
}
8

룰 파일 생성 및 검증

bash
cd /usr/local/etc/snort
sudo mkdir rules
cd rules
sudo touch local.rules
ls local.rules

# 설정 검증 — 에러 없으면 "Successfully validated" 출력
sudo snort -c /usr/local/etc/snort/snort.lua

검증 화면에서 확인할 3가지 포인트

확인 항목위치의미
Successfully validated맨 아랫줄설정 파일 문법 오류 없음 ✅
total rules loaded: 219중간 rule counts 섹션룰이 정상적으로 로딩됨
pcap DAQ configured to passive하단수동 감시 모드 (탐지만, 차단 아님)
이 화면은 "나는 이제 눈을 뜨고 지켜볼 준비가 다 되었습니다!" 라는 보고서다. 다음 단계는 ping 테스트로 실제로 Alert가 뜨는지 확인하는 것.
9

IDS/IPS 핵심 개념 + 룰 구조

Snort 3가지 동작 모드

모드설명
Sniffer 모드패킷을 읽어서 화면에 출력 (tcpdump와 유사)
Packet Logger 모드탐지 패킷을 디스크에 로그 파일로 저장
NIDS/NIPS 모드실시간 패킷 분석 후 룰에 따라 탐지/차단

★ 룰 구조 — 시험 단골 ★

alert tcp $EXTERNAL_NET any -> $HOME_NET 80 (msg:"HTTP Access"; content:"GET"; sid:1000001;)

룰 헤더 (Rule Header)

항목예시설명
Actionalertalert / log / pass / drop
Protocoltcptcp / udp / icmp / ip
출발지$EXTERNAL_NET anyIP : 포트
방향->단방향 / <> 양방향
목적지$HOME_NET 80IP : 포트

룰 옵션 (Rule Options)

옵션설명
msg로그에 남길 메시지
content패킷에서 찾을 문자열 (가장 중요)
sid룰 고유 번호 (100만번대 이상 사용)

IDS vs IPS

구분IDSIPS
역할탐지 후 경보탐지 후 실시간 차단
Snort 모드기본 모드-Q 옵션 (Inline Mode)
인터페이스1개2개 이상 필요
10

Snort vs Suricata 비교

항목SnortSuricata
스레딩싱글 스레드멀티 스레드 (대용량 처리 유리)
룰 호환Snort 룰Snort 룰 호환
로그 형식텍스트EVE JSON (eve.json)
설정 검증snort -c [파일] -Tsuricata -T -c [파일] -v
실시간 로그tail -f eve.json | jq 'select(.event_type=="alert")'

오탐(False Positive) 관리 포인트

정상 트래픽을 공격으로 오인하면 서비스 장애가 발생한다. pass 액션 활용 및 세밀한 옵션 설정으로 관리. 룰 업데이트는 정기적으로 수행 필요 (시그니처 기반 탐지의 한계).
11

설치 진행 상태

단계작업 내용상태
1단계Snort 3 설치✅ 완료
2단계NIC 서비스 파일 생성✅ 완료
3단계snort.lua 설정 수정✅ 완료
4단계설정 검증✅ 성공

기타 유용한 명령어

bash
# 성능 모니터링 도구
sudo apt install htop

# Docker 컨테이너 중지
sudo docker stop pmm-server
📝 보안인프라_운영관리 수업 실습 기록  |  CTF 실습: vulnhub.com