2020. 7. 10. 16:37ㆍCentOS 7/Basic
Suricata 5
Suricata는 빠르고 강력한 네트워크 위협 탐지 엔진으로, 무료 오픈소스입니다.
Suricata 엔진은 IDS/IPS, 네트워크 보안 모니터링(NSM) 그리고 오프라인 pcap 처리를 지원합니다.
Suricata는 강력하고 광범위한 룰과 Signatue 언어 그리고 복잡한 위협탐지를 지원하는 Lua 스크립팅을 사용하여 그 네트워크 트래픽을 검사합니다.
yaml 이나 json과 같은 표준 입출력형식을 SIEMs, Splunk, Logstash/Elasticsearch, Kibana 와 같은 툴들과 통합할 수 있습니다.
CentOS 7 환경에서 지원되는 Suricata 버전은 3.1, 2.0.11
과 5.0
버전입니다.
이 중, 현재 stable release 된 5.0버전을 설치합니다.
1. 의존성 패키지 설치
먼저 suricata 프로그램에 필요한 의존성 패키지들을 yum 명령어를 통해 설치합니다.
sudo yum -y install epel-release gcc libpcap-devel pcre-devel libyaml-devel \ file-devel zlib-devel jansson-devel nss-devel libcap-ng-devel libnet-devel \ tar make libnetfilter_queue-devel lua-devel PyYAML libmaxminddb-devel \ rustc cargo lz4-devel
2. Suricata 5 다운로드
Suricata 공식 홈페이지에 들어가면 Suricata 5 다운로드 링크를 복사합니다.
wget https://www.openinfosecfoundation.org/download/suricata-5.0.3.tar.gz tar -xvzf suricata-5.0.3.tar.gz cd suricata-5.0.3
suricata 5를 다운받은 후 압축을 해제합니다.
3. Suricata 5 빌드
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-nfqueue --enable-lua
configure 명령어를 이용하여 suricata에 대한 환경설정을 한 후 빌드 합니다.
- --prefix=/usr
- binary 파일을
/usr/bin/
에 설치
- binary 파일을
- --sysconfdir=/etc
- 구성파일들을
/etc/suricata/
에 설치
- 구성파일들을
- -localstatedir=/var
- 로그파일들을
/var/log/suricata/
에 위치시킴
- 로그파일들을
- --enable-lua
- 감지 및 출력에 관하여 지원해주는 Lua 언어를 활성화 합니다.
- --enable-nfqueue
- nfq(네트워크 트래픽을 라우팅, 포워딩) 활성화
- IPS 구성을 위해 필요한 옵션
4. 컴파일 및 설치
make
소스를 컴파일 하고
sudo make install-full
컴파일된 설치파일을 설치합니다.
이때, configure명령어로 설정한 설치 위치에 suricata 실행을 위해 필요한 파일들을 복사합니다.
install-full로 설치파일을 설치할 경우 create/setup에 필요한 모든 디렉토리
및 suricata.yaml 파일
과 최신 ruleset
도 함께 설치됩니다.
sudo ldconfig
설치를 완료한 후, 설치된 모듈(*.so)들에 대한 모듈 업데이트를 위해 ldconfig 명령어를 실행해줍니다.
5. 실행
ip a
ip a
명령어로 ip 및 인터페이스를 조회합니다.
sudo suricata -c /etc/suricata/suricata.yaml -i eth0 --init-errors-fatal -S /var/lib/suricata/rules/suricata.rules -D
- -c <파일경로>
- configuration file 경로를 지정합니다.
- -i <인터페이스명>
- 패킷이 들어올 인터페이스를 지정합니다.
- --init-errors-fatal
- 파일 로드중 오류 발생시 종료합니다.
- -S
- 룰 파일을 추가합니다.(기존에 포함된 룰파일도 이용 가능)
- -D
- suricata를 background로 실행시킵니다.
suricata -i eth0 --init-errors-fatal 7/7/2020 -- 09:27:26 - <Notice> - This is Suricata version 5.0.3 RELEASE running in SYSTEM mode 7/7/2020 -- 09:27:32 - <Notice> - all 4 packet processing threads, 4 management threads initialized, engine started
실행시, 위와 같은 로그가 출력된다면 정상적으로 구동되고 있다는 의미입니다.
+++ tip
Suricata를 백그라운드에서 실행시킬 경우, suricata.pid
파일을 생성하여 pid를 저장합니다.
만일, pid를 이용하여 프로세스를 강제 종료할 경우, pid가 쓰여있는 suricata.pid
파일은 그대로 남아있어 suricata 프로세스를 다시 시작하려 할때 아래와 같은 에러가 발생됩니다.
10/7/2020 -- 14:16:08 - <Notice> - This is Suricata version 5.0.3 RELEASE running in SYSTEM mode 10/7/2020 -- 14:16:08 - <Error> - [ERRCODE: SC_ERR_INITIALIZATION(45)] - pid file '/var/run/suricata.pid' exists but appears stale. Make sure Suricata is not running and then remove /var/run/suricata.pid. Aborting!
쉘 스크립트를 만들어, 종료시 pid 파일도 함께 제거하도록 합시다.
touch suricata_shutdown.sh chmod 744 suricata_shutdown.sh vim suricata_shutdown.sh
쉘 스크립트를 실행가능하도록 하기 위해 rwxr--r-- 모드로 바꿔준 후, 쉘 스크립트를 작성합시다.
pidfile=/var/run/suricata.pid pid=`cat $pidfile 2> /dev/null` if [ "$pid" == "" ]; then echo "suricata is not running." else kill -9 $pid echo "suricata process killed forcefully, process id = $pid." rm -rf $pidfile fi
'CentOS 7 > Basic' 카테고리의 다른 글
[CentOS 7] swap 메모리 늘리기 (0) | 2020.10.18 |
---|---|
[CentOS 7] ssh config를 이용하여 간편하게 ssh접속하기 (0) | 2020.10.18 |
[CentOS 7] timedatectl을 이용하여 서버의 timezone 변경하기 (0) | 2020.03.20 |
[CentOS 7] ntpdate 명령어를 이용하여 NTP 서버와 시간 동기화 (0) | 2020.02.26 |
[CentOS 7] history 명령어로 사용한 명령어 확인 및 재사용 (0) | 2020.01.03 |