Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Đọc 1 lượt
- - Cài theo các bước: https://blog.cloud365.vn/logging/ELK-part2-Cai-dat-ELK-stack/
- * Lưu ý thay đổi nội dung của filebeat.yml
- - Cấu hình logstash input, output theo hướng dẫn trong https://blog.cloud365.vn/logging/ELK-part-5-Tim-hieu-ve-filebeats/
- * lưu ý cấu hình filebeat đang bị sai
- Cấu hình filebeat cho log tại : https://pastebin.com/wLUpjUwB
- - Sau khi kiểm tra các service status OK --> vào kibana tạo index pattern: Index pattern là gì?
- Có thể để ý thấy khi logstash forward sang cho elasticsearch sẽ có index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
- Đây chính là pattern chung "[@metadata][beat]" -> vào kibana tạo index pattern là giá trị của [@metadata][beat], trường hợp này là "filebeat", tham số thời gian có thể thay đổi --> index pattern là : "filebeat-*" -> next step
- - Khi này đã có thể discover các event
- - Tuy nhiên để visualize được thì cần có các trường giá trị phù hợp -> cần parse đúng cách:
- Đối với cách nhận toàn bộ các field giá trị như /var/log/*.log chỉ phù hợp cho nhận log Ubuntu, centos thì system log ở vị trí khác. Theo dõi blog này : https://burnhamforensics.com/2019/03/12/monitoring-centos-endpoints-with-filebeat-elk/
- Để bật system log cho hệ điều hành: khôi phục filebeat.yml mặc định
- filebeat modules enable system
- Sau đó cấu hình lại logstash để filter ra các field mong muốn như trong: https://burnhamforensics.com/2019/03/12/monitoring-centos-endpoints-with-filebeat-elk/
- Muốn tạo dashboard -> vào client có filebeat agent: gõ lệnh "filebeat setup --dashboards". DONE
- Ví dụ đã setup: http://139.180.137.217:5601/app/kibana#/dashboard/5517a150-f9ce-11e6-8115-a7c18106d86a
- ---- /etc/logstash/conf.d/02-logstash.conf
- filter {
- if [fileset][module] == "system" {
- if [fileset][name] == "secure" {
- grok {
- match => { "message" => ["%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} sshd(?:\[%{POSINT:[system][auth][pid]}\])?: %{DATA:[system][auth][ssh][event]} %{DATA:[system][auth][ssh][method]} for (invalid user )?%{DATA:[system][auth][user]} from %{IPORHOST:[system][auth][ssh][ip]} port %{NUMBER:[system][auth][ssh][port]} ssh2(: %{GREEDYDATA:[system][auth][ssh][signature]})?",
- "%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} sshd(?:\[%{POSINT:[system][auth][pid]}\])?: %{DATA:[system][auth][ssh][event]} user %{DATA:[system][auth][user]} from %{IPORHOST:[system][auth][ssh][ip]}",
- "%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} sshd(?:\[%{POSINT:[system][auth][pid]}\])?: Did not receive identification string from %{IPORHOST:[system][auth][ssh][dropped_ip]}",
- "%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} sudo(?:\[%{POSINT:[system][auth][pid]}\])?: \s*%{DATA:[system][auth][user]} <img draggable="false" class="emoji" alt="~_~X" src="https://s0.wp.com/wp-content/mm
- u-plugins/wpcom-smileys/twemoji/2/svg/1f626.svg"> %{DATA:[system][auth][sudo][error]} ;)? TTY=%{DATA:[system][auth][sudo][tty]} ; PWD=%{DATA:[system][auth][sudo][pwd]} ; USER=%{DATA:[system][auth][sudo][user]} ; COMMAND=%{GREEDYDATA:[system][auth][sudo][command]}",
- "%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} groupadd(?:\[%{POSINT:[system][auth][pid]}\])?: new group: name=%{DATA:system.auth.groupadd.name}, GID=%{NUMBER:system.auth.groupadd.gid}",
- "%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} useradd(?:\[%{POSINT:[system][auth][pid]}\])?: new user: name=%{DATA:[system][auth][user][add][name]}, UID=%{NUMBER:[system][auth][user][add][uid]}, GID=%{NUMBER:[system][auth][user][add][gid]}, home=%{DATA:[system][auth][user][add][home]}, shell=%{DATA:[system][auth][user][add][shell]}$",
- "%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} %{DATA:[system][auth][program]}(?:\[%{POSINT:[system][auth][pid]}\])?: %{GREEDYMULTILINE:[system][auth][message]}"] }
- pattern_definitions => {
- "GREEDYMULTILINE"=> "(.|\n)*"
- }
- remove_field => "message"
- }
- date {
- match => [ "[system][auth][timestamp]", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
- }
- geoip {
- source => "[system][auth][ssh][ip]"
- target => "[system][auth][ssh][geoip]"
- }
- }
- else if [fileset][name] == "syslog" {
- grok {
- match => { "message" => ["%{SYSLOGTIMESTAMP:[system][syslog][timestamp]} %{SYSLOGHOST:[system][syslog][hostname]} %{DATA:[system][syslog][program]}(?:\[%{POSINT:[system][syslog][pid]}\])?: %{GREEDYMULTILINE:[system][syslog][message]}"] }
- pattern_definitions => { "GREEDYMULTILINE" => "(.|\n)*" }
- remove_field => "message"
- }
- date {
- match => [ "[system][syslog][timestamp]", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
- }
- }
- }
- }
- input {
- beats {
- port => 5044
- ssl => false
- }
- }
- output {
- elasticsearch {
- hosts => ["localhost:9200"]
- sniffing => true
- index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement