์ํธํ์ ๊ฐ๋๋ ์ ๋ณด ์์คํ ์ ๋น์ฆ๋์ค์ ์ฌ์ฉํ ๋ ๊ฐ์ฅ ์ค์ํ ์งํ ์ค ํ๋์ ๋๋ค. ์๋ํ๋ฉด ์ ๋ณด ์์คํ ์ ๋งค์ผ ์์ฒญ๋ ์์ ๊ธฐ๋ฐ ์ ๋ณด ์ ์ก์ ๊ด์ฌํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก SSL ์ฐ๊ฒฐ ํ์ง์ ํ๊ฐํ๋ ๋ฐฉ๋ฒ์ Qualys SSL Labs์ ๋ ๋ฆฝ์ ์ธ ํ ์คํธ์ ๋๋ค. ์ด ํ ์คํธ๋ ๋๊ตฌ๋ ์คํํ ์ ์์ผ๋ฏ๋ก SaaS ์ ๊ณต์ ์ฒด๊ฐ ์ด ํ ์คํธ์์ ๊ฐ๋ฅํ ๊ฐ์ฅ ๋์ ์ ์๋ฅผ ์ป๋ ๊ฒ์ด ํนํ ์ค์ํฉ๋๋ค. SaaS ์ ๊ณต์ ์ฒด๋ฟ๋ง ์๋๋ผ ์ผ๋ฐ ๊ธฐ์ ๋ SSL ์ฐ๊ฒฐ ํ์ง์ ๊ด์ฌ์ ๊ฐ๊ณ ์์ต๋๋ค. ๊ทธ๋ค์๊ฒ ์ด ํ ์คํธ๋ ์ ์ฌ์ ์ธ ์ทจ์ฝ์ ์ ์๋ณํ๊ณ ์ฌ์ด๋ฒ ๋ฒ์ฃ์์ ๋ชจ๋ ํ์ ์ ์ฌ์ ์ ์ฐจ๋จํ ์ ์๋ ํ๋ฅญํ ๊ธฐํ์ ๋๋ค.
Zimbra OSE๋ ๋ ๊ฐ์ง ์ ํ์ SSL ์ธ์ฆ์๋ฅผ ํ์ฉํฉ๋๋ค. ์ฒซ ๋ฒ์งธ๋ ์ค์น ์ค์ ์๋์ผ๋ก ์ถ๊ฐ๋๋ ์์ฒด ์๋ช
๋ ์ธ์ฆ์์
๋๋ค. ์ด ์ธ์ฆ์๋ ๋ฌด๋ฃ์ด๋ฉฐ ์๊ฐ ์ ํ์ด ์์ผ๋ฏ๋ก Zimbra OSE๋ฅผ ํ
์คํธํ๊ฑฐ๋ ๋ด๋ถ ๋คํธ์ํฌ ๋ด์์๋ง ์ฌ์ฉํ๋ ๋ฐ ์ด์์ ์
๋๋ค. ๊ทธ๋ฌ๋ ์น ํด๋ผ์ด์ธํธ์ ๋ก๊ทธ์ธํ๋ฉด ์ฌ์ฉ์๋ ๋ธ๋ผ์ฐ์ ์์ ์ด ์ธ์ฆ์๋ฅผ ์ ๋ขฐํ ์ ์๋ค๋ ๊ฒฝ๊ณ ๋ฅผ ๋ณด๊ฒ ๋๋ฉฐ ์๋ฒ๋ ํ์คํ Qualys SSL Labs์ ํ
์คํธ์ ์คํจํ๊ฒ ๋ฉ๋๋ค.
๋ ๋ฒ์งธ๋ ์ธ์ฆ ๊ธฐ๊ด์์ ์๋ช ํ ์์ฉ SSL ์ธ์ฆ์์ ๋๋ค. ์ด๋ฌํ ์ธ์ฆ์๋ ๋ธ๋ผ์ฐ์ ์์ ์ฝ๊ฒ ์น์ธ๋๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก Zimbra OSE์ ์์ ์ ์ฉ๋๋ก ์ฌ์ฉ๋ฉ๋๋ค. ์์ฉ ์ธ์ฆ์๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์นํ ์งํ Zimbra OSE 8.8.15๋ Qualys SSL Labs์ ํ ์คํธ์์ A ์ ์๋ฅผ ๋ณด์ฌ์ค๋๋ค. ์ด๋ ํ๋ฅญํ ๊ฒฐ๊ณผ์ด์ง๋ง, ์ฐ๋ฆฌ์ ๋ชฉํ๋ A+ ๊ฒฐ๊ณผ๋ฅผ ๋ฌ์ฑํ๋ ๊ฒ์ ๋๋ค.
Zimbra Collaboration Suite Open-Source Edition์ ์ฌ์ฉํ ๋ Qualys SSL Labs์ ํ
์คํธ์์ ์ต๋ ์ ์๋ฅผ ์ป์ผ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ์๋ฃํด์ผ ํฉ๋๋ค.
1. Diffie-Hellman ํ๋กํ ์ฝ์ ๋งค๊ฐ๋ณ์ ์ฆ๊ฐ
๊ธฐ๋ณธ์ ์ผ๋ก OpenSSL์ ์ฌ์ฉํ๋ ๋ชจ๋ Zimbra OSE 8.8.15 ๊ตฌ์ฑ ์์์๋ Diffie-Hellman ํ๋กํ ์ฝ ์ค์ ์ด 2048๋นํธ๋ก ์ค์ ๋์ด ์์ต๋๋ค. ์์น์ ์ผ๋ก ์ด๋ Qualys SSL Labs์ ํ ์คํธ์์ A+ ์ ์๋ฅผ ๋ฐ๊ธฐ์ ์ถฉ๋ถํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด์ ๋ฒ์ ์์ ์ ๊ทธ๋ ์ด๋ํ๋ ๊ฒฝ์ฐ ์ค์ ์ด ๋ ๋ฎ์์ง ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ ๋ฐ์ดํธ๊ฐ ์๋ฃ๋ ํ zmdhparam set -new 2048 ๋ช ๋ น์ ์คํํ์ฌ Diffie-Hellman ํ๋กํ ์ฝ์ ๋งค๊ฐ๋ณ์๋ฅผ ํ์ฉ ๊ฐ๋ฅํ 2048๋นํธ๋ก ๋๋ฆฌ๊ณ ์ํ๋ ๊ฒฝ์ฐ ๋์ผํ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ๋งค๊ฐ๋ณ์ ๊ฐ์ 3072 ๋๋ 4096๋นํธ๋ก ์ค์ ํ๋ฉด ์์ฑ ์๊ฐ์ด ๋์ด๋์ง๋ง ๋ฉ์ผ ์๋ฒ์ ๋ณด์ ์์ค์ ๊ธ์ ์ ์ธ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
2. ์ฌ์ฉ๋ ๊ถ์ฅ ์ํธ ๋ชฉ๋ก ํฌํจ
๊ธฐ๋ณธ์ ์ผ๋ก Zimbra Collaborataion Suite Open-Source Edition์ ๋ณด์ ์ฐ๊ฒฐ์ ํตํด ์ ๋ฌ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ํธํํ๋ ๊ฐ๋ ฅํ๊ณ ์ฝํ ์ํธํ๋ฅผ ๊ด๋ฒ์ํ๊ฒ ์ง์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ฝํ ์ํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ SSL ์ฐ๊ฒฐ์ ๋ณด์์ ํ์ธํ ๋ ์ฌ๊ฐํ ๋จ์ ์ด ๋ฉ๋๋ค. ์ด๋ฅผ ๋ฐฉ์งํ๋ ค๋ฉด ์ฌ์ฉ๋๋ ์ํธ ๋ชฉ๋ก์ ๊ตฌ์ฑํด์ผ ํฉ๋๋ค.
์ด๋ ๊ฒ ํ๋ ค๋ฉด ๋ค์ ๋ช
๋ น์ ์ฌ์ฉํ์ญ์์ค. zmprov mcf zimbraReverseProxySSLCiphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128:AES256:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4'
์ด ๋ช ๋ น์๋ ๊ถ์ฅ ์ํธ ์ธํธ๊ฐ ์ฆ์ ํฌํจ๋๋ฉฐ ๋๋ถ์ ๋ช ๋ น์ ๋ชฉ๋ก์ ์ ๋ขฐํ ์ ์๋ ์ํธ๋ฅผ ์ฆ์ ํฌํจํ๊ณ ์ ๋ขฐํ ์ ์๋ ์ํธ๋ฅผ ์ ์ธํ ์ ์์ต๋๋ค. ์ด์ ๋จ์ ๊ฒ์ zmproxyctl restart ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ์ญ๋ฐฉํฅ ํ๋ก์ ๋ ธ๋๋ฅผ ๋ค์ ์์ํ๋ ๊ฒ์ ๋๋ค. ์ฌ๋ถํ ํ๋ฉด ๋ณ๊ฒฝ ์ฌํญ์ด ์ ์ฉ๋ฉ๋๋ค.
์ด๋ค ์ด์ ๋ก๋ ์ด ๋ชฉ๋ก์ด ์ ํฉํ์ง ์์ ๊ฒฝ์ฐ ๋ค์ ๋ช
๋ น์ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ๊ฐ์ง ์ฝํ ์ํธ๋ฅผ ์ ๊ฑฐํ ์ ์์ต๋๋ค. zmprov mcf +zimbraSSLExcludeCipherSuites
. ์๋ฅผ ๋ค์ด ๋ค์ ๋ช
๋ น์ zmprov mcf +zimbraSSLExcludeCipherSuites TLS_RSA_WITH_RC4_128_MD5 +zimbraSSLExcludeCipherSuites TLS_RSA_WITH_RC4_128_SHA +zimbraSSLExcludeCipherSuites SSL_RSA_WITH_RC4_128_MD5 +zimbraSSLExcludeCipherSuites SSL_RSA_WITH_RC4_128_SHA +zimbraSSLExcludeCipherSuites TLS_ECDHE_RSA_WITH_RC4_128_SHA
, ์ด๋ RC4 ์ํธ์ ์ฌ์ฉ์ ์์ ํ ์ ๊ฑฐํฉ๋๋ค. AES ๋ฐ 3DES ์ํธํ๋ฅผ ์ฌ์ฉํ์ฌ ๋์ผํ ์์
์ ์ํํ ์ ์์ต๋๋ค.
3. HSTS ํ์ฑํ
Qualys SSL Labs ํ
์คํธ์์ ๋ง์ ์ ์ป์ผ๋ ค๋ฉด ์ฐ๊ฒฐ ์ํธํ ๋ฐ TLS ์ธ์
๋ณต๊ตฌ๋ฅผ ๊ฐ์ ํ๋ ํ์ฑํ๋ ๋ฉ์ปค๋์ฆ๋ ํ์ํฉ๋๋ค. ์ด๋ฅผ ํ์ฑํํ๋ ค๋ฉด ๋ค์ ๋ช
๋ น์ ์
๋ ฅํด์ผ ํฉ๋๋ค. zmprov mcf +zimbraResponseHeader "Strict-Transport-Security: max-age=31536000"
. ์ด ๋ช
๋ น์ ํ์ํ ํค๋๋ฅผ ๊ตฌ์ฑ์ ์ถ๊ฐํ๋ฉฐ, ์๋ก์ด ์ค์ ์ ์ ์ฉํ๋ ค๋ฉด ๋ค์ ๋ช
๋ น์ ์ฌ์ฉํ์ฌ Zimbra OSE๋ฅผ ๋ค์ ์์ํด์ผ ํฉ๋๋ค. zmcontrol ๋ค์ ์์.
์ด๋ฏธ ์ด ๋จ๊ณ์์ Qualys SSL Labs์ ํ ์คํธ๋ A+ ๋ฑ๊ธ์ ํ์ํ์ง๋ง, ์๋ฒ ๋ณด์์ ๋์ฑ ํฅ์์ํค๋ ค๋ ๊ฒฝ์ฐ ์ทจํ ์ ์๋ ๋ค๋ฅธ ์กฐ์น๊ฐ ๋ง์ด ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ํ๋ก์ธ์ค ๊ฐ ์ฐ๊ฒฐ์ ๊ฐ์ ์ํธํ๋ฅผ ํ์ฑํํ ์ ์์ผ๋ฉฐ, Zimbra OSE ์๋น์ค์ ์ฐ๊ฒฐํ ๋ ๊ฐ์ ์ํธํ๋ฅผ ํ์ฑํํ ์๋ ์์ต๋๋ค. ํ๋ก์ธ์ค ๊ฐ ์ฐ๊ฒฐ์ ํ์ธํ๋ ค๋ฉด ๋ค์ ๋ช
๋ น์ ์
๋ ฅํ์ญ์์ค.
zmlocalconfig -e ldap_starttls_supported=1
zmlocalconfig -e zimbra_require_interprocess_security=1
zmlocalconfig -e ldap_starttls_required=true
๊ฐ์ ์ํธํ๋ฅผ ํ์ฑํํ๋ ค๋ฉด ๋ค์์ ์ ๋ ฅํด์ผ ํฉ๋๋ค.
zmprov gs `zmhostname` zimbraReverseProxyMailMode
zmprov ms `zmhostname` zimbraReverseProxyMailMode https
zmprov gs `zmhostname` zimbraMailMode
zmprov ms `zmhostname` zimbraMailMode https
zmprov gs `zmhostname` zimbraReverseProxySSLToUpstreamEnabled
zmprov ms `zmhostname` zimbraReverseProxySSLToUpstreamEnabled TRUE
์ด๋ฌํ ๋ช ๋ น ๋๋ถ์ ํ๋ก์ ์๋ฒ ๋ฐ ๋ฉ์ผ ์๋ฒ์ ๋ํ ๋ชจ๋ ์ฐ๊ฒฐ์ด ์ํธํ๋๊ณ ์ด๋ฌํ ๋ชจ๋ ์ฐ๊ฒฐ์ด ํ๋ก์๋ฉ๋๋ค.
๋ฐ๋ผ์ ์ฐ๋ฆฌ์ ๊ถ์ฅ ์ฌํญ์ ๋ฐ๋ฅด๋ฉด SSL ์ฐ๊ฒฐ ๋ณด์ ํ
์คํธ์์ ๊ฐ์ฅ ๋์ ์ ์๋ฅผ ์ป์ ์ ์์ ๋ฟ๋ง ์๋๋ผ ์ ์ฒด Zimbra OSE ์ธํ๋ผ์ ๋ณด์์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค.
Zextras Suite์ ๊ด๋ จ๋ ๋ชจ๋ ์ง๋ฌธ์ Zextras Ekaterina Triandafilidi ๋ํ์๊ฒ ์ด๋ฉ์ผ๋ก ๋ฌธ์ํ ์ ์์ต๋๋ค. [์ด๋ฉ์ผ ๋ณดํธ]
์ถ์ฒ : habr.com