- IDS(Intrusion Detection System) 시 스템에서 snort는 A-BOX에 해 당한다.
- R-BOX를 강화시키고 여러가지 보안 기능을 포함하는 시스템을 IPS (Intrusion Prevention System) 라 한다.
- E-box : daq(Data AcQuisition system)
- D-box : barnyard2, MySQL
snort는 snort.org에서 제공
- 2.9.0 부터 DB에 대한 connect 기능이 제공되지 않는다.
- snort, DAQ( Data Acquisition Package)는 다양한 배포본이 제공된다.
- sniffer등으로도 사용 가능하다.
설치 과정
1. 관련 패키지 설치
2. daq 설치
3. snort 설치
4. 기본 환경 설정
5. snort.conf 설정
6. 실행과 테스트
1. 관련 패키지 설치
- Dependency로 인해 대략 40~50 정도의 패키지가 설치된다.
# yum -y install libdnet-devel openssl-devel pkgconfig gcc flex bison zlib* libpcap* pcre* libpcap-devel libpcre3-devel libnetfilter-queue-devel iptables-devel libdnet* tcpdump
2. daq 설치
- daq와 같이 설치되야 하는 libnghttp2는 epel에서 제공한다.
# yum install -y daq daq-devel daq-modules libnghttp2
# ln -s /usr/lib64/libdnet.so.1.0.1 /usr/lib64/libdnet.1 //링크 파일 생성
3. snort 설치
- Wget를 이용해서 다운 받아 설치한다.
- 설치 후 작동 여부를 확인한다.
- rpm 패키지를 설치하면 snort 계정도 생성된다.
# wget https://snort.org/downloads/snort/snort-2.9.16-1.centos7.x86_64.rpm
# rpm -Uvh snort-2.9.16-1.centos7.x86_64.rpm
# snort -V
4. 기본 환경 설정
- 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
- test를 위해 /etc/snort/rules/local.rules 파일에 다음 rule을 추가한다.
# vi /etc/snort/rules/local.rules
alert icmp any any -> $HOME_NET any (msg:"ICMP TEST"; sid:10000001; rev:001;) 로 수정
// 경고 출력
// rev : 개선넘버
// msg:"ICMP TEST" <- msg : " 이런식으로 사이에 공백이 들어가면 에러가 날 수 있음으로 주의
5. snort.conf 설정
- /etc/snort/snort.conf 파일은 snort의 환경 설정파일이다. 수정 전 반드시 백업받는다.
# cp /etc/snort/snort.conf /etc/snort/snort.conf.back
- 다음 항목을 찾아 수정한다.
ipvar HOME_NET 192.168.12.0/24 //snort의 네트워크 주소
ipvar EXTERNAL_NET !$HOME_NET
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 //128Mbyte 까지 만들어라
- 파일 내에 include $RULE_PATH/local.rules 아래 모든 룰은 삭제한다.
6. 실행과 테스트
- snort를 실행하고 탐지를 테스트한다.
- -i : 'ERROR: Cannot decode data link type 239' 에러 방지
# snort -i ens32 -A console -c /etc/snort/snort.conf //-A 출력 방향 지정, -c conf 파일 어떤거 쓸지 지정
(# snort -i ens32 -A fast -c /etc/snort/snort.conf)
- 시스템에 ping을 보낸후 /var/log/snort 에 생성된 log 파일이나 alert 파일을 확인한다.
# snort -r 로그파일
# cat /var/log/snort/alert