- פיקוד פיקוד יוניקס

שֵׁם

hosts_access - פורמט של קבצי בקרת גישה למארח

תיאור

דף ידני זה מתאר שפת בקרת גישה פשוטה המבוססת על דפוסי לקוח (שם מארח / כתובת, שם משתמש), ודפוסי שרת (שם תהליך, שם מארח / כתובת). בסוף ניתנים דוגמאות. הקורא חסר הסבלנות הוא עודד לדלג לחלק EXAMPLES להקדמה מהירה. בגרסה מורחבת של שפת בקרת הגישה מתוארת במסמך hosts_options (5). ההרחבות מופעלות בזמן בניית התוכנית על ידי בנייה עם -DPROCESS_OPTIONS.

בטקסט הבא, daemon הוא שם התהליך של תהליך daemon ברשת , והלקוח הוא השם ו / או הכתובת של שירות המבקש המבקש. שמות תהליך daemon רשת מפורטים בקובץ התצורה של Inetd.

גישה בקרת קבצים

תוכנת בקרת גישה מייעצת שני קבצים . החיפוש נעצר במשחק הראשון.

הגישה תינתן כאשר זוג (daemon, client) תואם לערך בקובץ /etc/hosts.allow .

אחרת, הגישה תידחה כאשר זוג (daemon, client) תואם לערך בקובץ /etc/hosts.deny .

אחרת, תינתן גישה.

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

בקרת גישה

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

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

שורות ריקות או שורות שמתחילות בתו '#' מתעלמות. זה מאפשר לך להוסיף הערות שטח לבן, כך טבלאות קל יותר לקרוא.

כל השורות האחרות צריכות לספק את הפורמט הבא, דברים בין [] להיות אופציונלי:

daemon_list: client_list [: shell_command]

daemon_list היא רשימה של אחד או יותר שמות תהליך daemon (argv [0] ערכים) או תווים כלליים (ראה להלן).

client_list היא רשימה של שמות מארחים אחת או יותר, כתובות מארח, תבניות או תווים כלליים (ראה להלן) שתתאים לשם הלקוח או לכתובת המארח שלו.

הצורות המורכבות יותר daemon @ המארח המשתמש @ המארח מוסברים בסעיפים על דפוסי נקודת קצה השרת על חיפושי שם משתמש, בהתאמה.

אלמנטים ברשימה יש להפריד בין החסר ו / או פסיקים.

למעט חיפושים של netGroup בשקלים (YP), כל בדיקות בקרת הגישה אינן רגישות.

דפוסים

שפת בקרת הגישה מיישמת את הדפוסים הבאים:

מחרוזת שמתחילה ב- '.' אופי. שם המארח תואם אם הרכיבים האחרונים של שמו תואמים את התבנית שצוין. לדוגמה, התבנית `tue.nl 'מתאימה לשם המארח` wzv.win.tue.nl'.

מחרוזת המסתיימת ב- ``. אופי. כתובת מארח תואמת אם השדות המספריים הראשונים שלה תואמים את המחרוזת הנתונה. לדוגמה, התבנית '131.155'. תואם את כתובת (כמעט) כל מארח על רשת אוניברסיטת איינדהובן (131.155.xx).

מחרוזת שמתחילה בתו '@' מטופלת כשם NetGroup שקלי (לשעבר YP). שם המארח מותאם אם הוא חבר מארח של netgroup שצוין. התאמות Netgroup אינן נתמכות עבור שמות תהליך daemon או עבור שמות משתמש של לקוח.

ביטוי של הצורה 'nnnn / mmmm' מתפרש כזוג 'נטו / מסכה'. כתובת IP מארח IPv4 מתאימה אם 'net' שווה ל- bitwise של הכתובת ול'מסכה '. לדוגמה, תבנית הרשת / מסכת '131.155.72.0/255.255.254.0' מתאימה לכל כתובת בטווח '131.155.72.0' דרך '131.155.73.255'.

ביטוי של הטופס `n: n: n: n: n: n] / m 'מתפרש כזוג' [net] / prefixlen '. כתובת IP מארח IPv6 מתאימה אם "birfixlen" ביטים של "net" שווה את 'prefixlen' סיביות של הכתובת. לדוגמה, תבנית [net] / prefixlen '[3ffe: 505: 2: 1 ::] / 64' מתאימה לכל כתובת בטווח `3ffe: 505: 2: 1 :: 'דרך` 3ffe: 505: 2: 1: ffff: ffff: ffff: ffff '.

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

תוים כלליים 'ו'? ' ניתן להשתמש בהם כדי להתאים שמות מארח או כתובות IP . לא ניתן להשתמש בשיטת התאמה זו בשילוב עם התאמת 'נטו / מסכה', התאמת שם המארח המתחילה ב- '.' או התאמת כתובת IP המסתיימת ב- '.'

תיל

שפת בקרת הגישה תומכת בתווים כלליים מפורשים:

את כל

התו הכללי אוניברסלי, תמיד תואם.

מְקוֹמִי

מתאים לכל מארח ששמו אינו מכיל תו נקודה.

לא ידוע

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

ידוע

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

פרנואידים

מתאים לכל מארח ששמו אינו תואם לכתובת שלו. כאשר tcpd בנוי עם -DARANOID (מצב ברירת מחדל), הוא טיפות בקשות מלקוחות כאלה אפילו לפני מסתכל על טבלאות בקרת גישה. לבנות ללא -DARANOID כאשר אתה רוצה שליטה רבה יותר על בקשות כאלה.

מפעילים

מלבד

השימוש המיועד הוא הטופס: 'list_1 EXCEPT list_2'; פעולה זו מתאימה כל דבר שמתאים לרשימה_1, אלא אם היא תואמת את הרשימה_2 . ניתן להשתמש במפעיל EXCEPT ב- daemon_lists ובלקוחות client_lists. מפעיל ה- EXCEPT יכול להיות מקונן: אם שפת השליטה תאפשר שימוש בסוגריים, 'חריגה ב' להוציא C 'תנתח כ-' (א '(א').

מפקדות של

אם כלל בקרת הגישה התואמת הראשונה מכיל פקודת מעטפת, פקודה זו כפופה ל% תחליפים (ראה סעיף הבא). התוצאה מבוצעת על ידי תהליך ילד / bin / sh עם קלט סטנדרטי, פלט ושגיאה המחוברים ל- / dev / null . ציין '&' בסוף הפקודה אם אינך רוצה להמתין עד לסיום.

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

המסמך hosts_options (5) מתאר שפה חלופית המשתמשת בשדה הפקודה shell בצורה שונה ולא תואמת.

אחוזים

ההרחבות הבאות זמינות בפקודות מעטפת:

% a (% A)

כתובת המארח של הלקוח (השרת).

% c

פרטי לקוח: user @ host, user @ address, שם מארח או רק כתובת, בהתאם לכמות המידע הזמינה.

% d

שם תהליך daemon (ערך argv [0]).

% h (% H)

שם השרת או כתובת המארח של הלקוח (השרת), אם שם המארח אינו זמין.

% n (% N)

הלקוח (שרת) שם המארח (או "לא ידוע" או "פרנואידית").

% p

תהליך הדמון מזהה.

% s

פרטי שרת: daemon @ host, daemon @ address, או רק שם daemon, בהתאם לכמות המידע הזמינה.

% u

שם המשתמש של הלקוח (או "לא ידוע").

קה

מתרחב לתו '%' אחד.

תווים ב-% הרחבות שעשויות לבלבל את הקליפה מוחלפות בקווים תחתונים.

שרשראות

כדי להבדיל בין לקוחות לפי כתובת הרשת שאליה הם מתחברים, השתמש בדפוסים של הטופס:

process_name @ host_pattern: client_list ...

דפוסי כמו אלה יכולים לשמש כאשר המכונה יש כתובות אינטרנט שונות עם המארחים אינטרנט שונים. ספקי שירות יכולים להשתמש במתקן זה כדי להציע FTP, GOPHER או WWW ארכיון עם שמות אינטרנט שיכולים אפילו שייכים לארגונים שונים. ראה גם את האפשרות 'טוויסט' במסמך hosts_options (5). למערכות מסוימות (Solaris, FreeBSD) יכולות להיות יותר מכתובת אינטרנט אחת בממשק פיזי אחד; עם מערכות אחרות ייתכן שיהיה עליך להשתמש ב- SLIP או PPP pseudo ממשקים שחיים בחלל ייעודי כתובת הרשת.

המארח host_pattern מציית לאותם כללי תחביר כמו שמות המארח וכתובות בהקשר client_list. בדרך כלל, מידע נקודת קצה של השרת זמין רק עם שירותים מוכווני חיבור.

CLIENT USERNAME LOOKUP

כאשר מארח הלקוח תומך בפרוטוקול RFC 931 או באחד מצאצאיו (TAP, IDENT, RFC 1413), תוכניות העטיפה יכולות לאחזר מידע נוסף על בעל החיבור. מידע על שם המשתמש של הלקוח, כאשר הוא זמין, מחובר יחד עם שם המארח של הלקוח, וניתן להשתמש בו להתאמה לדפוסים כגון:

daemon_list: ... user_pattern @ host_pattern ...

עטיפות daemon ניתן להגדיר בזמן לקמפל לבצע חיפושים מונחי משתמש מונחה כלל (ברירת המחדל) או תמיד לחקור את המארח הלקוח. במקרה של חיפושים מונחי חיפוש מונעי כללים, הכלל הנ"ל יגרום לחיפוש שם משתמש רק כאשר הן daemon_list והן התאמה host_pattern .

לדפוס משתמש יש תחביר זהה לתבנית תהליך daemon, ולכן אותן תווים כלליים חלים (חברות ב- netgroup אינה נתמכת). אחד לא צריך להיסחף עם חיפושי שם המשתמש, אם כי.

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

חיפושים שם משתמש רק עם שירותים מבוססי TCP, ורק כאשר המארח הלקוח פועל daemon מתאים; בכל המקרים האחרים התוצאה היא "לא ידוע".

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

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

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


@@pcnetgroup ALL @ ALL

יתאים חברים של netgroup PC מבלי לעשות חיפושי שם משתמש, אבל היה לבצע חיפושים שם משתמש עם כל המערכות האחרות.

איתור תקיפות גניבת כתובות

פגם במחולל מספר הרצף של יישומי TCP / IP רבים מאפשר לפורצים להתחזות בקלות למארחים מהימנים וכדי לפרוץ דרך, לדוגמה, את השירות פגז מרחוק. השירות IDENT (RFC931 וכו ') יכול לשמש כדי לזהות התקפות מסוג זה או אחר של זיוף המארח.

לפני קבלת בקשת הלקוח, עטיפות יכול להשתמש בשירות IDENT כדי לגלות כי הלקוח לא שלח את הבקשה בכלל. כאשר המארח הלקוח מספק שירות IDENT, תוצאה שלילית IDENT בדיקת (הלקוח תואם 'UNKNOWN @ מארח') הוא עדות חזקה של התקף זיופים המארח.

תוצאה חיובית בדיקת IDENT (הלקוח תואם "ידוע @ מארח") הוא פחות אמין. זה אפשרי עבור פורץ לזייף הן את החיבור הלקוח ואת בדיקת IDENT, אם כי זה עושה הרבה יותר קשה מאשר זיוף רק חיבור לקוח. זה יכול להיות גם כי שרת IDENT של הלקוח שוכב.

הערה: חיפושים של IDENT אינם פועלים עם שירותי UDP.

דוגמאות

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

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

הדוגמאות משתמשות במארח ובשמות דומיינים. הם יכולים להשתפר על ידי הכללת כתובת ו / או רשת / netmask מידע, כדי לצמצם את ההשפעה של כשלים שם זמני שרת חיפוש.

נסגר כמעט

במקרה זה, הגישה נדחתה כברירת מחדל. רק למפרשים מורשים מפורשים מותר לגשת.

מדיניות ברירת המחדל (ללא גישה) מיושמת עם קובץ דחייה טריוויאלי:

/etc/hosts.deny: ALL: ALL

פעולה זו שוללת את כל השירות לכל המארחים, אלא אם כן הם מורשים לגשת לפי רשומות בקובץ ההרשאה.

המארחים המורשים מפורשים מופיעים בקובץ ההרשאה. לדוגמה:

/etc/hosts.allow: ALL: LOCAL @some_netgroup
כולם: .foobar.edu EXCEPT מסופים

הכלל הראשון מאפשר גישה מהמארחים בדומיין המקומי (לא. '' בשם המארח) וחברים בקבוצת net_nroup some_net. הכלל השני מאפשר גישה מכל המארחים בתחום foobar.edu (שימו לב לנקודה המובילה), למעט terminalserver.foobar.edu .

פתוחים כמעט

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

מדיניות ברירת המחדל (גישה שניתנה) הופכת את הקובץ ליותר מיותר כך שניתן להשמיט אותו. המארחים המפורשים שאינם מורשים מפורטים בקובץ דחייה. לדוגמה:

/etc/hosts.deny: ALL: some.host.name, .some.domain
כולם מלבד in.fingerd: other.host.name, .other.domain

הכלל הראשון שולל כמה מארחים ותחומים כל השירותים; הכלל השני עדיין מאפשר בקשות אצבע ממארחים אחרים ותחומים אחרים.

בובי traps

הדוגמה הבאה מאפשרת בקשות TFTP מהמארחים בתחום המקומי (שים לב לנקודה המובילה). בקשות מכל מארח אחר נדחות. במקום הקובץ המבוקש, בדיקת אצבע נשלחת אל המארח הפוגע. התוצאה נשלחת אל superuser.

/etc/hosts.allow:

in.tftpd: LOCAL, .my.domain /etc/hosts.deny: in.tftpd: ALL: spawn (/ some / where / safe_finger -l @% h | \ / usr / ucb / mail -s% d-% h שורש)

הפקודה safe_finger מגיעה עם מעטפת tcpd ויש להתקין במקום מתאים. זה מגביל את הנזק האפשרי מן הנתונים שנשלחו על ידי שרת האצבע המרוחקת. זה נותן הגנה טובה יותר מאשר הפקודה אצבע רגילה.

הרחבת המאפיינים% h (host host) ו-% d (שם השירות) מתוארת בסעיף בפקודות shell.

אזהרה: לא מלכודת מלכודת הדמון שלך, אלא אם כן אתה מוכן לולאות אצבע אינסופי.

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

ראה גם

tcpd (8) tcp / IP עטיפה daemon התוכנית. tcpdchk (8), tcpdmatch (8), תוכניות בדיקה.

חשוב: השתמש בפקודת הגבר ( % man ) כדי לראות כיצד נעשה שימוש בפקודה במחשב הספציפי שלך.