Skip to main content
< All Topics
Print

הפעלת TLS 1.2 והקשחת תקשורת בטוחה

מעבר לפרוטוקולי הצפנה מודרניים (TLS 1.2 ו-TLS 1.3) הוא הכרח אבטחתי ורגולטורי. עם זאת, השבתה פזיזה של TLS 1.0 יכולה "לשבור" את הגישה לשרת, לנתק משתמשי RDP ולהפיל תקשורת ל-SQL. במדריך זה נלמד את ה-Best Practice לאנשי סיסטם: ביצוע בדיקות מקדימות, הפעלת התקן החדש (וחיזוק ה-.NET), ורק לבסוף – השבתה בטוחה של הפרוטוקולים הישנים.

???? שלב 1: בדיקות קדם (Pre-Flight Checks)

לפני שנוגעים ברג'יסטרי, חובה לוודא שמערכת ההפעלה בכלל מסוגלת לתקשר ב-TLS 1.2. במערכות ישנות (Windows 7 / Server 2008 R2 / 2012), ללא עדכון KB3140245 הניסיון שלנו ייכשל. הסקריפט הבא בודק את גרסת המערכת, מחפש עדכונים חסרים, ומבצע בדיקת תקשורת חיה (Ping HTTPS) מול השרתים של גוגל כדי לוודא תאימות.

# — Pre-Flight: TLS Readiness & Connectivity Check — $OS = (Get-CimInstance Win32_OperatingSystem).Caption Write-Host "Detected OS: $OS" -ForegroundColor Cyan # 1. Check for mandatory updates on Legacy OS if ($OS -match "2008 R2|Windows 7|2012|Windows 8.1") { Write-Host "Legacy OS detected. Checking for KB3140245…" if (Get-HotFix -Id KB3140245 -ErrorAction SilentlyContinue) { Write-Host "[OK] Mandatory update KB3140245 is installed." -ForegroundColor Green } else { Write-Host "[CRITICAL] KB3140245 is missing! DO NOT PROCEED. Download it from Microsoft Update Catalog." -ForegroundColor Red exit } } # 2. Test TLS 1.2 Connection to Google Write-Host "Testing outbound TLS 1.2 connectivity…" -ForegroundColor Yellow try { [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 $response = Invoke-WebRequest -Uri "https://www.google.com" -UseBasicParsing if ($response.StatusCode -eq 200) { Write-Host "[OK] TLS 1.2 connection to Google successful!" -ForegroundColor Green } } catch { Write-Host "[FAILED] Could not establish TLS 1.2 connection. Network/Proxy issue?" -ForegroundColor Red }

???? שלב 2: הפעלת TLS 1.2/1.3 ותיקון ה-.NET

הכלל באבטחת מידע הוא: קודם בונים את הגשר החדש, ורק אז הורסים את הישן. הסקריפט הבא מדליק את הפרוטוקולים המאובטחים ב-Schannel, וחשוב מכך – מכריח את ה-.NET Framework להשתמש בהצפנה חזקה (Strong Crypto). ללא תיקון ה-.NET, תוכנות צד-שלישי ואפליקציות מקומיות יקרסו כי הן ינסו להמשיך להשתמש ב-TLS 1.0 גם כשהוא יהיה כבוי.

# — STEP 1: Enable Modern TLS & Enforce .NET Strong Crypto — Write-Host "Enabling TLS 1.2 and TLS 1.3…" -ForegroundColor Cyan $SecureProtocols = @("TLS 1.2", "TLS 1.3") foreach ($Protocol in $SecureProtocols) { foreach ($Role in @("Client", "Server")) { $Path = "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\$Protocol\$Role" if (!(Test-Path $Path)) { New-Item -Path $Path -Force | Out-Null } Set-ItemProperty -Path $Path -Name "Enabled" -Value 1 -Type DWord Set-ItemProperty -Path $Path -Name "DisabledByDefault" -Value 0 -Type DWord } } Write-Host "Enforcing Strong Crypto for .NET Framework (App Compatibility Fix)…" -ForegroundColor Yellow $NetPaths = @( "HKLM:\SOFTWARE\Microsoft\.NETFramework\v2.0.50727", "HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319", "HKLM:\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v2.0.50727", "HKLM:\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319" ) foreach ($NetPath in $NetPaths) { if (Test-Path $NetPath) { Set-ItemProperty -Path $NetPath -Name "SchUseStrongCrypto" -Value 1 -Type DWord Set-ItemProperty -Path $NetPath -Name "SystemDefaultTlsVersions" -Value 1 -Type DWord } } Write-Host "[DONE] Modern protocols enabled. Please RESTART the machine now before proceeding to Step 3." -ForegroundColor Green
⏳ חובה לבצע הפעלה מחדש (Restart) למחשב/לשרת בשלב זה!

כדי לוודא שהאפליקציות שלכם התחילו לדבר ב-TLS 1.2, בצעו ריסטרט עכשיו. ודאו שהכל עובד תקין. רק אם המערכת יציבה, עברו לשלב הבא (כיבוי הישן).

???? שלב 3: השבתת הפרוטוקולים הישנים (Disable Legacy)

לאחר שווידאנו שהמערכת עובדת היטב על הפרוטוקולים החדשים, הגיע הזמן לחסום את הפרצות. הסקריפט הבא ישבית את ה-SSL 3.0 ואת TLS 1.0 ו-1.1.

# — STEP 2: Disable Insecure Protocols — Write-Host "Disabling SSL 3.0, TLS 1.0, and TLS 1.1…" -ForegroundColor Red $OldProtocols = @("SSL 3.0", "TLS 1.0", "TLS 1.1") foreach ($Protocol in $OldProtocols) { foreach ($Role in @("Client", "Server")) { $Path = "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\$Protocol\$Role" if (!(Test-Path $Path)) { New-Item -Path $Path -Force | Out-Null } Set-ItemProperty -Path $Path -Name "Enabled" -Value 0 -Type DWord Set-ItemProperty -Path $Path -Name "DisabledByDefault" -Value 1 -Type DWord } } Write-Host "[DONE] Insecure protocols disabled. RESTART the machine to apply changes." -ForegroundColor Green

???? שלב 4: בדיקות פוסט-הקשחה ופתרון תקלות

כיביתם את TLS 1.0 ומשהו נשבר? להלן מדריך הדיאגנוסטיקה לתקלות הנפוצות ביותר בעקבות המעבר:

  1. שגיאת חיבור RDP ("An authentication error has occurred"):
    כיביתם את TLS 1.0 בשרת, ופתאום אי אפשר להתחבר אליו מרחוק.
    הסיבה: תחנת הקצה ממנה אתם מתחברים, או גרסת ה-Remote Desktop בשרת עצמו, אינם תומכים ב-TLS 1.2.
    הפתרון: ודאו שמותקן עדכון RDP גרסה 8.0+ בשרתים ישנים. אם התקלה קורית באופן מיידי, ייתכן שתעודת ה-SSL של שירות ה-RDP הייתה תלויה בפרוטוקול הישן. היכנסו ל-tsconfig.msc (או ל-Registry) וודאו שרמת האבטחה של ה-RDP לא מוגדרת לדרוש Ciphers ספציפיים שהושבתו (כמו 3DES).
  2. שגיאת התחברות ל-SQL Server:
    האפליקציה הארגונית הפסיקה להתחבר לשרת ה-DB ומציגה שגיאת Connection.
    הפתרון: שרתי SQL Server 2012/2014 דורשים עדכון ספציפי (Service Pack או CU) כדי לתמוך ב-TLS 1.2. בנוסף, חובה לעדכן את כלי הלקוח – ה-SQL Native Client בתחנות הקצה – לגרסה שתומכת ב-TLS 1.2 (לדוגמה גרסה 11.0.7001 ומעלה).
  3. אאוטלוק (Outlook) מבקש סיסמה בלולאה או מתנתק:
    הפתרון: זה קורה ב-Office 2013 או 2016 בתחנות ישנות. ודאו שהרצתם את קטע ה-.NET (Strong Crypto) בתחנת הקצה, והתקינו את העדכונים האחרונים ל-Office מ-Windows Update.
  4. תוכנת ERP ישנה קורסת (Legacy Apps):
    אם יש לכם תוכנה ישנה מאוד שהקוד שלה נכתב "Hardcoded" לעבוד רק מול TLS 1.0, שום סקריפט .NET לא יעזור. במקרה זה, מנהל הרשת ייאלץ לבצע ניהול סיכונים (Risk Acceptance) ולהחזיר את מפתח ה-Enabled של TLS 1.0 לערך 1 (לפחות ב-Client) באותו שרת ספציפי, עד לשדרוג התוכנה.

???? בונוס: כלי ה-GUI המוביל (IIS Crypto)

מעדיפים לעבוד עם ממשק חלונאי ולא עם קוד? הכלי IIS Crypto הוא הסטנדרט בתעשייה. פשוט הורידו אותו לשרת, לחצו על כפתור "Best Practices", סמנו וי על Reboot, ולחצו Apply. הוא יגדיר את כל מה שעשינו למעלה (כולל חסימת Ciphers פרטניים חלשים) בלחיצת כפתור אחת.

להורדת IIS Crypto
Go to Top