
DShield 센서 로그 수집 및 ELK 연동
이 프로젝트는 Scott Jensen이 BACS 논문으로 작성하고 Github에 공개한 스크립트를 ISC Storm Center 웹사이트에 처음 게시한 내용을 포크하여 대폭 업데이트한 것입니다.
https://github.com/fkadriver/Dshield-ELK
https://isc.sans.edu/diary/DShield+Sensor+Monitoring+with+a+Docker+ELK+Stack+Guest+Diary/30118
분석에 DShield-SIEM을 사용하는 방법에 대한 좋은 참고 자료입니다: https://isc.sans.edu/diary/30962/
DShield 센서를 사용한 로그 수집이 어떻게 이루어지는지에 대한 개요를 제공합니다.
https://github.com/bruneaug/DShield-SIEM/blob/main/Troubleshooting/DShield-SIEM-Flow.png
이 도커는 DShield Honeypot과 함께 사용하도록 맞춤 제작된 것으로, 로그를 수집하고 파싱하며 데이터를 수집하여 연구 목적으로 쉽게 검색할 수 있게 합니다. 권장 설치 방법은 DShield 센서를 Raspberry Pi에 Raspbian OS를 사용하거나 Ubuntu 24.04 LTS를 실행하는 시스템(네트워크 내부 또는 선택한 클라우드)에 설치하는 것입니다.
참고: 아래 지침에 따라 별도의 서버에 설치해야 합니다.
참고: ELK 서버 구성 요소를 업데이트하려면 다음 단계를 따르세요:
https://github.com/bruneaug/DShield-SIEM/blob/main/README.md#download-github-update
사용자($) 계정으로 docker를 설치합니다:````
sudo apt-get install ca-certificates curl gnupg network-manager txt2html
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
Note: You may need to take the next line, remove the backlash () and put everythin in a single line in Notepad to run this echo.
echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update && sudo apt upgrade
sudo reboot (if update were applied)
sudo apt-get install -y jq docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin pip
sudo systemctl enable docker
sudo systemctl start docker.service
docker 서비스가 실행 중인지 확인하세요<br>````
sudo systemctl status docker.service
다음 ELK 서버 이름 es01 kibana fleet-server heartbeat logstash filebeat filebeat01을
IP 주소와 서버 이름 뒤의 /etc/hosts에 추가하세요:
````
sudo vi /etc/hosts
다음을 /etc/hosts의 ELK 서버 IP 주소 뒤에 추가하세요<br>
127.0.0.1 sensor es01 ...<br>
192.168.25.80 sensor es01 ...<br>````
es01 kibana fleet-server heartbeat logstash filebeat filebeat01
sysctl.conf 파일을 편집하세요:
````
sudo vi /etc/sysctl.conf
파일 하단에 다음을 추가하세요:<br>````
vm.max_map_count=262144
추가하고 저장하세요. Docker를 사용할 때 Elasticsearch를 위한 것입니다.
sudo iptables -nL

# DShield ELK 구성 및 설치
사용자($) 계정으로 다음 명령을 실행하세요:<br>````
git clone https://github.com/bruneaug/DShield-SIEM.git
mkdir scripts
mv DShield-SIEM/AddOnScripts/*.sh scripts
chmod 754 scripts/*.sh
cd ~/DShield-SIEM
참고: 설치 전에 .env 파일(ls -la로 확인 가능)을 편집하여 원하는 변경을 할 수 있습니다.
- elastic의 현재 _기본 비밀번호_는 student입니다.
.env의 메모리 제한은 docker가 각 ELK 컨테이너에 할당할 최대 메모리입니다.
기본적으로 Elasticsearch에 3GB이지만 리소스가 있다면 늘릴 수 있습니다.
.env 파일을 편집하여 자신의 ELK Stack에 맞게 구성하세요.
````
vi .env
- ELK 서버 DNS 정보, 호스트 이름, IP 및 기본 Elastic 패스워드를 변경하려면 **.env** 파일에서 다음 변수들을 업데이트하십시오: <br>
- HOSTNAME="ubuntu"
- DNS_SERVER="9.9.9.9"
- IPADDRESS="192.168.25.231"
- ELASTIC_PASSWORD=student
- ES_MEM = Elasticsearch -> 4g, KB_MEM = Kibana -> 2g
- 기본 네임서버(들) 정보와 대상 주소의 로컬 사설 네트워크 위치(예: DShield 센서 매핑 - 현재 **오타와, 캐나다**로 설정됨)를 변경하려면 docker를 로드하기 전에 다음 디렉터리의 파일들을 편집하십시오:<br>````
cd logstash/pipeline
heartbeat.yml을 편집하여 센서 IP(PI로 명명됨)를 자신의 센서 IP로 변경하십시오. Kibana heartbeat는 서비스 상태를 확인하고 사용 가능한지 여부를 판단합니다.
이 IP와 호스트네임을 센서에 맞게 업데이트하십시오.
참고: 모니터링하려는 센서가 둘 이상인 경우 동일한 5줄을 복사하여 추가할 수 있습니다.
이는 Observability -> Uptime Monitors에서 확인할 수 있습니다.

이 줄은 센서 IP 주소입니다. TCP 12222에 연결하는 동안 응답을 받지 못하면 인터페이스에서 다운으로 표시합니다.
이는 ELK 서버가 센서로부터 응답을 확인하기 위해 시작합니다.
이 줄을 업데이트하십시오: hosts: ["192.168.25.165"]
````
vi ~/DShield-SIEM/heartbeat/heartbeat.yml
**change_perms.sh** 스크립트는 docker 구성 요소의 설치를 시작하기 전에 일부 파일을 구성합니다.<br>
또한 이 스크립트는 대시보드 쿼리에 사용되는 IP 주소를 ELK 스택의 IP로 업데이트합니다.<br>````
~/scripts/change_perms.sh
~/scripts/get_researchers.sh
이제 docker compose를 실행하여 ELK 서버 애플리케이션을 빌드하세요.
이를 통해 Kibana, Elasticsearch, elastic-agent, Logstash를 빌드하고 Cowrie 파서, 구성 파일 및 대시보드를 로드합니다.
````
sudo docker compose up -d
Installation Completed
<img width="375" height="354" alt="image" src="https://assets.kitploit.com/production/public/readmes/50066/b192e2cc430ca7eaa43934ebde637400b29d23212dce39e81f521b0806df1bc0.png" />
# 서버 신뢰 인증서에 ca.crt 추가
- ca.crt를 서버 신뢰 인증서 목록에 추가```
sudo cp /var/lib/docker/volumes/dshield-elk_certs/_data/ca/ca.crt /usr/local/share/ca-certificates/dshield.crt
```
- 신뢰할 수 있는 인증서 업데이트 ```
sudo update-ca-certificates
```
### Kibana에 대시보드 및 SIEM 시그니처 추가
이 명령은 DShield SIEM 대시보드와 SIEM 시그니처를 Kibana에 로드합니다.<br>```
~/scripts/dashboard-setup.sh
```
### Docker 디렉터리 목록
이 명령은 모든 Elasticsearch 구성 요소가 설치된 후 사용 중인 docker 디렉터리 목록을 표시합니다.<br>
Elasticsearch에 데이터가 추가됨에 따라 아래 명령어나 ELK 내에서 스토리지에 사용할 수 있는 디스크 용량을 모니터링할 수도 있습니다.<br>````
sudo du --human-readable --max-depth 1 --no-dereference --one-file-system /var/lib/docker
