일일 정리

보안 장비 운용, IDS(Intrusion Detection System), IDS - snort

mysecurity 2025. 5. 9. 23:38

목차

1. 보안 장비 운용

1-1 침입 차단 시스템(방화벽) 개요

1-2 방화벽 구축 형태

1-3 방화벽의 한계

 

2. IDS(Intrusion Detection System)

2-1 IDS 개요

2-2 IDS 분류 - Information Source

2-3 IDS 분류 - IDS Analysis

 

3. IDS - snort

3-1 IDS 구조와 snort

3-2 snort 설치

 

 

1. 보안 장비 운용

1-1 침입 차단 시스템(방화벽) 개요

● 방화벽 정의

방화벽이란 내부 네트워크 망과 외부 네트워크 망을 분리하는 시스템이다.

 * 내부 네트워크: 보안 정책이 적용되는 망

 * 외부 네트워크: 보안 정책과 관계없는 망

 

● 방화벽 기능

- 패킷 필터링

- NAT

- VPN : 방화벽 기본 제공 기능은 아니나 vpn을 지원하는 제품이 많다.

- 프록시, 로깅(logging)

 * 프록시: 외부 클라이언트가 내부 어플리케이션에 직접 접속하지 않고 방화벽을 통해 접속하도록 한다.

 * 로깅: 로그를 기록한다.

 

● 방화벽 구성 요소

- 베스천 호스트(Bastion host)

 : 방화벽이 설치되는 컴퓨터이다.

 

- 스크린 방화벽(라우터)

 : 라우터 내에 액세스 컨트롤 기능이 있어 라우터를 일종의 방화벽처럼 사용한다.

 

- 침입 차단 시스템 소프트웨어

 : 방화벽 프로그램으로, 리눅스에는 iptables, firewall-cmd 등이 있다.

 

1-2 방화벽 구축 형태

● Screening 방화벽(Router)

라우터를 이용해 외부와 내부 네트워크를 분리하며 패킷 필터링을 수행한다.

- 장점: 필터링 속도가 빠르며 구축 비용이 저렴하다.

- 단점: 패킷 내의 데이터에 대한 공격 차단이 불가하며 로그 정보, 감사 추적의 생성 및 관리가 곤란하다.

 

● Bastion Router (Bastion Host)

라우터를 이용해 외부와 내부 네트워크를 분리하며 내부 네트워크로의 접근을 원하는 경우 베스천 호스트로 보낸다. 베스천 호스트를 통과해야만 내부 네트워크로 접근이 가능하다.

- 장점: 스크리닝 라우터보다 안전하며 로그 정보의 생성 및 관리가 가능하다.

- 단점: 베스천 호스트 손상 시 내부 네트워크 보호가 불가하다. 

 

● Dual Homed Gateway

2개의 NIC를 가진 베스천 호스트로 외부와 내부 네트워크를 분리한다.

- 장점: 스크리닝 라우터나 베스천 호스트보다 안전하며 로그 정보의 생성 및 관리가 가능하다.

- 단점: 게이트웨이 손상 시 내부 네트워크 보호가 불가하다.

 

● Screened Subnet Gateway

외부 ~ 일부 공개 영역, 일부 공개 영역 ~ 내부 사이에 각각 라우터를 배치하여 패킷 필터링을 수행한다. 현재 많이 사용되는 형태이다.

- 장점: 네트워크 계층과 응용 계층에서 방어가 가능하며 융통성이 뛰어나다.

- 단점: 구현 및 관리가 어려우며 구축 비용이 비싸다. 서비스 속도가 느리다.

 

1-3 방화벽의 한계

- 제한된 서비스

 : 사용자들이 자주 사용하는 서비스(telnet, FTP) 차단 시 장애가 있으며 80번 포트와 같은 정상 포트를 통한 해킹 및 바이러스 공격이 가능하다.

 

- 내부 사용자에 의한 보안 침해

 : 인가된 내부 사용자에 대한 통제는 불가하다.

 

- 기타 문제점

 : 우회 경로를 통한 공격이 가능하다.

 : 바이러스 검색이 불가하다.

 : 보안 기능이 집중되는 곳인 경우 병목 현상 발생이 가능하며 방화벽 붕괴 시 심각한 보안 문제가 발생할 수 있다.

 

2. IDS(Intrusion Detection System)

2-1 IDS 개요

● IDS 정의

내부에서 발생하는 이벤트를 모니터링하며 침해 상황 탐지 및 알림을 수행하는 시스템이다. 최근에는 대응까지 수행하며 이 경우 IPS로 불린다.

 

● IDS 등장 배경

- 인가된 내부 사용자의 불법적인 행위 증가

- 정상 포트를 통한 악성코드 유입 증가

 

● IDS 기능

- 네트워크의 실시간 감시

- 정책에 의한 특정 서비스의 차단 및 로그 기록

- 침입 시도 재연

- 침입 분석 및 네트워크 사용 분석 레포트 제공

- 실시간 로그인 및 경고

 

※ 정보보안 통제 분류

- 예방 통제: 방화벽
- 적발 통제: ids
- 교정 통제: 적발 후 조치

 

** 강력한 적발은 예방의 기능도 수행한다.

 

 

● 일반적 구조

- Event generator (E-Box)

 : 모든 이벤트에 대한 데이터를 수집한다. (ex. daq (Data AcQuisition system))

 

- Event analyzer (A-Box)

 : 수집된 데이터를 분석하여 침입 탐지를 수행한다. (ex. snort)

 

- Event databases (D-Box)

 : 필요한 정보를 저장한다. 주로 공격을 재현할 때 사용한다. (ex. barnyard2, MySQL)

 

- Response units (R-Box)

 : 탐지된 침입에 대한 대응 행동을 수행한다.

 

● IDS 절차

① 정보 수집

- 호스트 로그 정보 수집

- 멀티 호스트 간 로그 정보 수집

- 네트워크 패킷 수집

 

② 정보 가공 및 축약

- 데이터로부터 의미있는 정보로 가공

 

③ 침입 분석 및 탐지

- Anomaly Detection 

 : 정상인 상황을 모델링해 저장 후, 해당 상황에서 벗어나면 공격으로 간주한다.

 

- Misuse Detection

: 비정상인 상황을 모델링해 저장 후, 해당 상황과 일치하면 공격으로 간주한다. 가장 많이 이용하는 방식이다.

 

④ 보고 및 조치

- 침입 발견 시 즉각 보고 및 해당 조치사항 수행

- 침입 진행 상황 보고

- 침입 재연

 

● IDS 분류

 

2-2 IDS 분류 - Information Source

● 호스트 기반 IDS

- 데이터 소스

 : os 감사 자료

 : 시스템 로그

 

- 장점

 : 네트워크 기반 ids에서는 탐지 불가한 침입 탐지가 가능하다. (ex. 트로이목마, race condition 등)

 : 우회 가능성이 거의 없다. 

 

- 단점

 : 모든 개별 호스트에 대한 설치 및 관리가 어렵다.

 : ids가 설치된 플랫폼의 성능이 저하된다.

 : 네트워크 전체에 대한 탐색 행위를 탐지하기에 부적합하다. 

 

● 네트워크 기반 IDS

- 데이터 소스

 : 실시간 네트워크 패킷

 

- 장점

 : 호스트 기반 ids에서는 탐지 불가한 침입 탐지가 가능하다. (ex. 포트 스캐닝)

 : 전체 네트워크에 대한 침입 탐지가 가능하다.

 

- 단점

 : 탐지된 침입의 실제 성공 여부를 알 수 없다.

 : 암호화된 패킷은 탐지 불가하다.

 : 오탐률이 높다.

 

2-3 IDS 분류 - IDS Analysis

● Misuse Detection

비정상적인 상황을 모델링해 저장 후, 해당 상황과 일치하면 공격으로 간주한다. 가장 많이 이용하는 방식이다.

 

- 장점

 : 오탐률이 낮다.

 : 신속정확한 침해사고 대응이 가능하다.

 

- 단점
 : 다양한 우회 가능성이 존재한다.

 : 새로운 침입 유형에 대한 탐지가 불가하다. (= 미탐률이 높다.)

 : 새로운 공격에 대한 업데이트가 필요하다.

 

● Anomaly Detection

정상적인 상황을 모델링해 저장 후, 해당 상황에서 벗어나면 공격으로 간주한다.

 

- 장점

 : 새로운 침입 유형에 대한 탐지가 가능하다.

 

- 단점
 : 정상적인 상황 모델링이 어렵다.

 : 오탐률이 높다. (오탐이 계속될 경우 공격의 사전준비로 의심한다.)

 

※ IPS 및 UTM

- IPS

 : 기존 ids에서 능동적으로 대응하는 기능을 추가한 시스템이다.

 : 트래픽 모니터링, 의심 패킷 차단 등의 조치를 취한다.

 

- UTM

 : 통합 위협 관리 시스템으로, 여러 레벨에서 방화벽을 사용할 수 있도록 하는 시스템이다.

 : 여러 보안 시스템에 대한 유지, 관리 비용을 줄일 수 있다.

 

3. IDS - snort

3-1 IDS 구조와 snort

- snort

: ids 중 하나로, ids 시스템에서 A-BOX에 해당한다.

 

- IPS

: R-BOX를 강화시키고 여러가지 보안 기능을 포함하는 시스템이다.

 

3-2 snort 설치

snort의 설치과정은 다음과 같다.

① 관련 패키지 설치

② daq 설치

③ snort 설치

④ 기본 환경설정

⑤ snort.conf 설정

⑥ 실행과 테스트

 

 관련 패키지 설치

powertools 레파지토리 활성화가 필요하다.

# dnf config-manager --set-enabled powertools
# dnf -y install libdnet-devel openssl-devel pkgconfig gcc flex bison zlib* libpcap* pcre*ilter_queue-devel iptables-devel libdnet* tcpdump epel* wget

 

② daq 설치

daq는 네트워크에 흐르는 패킷을 수집한다. 함께 설치되어야 하는 libnghttp2는 epel에서 제공한다.

daq는 사용자가 별도로 사용하는 것이 아닌 snort가 사용하는 것이다.

# dnf install -y daq daq-devel daq-modules libnghttp2
# ln -s /usr/lib64/libdnet.so.1.0.1 /usr/lib64/libdnet.1

 

③ snort 설치

wget을 이용해 다운받아 설치한다.

# wget https://snort.org/downloads/snort/snort-2.9.20-1.centos.x86_64.rpm
# dnf install -y snort-2.9.20-1.centos.x86_64.rpm
# snort -V

- rpm 패키지 설치 시 snort 계정/그룹이 자동 생성된다.

- sonrt -V를 통해 스노트가 잘 설치된 것을 확인한다.

 

④ 기본 환경설정

snort 실행에 필요한 기본 디렉토리와 rule 파일을 생성하고 퍼미션을 조정한다.

# mkdir /usr/local/lib/snort_dynamicrules
# touch /etc/snort/rules/white_list.rules
# touch /etc/snort/rules/black_list.rules
# touch /etc/snort/rules/local.rules

# chmod -R 700 /etc/snort
# chmod -R 700 /var/log/snort
# chmod -R 700 /usr/local/lib/snort_dynamicrules
# chown -R snort.snort /etc/snort
# chown -R snort.snort /var/log/snort
# chown -R snort.snort /usr/local/lib/snort_dynamicrules

 

테스트를 위해 /etc/snort/rules/local.rules 파일에 다음 rule을 추가한다.

# vi /etc/snort/rules/local.rules
alert icmp any any -> $HOME_NET any (msg:"ICMP TEST"; sid:1000001; rev:001;)
          (ip)(port#)

- icmp 패킷이 any any(ip  port#)에서 $HOME_NET any(네트워크 주소  port#)으로 향하는 경우 msg와 함께 알림을 출력한다.

- icmp는 포트넘버가 없으나, 설정 문장 구조에 빠지는 부분은 없어야하므로 포트넘버를 any로 설정한다.

- sid: 해당 룰의 id로, 1~100만까지는 정해져있는 룰이 있으므로 100만 이후부터 지정한다.

- rev: 해당 룰의 버전으로, 룰 수정 시 1씩 값을 올린다.

 

 snort.conf 설정

/etc/snort/snort.conf 파일은 snort의 환경설정 파일이다. 수정 전 반드시 백업 받는다.

환경설정 파일의 '# site specific rules' 항목에서 'include $RULE_PATH/local.rule'을 제외하고 모두 삭제한다.

 

다음의 항목을 찾아 동일하도록 수정한다.

ipvar HOME_NET 192.168.12.0/24 // snort가 위치한 네트워크 주소
ipvar EXTERNAL_NET !$HOME_NET // HOME_NET을 제외한 네트워크는 모두 external이다.

var RULE_PATH /etc/snort/rules
var SO_RULE_PATH /etc/snort/so_rules
var PREPROC_RULE_PATH /etc/snort/preproc_rules

var WHITE_LIST_PATH /etc/snort/rules
var BLACK_LIST_PATH /etc/snort/rules

output unified2: filename snort.log, limit 128

 

⑥ 실행과 테스트

snort를 실행하고 탐지를 테스트한다.

# snort -i ens160 -A console -c /etc/snort/snort.conf
-console : message를 화면에 출력한다.

# snort -iens160 -A fast -c /etc/snort/snort.conf
-Fast : /var/log/snort/alert 파일을 생성한다.

 

시스템에 ping을 보낸 후 /var/log/snort에 생성된 log(snort.log.##########) 파일이나 alert 파일을 확인한다.

# snort ‐r [로그파일경로]
# cat /var/log/snort/alert

 

# snort -i ens160 -A console -c /etc/snort/snort.conf

 

# snort -r [로그파일경로]

 

# cat /var/log/snort/alert

 

● alert & log

snort에서 alert와 log는 비슷해 보이지만 용도는 다르다.

  경고 로그
목적 조건에 따라 탐지 및 경고 트래픽 기록
출력 /var/log/snort/alert, 콘솔 /var/log/snort/log.*
용도 위험 감지 및 대응 트래픽 수집
알림 알람 기능 없음
확인 cat, 화면 출력 snort -r [로그파일경로]

 

'일일 정리' 카테고리의 다른 글

SQL 인젝션  (1) 2025.05.14
snort - rule 설정  (1) 2025.05.12
리눅스 Firewall 설정  (0) 2025.05.08
리눅스 Firewall  (5) 2025.05.02
서버 보안 설정, FTP  (0) 2025.05.01