Monitoring
ELK 구축하고 Filebeat로 로그 수집하여 확인해보기
마손(Mason)
2023. 1. 31. 20:24
시스템 로그는 중요하다.
서비스가 성장함에 따라 보안요건도 까다로워진다.
그 보안요건 중 하나가 사용자 로그인에 대한 추적 및 증적을 남기는 것이다.
이를 달성하기 위해 ELK와 Filebeat로 각 서버의 syslog를 수집하고 시각화 해보자.
인스턴스 사양
- M6g.large
- Arm 기반 AWS Graviton2 프로세서
- vCPU 2
- Mem 8GiB
ELK 설치
##라이센스 받아오기
wget -qO - <https://artifacts.elastic.co/GPG-KEY-elasticsearch> | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
sudo apt-get install apt-transport-https
echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] <https://artifacts.elastic.co/packages/8.x/apt> stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
sudo apt-get update && sudo apt-get install elasticsearch kibana
##재시작시 자동으로 실행됨
sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable elasticsearch.service kibana.service
실행
sudo /bin/systemctl start elasticsearch.service
sudo /bin/systemctl start kibana.service
실행확인
curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic <https://localhost:9200>
curl localhost:5601
접속을 위해 호스트 설정
vi /etc/kibana/kibana.yml
##serverhost:"localhost" => "0.0.0.0"
ELK 접속
- {VM IP}:5601 로 접속
- 토큰입력
/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token --scope kibana
##결과값 붙여넣기
/usr/share/kibana/bin/kibana-verification-code
##결과 코드 확인하기
- super-user: elastic 으로 로그인할 것.
수집할 서버에 filebeat라는 로그 수집기를 설치하여 elasticsearch로 syslog를 쏴줄 것이다.
filebeat 설치
curl -L -O <https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.6.1-amd64.deb>
sudo dpkg -i filebeat-8.6.1-amd64.deb
filebeat.yml 설정
많은 설정이 있지만, 호스트만 바꾼다.
이때 특정 elasticsearch 버전 이후로는 https 프로토콜 사용이 강제된다.
따라서 filebeat에서 elasticsearch로 데이터를 보내는데에 ssl을 사용해준다.
##/etc/filebeat/filebeat.yml
setup.kibana:
host: "<http://{VM의 IP}:5601>"
output.elasticsearch:
hosts: ["<https://{VM의 IP}:9200>"]
protocol: "https"
username: "elastic"
password: "${ES_PWD}"
ssl:
enabled: true
ca_trusted_fingerprint: "${FP}"
filebeat keystore 설치
민감한 정보에 대한 처리를 해준다.
sudo filebeat keystore create
echo {ES비밀번호} | sudo filebeat keystore add ES_PWD --stdin --force
echo {opensearch의 fingerprint} | sudo filebeat keystore add FP --stdin --force
##openssl x509 -fingerprint -sha256 -in /usr/share/elasticsearch/certs/http_ca.crt 명령어 값이 fingerprint이다.
##이때 :과 공백은 디코딩이 안된다. 다 붙여서 써야만 된다!!
filebeat 실행
filebeat setup -e
sudo /bin/systemctl enable filebeat
sudo /bin/systemctl start filebeat
이 후, Kibana에 접속해서 Discover > filebeat-* 를 확인해보면 수집된 syslog가 확인된다!
로그 수집이 필요한 모든 서버에 filebeat를 적용하기 위해서는 ansible이라는 도구를 사용하면 된다.
그건 다음에 정리한다.