Home אבטחת מידעPenetration Testing - Defense הסבר והתקנת ELK – ElasticSearch | Logstash | Kibana – על Ubuntu 20.04

הסבר והתקנת ELK – ElasticSearch | Logstash | Kibana – על Ubuntu 20.04

1 comment
נהנתם מהמאמר ? שתפו אותו!

הסבר והתקנת 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

אגן שחור -

איך האָב ליב דיין שרייבן סטיל. עס איז שוין גוט געטאן

Reply

Leave a Comment