λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

SSL/TLS μ„€μ • μ΅œμ ν™”: λ³΄μ•ˆκ³Ό μ„±λŠ₯의 κ· ν˜• λ§žμΆ”κΈ°

mrmount 2024. 10. 18.

 

 

SSL/TLS μ„€μ • μ΅œμ ν™”: λ³΄μ•ˆκ³Ό μ„±λŠ₯의 κ· ν˜• λ§žμΆ”κΈ°

SSL/TLSλ₯Ό μ„€μ •ν•  λ•Œ λ³΄μ•ˆκ³Ό μ„±λŠ₯ μ‚¬μ΄μ˜ κ· ν˜•μ„ μœ μ§€ν•˜λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€. λ³΄μ•ˆμ„ μ§€λ‚˜μΉ˜κ²Œ κ°•ν™”ν•˜λ©΄ μ„±λŠ₯이 μ €ν•˜λ  수 있고, μ„±λŠ₯을 μ§€λ‚˜μΉ˜κ²Œ κ³ λ €ν•˜λ©΄ λ³΄μ•ˆμ΄ 약화될 수 μžˆμŠ΅λ‹ˆλ‹€. λ‹€μŒμ€ SSL/TLS μ„€μ • μ‹œ μ΅œμ ν™”λœ ꢌμž₯ μ„€μ • μž…λ‹ˆλ‹€.

Nginx μ„œλ²„μ—μ„œμ˜ SSL μ΅œμ ν™” 예제

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/ssl/certs/example.crt;
    ssl_certificate_key /etc/ssl/private/example.key;

    # λ³΄μ•ˆ μ΅œμ ν™”
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers HIGH:!aNULL:!MD5;

    # μ„±λŠ₯ μ΅œμ ν™”
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    # HSTS μ„€μ •μœΌλ‘œ λ³΄μ•ˆ κ°•ν™”
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

    location / {
        proxy_pass http://localhost:8080;
    }
}

 


 

SSL/TLS μ„€μ • μ΅œμ ν™”: λ³΄μ•ˆκ³Ό μ„±λŠ₯의 κ· ν˜• λ§žμΆ”κΈ°

SSL/TLSλ₯Ό μ„€μ •ν•  λ•Œ λ³΄μ•ˆκ³Ό μ„±λŠ₯ μ‚¬μ΄μ˜ κ· ν˜•μ„ μœ μ§€ν•˜λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€. λ³΄μ•ˆμ„ μ§€λ‚˜μΉ˜κ²Œ κ°•ν™”ν•˜λ©΄ μ„±λŠ₯이 μ €ν•˜λ  수 있고, μ„±λŠ₯을 μ§€λ‚˜μΉ˜κ²Œ κ³ λ €ν•˜λ©΄ λ³΄μ•ˆμ΄ 약화될 수 μžˆμŠ΅λ‹ˆλ‹€. λ‹€μŒμ€ SSL/TLS μ„€μ • μ‹œ μ΅œμ ν™”λœ ꢌμž₯ μ„€μ • μž…λ‹ˆλ‹€.

Nginx μ„œλ²„μ—μ„œμ˜ SSL μ΅œμ ν™” 예제

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/ssl/certs/example.crt;
    ssl_certificate_key /etc/ssl/private/example.key;

    # λ³΄μ•ˆ μ΅œμ ν™”
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers HIGH:!aNULL:!MD5;

    # μ„±λŠ₯ μ΅œμ ν™”
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    # HSTS μ„€μ •μœΌλ‘œ λ³΄μ•ˆ κ°•ν™”
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

    location / {
        proxy_pass http://localhost:8080;
    }
}

μ½”λ“œ μ„€λͺ…:

  1. ssl_protocols : TLS 1.2와 1.3만 μ‚¬μš©ν•˜μ—¬ μ·¨μ•½ν•œ ν”„λ‘œν† μ½œμ„ μ°¨λ‹¨ν•©λ‹ˆλ‹€.
  2. ssl_ciphers : μ·¨μ•½ν•œ μ•”ν˜Έν™” μ•Œκ³ λ¦¬μ¦˜μ„ μ œμ™Έν•œ μ•ˆμ „ν•œ μ•”ν˜Έν™” 방식을 μ‚¬μš©ν•©λ‹ˆλ‹€.
  3. ssl_session_cache : μ„Έμ…˜ μΊμ‹œλ₯Ό μ‚¬μš©ν•΄ ν•Έλ“œμ…°μ΄ν¬ μ„±λŠ₯을 μ΅œμ ν™”ν•©λ‹ˆλ‹€.
  4. HSTS ν™œμ„±ν™” : κ°•μ œ HTTPS μ—°κ²°λ‘œ μ€‘κ°„μž 곡격을 λ°©μ§€ν•©λ‹ˆλ‹€.

 


 

SSL/TLS 취약점 λŒ€μ‘ 체크리슀트

SSL/TLS λ³΄μ•ˆμ„ κ°•ν™”ν•˜κΈ° μœ„ν•΄ λ‹€μŒ 체크리슀트 λ₯Ό 따라 섀정을 μ κ²€ν•˜μ„Έμš”.

점검 ν•­λͺ© μ„€λͺ… μƒνƒœ
μ΅œμ‹  ν”„λ‘œν† μ½œ μ‚¬μš© TLS 1.2, TLS 1.3만 ν—ˆμš© βœ…
SSL 3.0 및 μ·¨μ•½ν•œ μ•Œκ³ λ¦¬μ¦˜ λΉ„ν™œμ„±ν™” POODLE 곡격 방지λ₯Ό μœ„ν•΄ SSL 3.0 차단 βœ…
HSTS ν™œμ„±ν™” HTTPS 연결을 κ°•μ œν•΄ SSL 슀트립 곡격 방지 βœ…
μΈμ¦μ„œ κ°±μ‹  μžλ™ν™” 만료된 μΈμ¦μ„œλ‘œ μΈν•œ κ²½κ³  λ©”μ‹œμ§€ 방지 βœ…
OCSP Stapling ν™œμ„±ν™” μΈμ¦μ„œ μƒνƒœλ₯Ό λΉ λ₯΄κ²Œ 확인해 ν•Έλ“œμ…°μ΄ν¬ μ΅œμ ν™” βœ…




 

κ²°λ‘ : μ•ˆμ „ν•œ μ›Ή μš΄μ˜μ„ μœ„ν•œ SSL/TLS μ„€μ •μ˜ μ€‘μš”μ„±

SSL/TLSλŠ” 인터넷 λ³΄μ•ˆμ˜ 핡심 μš”μ†Œ 둜, μ΅œμ‹  ν”„λ‘œν† μ½œκ³Ό κ°•λ ₯ν•œ μ•”ν˜Έν™” μ•Œκ³ λ¦¬μ¦˜μ„ μ‚¬μš©ν•΄ μ•ˆμ „ν•œ 연결을 보μž₯ν•΄μ•Ό ν•©λ‹ˆλ‹€. 취약점에 λŒ€ν•œ 이해와 λ³΄μ•ˆ μ„€μ • μ΅œμ ν™”λŠ” μ›Ήμ‚¬μ΄νŠΈμ˜ μ„±λŠ₯κ³Ό 신뒰도 λ₯Ό λ™μ‹œμ— ν–₯μƒμ‹œν‚΅λ‹ˆλ‹€.
- SSL 슀트립, POODLE, Heartbleed 와 같은 곡격에 λŒ€λΉ„ν•΄ λ³΄μ•ˆμ„ κ°•ν™”ν•©λ‹ˆλ‹€.
- μ΅œμ‹  TLS 1.3 ν”„λ‘œν† μ½œ κ³Ό μ•ˆμ „ν•œ μ•”ν˜Έν™” μ•Œκ³ λ¦¬μ¦˜μ„ μ‚¬μš©ν•΄ 데이터 보호λ₯Ό κ°•ν™”ν•©λ‹ˆλ‹€.
- HSTS와 OCSP Stapling 을 톡해 μ„±λŠ₯κ³Ό λ³΄μ•ˆμ„ λͺ¨λ‘ ν™•λ³΄ν•©λ‹ˆλ‹€.

 


 

FAQ

Q1. SSL μΈμ¦μ„œκ°€ 만료되면 μ–΄λ–»κ²Œ λ˜λ‚˜μš”?
A1. 만료된 μΈμ¦μ„œλ‘œ 접속 μ‹œ ‘μ•ˆμ „ν•˜μ§€ μ•ŠμŒ’ κ²½κ³  κ°€ ν‘œμ‹œλ˜λ©°, μ‚¬μš©μžλŠ” μ‚¬μ΄νŠΈμ— λŒ€ν•œ μ‹ λ’°λ₯Ό μžƒμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. μžλ™ 갱신을 μ„€μ •ν•΄ 만료λ₯Ό λ°©μ§€ν•˜μ„Έμš”.

Q2. SSL 슀트립 곡격을 μ–΄λ–»κ²Œ 막을 수 μžˆλ‚˜μš”?
A2. HSTS(HTTP Strict Transport Security) λ₯Ό ν™œμ„±ν™”ν•΄ λΈŒλΌμš°μ €κ°€ 항상 HTTPS둜 μ—°κ²°λ˜λ„λ‘ ν•©λ‹ˆλ‹€.

Q3. POODLE 곡격은 μ–΄λ–»κ²Œ 방지할 수 μžˆλ‚˜μš”?
A3. SSL 3.0 을 λΉ„ν™œμ„±ν™”ν•˜κ³  TLS 1.2 이상 을 μ‚¬μš©ν•˜λ©΄ POODLE 곡격을 차단할 수 μžˆμŠ΅λ‹ˆλ‹€.

Q4. μ΅œμ‹  ν”„λ‘œν† μ½œ(TLS 1.3)을 μ‚¬μš©ν•˜λ©΄ μ„±λŠ₯이 ν–₯μƒλ˜λ‚˜μš”?
A4. TLS 1.3 은 ν•Έλ“œμ…°μ΄ν¬ 과정이 λ‹¨μΆ•λ˜μ–΄ μ„±λŠ₯이 ν–₯μƒλ©λ‹ˆλ‹€. λ˜ν•œ, μ•ˆμ „ν•œ μ•”ν˜Έν™” μ•Œκ³ λ¦¬μ¦˜λ§Œ μ‚¬μš©ν•©λ‹ˆλ‹€.

Q5. OCSP Stapling은 λ¬΄μ—‡μΈκ°€μš”?
A5. OCSP Stapling 은 μΈμ¦μ„œ μƒνƒœλ₯Ό μ„œλ²„μ—μ„œ 미리 확인해, ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­ μ‹œκ°„μ„ 쀄이고 ν•Έλ“œμ…°μ΄ν¬ μ„±λŠ₯을 μ΅œμ ν™”ν•©λ‹ˆλ‹€.

 


λŒ“κΈ€