목차
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



● 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 |