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

פרופיל אינו תעודה

שלושה אובייקטים שונים נקראים 'התעודה' בהגדרת VPN. זהות הלקוח היא תעודת קצה עם מפתח פרטי, והשער משתמש בה כדי להחליט מי אתם. תעודת הקצה של השרת עצמו והתעודה המתווכת שלו הן מה שהלקוח שלכם בודק בעת ההתחברות. עוגן האמון, בדרך כלל תעודת שורש או תעודת CA פרטית, הוא מה שהופך את השרשרת ניתנת לאימות בכלל. RFC 5280 מכנה אלה עוגן אמון, תעודה מתווכת וישות קצה, והשרשרת תקפה רק כל עוד כל חוליה חותמת על זו שמתחתיה.

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

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

גלו איזה מאגר עדיין מחזיק בה

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

StoreWhat deleting from it affects
Windows CurrentUser\Myyour login session only
Windows LocalMachine Rootevery user and service on the machine
macOS login or System keychainone account, or all of them with sudo
Linux ca-certificates bundlecurl, git, Python, anything using the system bundle
Firefox cert9.dbFirefox only; it does not read the OS store

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

certutil -user -store My
certutil -store Root
openssl x509 -in vpn-client.pem -noout -subject -issuer -serial -fingerprint -sha256

ב-macOS כלי security נותן את אותן עובדות, ו- find-identity מראה אילו תעודות עדיין מחובר אליהן מפתח פרטי:

security find-certificate -a -c "Example VPN" -Z /Library/Keychains/System.keychain
security find-identity -v -p ssl-client

מחקו את האובייקט הצר, שמרו על המנפיק המשותף

ייצאו לפני המחיקה. בלי גיבוי, השחזור היחיד הוא הנפקה מחדש, אשר ב-CA פרטי פירושה חזרה למי שמנהל את ה-PKI. קובץ ה-PFX המיוצא הוא גם מה שאתם מוסרים אם יתברר שההסרה הייתה ההחלטה הלא נכונה.

certutil -user -exportPFX -p backup My <serial> C:\temp\vpn-id.pfx
certutil -user -delstore My <serial>
Remove-Item Cert:\CurrentUser\My<thumbprint>

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

ב-macOS וב-Linux הצורה זהה: זהו, ייצאו, ואז הסירו מהמאגר הצר ביותר שמסביר את הסימפטום. הסרת הקובץ תחת /usr/local/share/ca-certificates והרצה חוזרת של update-ca-certificates מספיקות; --fresh עוזר רק כשהקישורים הסמליים ב- /etc/ssl/certs כבר לא עקביים. מערכות ממשפחת RHEL שומרות עוגנים ב- /etc/pki/ca-trust/source/anchors, שם trust anchor --remove עושה את אותה עבודה.

sudo security delete-certificate -Z <sha1> /Library/Keychains/System.keychain
sudo rm /usr/local/share/ca-certificates/example-vpn.crt
sudo update-ca-certificates
sudo trust anchor --remove /etc/pki/ca-trust/source/anchors/example-vpn.crt

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

openssl crl2pkcs7 -nocrl -certfile /etc/ssl/certs/ca-certificates.crt \
  | openssl pkcs7 -print_certs -noout | grep -i example

מחיקת הקובץ אינה שלילת הזהות

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

עבור OpenVPN PKI זה אומר לשלול את התעודה ולוודא שה-CRL ש- crl-verify מפנה אליו מעודכן; easyrsa revoke אז easyrsa gen-crl היא הגרסה הקצרה. עבור שער המחובר לספק זהות, השביתו את המשתמש או הסירו את המכשיר שם, כי התעודה היא רק אחד מפרטי הכניסה במשחק. מחיקת העותק המקומי כשהחשבון נשאר פעיל נראית כמו ניקוי ואינה כזו.

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

אמתו עם לחיצת יד ועם אפליקציה שנייה

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

openssl s_client -connect vpn.example.com:443 -servername vpn.example.com \
  -CAfile /etc/ssl/certs/ca-certificates.crt -verify_return_error < /dev/null
openssl verify -CAfile /etc/ssl/certs/ca-certificates.crt vpn-gateway.pem

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

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

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

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

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