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

חתימה מאשרת ארכיון, לא את הקוד שלו

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

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

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

הגבילו את המפתח למקור, לא למערכת

APT מודרני מקבל הפניה Signed-By ייעודית למקור. מפתח שמנוהל בידי מפעיל יכול לשכון תחת /etc/apt/keyrings/, ורשומת המקור נוקבת במפתח שמורשה לאמת את הארכיון הזה. זה צר יותר מאשר לזרוק את אותו מפתח לקבוצה מהימנה גלובלית, שבה הוא יכול לערוב למקורות שלא התכוונתם לאפשר. עקבו אחר גרסת ה-APT המותקנת ואחר ההוראות הנוכחיות של הספק במקום לערבב קטעים מדורות שונים של מדריכים.

curl -fsSL https://repo.example.com/vpn-key.gpg -o /etc/apt/keyrings/vpn.gpg
echo "deb [signed-by=/etc/apt/keyrings/vpn.gpg] https://repo.example.com/debian stable main" > /etc/apt/sources.list.d/vpn.list

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

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

נעיצת מקור אינה רשימת היתר לחבילות

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

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

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

תעדו את הסמכות ואיך להסיר אותה

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

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

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

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