شرکتها و سازمانهای کوچک عمدتاً از شرکتهای سرویسدهنده Hosting برای پست الکترونیک خود استفاده میکنند اما شرکتهای متوسط و بزرگ به دلیل مسائل امنیتی و حساسیت سرویس پست الکترونیک برای آنان، ناچار به استفاده از یک Mail Server اختصاصی در محل خود هستند.
برای تأمین محرمانگی و جامعیت دادههای مبادله شده میتوان از پروتکلهای استانداردی که بدین منظور طراحی شده استفاده کرد. در حال حاضر مهمترین پروتکل رمزنگاری که در سطح اینترنت برای رمزنگاری دادههای لایه کاربرد و تأمین امنیت ارتباطات استفاده میشود، پروتکل SSL/TLS است. در این گزارش مراحل نصب و ایمنسازی پروتکل SSL/TLS بر روی Zimbra نسخه ۸٫۶٫۰_GA_1194.NETWORK بیان شده است ولی تفاوتهای موجود در برخی نسخهها هم ذکر شده است.
۱ تولید یک درخواست امضا گواهی
برای تولید درخواست امضا گواهی، میبایست بر اساس مستندات مرکز صدور گواهی مورد نظر، کلید عمومی و خصوصی مربوط به سرویسدهنده خود را ایجاد نمایید. کلید خصوصی میبایست نزد شما بهصورت محرمانه باقی بماند و حتی نباید برای مرکز صدور گواهی نیز ارسال شود. کلید عمومی در قالب (۱)CSR برای مرکز صدور گواهی ارسال میشود تا مرکز صدور گواهی پس از انجام بررسیهای لازم آن را امضا کند. در حقیقت در CSR شما تنها کلید عمومی و دامنه/دامنههای مدنظر و مشخصات سازمان خود را برای مرکز صدور گواهی ارسال میکنید. با توجه به نوع گواهی مد نظر، مرکز صدور گواهی ممکن است مدارک دیگری را نیز از شما درخواست نماید. توضیحات بیشتر در این زمینه در مستند ایجاد شده توسط مرکز پژوهشی آپا دانشگاه امیرکبیر در آدرس زیر قرار دارد:
در این گزارش مراحل ایجاد فایل CSR را در Zimbra بیان میکنیم. برای انجام این کار، مرورگر خود را باز کرده و به کنسول مدیریتی Zimbra وارد شوید و به مسیر Home > Configure > Certificates بروید:
در پنجره کنسول مدیریتی وارد بخش تنظیمات شوید و سپس گزینه ” Install Certificate” را انتخاب کنید:
سرور هدف را به منظور تولید فایلهای SSL مانند CSR و کلید خصوصی، انتخاب کنید.
در گام بعد، گزینه “Generate the CSR for the commercial certificate authorizer” را به منظور تولید CSR برای یک مرکز صدور گواهی تجاری، انتخاب کنید.
در این پنجره، شما باید تنظیمات بعدی را انتخاب کنید:
- در ابتدا گزینه SHA256 را در قسمت digest انتخاب کنید. همچنین توجه کنید که گزینه SHA1 هم وجود دارد ولی از امنیت کافی برخوردار نیست.
- طول کلید را ۲۰۴۸ بیت یا بیشتر در نظر بگیرید.
- نام مشترک(۲) (CN) باید نام (۳)FQDN که شما میخواهید از آن استفاده کنید، باشد. اگر شما در حال استفاده از یک سرور تنها هستید، توصیه میشود که FQDN و نام میزبان(۴) یکسان باشند.
- اگر میخواهید از یک گواهی Wildcard(که این نوع گواهی همه زیر دامنههای دامنه اصلی را پوشش میدهد) برای Zimbra استفاده کنید گزینه مربوطه را انتخاب کنید.
- در قسمت مربوط به (۵)SAN میتوانید نامهای دیگری را هم (اگر میخواهید از یک گواهی Multi-SAN استفاده کنید) انتخاب کنید.
حالا فایل CSR شما آماده است و شما میتوانید آن را دانلود کنید(یا از مسیر /opt/zimbra/ssl/zimbra/commercial/commercial.csr دریافت کنید) و به مرکز صدور گواهی SSL ارسال کنید. مرکز صدور گواهی، کلید عمومی شما را امضا کرده و یک فایل crt به شما تحویل می دهد.
به منظور چک کردن اعتبار CSR، میتوانید به عنوان مثال از اینجا استفاده کنید.
۲ نصب گواهی SSL
به منظور گرفتن گواهی SSL برای zimbra یک پنجره جدید از Certificate Installation Wizard باز کنید(این ابزار در واقع به شما کمک خواهد کرد تا یک گواهی را به سرعت بسازید و اعمال کنید). در اینجا مشاهده میکنید که دو روش(خود-امضا و تجاری) برای این کار وجود دارد که در ادامه آنها را شرح میدهیم.
۱-۲ تولید و نصب گواهینامه SSL خود-امضا
گواهی خود-امضا(۶) به گواهیای گفته میشود که خود zimbra آن را امضا میکند. این گواهی رایگان است و ممکن است مرورگرها آن را یک گواهی صادره از CA نامعتبر تشخیص دهند. برای تولید گواهی خود-امضا، به مسیر Configure>Select Install Certificate بروید و گامهای زیر را دنبال کنید.
در گام اول گزینه “ “Install the self-signed certificate را انتخاب کنید:
با بررسی گزینههای مورد نظر به مرحله بعد بروید.
ابتدا باید مطمئن شوید که طول کلید ۲۰۴۸ بیتی انتخاب کردهاید و همینطور باقی فیلدها هم باید به درستی بررسی شوند.
در این قسمت شما میتوانید مدت زمان مدنظر خود را به منظور اعتبار گواهی SSL وارد کنید. به خاطر آورید که این یک گواهی خود-امضا است و اگر شما نقشهای برای تعویض آن در آینده ندارید، میتوانید زمانی بیشتر از یک سال را انتخاب کنید و سپس دکمه Install را بزنید.
مشاهده میکنیدگواهی SSL خود-امضا هم اکنون در سرور Zimbra در حال نصب است:
هنگامی که فرآیند نصب به پایان رسید، باید سرور ZCS را به منظور اعمال تغییرات، راهاندازی مجدد(۷) نمود.
به منظور انجام این عمل، دستور زیر را در کنسول توسط کاربر Zimbra وارد کنید:
su zimbra zmcontrol restart |
---|
اگر شما به https://mail.domain.com بروید، مشکل گواهی SSL را در مرورگر خود به شکل زیر خواهید داشت.
۲-۲ نصب گواهی SSL تجاری
گواهیهای تجاری، وابسته به انتخاب شما دارای هزینههای مختلفی هستند که باید جزئیات دقیق مراحل ادارای را از مرکز صدور گواهی مورد نظر پیگیری کنید و همین طور میتوانید برای اطلاعات بیشتر در این زمینه، به مستند ارائه شده توسط مرکز پژوهشی آپا دانشگاه امیرکبیر در آدرس زیر مراجعه نمایید:
برای نصب یک گواهی تجاری در zimbra، در این قسمت گزینه ” Install the commercial signed certificate” را انتخاب کرده و برای ادامه Next را بزنید:
فایلهای ضروریای که قبلا گرفتهاید را بارگذاری کنید:
- گواهینامه: فایل گواهی SSL (.crt)
- CA ریشه: گواهیهای SSL مربوط به CA ریشه (.crt)
- CA میانی: CAهای میانی (.crt)
ممکن است در این قسمت گزینههای دیگری برای وارد کردن CA میانی باشد که اگر شما تنها یک گواهی میانی را از CA خود گرفتهاید، میتوانید موارد دیگر را نادیده بگیرید.
روی گزینه “Install” کلیک کنید:
و در آخر سرویسهای Zimbra را به منظور اعمال تغییرات، راهاندازی مجدد کنید.
۳ پیکربندی و ایمنسازی گواهی SSL
قبل از اینکه تنظیمات ایمنسازی SSL را انجام دهید، ابتدا با توجه به مراحل زیر، آخرین وصل(۸) مربوط به Zimbra را نصب کنید. در شکل زیر نسخه zimbra را قبل از نصب وصله، مشاهده میکنید:
و برای نصب وصله مورد نظر مراحل زیر را انجام میدهیم:
و در انتها مشاهده میکنید که وصله P6 روی Zimbra نصب شده است.
در ادامهی این گزارش، هدف پیکربندی امن پروتکل SSL/TLS است. برای کشف آسیبپذیریها در سرور مورد نظر، ابتدا آن را توسط ابزار زیر که توسط پژوهشکده آپای دانشگاه صنعتی امیرکبیر طراحی شده است، بررسی کرده و سپس برای رفع مشکلات آن اقدام میکنیم:
https://sslcheck.certcc.ir
در دو شکل زیر، مشکلات امنیتی SSL و نمره دریافتی Zimbra را از سایت (https://sslcheck.certcc.ir) را مشاهده میکنید که در ادامه قصد داریم این مشکلات را برطرف کرده تا نمره کامل دریافت گردد.
۱-۳ حل مشکل استفاده از RC4
الگوریتم RC4 دارای نقاط ضعف قابل بهرهبرداری است و بهتر است از آن استفاده نشود. برای غیرفعال سازی آن در Zimbra، از دستورات زیر استفاده میکنیم. صحت اجرای این دستورات در ZCS 8.6، ZCS 8.5 و ZCS 8.0 بررسی شده است.
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 |
---|
حال بعد از غیرفعال سازی RC4، نمره کمی ارتقا پیدا کرده است که در شکل زیر قابل مشاهده است.
۲-۳ حل مشکل OpenSSL Padding Oracle
هنگامی که ارتباط از AES CBC استفاده میکند و سرور AES-IN را پشتیبانی میکند، حملهکننده man-in-the-middle با استفاده از این آسیبپذیری میتواند ترافیک را رمزگشایی کند. برای برطرف کردن این آسیبپذیری باید OpenSSL مورد استفاده در Zimbra به روز رسانی شود که به صورت زیر میتوان این کار را انجام داد:
(as root) ۱) cd /opt/zimbra ۲) mv openssl-OLDVERSION openssl-OLDVERSION.OLD ۳) tar xfz /tmp/openssl-NEWVERSION.tgz (as user zimbra) ۴) su – zimbra ۵) zmcontrol restart;” |
---|
همانطور که در شکل زیر مشاهده میکنید، این آسیبپذیری برطرف شده است.
۳-۳ حل مشکل پارامترهای ضعیف دیفی هلمن
به منظور حل این مشکل، شما میتوانید سرور خود را به صورت زیر پیکربندی کنید. صحت اجرا این دستورات در ZCS 8.6 و ZCS 8.5 بررسی شده است.
cd /opt/zimbra/conf openssl dhparam -out dhparams.pem 2048 chown zimbra:zimbra dhparams.pem |
---|
و بعد از آن به ویرایش فایلهای زیر بپردازید:
/opt/zimbra/conf/nginx/templates/nginx.conf.web.https.default.template /opt/zimbra/conf/nginx/templates/nginx.conf.web.https.template |
---|
و خط زیر را در آنها (به صورتی که در شکلهای زیر نشان داده شده است) اضافه کنید:
ssl_dhparam /opt/zimbra/conf/dhparams.pem; |
---|
همانطور که در شکل زیر قابل مشاهده است، این مشکل برطرف شده و نمره کامل دریافت شده است.
۴-۳ پشتیبانی از Strict Transport Security
Strict Transport Security یک بهبود امنیتی برای برنامههای تحت وب است که از HTTPS استفاده میکنند. این بهبود امنیتی سبب میشود که مرورگر به صورت خودکار تمامی ارتباطات را به صورت https یا امن برقرار نماید و از برقراری ارتباط به صورت http (حتی در صورت درخواست کاربر) جلوگیری کند.
برای انجام این کار نیاز است تا دستورات زیر را اجرا کنید که صحت اجرای این دستورات در ZCS 8.7، ZCS 8.6 و ZCS 8.0 بررسی شده است:
zmprov mcf +zimbraResponseHeader “Strict-Transport-Security: max-age=31536000” zmcontrol restart |
---|
در صورتی که دستور وارد شده در کادر بالا این مشکل را برطرف نکرد، میتوانید از دستورات زیر استفاده کنید.
نیاز است تا بعد از گزینه ssl_verify_depth در دو فایل زیر:
/opt/zimbra/conf/nginx/templates/nginx.conf.web.https.default.template /opt/zimbra/conf/nginx/templates/nginx.conf.web.https.template |
---|
خط، add_header Strict-Transport-Security max-age=15768000; اضافه گردد.
شکل زیر نشان میدهد که این مشکل حل شده است.
۵-۳ حل مشکلات امنیتی پروتکل SMTP
-
- غیر فعال کردن الگوریتمهای رمزنگاری ضعیف:
For ZCS 8.5 , 8.6
zmprov mcf zimbraMtaSmtpdTlsCiphers high Zmcontrol restart For ZCS 8.0 and previous zmlocalconfig -e smtpd_tls_ciphers=high |
---|
بعد از ۲ دقیقه، postfix بهروز رسانی میشود.
-
-
- حل مشکل استفاده از پارامترهای ضعیف دیفی هلمن:
-
برای حل این مشکل، مسیر کلیدهای دیفی هلمن که قبلا تولید کردیم را به فایل مورد نظر اضافه میکنیم.
Zmcontrol restart
۴ منابع
[۱] https://wiki.zimbra.com/wiki/Administration_Console_and_CLI_Certificate_Tools
[۲] https://www.sslsupportdesk.com/ssl-installation-instructions-for-zimbra-8-x-x
[۳] https://wiki.zimbra.com/wiki/Cipher_suites
[۴] https://wiki.zimbra.com/wiki/Security/Collab/logjam
[۵] https://wiki.zimbra.com/wiki/Postfix_PCI_Compliance_in_ZCS
(۱) Certificate Signing Request
(۲) Common Name
(۳) Fully Qualified Domain Name
(۴) Hostname
(۵) Subject Alternative Name
(۶) Self-Signed
(۷) restart
(۸) Patch
ثبت ديدگاه