防禦

[資安] 關閉TLS 1.0 2 3教學

TLS 1.0 存在漏洞,漏洞掃描會被判定為高風險漏洞

Web伺服器使用TLS1.0加密,TLS1.0已被認為不安全的加密演算法。 根據 PCI規範,SSL/TLS早期版本須於2018/6/30前禁止使用,並使用更安全的加密協定(TLS1.1以上,建議使用TLS1.2) 保護資訊

建議停用TLSV1、 SSLV2、 SSLV3、 TLSV1.1(可停可不停。

啟用TSLV1.2

  • SSLv2 很弱,應該禁用
  • 考慮禁用 SSLv3 以減輕 POODLE 攻擊。應禁用 PCI DSS 3.1 合規性
  • 可以為現有實施啟用 TLSv1.1,但 PCI DSS 3.1 § 2.2.3 指出:SSL 和早期 TLS 不被視為強加密,在 2016 年 6 月 30 日之後不能用作安全控制。
  • 應啟用 TLS 1.2。

所以要注意SSLV2 V3都要記得禁用,可以使用 SSL Server Test 檢查是否關閉或是Check SSLv2 and SSLv3

關閉方式檔案會在httpd/conf.d/ssl.conf這裡面(或是ubunut的 /etc/apache2/mods-available/ssl.conf) 找一下

SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1

改成上面這樣就可以了,改完重啟apache即可。

可以用下面python來測試看看,如果你的網站不對外的話

import ssl
import socket

# 檢查網站是否支援指定的 TLS 版本
def check_tls_versions(host, port=443):
    # 定義各個 TLS 版本
    tls_versions = {
        ssl.PROTOCOL_TLSv1: "TLS 1.0",
        ssl.PROTOCOL_TLSv1_1: "TLS 1.1",
        ssl.PROTOCOL_TLSv1_2: "TLS 1.2",
        ssl.PROTOCOL_TLS: "TLS 1.3 (Auto)"
    }
    
    supported_versions = []

    for version, version_name in tls_versions.items():
        try:
            # 創建一個 SSL 上下文來指定要使用的 TLS 版本
            context = ssl.SSLContext(version)
            context.set_ciphers('ALL')
            
            # 嘗試連接網站
            with socket.create_connection((host, port)) as sock:
                with context.wrap_socket(sock, server_hostname=host) as ssock:
                    # 如果連接成功,則該版本被支持
                    supported_versions.append(version_name)
                    print(f"✅ {version_name} 有支援.")
        except ssl.SSLError:
            print(f"❌ {version_name} 不支援")
        except Exception as e:
            print(f"⚠️ Error with {version_name}: {e}")

    if not supported_versions:
        print("❌ No supported TLS versions found.")
    else:
        print(f"✅ Supported TLS versions: {', '.join(supported_versions)}")

# 輸入網站域名或IP地址
host = input("Enter the website host to check for supported TLS versions (e.g., example.com): ")

# 開始檢查
check_tls_versions(host)
Be the First to comment.

Leave a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

(若看不到驗證碼,請重新整理網頁。)