הסבר והתקנת ELK – ElasticSearch | Logstash | Kibana – על Ubuntu 20.04
במאמר זה אסביר כיצד עובד ELK מהם הכלים בתוכו וכיצד נשתמש בו.
ישנו מאמר נוסף הגדרה והתקנה על ELK 6.X על Ubuntu 20.04
מאמר זה מחולק ל2 – גרסה 6.X בסוף המדריך ובתחילת המדריך גרסה 7.X
תחילה הסבר על המערכת:
ELK
ELK הוא קיצור של שלושת הכלים במערכת ELK היא מערכת לאיסוף נתונים וסידורם , בדומה למערכת SIEM האוספת נתוני אבטחת מידע מלוגים, Syslog או כל פורמט של התראות או מידע, כך עושה ELK והוא מסדר ומאפיין את המידע כך שיהיה קל יותר לחפש,לבדוק,לאתר התראות או לוגים מתוך מערכת מסויימת. המערכת עוזרת לנתח,לאגד,לאסוף נתונים ממערכות שונות ובכך לעזור לאבטח את הארגון מבחינת איסוף נתונים
הכלים שבונים את ELK Stack הם:
ElasticSearch – מערכת לניתוח טקסט מבוססת Apache Logstash – מערכת לוגים האוספת ומאגדת אותם, היא אוספת לוגים ממערכות שונות כמו winlogbeat,filebeat,metricbeat Kibana – היא המערכת הוויזואלית, המציגה בצורה נוחה למשתמש את הלוגים, ומכילה את בתוכה את ElasticSearch ו Kibana ושלל אפליקציות העוזרות לניתוח המערכת
כלי נוסף במערכת הוא Beats המעביר לוגים אל ELK מכל מערכת Linux & Windows יש כמה כלים ל Beats אבל נתמקד בשלושה winlogbeat – מעביר לוגים מתוך Eventviewer של מיקרוסופט וניתן להגדיר איזה לוגים הוא ישלח לELK filebeat – מתוך קובץ לוגים הנמצא במחשב \ שרת הוא ישלח וניתן להגדיר כמה קבצים שרוצים metricbeat – שולח לוגים לגבי מצב המעבד,זיכרון ה RAM, דיסקים וכל ניטור אחר הקיים במערכת Packetbeat – אוסף נתוני רשת על התחנה Heartbeat – בודק אם התחנה עובדת "האם התחנה חיה?" יש עוד כלי Beats – את כולם ניתן למצוא בקישור הבא אנחנו נתמקד ב בתמונה מתוך האתר *כל הזכויות שמורות ל Elastic* ניתן להבחין שמערכת ה Beats מעבירה מידע ל Logstash ומשם המידע מועבר ל ElasticSearch ואז ל Kibana וכך המערכת אוספת את הנתונים ומסדרת אותם
התקנת ELK 7.X על Ubuntu 20.04
הגדירו את כרטיס רשת Bridge תחילה בצעו עדכון למערכת
sudo apt-get update
כעת התקינו SSH על מנת לבצע התחברות מרחוק
apt-get install openssh-server
כעת התחברו דרך Putty אל המערכת, הקישו את שם המשתמש שיצרתם בהתקנה של Ubuntu
והקישו
sudo -i
כעת אתם עובדים עם המשתמש Root ונוכל לבצע את ההתקנה בצורה קלה יותר נתקין nano
apt-get install nano
נתחיל בהורדה של שלושת הרכיבים והתקנתם נתחיל בהורדה של Java , Nginx , https transport
sudo apt install openjdk-11-jre apt-transport-https wget nginx
כאשר אתם מקישים את הפקודה
java -version
חובה שתקבלו את ה Output
openjdk version "11.0.8" 2020-07-14
שכן Logstash מחייב אותנו לעבוד עם Java כעת נוריד את ElasticSearch Repo
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
נוסיף לתוך המסמך ונשמור אותו
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
נבצע עדכון
sudo apt update
נתקין את Kibana ו elasticsearch
sudo apt install elasticsearch kibana
נערוך את הקובץ
sudo nano /etc/kibana/kibana.yml
חפשו במסמך את
#server.host: "localhost"
והסירו את ה # שיראה כך, שנו את Localhost ל 0.0.0.0
server.host: "0.0.0.0"
חפשו את הטקסט הבא והסירו ממנו את ה #
#server.name: "localhost"
שיראה כך
server.name: "localhost"
כעת נערוך את הקובץ
sudo nano /etc/elasticsearch/elasticsearch.yml
חפשו את הרשומה הבאה
#network.host: 192.168.0.1
הסירו את # ושנו את כתובת ה IP ל 0.0.0.0 שיראה כך
network.host: 0.0.0.0
כעת נערוך את ElasticSearch.yml
חפשו את השורות הבאות והסירו מהן את #
cluster.name: my-application
node.name: node-1
הסירו את # ושנו ל 0.0.0.0
network.host: 0.0.0.0
http.port: 9200
הוסיפו את השורות בסוף המסמך
discovery.type: single-node
xpack.security.enabled: true
הגדרת שם משתמש וסיסמא להתחברות לELK – חובה!
הגיעו לנתיב
cd /usr/share/elasticsearch
הקישו את הפקודה
sudo systemctl restart elasticsearch
./bin/elasticsearch-setup-passwords interactive
הגדירו לכל המשתמשים את אותה הסיסמא שאתם רוצים
בסיום בצעו ריסטארט ל ElasticSearch
sudo systemctl restart elasticsearch
כעת ערכו את קובץ ההגדרות של Kibana הסירו את ה# והגדירו את הסיסמא בלבד
sudo nano /etc/kibana/kibana.yml
elasticsearch.username: "elastic"
elasticsearch.password: "A123456A"
שמרו ובצעו ריסטארט ל Kibana
sudo systemctl restart kibana
כעת נתקין את logstash
sudo apt install logstash
נערוך את קובץ ההגדרות של logstash בשביל שפורט 5044 יעביר ל 9200
sudo nano /etc/logstash/conf.d/logstash.conf
נכניס את התוכן
input {
beats {
port => 5044
}
}
filter {
if [type] == "syslog" {
grok {
match => { "message" => "%{SYSLOGLINE}" }
}
date {
match => [ "timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
user => "elastic"
password => "changeme"
}
}
במקום password => "changeme" שנו את זה לסיסמא שלכם
נאפשר את עליית כל השירותים בריסטארט
sudo systemctl enable kibana
sudo systemctl enable elasticsearch
sudo systemctl enable logstash
נפתח את הפורטים
sudo ufw allow 5601/tcp
sudo ufw allow 9200/tcp
sudo ufw allow 5044/tcp
כעת התחברו לELK
http://192.168.1.10:5601
כעת עברו להגדרת ELK בהמשך המאמר
התקנת ELK 6.X על Ubuntu 20.04
במאמר זה נבצע התקנה של ELK והגדרת Winlogbeat תחילה נבצע את ההתקנה ולאחר ההתקנה אסביר על הפעולות אותם ניתן לבצע בELK
הדרישות
- Ubuntu 20.04
- רשת
הגדירו את כרטיס רשת Bridge תחילה בצעו עדכון למערכת
sudo apt-get update
כעת התקינו SSH על מנת לבצע התחברות מרחוק
apt-get install openssh-server
כעת התחברו דרך Putty אל המערכת, הקישו את שם המשתמש שיצרתם בהתקנה של Ubuntu
והקישו
sudo -i
כעת אתם עובדים עם המשתמש Root ונוכל לבצע את ההתקנה בצורה קלה יותר נתקין nano
apt-get install nano
נתחיל בהורדה של שלושת הרכיבים והתקנתם נתחיל בהורדה של Java , Nginx , https transport
sudo apt install openjdk-11-jre apt-transport-https wget nginx
כאשר אתם מקישים את הפקודה
java -version
חובה שתקבלו את ה Output
openjdk version "11.0.8" 2020-07-14
שכן Logstash מחייב אותנו לעבוד עם Java כעת נוריד את ElasticSearch Repo
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
נשתמש ב Nano
sudo nano /etc/apt/sources.list.d/elastic.list
נוסיף לתוך המסמך ונשמור אותו
deb https://artifacts.elastic.co/packages/6.x/apt stable main
נבצע עדכון
sudo apt update
נתקין את Kibana ו Logstash
sudo apt install elasticsearch kibanaa
נערוך את הקובץ
sudo nano /etc/kibana/kibana.yml
חפשו במסמך את
#server.host: "localhost"
והסירו את ה # שיראה כך
server.host: "localhost"
כעת נערוך את הקובץ
sudo nano /etc/elasticsearch/elasticsearch.yml
חפשו את הרשומה הבאה
#network.host: 192.168.0.1
הסירו את # ושנו את כתובת ה IP ל 0.0.0.0 שיראה כך
network.host: 0.0.0.0
שמרו את הקובץ וצאו כעת נפעיל את elasticsearch ונבצע ריסטארט ל Kibana
sudo systemctl restart kibana
sudo systemctl start elasticsearch
הגדרת שם משתמש וסיסמא להתחברות לELK – חובה!
איפה שכתוב password שנו את זה לסיסמא שלכם, אל תמחקו את ה ' שיש אחריו!
echo "admin:`openssl passwd -apr1 password`" | sudo tee -a /etc/nginx/htpasswd.kibana
כעת נערוך את kibana ב nginx
sudo nano /etc/nginx/sites-available/kibana
כעת איפה שכתוב your-site.com שנו את זה לכתובת האתר שלכם
server { listen 80; server_name your-site.com; auth_basic "Restricted Access"; auth_basic_user_file /etc/nginx/htpasswd.kibana; location / { proxy_pass http://localhost:5601; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
ערכו את קובץ ה hosts במחשב שלכם בנתיב
C:\Windows\System32\drivers
לכתובת האתר שלכם והIP של שרת הלינוקס נסיר כעת את האתר הקיים
sudo rm /etc/nginx/sites-enabled/default
נגדיר קיצור דרך אליו
sudo ln -s /etc/nginx/sites-available/kibana /etc/nginx/sites-enabled/kibana
נבצע ריסט ל nginx
sudo systemctl restart nginx
נתקין את logstash
sudo apt install logstash
כעת נאפשר שבריסט הבא הכל יעלה
sudo systemctl enable kibana sudo systemctl enable elasticsearch sudo systemctl enable logstash
נפתח את הפורטים
sudo ufw allow 5601/tcp sudo ufw allow 9200/tcp sudo ufw allow 5044/tcp
כעת התחברו לELK
https://yoursite.com
הגדרת ELK
הזינו שם משתמש וסיסמא ואתם יכולים להתחיל ! כעת המערכת תמתין לקבלת Index
Index הם הלוגים המתקבלים מהמערכות השונות, לדוגמה Index של winlogbeat הוא כל מ winlogbeat שולח ל Logstash ומשם ל ElasticSearch
על מנת שנתחיל לקבל נתונים, נוריד תחילה את winlogbeat
נחלץ אותו לכונן C של הDC שלנו
אם יש יותר מDC אחד, אתם חייבים לבצע את אותה הפעולה בכל DC וDC
נעתיק את זה לכונן C בדיוק כמו בתמונה
הורידו Notepad++ וערכו את הקובץ
winlogbeat.yml
כעת נסיר את # מ
output.elasticsearch:
ומ
hosts: ["elk.taal.com:9200"]
נוסיף גם את
username: "elastic" password: "a123456."
נערוך לפי השם משתמש והסיסמא שלנו וכתובת ה ELK שלנו בדיוק כמו בתמונה כעת נפתח Powershell עם הרשאות מנהל ונקיש
cd c:\winlogbeat-*
כעת נתקין את winlogbeat
.\install-service-winlogbeat.ps1
כעת נפתח את Services.msc ושם נפעיל את השירות winlogbeat
כעת יווצרו לנו Indexes במערכת, נחזור ל ELK
בכדי לקבל את כל הלוגים של winlogbeat נקיש
winlogbeat*
ואז לחצו על Next step
כעת בחרו שהפילטר שיסדר את כל הלוגים הוא לפי זמן
כעת נוכל להבחין שיש לנו המון מידע ב Discover
כעת אחזור למערכת ELK ושם אבצע חיפוש ל4724 כעת לחצו על החץ הקטן (מסומן באדום)
אלו כל הנתונים שקיבל הElasticSearch מ Winlogbeat
כעת נרד קצת למטה, ונבדוק איפה כתוב Noy , המשתמש שסיסמתו אופסה, והמשתמש שאיפס שהוא Administrator
זאת על מנת ליצור את ה Dashboard
נפתח Notepad חדש ונדביק את הנתונים כמו כאן
למה אנחנו צריכים את ההגדרות האלו , כיוון שכך נוכל ליצור את הDashboard
The User Password Change: winlog.event_data.TargetUserName Who Change The Password: winlog.event_data.SubjectUserName When Password Reset: @timestamp
וכעת ניצור את ה Dashboard הראשון שלנו!
נלחץ בצד שמאל על Dashboard ואז add
כעת נלחץ על Add New Visualization
כעת על Data Table
וכעת על winlogbeat
כעת נלחץ על Add Filter ואז נבחר \ נרשום winlog.event_id ואז נבחר is ואת הEvent ID שהוא 4724
כעת נגדיר שיוצגו לוגים 15 יום אחורה
כעת בצד שמאל
כעת לחצו על Split Rows
ואז הגדירו את כל ההגדרות הבאות, כמובן ש winlog.event_data.TargetUserName זה לפי הלוג שמקודם הוצאנו ואז ב Costum Label כתבתי The User Password Change:
בסיום לחצו על Play, מסומן באדום
כעת נוצר לנו צורה בה יש שם משתמש שלו שונה הסיסמא וכמות הפעמים
כעת נמשיך, בצד שמאל ממש למטה נלחץ על Add Sub-buckets
ואז שוב Split Rows
כעת ניצור עוד אחד של winlog.event_data.SubjectUserName שבו אנו מגדירים מי היוזר ששינה את הסיסמא
עכשיו ניצור עוד אחד באותה הדרך והפעם מתי שונתה הסיסמא
נשמור כעת (מסומן באדום)
ניתן שם
מצויין! יצרנו לוח ראשון לDashboard
כעת נעבור ל Dashboards
נלחץ על Add
כעת נחפש הלוח שיצרנו
נלחץ עליו
מצויין! יש לנו לוח שבו מוצג לנו איפוס הסיסמאות, נוכל באותה הדרך ליצור תרשים עוגה Pie
ניצור Pie במקום Data Table
נכניס את הנתונים הבאים
ובתוצאה הסופית, נקבל תרשים עוגה שבו נבין איזה משתמש יש לו הכי הרבה איפוסי סיסמא
הגדרה נוספת שנשאלת הרבה, היא מציאת משתמשים שננעלו בארגון ואיזה מחשב נעל אותם, תשובה לשאלה הנפוצה "למה היוזר ננעל?" ומאיפה?
הEvent ID שאחראי לזה הוא 4740
ואלו 2 ההגדרות שמציגות מי היוזר שננעל ומאיזה תחנה
winlog.event_data.TargetUserName winlog.event_data.TargetDomainName
כעת ניתן להבחין מי היוזר שננעל
וכעת נוסיף מאיזה תחנה
כעת נוסיף אותו ל Dashboard שלנו, והופה!
Packetbeat
1 comment
איך האָב ליב דיין שרייבן סטיל. עס איז שוין גוט געטאן