הקשחת Oracle Listener בעזרת white list - ilDBA Portal

הקשחת Oracle Listener בעזרת white list

04/09/2011 | פורסם על ידי

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

הקדמה

התגוננות – מערכות רבות מנהלות מידע וכחלק מתפקידנו כ DBA-ים אנו מתגוננים בפני איומים כגון תקלות תוכנה\חומרה על מנת להבטיח זמינות מקסימאלית של בסיס המידע. כולנו מגבים את בסיס הנתונים באופן קבוע ורובנו בונים קונפיגורציה בסיסית של המשכיות עסקית כגון שרת צדדי אשר מעודכן באופן שוטף במידע (Standby Server). לעומת זאת מעטים ה DBA-ים אשר מתגוננים בפני איומים של אבטחת מידע מעבר לרמת הבסיס של מתן הרשאות מתאימות למשתמשים שונים במערכת.

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

אז מה לעשות

בקונפיגורציה הסטנדרטית של Oracle – ה Listener הינו רכיב מרכזי המשמש כצומת התחברות לבסיס הנתונים. כלומר כל חיבור SQLNET שמקורו אינו בשרת בסיס הנתונים עצמו יעבור דרך ה Listener על מנת לקבל את כתובת השרת וה port שה server process מאזין לו. אנו יכולים לנצל זאת לטובתנו ולהגדיר ל Listener רשימת מורשי כניסה (invited list או white list) לפי שם או כתובת, בדיוק כמו אותה רשימה של הסלקטור בכניסה למועדון.

הדרך לעשות זאת היא בעזרת שני פרמטרים של קובץ ה sqlnet.ora:

  1. TCP.VALIDNODE_CHECKING – האם לבצע סלקציה (לסנן) על בקשות חיבור לבסיס הנתונים. הערכים האפשריים הינו YES או NO
  2. TCP.INVITED_NODES – רשימת השמות\כתובת מהם ה Listener יאפשר חיבור לבסיס הנתונים. את הרשימה יש לסגור בין סוגריים מופרדים בפסיקים בשורה אחת ארוכה (מותר להשתמש ברווחים).

ניתן להשתמש בפרמטר נוסף – TCP.EXCLUDED_NODES אשר מגדיר black list – כלומר מחשבים מהם ה Listener לא יאפשר להתחבר. אם אותו המחשב מופיע גם ב INVITED וגם EXCLUDED אז הוא יוכל להתחבר כי רשימת ה INVITED הינה בעדיפות גבוהה יותר

אם ננסה להתחבר ממחשב שאינו מוזמן נקבל את הודעת השגיאה: ORA-12537: TNS:connection closed

הסבר – מתחת למכסה המנוע

כאשר ה Listener עולה הוא קורא את הקובץ sqlnet.ora אשר מכיל הוראות עבורו. הפרמטר TCP.VALIDNODE_CHECKING=YES אומר לו שהוא צריך לבצע את הסלקציה (סינון) שהצגנו מקודם. הפרמטר TCP.INVITED_NODES נקרא וכל השמות מתורגמים לכתובת IP וזה נשמר בזיכרון של ה Listener כל עוד הוא רץ. כאשר אנו מנסים להתחבר דרך ה Listener הוא בודק את הכתובת שלנו ואם היא מופיעה אצלו בזיכרון הוא מאפשר לנו להתחבר לבסיס הנתונים.

עצם העובדה שתרגום השמות לכתובות אינו מתבצע באופן שוטף אלא רק בזמן העלייה של ה Listener הוא חשוב מאוד:

1. אם ה Listener לא מצליח לתרגם אחד מהשמות לכתובת אז הוא נכשל בעליה. בגרסאות שונות של בסיס הנתונים תהינה הודעות שגיאה שונות. למשל ב 11.2:
Error listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oradb)(PORT=1521)))

TNS-12560: TNS:protocol adapter error

TNS-00584: Valid node checking configuration error

Listener failed to start. See the error message(s) above…

ב 10.2

TNS-12537: TNS:connection closed

TNS-12560: TNS:protocol adapter error

TNS-00507: Connection closed

Linux Error: 29: Illegal seek

2. אם שם מסוים לא מיתרגם כעת לכתובת (יכול לקרות כאשר שרת DNS למטה, רשומת ה DNS נמחקה, השם והכתבות נמצאים ה /etc/hosts של השרת וכרגע מישהו מחק אותם) או שכן מיתרגם אבל לכתובת אחרת, ה Listener לא יהיה מודע לכך ועדיין יאשר כניסה רק למי שמגיע מהכתובת המקורית לפי פעולת התרגום שהתבצעה בעלייה של ה Listener.

דוגמא

יש לנו מספר מחשבים, האחד מריץ Oracle database וקוראים לו oradb (כתובת IP 192.168.1.11) ובשני מותקן Oracle client וקוראים לו userpc (כתובת IP 192.168.1.66), ועוד שרתים websrv1, websrv2 ותחנות קצה client1, client2.

ערכנו את קובץ ה sqlnet.ora בשרת:

NAMES.DIRECTORY_PATH= (TNSNAMES)

TCP.VALIDNODE_CHECKING=YES

TCP.INVITED_NODES=(127.0.0.1,192.168.192.11,   client1,client2,   websrv1)

שימו לב שה"רשימה הלבנה" שלנו מכילה את שרת ה DB עצמו, שתי תחנות קצה – client1, client2 ושרת נוסף websrv1 אך אין היא מכילה את המחשב userpc.

עתה עשינו stop ו start ל Listener והמתנו עד שה DB נרשם ב Listener. ניסנו להתחבר עם sqlplus מהשרת עצמו ומהתחנה client1 דרך ה Listener והצלחנו אבל כאשר ניסינו להתחבר מהתחנה userpc נכשלנו וקיבלנו את ההודעה הבאה:

$ sqlplus user/password@orcl
SQL*Plus: Release 11.2.0.1.0 Production on Fri Sep 2 16:37:23 2011
Copyright (c) 1982, 2009, Oracle.  All rights reserved.
ERROR:
ORA-12537: TNS:connection closed

כאשר הסתכלנו בלוג של ה Listener ראינו שהוא באמת ולא אישר כניסה (הדוגמא היא מלוג ש 11.2):

</msg>
<msg time='2011-09-01T16:37:09.959+03:00' org_id='oracle' comp_id='tnslsnr'
type='UNKNOWN' level='16' host_id=oradb'
host_addr='192.168.1.11'>
<txt>TNS-12546: TNS:permission denied
TNS-12560: TNS:protocol adapter error
TNS-00516: Permission denied
</txt>

סיכום

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

קישורים

Documentation Net Services Reference
TCP.NODE_CHECKING, TCP.INVITED_NODES, TCP_EXLCLUDED_NODES http://download.oracle.com/docs/cd/E11882_01/network.112/e10835/sqlnet.htm#NETRF237

Documentation Net Services Administrator's Guide
TCP.NODE_CHECKING, TCP.INVITED_NODES, TCP_EXLCLUDED_NODES
http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/profile.htm#NETAG289

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

The following two tabs change content below.

2 תגובות ל- “הקשחת Oracle Listener בעזרת white list”

[…] לקבלת מידע נוסף שמפרט קצת יותר על פיתרון האתגר, אלון שפיגל הכין לנו כתבה נהדרת על הנושא המדובר: הקשחת Oracle Listener בעזרת White List […]

[…] לקבלת מידע נוסף שמפרט קצת יותר על פיתרון האתגר, אלון שפיגל הכין לנו כתבה נהדרת על הנושא המדובר: הקשחת Oracle Listener בעזרת White List […]

השאר תגובה:

שם (חובה):
אימייל (לא יפורסם) (חובה):
תגובה (חובה):

*



מאמרים קשורים

איך לבצע Sizing DB ב-Datacenter בארגונך בקלות (חלק א')

כחלק מהטמעות מוצרי IT תשתיתיים (כגון FWDB, מוצרי גיבוי, חוות Storage, מוצרי שו"ב ועוד…) בארגוני, אנו נדרשים המון פעמים לענות על שאלות לספקים כגון : מה גודל הכולל של ה –  Datacenter  ? מה חלוקת גודל ה [...]
מבוא

מבוא לבעיות ביצועים באורקל

The following two tabs change content below.BioLatest Posts עודד רז עודד רז, מנכ"ל חברת בריליקס ומייסד אתר זה. עודד הוא Oracle ACE Director ואחד מה-DBA-ים הבכירים ביותר בישראל, עם מעל 15 שנות ניסיון כ-DBA תשתיתי ואפליקטיבי. לעודד [...]

ה-SQL Performance Analyzer ב-Real Application Testing

בפוסט הקודם הזכרתי בקצרה את ה-SQL Performance Analyzer, בפוסט הזה אני אציג את ה-SPA, יתרונות וחסרונות של המוצר ואיך כדאי להשתמש [...]

מבוא ל- Real Application Testing

הפעם רציתי לסקור feature שלם שנקרא RAT (או בשמו המלא Real Application Testing). ה- feature הזה הוא database option של Oracle Enterprise Edition והוא לא חדש בכלל. הוא הוצג ב- 11gR1 וגם נמצא בשימוש לא מועט בעולם. משום מה, אצלנו בארץ לא יוצא [...]
Copyright 2019 ilDBA Portal. Brought to you by Brillix - Israel Leading DBA company. Sponsored by: DBSnaps - Database Video Tutorialss
Website Security Test
%d בלוגרים אהבו את זה: