הגדרת Suricata כמערכת מניעת פריצות (IPS)

עם התפשטות הפשטות של פלישות סייבר, קייה צורך דחוף להבטיח את העסקים ולספק להם הגנה יותר טובה נגד האקרים. מערכת מניעת פריצות (Intrusion Prevention System (IPS)) היא אחת מהדרכים הטובות ביותר להגן על מחשבים מפני תקיפות. אך לפני שתתחיל לחפש באינטרנט IPS, נסה את Suricata.

במדריך זה, תלמד כיצד להגדיר מערכת IPS Suricata בשרת Linux כדי להגן על הרשת שלך מפני איומים מקוונים.

מוכן? קרא הלאה והתחל להגן על הרשת שלך!

דרישות מקדימות

מדובר בהדגמה ידיים. אם ברצונך להתחיל, הקפד לוודא שיש לך את התקנים הבאים:

  • A Linux server – This demo uses Ubuntu 20.04 LTS, but any Linux distribution will work.
  • A non-root user with sudo privileges.
  • בהתאם לתצורת הרשת שלך ואיך אתה מתכוון להשתמש ב-Suricata, ייתכן שתזקיק יותר או פחות יחידות Central Processing Unit (CPU) וזכרון (RAM) לשרת שלך. כללית, ככל שתתכוון לבדוק יותר תעבורה, כך תקצה יותר משאבים ל-Suricata. בסביבת מפתח, תכנן להשתמש בפחות 2 יחידות CPU ו-8GB RAM להתחלה כך ש-Suricata יוכל לבצע את המשימות שלו בלעדיו, מבלי לפגוע באיכות השירות לכל המשתמשים.

התקנת Suricata והוספת PPA Repository

אם אתה רואה את זה, זה אומר שהתרגום עבר בהצלחה.

1. הפעל את הפקודה apt update כדי לעדכן את החבילות הזמינות במערכת שלך.

sudo apt update -y
Updating the list of available packages

2. לאחר מכן, הפעל את הפקודה add-apt-repository כדי להוסיף את ספק החבילות PPA שנתפקד על ידי קרן האבטחה של מידע פתוח (OISF). בהוספת ספק החבילות PPA, תקבל את הגרסה האחרונה והיציבה של Suricata (ppa:oisf/suricata-stable).

sudo add-apt-repository ppa:oisf/suricata-stable
Adding the PPA repository for Suricata

3. הפעל מחדש את הפקודה sudo apt update כדי לטעון את ספק החבילות של Suricata שנוסף לאינדקס החבילות של המערכת שלך.

sudo apt update -y

4. כעת, הפעל את הפקודה sudo apt policy כדי לוודא שהוספת את ספק החבילות של Suricata נכונה. ודא שאתה רואה את PPA של Suricata ברשימה כפי שמוצג למטה לפני התקנת Suricata

sudo apt policy
Running the sudo apt policy

5. הפעל את הפקודה הבאה כדי להתקין suricata במערכת שלך.

sudo apt install suricata -y
Installing Suricata on your system

6. לאחר התקנה, הפעל את הפקודה systemctl status למטה כדי לבדוק את status של שירות suricata.

sudo systemctl status suricata

למטה, ניתן לראות כי שירות Suricata הוא פעיל (פועל).

Checking the Suricata service status

הגדרת Suricata

חבילת Suricata מגיעה עם קובץ הגדרות בשם suricata.yaml הממוקם בתיקיית /etc/suricata. קובץ ההגדרות הזה מכיל הגדרות שונות למקרים שימוש שונים. אך שימו לב שישנם מספר הגדרות בקובץ ההגדרות המוגדר בדיפולט שעליכם לשנות לפני שתשתמשו ב־Suricata.

המצב המוגדר כברירת מחדל עבור Suricata הוא מצב זיהוי פריצות (IDS), שמקליט אך אינו מוריד תעבורה. מצב זה משמש כאשר מתבצעת הגדרה ומידע ראשוני על Suricata. כאשר תרגישו יותר בנוח עם Suricata ותבינו יותר טוב את סוגי התעבורה עליה Suricata תתריע לכם, תוכלו להפעיל את מצב IPS.

Suricata מוסיף שדה בפורמט JSON שלו (זיהוי זרם של הקהילה). זיהוי זרם של הקהילה הוא שדה בגודל 8 בתים שמאפשר לכם לקשר רשומות שנוצרו על ידי כלים אחרים. תכונה זו שימושית כאשר משתמשים ב־Suricata בשילוב עם כלים אחרים כמו Bro או Elasticsearch.

1. פתחו את קובץ /etc/suricata/suricata.yaml בעורך טקסט המועדף עליכם.

2. מצא שורה שקוראת community-id: false ושנה אותה ל- community-id: true. שמור את השינויים וצא מהעורך הטקסט.

בכל פעם שתבדוק אירועים, תראה את מזהה הזרם של הקהילה בפלט JSON שלהם.

Enabling Community ID

לאחר מכן, הפעל את הפקודה הבאה כדי למצוא מכשיר עם מסלול ברירת מחדל במערכת שלך (route show default). הדגל -p אומר לפקודת ip להדפיס את המכשיר בדרך שקלה לקריאה לאנשים, בעוד הדגל -j מדפיס את הפלט בפורמט JSON.

Suricata מוגדרת לרכוש חבילות מכל ממשק רשת זמין כברירת מחדל. אך תוכל לשנות את ההתנהגות הזו ולציין ממשק עבור Suricata להאזין אליו כאשר היא מתחילה.

 ip -p -j route show default

כפי שאתה רואה למטה, הפרמטר dev מציין את הממשק שבו תשתמש Suricata לקליטת חבילות. בדוגמה זו, הממשק הוא eth0, אך הממשק שלך עשוי להיות שונה, כמו tun0, wlan0, וכו'.

Previewing the Network Interface

4. לבסוף, פתח את קובץ התצורה /etc/suricata/suricata.yaml, אתר את הפרמטר interface תחת הסעיף af-packet ושנה אותו בהתאם. בדוגמה זו, eth0 משמש כממשק לקליטת חבילות.

שמור את השינויים, אך השאר את העורך הטקסט פתוח לכעת.

Editing the /etc/suricata/suricata.yaml configuration file

הגדרת תכונת טעינת כללים חיים

אתה כעת הגדרת את Suricata, אך זה רק ההתחלה של הגנה על הרשת שלך. בדרך כלל, תרצה להוסיף כללים במקום ולטעון אותם באופן אוטומטי. איך לעשות זאת? תכונת טעינה חיה של Suricata מאפשרת לך לעדכן כללים בזמן אמת. כתוצאה מכך, אין צורך לאתחל את Suricata באופן ידני כדי שהכללים החדשים ייכנסו לתוקף.

פתח את הקובץ /etc/suricata/suricata.yaml, העתק/הדבק את ההזמנים הבאים לתחתית הקובץ, ושמור את השינויים. ההזמנים הללו מאפשרים לך להפעיל את תכונת טעינה חיה של Suricata.

עם ההגדרה הזו, כשאתה עורך/מעדכן את ערכי הכללים שלך, השינויים ייכנסו לתוקף בלעדייך לא לאתחל מחדש את שירות Suricata שלך.

detect-engine:
  - rule-reload: true
Setting up the Live Rule Reloading

כעת הפעל את פקודת kill למטה כדי להודיע לתהליך Suricata שלך ($(pidof suricata)) לעדכן את הכללים בלעדייך ללא התחלת מחדש.

הפקודה שולחת אותר יוזר-מוגדר (-usr2) לזהות התהליך המסוים, ואז Suricata מבצעת אוטומטית את השלבים הבאים:

  • טוען הגדרות חדשות כדי לעדכן משתנים וערכים של כללים.
  • טוען כללים חדשים
  • בונה מנוע גילוי חדש
  • מחליף בין מנועי הגילוי הישנים והחדשים
  • וודא שכל החוטים מתעדכנים
  • שחרר את מנוע הגילוי הישן
sudo kill -usr2 $(pidof suricata)

עדכון סטיילים של Suricata

התכונה לטעינת כללים בזמן אמת מוכנה, אך היא לא תשרת את מטרתה אלא אם תעדכן את סטיילי הכללים שלך. כברירת מחדל, חבילת Suricata מכילה סטייל קטן הכולל רק פרוטוקולי רשת הנמצאים בספריית /etc/suricata/rules.

בנקודה זו, תקבל הודעת שגיאה אין קבצי כללים התואמים לתבנית, דומה לזו למטה, כל פעם שתנסה להתחיל ולהשתמש בשירות Suricata שלך. ההודעה מציינת כי אין סטים של כללים לשימוש של Suricata.

Previewing Error Message when No Rulesets Exist

כדי לתקן את השגיאה הזו, ספק קבצי כללים למופע שלך של Suricata. למזלך, יש ל-Suricata כלי בשם suricata-update שיסייע לך לשדרג עם יותר סטים מספקים צד ג',.

1. הפעל את הפקודה למטה כדי לשדרג את המופע שלך של Suricata.

sudo suricata-update

כפי שאתה רואה למטה, הפלט מציין כי פקודת suricata-update דגם את הכללים על ידי התחברות ל-https://rules.emergingthreats.net/open/. הפקודה כולה יושמר אז בכללים החדשים לתיקייה /var/lib/suricata/rules/

הפלט מדפיס גם את הבא:

  • הסך הכל (31737) של סטים של כללים
  • מספר הכללים שמופעלים (24355)
  • כמות הכללים המוספים (31737)/המוסרים (0).
Updating Your Suricata Rulesets

לבסוף, הפעל את הפקודה למטה כדי לרשום את כל ספקי הכללים (list-sources).

פקודת suricata-update משדרגת סטים ממספר ספקים, כולל ספקים חינמיים ומסחריים.

sudo suricata-update list-sources

למטה, תוכל לראות חלק קטן מהרשימה. שים לב לשם הסט שברצונך שה-Suricata ישדרג סטים ממנו בצורה ספציפית. במדריך זה, אנו משדרגים et/open סטים להדגמה (שלב שלוש).

Listing all ruleset providers

3. הריצו את הפקודה למטה כדי לשאוב ולכלול (enable-source) את סטי הכללים et/open בקובץ הכללים שלכם ב-Suricata.

sudo suricata-update enable-source et/open
Fetching the et/open rulesets

לבסוף, הריצו מחדש את הפקודה suricata-update כדי לטעון את סט הכללים החדש שנבחר.

sudo suricata-update

אימות תצורת ה-Suricata

הגדרתם את ה-Suricata ואפילו הוספתם סטי כללים, אז זה הזמן לוודא את השינויים שלכם ולהבטיח שהכל עובד כפי שצפוי. לחבילת ה-Suricata יש שירות אימות מובנה שמאפשר לכם לראות כל הסטייה מההגדרה הנוכחית.

הריצו את הפקודה suricata למטה כדי לאמת את השינויים בקובץ התצורה של ה-Suricata (-c /etc/suricata/suricata.yaml). הפקודה גם מציגה את כל הודעות האימות (-v).

הדגל -T מספר ל-Suricata להפעיל במצב "מבחן" ובמצב "למעלה-למטה". שני המצבים כוללים כללים קפדניים יותר להתאמת חבילות ופחות סבירים לטעות חיובית.

sudo suricata -T -c /etc/suricata/suricata.yaml -v

מאחר ו-Suricata הוא גישה לגדר גדר גבוהה, הבדיקה עשויה לקחת מספר דקות עד להשלמתה. אם אין שגיאות, תראו פלט דומה לזה שמציג הודעת שלמה.

Validating Your Suricata Configuration: complete

אם בקובץ ההגדרה שלכם יש שגיאות דומות לזו שמוצגת למטה, Suricata ידפיס את כל השגיאות, ויציין שורות ספציפיות שגורמות לבעיות. אם אתם מקבלים את השגיאות האלו, תתקנו כל בעיה בהגדרה בנפרד עד שהאימות יצליח.

Validating Your Suricata Configuration: errors

בדיקת הכללים של ה-Suricata

עכשיו שקבצי התצורה שלך של Suricata אומתו, ניתן להפעיל את Suricata כדי לראות שהם עובדים כראוי. תשתמש ב-Suricata כדי לבדוק את ET Open (2100498) עם הפקודה curl כדי לזהות פעילות/תעבורת חשודה.

כרגע, לאינסטנס שלך של Suricata יש מעל 30,000 כללים ש-Suricata משיגה מקובצי כללים שונים. לכן, בדיקה מלאה של כל הכללים עם הסברם לא תהיה מתאימה בתוך המדריך הזה.

1. הרץ את הפקודה curl למטה כדי ליצור קצת תעבורת/בקשות HTTP/פעילות מאתר TestMyNIDS. TestMyNIDS הוא פרויקט למידה מקוונת המוקדש לתמיכה בבדיקות, אימות והשוואה של NIDS. האתר מספק פלטפורמה ייחודית לניתוח השוואתי של NIDS וכלים קשורים.

ניתן להשתמש באתר זה כדי לבדוק כל פעילות/תעבורת חשודה כדי לראות האם סט הכללים שלך מוגדר כראוי.

curl http://testmynids.org/uid/index.html

התגובה מותאמת להפעלת התרעה שקרית המתחזה למשתמש root של Linux/Unix. והמשתמש הזה של root נמצא במערכת שעשויה להיות פגועה.

Testing Your Suricata Rules

בשלב הבא, הרץ את הפקודה grep למטה כדי לבדוק את קובץ היומן fast.log בתיקיית /var/log/suricata/ להודעת התרעה תואמת 2100498. הפקודה הזו בודקת את קובץ היומן לתרעת משתמש.

מלבד קובץ fast.log, קובץ יומן נוסף לצפייה הוא קובץ היומן eve.log באותו התיקייה.

grep 2100498 /var/log/suricata/fast.log

תראו פלט דומה לזה שמצוין למטה שמציג את כתובת ה-IPv4 הציבורית של המערכת שלך.

Examining the fast.log file

3. כעת, הפעילו את פקודת ה-jq שמצוינת למטה כדי לבדוק את קובץ היומן eve.log. קובץ היומן eve.log משמש גם הוא לרישום של אירועים אך בפורמט JSON (/var/log/suricata/eve.json). זהו קובץ היומן eve.json וקובץ היומן fast.log שתעזרו בהם לזיהוי תנועה חשודה וניסיונות חסימה. פעם שמצאתם, פעלו לפי הצורך.

jq 'select(.alert .signature_id==2100498)' /var/log/suricata/eve.json

למטה, תראו “signature_id”: 2100498 בפלט, שהוא מזהה החתימה להתראת האזהרה שציינתם בפקודה.

תראו גם את “community_id”: “1:ETRbv54GHTVCayHTUR5OIovK4gh2=” בפלט, שהוא מזהה זרימת הקהילה שהגדרתם בקובץ /etc/suricata/suricata.yaml.

מזהה הקהילה community_id הזה שימושי כאשר אתם משתמשים ב-Suricata בשילוב עם כלים אחרים כמו Elasticsearch כדי לקבל מערכת "ערימת מעקב בטחונית" מלאה בעלות נמוכה יחסית.

Examining the eve.log file

מסקנה

במהלך המדריך הזה, למדתם איך להתקין ולהגדיר את Suricata עם סטי כללים כדי להגן על הרשת שלכם. עברתם גם דרך בדיקה שהסטים עובדים על ידי יצירת תנועה ברשת שלכם.

בנקודה זו, Suricata רץ באופן מושלם עם סטי כללים מותאמים אישית כדי לזהות פעילויות/תנועה חשודה ברשת שלכם.

עכשיו, למה לא לבנות על הידע החדש שנמצא? אולי להתחיל עם התקנה והגדרת Suricata, Zeek, מערכת ה- Elasticsearch כדי להקים מערכת "עריכת אבטחה מלאה"?

Source:
https://adamtheautomator.com/suricata/