웹사이트 검색

Suricata - 침입 탐지 및 예방 보안 도구


Suricata는 침입 감지(IDS), 침입 방지(IPS) 및 네트워크 보안 모니터링 기능을 제공하는 강력하고 다재다능한 오픈 소스 위협 감지 엔진입니다. 위협 탐지에 있어서 믿을 수 없을 정도로 강력한 혼합 패턴 매칭과 함께 심층 패킷 검사를 수행합니다.

이 가이드를 작성하는 시점에서 Suricata의 최신 버전은 6.0.5입니다.

수리카타의 특징

  • IDS/IPS – Suricata는 Talos Ruleset 및 Emerging Threats Suricata 규칙 세트와 같이 외부에서 개발된 규칙 세트를 활용하는 규칙 기반 침입 탐지예방 엔진입니다. 악의적인 활동, 정책 위반 및 위협에 대한 네트워크 트래픽을 모니터링합니다.
  • 자동 프로토콜 감지 – Suricata 엔진은 HTTP 및 HTTPS와 같은 프로토콜을 자동으로 감지합니다. 모든 포트에서 FTP 및 SMB를 사용하고 적절한 감지 및 로깅 논리를 적용하세요. 이는 맬웨어 및 CnC 채널을 탐지하는 데 유용합니다.
  • Lua 스크립팅 – Suricata는 고급 악성 코드 탐지 기능을 제공하는 Lua 스크립트를 호출하여 탐지하기 어려운 악성 코드 트래픽을 탐지하고 디코딩할 수 있습니다.
  • 멀티스레딩 – Suricata는 네트워크 트래픽 결정에 속도와 중요성을 제공합니다. 엔진은 최신 멀티 코어 하드웨어 칩셋이 제공하는 향상된 처리 능력을 적용하도록 개발되었습니다.

Linux에 Suricata 침입 감지 도구 설치

이 섹션에서는 Debian 기반 및 RHEL 기반 배포판에 Suricata를 설치하는 방법을 보여줍니다.

Debian/Ubuntu 및 Mint에 Suricata 설치

SuricataDebian/Ubuntu 저장소에서 제공되며 apt 패키지 관리자를 사용하여 쉽게 설치할 수 있습니다. 그러나 이것이 최신 버전의 Suricata를 설치하지는 않는다는 점은 주목할 가치가 있습니다. 최신 버전을 설치하려면 이 가이드의 뒷부분에서 다룰 소스에서 설치해야 합니다.

apt 패키지 관리자를 사용하여 Suricata를 설치하려면 다음 명령을 실행하세요.

sudo apt install suricata -y

Suricata는 설치되면 자동으로 시작됩니다. 이는 다음과 같이 확인할 수 있습니다.

sudo systemctl status suricata

RHEL, Rocky, Almalinux 및 Fedora에 Suricata 설치

CentOS Stream, Rocky Linux, AlmaLinux, Fedora 및 RHEL과 같은 RHEL 배포판에 Suricata를 설치하려면 먼저 EPEL 저장소를 활성화해야 합니다.

dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm  [RHEL 9]
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm  [RHEL 8]
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm  [RHEL 7]

EPEL이 활성화되면 다음 필수 패키지를 설치하고 OISF 저장소를 시스템에 추가합니다.

----------- On Fedora Systems ----------- 
sudo dnf install dnf-plugins-core
sudo  dnf copr enable @oisf/suricata-6.0

----------- On RHEL Systems ----------- 
sudo dnf install yum-plugin-copr
sudo dnf copr enable @oisf/suricata-6.0

다음으로, 표시된 대로 dnf 패키지 관리자 또는 yum 패키지 관리자를 사용하여 Suricata를 설치합니다.

sudo dnf install suricata -y
Or
sudo yum install suricata -y

Suricata가 설치되면 시작하고 상태를 확인하세요.

sudo systemctl start suricata
sudo systemctl status suricata

Linux의 소스에서 Suricata 설치

기본 OS 저장소는 최신 버전의 Suricata를 제공하지 않습니다. Suricata의 최신 버전을 설치하는 것이 목표라면 소스에서 설치해야 합니다.

이 가이드를 작성하는 시점에서 Suricata의 최신 버전은 6.0.5입니다. Ubuntu/DebianRHEL 배포판의 소스에서 Suricata를 설치하려면 다음 라이브러리, 컴파일 도구 및 종속성을 설치하세요.

----------- On Debian Systems ----------- 
sudo apt install rustc build-essential cargo libpcre3 libpcre3-dbg libpcre3-dev make autoconf automake libtool libcap-ng0 make libmagic-dev libjansson-dev libjansson4 libpcap-dev libnet1-dev libyaml-0-2 libyaml-dev zlib1g zlib1g-dev libcap-ng-dev pkg-config libnetfilter-queue1 libnfnetlink0 libnetfilter-queue-dev libnfnetlink-dev -y

----------- On RHEL Systems ----------- 
sudo yum install 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 -y

다음으로 suricata-update 도구를 설치하여 Suricata 규칙을 업데이트합니다.

sudo apt install python3-pip           [On Debian]
sudo yum install python3-pip           [On RHEL]
pip3 install --upgrade suricata-update

그런 다음 /usr/bin/suricata-update에 대한 심볼릭 링크를 만듭니다.

sudo ln -s /usr/local/bin/suricata-update /usr/bin/suricata-update

이제 공식 Suricata 다운로드 페이지로 이동하여 wget 명령을 사용하여 Linux용 최신 tarball 파일을 다운로드하세요.

wget https://www.openinfosecfoundation.org/download/suricata-6.0.6.tar.gz

다운로드가 완료되면 tarball 파일을 추출하여 설치하십시오.

sudo tar -xvf suricata-6.0.6.tar.gz
cd suricata-6.0.6
./configure --enable-nfqueue --prefix=/usr --sysconfdir=/etc --localstatedir=/var
make
make install-full

Linux에서 Suricata 구성

Suricata 구성을 시작하려면 내부 IP와 외부 네트워크를 지정해야 합니다. 이렇게 하려면 구성 파일에 액세스합니다.

sudo vim /etc/suricata/suricata.yaml

HOME_NET 지시문의 경우 Linux 시스템의 IP 주소를 지정합니다.

HOME_NET: "[173.82.235.7]"

다음으로 EXTERNAL_NET 지시문을 "!$HOME_NET"으로 설정합니다.

EXTERNAL_NET: "!$HOME_NET"

다음으로 Suricata가 네트워크 트래픽을 검사할 네트워크 인터페이스를 지정합니다. 우리의 경우 이는 eth0 인터페이스입니다.

ip 명령을 사용하여 활성 네트워크 인터페이스를 확인할 수 있습니다.

ip a

구성 파일에서 인터페이스 지시어를 네트워크 인터페이스 이름으로 업데이트합니다.

- interface: eth0

다음으로, default-rule-path 속성이 /etc/suricata/rules로 설정되어 있는지 확인하세요.

그런 다음 변경 사항을 저장하고 구성 파일을 닫습니다. 그런 다음 변경사항을 적용하려면 Suricata를 다시 시작하세요.

sudo systemctl status suricata

Linux에서 Suricata 규칙 세트 업데이트

기본적으로 Suricata/etc/suricata/rules 디렉토리에 제한된 탐지 규칙 세트를 제공합니다. 그러나 이러한 방법은 침입 탐지에 약하고 비효율적인 것으로 간주됩니다. Suricata에 대한 가장 포괄적인 규칙 세트로 간주되는 새로운 위협(ET) 규칙을 로드해야 합니다.

Suricata는 외부 공급자로부터 규칙 세트를 가져오는 suricata-update라는 도구를 제공합니다. 서버에 대한 최신 규칙 세트를 얻으려면 다음 명령을 실행하십시오.

sudo suricata-update -o /etc/suricata/rules

출력에서 suricata-update가 무료 Emerging Threats ET Open Rules를 가져와 Suricata의 /etc/suricata/rules/suricata<에 저장하는 것을 볼 수 있습니다. 규칙 파일입니다. 또한 처리된 규칙의 개수를 나타냅니다. 이 예에서는 총 35941이 추가되었습니다. 그 중 28221이 활성화되었고 18이 제거되었으며 1249가 수정되었습니다.

Linux에 Suricata 규칙 세트 추가

suricata-update 도구를 사용하면 규칙 세트 제공자로부터 규칙을 가져올 수 있습니다. ET Open 세트와 같은 일부는 무료인 반면, 다른 일부는 유료 구독이 필요합니다.

기본 규칙 공급자 세트를 나열하려면 표시된 대로 suricata-update 명령을 실행하세요.

sudo suricata-update list-sources

예를 들어 tgreen/hunting 규칙 세트와 같은 규칙 세트를 추가하려면 다음 명령을 실행합니다.

sudo suricata-update enable-source tgreen/hunting

규칙 집합을 추가한 후 -o /etc/suricata/rules 플래그와 함께 suricata-update 명령을 다시 한 번 실행하세요.

sudo suricata-update -o /etc/suricata/rules

Linux에서 Suricata 규칙 테스트

Suricata 테스트를 시작하기 전에 구성이 괜찮은지 테스트하는 것이 좋습니다. 이렇게 하려면 다음 명령을 실행하십시오.

sudo suricata -T -c /etc/suricata/suricata.yaml -v

보고된 오류가 없는지 확인하십시오. RHEL을 실행하는 경우 CentOS Stream, Fedora 및 Rocky Linux를 시작하고 Suricata를 활성화합니다.

sudo systemctl start suricata 
sudo systemctl enable suricata 

지금까지 Suricata를 성공적으로 설치 및 구성하고 규칙 세트를 업데이트했습니다. ET Open Rule Set에는 악성 트래픽을 탐지하기 위한 30,000개 이상의 규칙이 포함되어 있습니다. 이 섹션에서는 Suricata를 테스트하고 의심스러운 네트워크 트래픽을 감지할 수 있는지 확인합니다.

Suricata의 빠른 시작 가이드에서 권장하는 대로 침입을 시뮬레이션하여 ET Open 규칙 세트를 테스트합니다.

IDS 기능은 NIDS(네트워크 침입 및 탐지 시스템) 프레임워크인 testmynids.org 웹사이트에 HTTP 요청을 전송하여 서명 ID 2100498로 테스트됩니다.

curl http://testmynids.org/uid/index.html

다음과 같은 결과가 출력되어야 합니다.

uid=0(root) gid=0(root) groups=0(root)

전송된 HTTP 요청은 셸을 통해 손상된 원격 시스템에서 실행될 수 있는 id 명령의 출력을 모방하여 경고를 트리거하도록 설계되었습니다.

이제 해당 경고에 대한 Suricata의 로그를 살펴보겠습니다. Suricata에는 기본적으로 활성화된 두 개의 로그 파일이 함께 제공됩니다.

/var/log/suricata/fast.log
/var/log/suricata/eve.log

grep 명령을 사용하여 컬 요청에 해당하는 /var/log/suricata/fast.log 로그 파일에서 로그 항목을 확인합니다. 빠른 시작 문서의 2100498 규칙 식별자를 사용하여 로그 항목을 검색합니다.

grep 2100948 /var/log/suricata/fast.log

침입을 나타내는 다음 출력을 얻게 됩니다. 여기서 173.82.235.7은 서버의 공개 IP 주소입니다.

09/09/2022-22:17:06.796434  [**] [1:2100498:7] GPL ATTACK_RESPONSE id check returned root [**] [Classification: Potentially Bad Traffic] [Priority: 2] {TCP} 13.226.210.123:80 -> 173.82.235.7:33822

또는 표시된 대로 /var/log/suricata/eve.log 로그 파일에서 서명 ID 2100498을 확인할 수 있습니다.

jq 'select(.alert .signature_id==2100498)' /var/log/suricata/eve.json

이것은 Linux에서 Suricata를 설치하고 구성하는 방법에 대한 포괄적인 가이드였습니다. 다양한 설치 방법, Suricata 구성 및 Suricata 규칙 업데이트 방법, Suricata 시스템 서비스 관리 방법 및 네트워크 침입 테스트 수행 방법을 살펴보았습니다.

이제 Suricata를 편안하게 설치하고 사용하여 네트워크 침입이나 악성 트래픽으로부터 시스템을 보호할 수 있기를 바랍니다.