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

איזו זהות באמת יש לכם

קובץ מצב בגרסה 3 הוא נקודת ההתחלה הרגילה. מקטע CLIENT_LIST נושא את ה-common name, הכתובת האמיתית, מוני בתים וזמן חיבור; מקטע ROUTING TABLE ממפה כתובת וירטואלית ל-common name עם חותמת זמן של ההפניה האחרונה. ה-common name הוא הזהות היציבה. הכתובת הווירטואלית היא הקצאה, והכתובת האמיתית מאחורי NAT יכולה להשתנות בין הפעלות בלי שדבר בשרת משתנה.

ממשק הניהול מציג תמונה דומה דרך הפקודה status ומוסיף מזהה לקוח לכל הפעלה. את המזהה הזה מצפה client-kill, והוא אינו כתובת המנהרה. אם עליכם לדעת איזה common name קיבל איזו כתובת ברגע החיבור, לסביבת סקריפט client-connect יש את שניהם, יחד עם הכתובת החיצונית המהימנה, אבל אותו סקריפט רץ כמשתמש OpenVPN וזקוק לנתיב יומן שאפשר לכתוב בו.

What you holdWhere it came fromWhat it can act on
Common nameCLIENT_LIST, or the auth hookkill, and credential revocation
Client IDstatus on the management socketclient-kill, that one session
Tunnel addressROUTING TABLE, client-connect environmentNothing durable, the address is recycled

להרוג עכשיו, לדחות בהתחברות, לבטל לתמיד

שתי פקודות ההסרה בתחום ממשק הניהול הן פעולות הפעלה. kill מקבל common name או כתובת אמיתית ופורט; client-kill מקבל את מזהה הלקוח ומסיים את המופע הזה מיד. אף אחת מהן אינה חסימה: לקוח מגורש עם תעודה וסיסמה תקפים מתחבר מחדש בתוך שניות, וזה טוב כשאתם ממחזרים peer לבדיקה וחסר תועלת כשנכנס מחשב נייד.

client-deny הוא סוג אחר של החלטה. הוא מונפק בדרך כלל מהוק אימות או client-connect ודוחה את ההפעלה עם סיבה, ולכן מתאים למדיניות שדוחה התחברות ולא לזו שמפריעה לחיבור. התיעוד גם מזהיר שדחייה שהונפקה בזמן משא ומתן מחדש של TLS מבטלת את המפתח שנוהל מחדש בשעה שההפעלה הקיימת יכולה להמשיך עד סגירת חלון המעבר. אם הדרישה היא שהלקוח ייעלם עכשיו, התשובה המתועדת היא client-kill.

הסרה קבועה נמצאת מתחת לכל זה. בטלו את התעודה וודאו ש-crl-verify מצביע על רשימה שהשרת באמת טוען מחדש, השביתו את קובץ התצורה הספציפי ללקוח בתיקיית ccd, או השביתו את החשבון ב-backend שאליו ההוק לאימות פונה. גם ביטול אינו מיידי: בהגדרות ברירת המחדל של reneg-sec הפעלה מבוססת יכולה להמשיך עד שתנהל משא ומתן מחדש, ולכן פעולת ההפעלה ופעולת פרטי האימות משלימות זו את זו, ולא מחליפות.

האם שקע הניהול פנוי?

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

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

הרצף שאני מריץ בשרת חי

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

status                     # note the client ID and common name
client-kill 3              # end that session now
kill Test-Client           # alternative: by common name
status                     # confirm the session is gone

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

אשרו שהוא נשאר בחוץ

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

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

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