הקשחה (אבטחת מידע)

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

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

ישנן מספר שיטות להקשחת מערכות "יוניקס" ו"לינוקס". שיטות אלה כוללות בין השאר התקנת טלאים כגון מגן אקס (Exec shield) או פקס (Pax) על הליבה, סגירת חיבורי רשת, הקמת מערכות זיהוי\התראה לפריצות, חומות אש ומערכות למניעת פריצות. קיימות גם פקודות\תוכנות וכלים להקשחה כגון ליניס (Lynis), בסטיל לינוקס (Bastille Lynux) JASS או מקשיח Apache/PHP עבור מערכות סולריס (Solaris) אשר יכולים לנטרל אפשרויות תוכנה מיותרות בתיקיות קונפיגורציה ועוד מספר מהלכים הגנתיים.

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

לעיתים קרובות הקשחה בינארית כוללת התאמות לא דטרמינסטיות של בקרות זרימה וכתובות של הוראות בצורה שתמנע שימוש חוזר של שורות קוד לצורך תקיפת המערכת. שיטות הקשחה נפוצות:
 הגנה מפני גלישת חוצצים (buffer overflow)
 הגנה מפני גלישת מחסנית (stack overflow)
 רנדומיזציה של מרחב הכתובות
 פיזור אקראי של כתובות להוראות עם כתובות קבועות (פיזור אקראי ליחידות קוד בסיסיות)
 מיסוך פוינטרים (הגנה מפני הזרקת שורות קוד)
 בקרת זרימה אקראית (להגנה מפני הטיה של זרימת השליטה)

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

קישורים חיצוניים

הקשחת מערכות (באנגלית)
"הקשחת נכסי המחשוב שלך" ב-  globalsecurity.org (באנגלית)
"המלצות ליישום – הקשחת מערכות מחשוב" ב-  cyber.gov.il (באנגלית)

ערכים שבהם תבנית בריטניקה אינה מתאימה
אבטחת מידע