بلاگ/ارتقای امنیت آپاچی با ابزار mod_md Let’s Encrypt در اوبونتو 20.04 LTS
بهروز شده
ارتقای امنیت آپاچی با ابزار mod_md Let’s Encrypt در اوبونتو 20.04 LTS
امنیت آپاچی با ابزار mod_md Let’s Encrypt در اوبونتو 20.04 چگونه انجام میگیرد؟ چگونه یک گواهی رایگان TLS/SSL دریافت کنیم؟ چگونه امنیت آپاچی 2 را در سرور اوبونتو 20.04 LTS برقرار کنیم؟ اینها سؤالاتی است که میخواهیم در این مطلب به آنها پاسخ دهیم. سرور آپاچی با ماژولی به نام mod_md همراه است....
1399/04/082482 بازدید
امنیت آپاچی با ابزار mod_md Let’s Encrypt در اوبونتو 20.04 چگونه انجام میگیرد؟ چگونه یک گواهی رایگان TLS/SSL دریافت کنیم؟ چگونه امنیت آپاچی 2 را در سرور اوبونتو 20.04 LTS برقرار کنیم؟ اینها سؤالاتی است که میخواهیم در این مطلب به آنها پاسخ دهیم.
سرور آپاچی با ماژولی به نام mod_md همراه است. امکان استفاده از این ماژول برای تأیید گواهی با استفاده از پروتکل ACME وجود دارد. در این مطلب نحوه نصب و تنظیمات آپاچی را با یک ماژول mod_md برای تأمین امنیت ترافیک با گواهی TLS/SSL رایگان Let’s Encrypt در سرور اوبونتو 20.04 LTS را مرور خواهیم کرد.
پیشنیازهای کلی
سیستمعامل: لینوکس اوبونتو همراه با آپاچی 2
مجوّزهای کاربری روت
امنیت آپاچی با ابزار mod_md Let’s Encrypt در اوبونتو 20.04
Let’s Encrypt یک گواهی تأیید ورود یا CA است که از پروتکل ACME پیروی میکند. امکان استفاده از این ابزار برای ارائه گواهی TLS/SSL برای سرورهای آپاچی، Nginx و سایر سرورها وجود دارد. در این آموزش، شما از ماژول mod_md برای دستیابی به گواهی رایگان TLS/SSL برای آپاچی 2 در اوبونتو 20.04 استفاده خواهید کرد. همچنین گواهی را به گونهای تنظیم میکنید که به صورت خودکار، تجدید شود.
پروژه نمونه ما به صورت زیر خواهد بود:
دامین – www42.ariaservice.net
پورت اچتیتیپیاس – 443
فایل تنظیمات دامین مجازی -/etc/apache2/sites-available/www42.ariaservice.net.conf
حتماً دقت کنید که سرور آپاچی به صورت استاندارد در سیستم شما نصب شده باشد.
گام ۱) نصب mod_md برای Let’s Encrypt
ابتدا باید بروزرسانیها را با استفاده از فرمان apt انجام دهیم.
php
1sudo apt update2sudo apt upgrade
سپس با اجرای فرمان زیر، ماژول mod_md را نصب کنید.
php
1sudo apt install libapache2-mod-md
فعالسازی ماژول mod_md در اوبونتو 20.04 LTS
برای فعال کردن این ماژول به صورت زیر عمل کنید.
php
1sudo a2enmod md
نمونه خروجی
php
1Enabling module md.2To activate the new configuration, you need to run:3systemctl restart apache2
حتماً دقت کنید که mod_ssl را نیز فعال کرده باشید. برای این منظور فرمان زیر را اجرا کنید.
php
1sudo a2enmod ssl
خروجی
php
1Considering dependency setenvif for ssl:2Module setenvif already enabled3Considering dependency mime for ssl:4Module mime already enabled5Considering dependency socache_shmcb for ssl:6Enabling module socache_shmcb.7Enabling module ssl.8See /usr/share/doc/apache2/README.Debian.gz on how to configure SSL and create self-signed certificates.9To activate the new configuration, you need to run:10systemctl restart apache2
آپاچی 2 میبایست دوباره راهاندازی و یا ریاستارت شود. این کار با کمک فرمان mod_ssl انجام میگیرد.
php
1sudo systemctl reload apache2.service
گام ۲) تنظیمات گواهی SSL
حتماً مطمئن شوید که آپاچی 2 عملکرد خود را دارد و ورودیهای پورت 80 را دریافت میکند. برای برررسی این موضوع میتوانید از فرمان ss یا netstat استفاده کنید.
php
1sudo netstat -tulpn | grep ':80'2## or ##3sudo ss -tulpn | grep ':80'
ServerAdmin webmaster@ariaservice.net : ماژول mod_md از این آدرس ایمیل برای ثبت دامینهای شما در Let’s Encrypt استفاده خواهد کرد.
MDCertificateAgreement accepted : باید شرایط خدمات ارائه شده توسط Let’s Encrypt را تأیید کنید.
MDomain www42.ariaservice.net: نام دامینی که بر اساس آن ماژول mod_md برای ارائه و تجدید گواهیها استفاده میکند. شما میتوانید نام کامل دامین مانند ariaservice.net یا ariaservice.net یا www42.ariaservice.net را وارد کنید. در هر صورت دقت کنید که این دامین با ServerName منطبق باشد.
MDPrivateKeys RSA 4096: تنظیم اندازه و نوع کلیدهای اختصاصی که تولید میشوند.
در اینجا فایل تنظیمات را به صورت کلی مشاهده میکنید.
php
1## Apache with mod_md Let's Encrypt ##2## mod_md config for Let's Encrypt ##3ServerAdmin webmaster@cyberciti.biz4MDCertificateAgreement accepted5MDomain www42.cyberciti.biz6MDPrivateKeys RSA 40967## HTTP port 80 config ##8<VirtualHost *:80>9ServerAdmin webmaster@ariaservice.net10ServerName www42.ariaservice.net11DocumentRoot /home/ariaservice.net/html12DirectoryIndex index.html13ErrorLog ${APACHE_LOG_DIR}/www42.ariaservice.net-error.log14CustomLog ${APACHE_LOG_DIR}/www42.ariaservice.net-access.log combined15# Redirect all http requests to HTTPS (uncomment the following two lines when HTTPS issued)16# RewriteEngine On17# RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]18</VirtualHost>19## HTTPS Config ##20<VirtualHost *:443>21SSLEngine on22ServerAdmin webmaster@ariaservice.net23ServerName www42.ariaservice.net24DocumentRoot /home/ariaservice.net/html25DirectoryIndex index.html26ErrorLog ${APACHE_LOG_DIR}/www42.ariaservice.net-ssl-error.log27CustomLog ${APACHE_LOG_DIR}/www42.ariaservice.net-ssl-access.log combined28# Turn on HTTP/229Protocols h2 http/1.130# Set HTTP Strict Transport Security31Header always set Strict-Transport-Security "max-age=63072000"32</VirtualHost>33## Only enable TLS v1.3 and avoid older protocols ##34SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 -TLSv1.235SSLHonorCipherOrder off36SSLSessionTickets off37## Turn on OCSP Stapling ##38SSLUseStapling On39SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"40## Permission for our DocumentRoot ##41<Directory /home/ariaservice.net/html>42Options Indexes FollowSymLinks43AllowOverride None44Require all granted45</Directory>
فعالسازی mod_rewrite و mod_headers در اوبونتو
قبلاً یک فراخوانی برای دستور صدور مجدد گواهی در تنظیماتمان داشتهایم. اکنون نیاز به ابزار mod_rewrite داریم. برای این منظور فرمان زیر را تایپ کنید.
php
1sudo a2enmod rewrite
php
1Enabling module rewrite.2To activate the new configuration, you need to run:3systemctl restart apache2
فعالسازی ماژول mod_headers
php
1sudo a2enmod headers2Enabling module headers.3To activate the new configuration, you need to run:4systemctl restart apache2
بررسی خطاهای تنظیمات
php
1sudo apache2ctl configtest
php
1Syntax OK
گام ۳) باز کردن HTTPS (به صورت TCP با پورت شماره 443) با استفاده از فایروال UFW در اوبونتو
فرمان ufw زیر را اجرا کنید تا پورت TCP شماره 443 برای همه باز شود.
گام ۴) دریافت یک گواهی SSL با استفاده از ماژول mod_md در اوبونتو
تا به اینجا ماژول mod_md را برای آپاچی در اوبونتو نصب کردیم، تمام ماژول اصلی را فعال کردیم و پورتهای TCP موردنیاز برای فایروال تعریف شد. حالا نوبت به راهاندازی دوباره سرور آپاچی 2 برای دسترسی به گواهی رایگان TLS/SSL با استفاده از Let’s Encrypt است. برای این منظور از فرمان زیر استفاده میشود.
php
1sudo systemctl restart apache2.service
به محض اینکه آپاچی 2 ریاستارت شد، ماژول mod_md با Let’s Encrypt ارتباط برقرار میکند و درخواست یک گواهی برای دامین شما میدهد. معمولاً این روند تا یک دقیقه زمان میبرد. برای بررسی موفقیتآمیز بودن این موضوع میتوانید به فایل تاریخچه خطاهای سرور یا صفحه mod_status آپاچی مراجعه کنید. این چیزی است که در فایل erro.log مشاهده خواهید کرد.
php
1sudo tail -f /var/log/apache2/error.log
امکان استفاده از فرمان grep نیز برای این منظور وجود دارد.
php
1sudo grep 'The Managed Domain' /var/log/apache2/error.log
نمونه خروجی نشان میدهد که Let’s Encrypt یک گواهی رایگان TLS/SSL ارائه داده است.
php
1[Wed May 06 20:17:38.112849 2020] [md:notice] AH10059: The Managed Domain www42.ariaservice.net has been setup and changes will be activated on next (graceful) server restart.
البته میتوان از آدرس وضعیت سرور نیز دیدن کنیم. برای این منظور داریم:
برای فعالسازی گواهی، راهاندازی دوباره سرور آپاچی 2 در اینجا توصیه میشود.
php
1sudo systemctl reload apache2.service
گام ۵) بررسی امنیت ارتباط آپاچی 2
تنها کاری که باید انجام دهید، تایپ فرمان زیر یا استفاده از مرورگری مانند کروم یا فایرفوکس است. در هر صورت، شما باید از دریافت یک اتصال HTTPS مطمئن باشید.
php
1curl -I https://www42.ariaservice.net
و این هم خروجی آزمون SSL Lab
بررسی برقراری امنیت آپاچی باmod_md Let's Encrypt در اوبونتو 20.04 LTS
سرور آپاچی با گواهی Let’s Encrypt TLS/SSL در اوبونتو 20.04 LTS ایمن شده و توسط آزمون SSL Lab تأیید شده است.
گام ۶) تجدید خودکار گواهی SSL با استفاده از ماژول mod_md و watchdog_module
mod_md از ماژول mod_watchdog استفاده میکند که یک ابزار پروگراماتیک برای سایر ماژول برای انجام کارکردهایی مانند تجدید گواهیهای TLS/SSL به صورت دورهای است. به عبارت دیگر، حالت auto-renew نیازمند فعالبودن mod_watchdog در سرور شما خواهد بود. برای آگاهی از فعالبودن ماژول mod_watchdog میتوانید از فرمان زیر استفاده کنید.
در این آموزش، نحوه ایمن کردن آپاچی با استفاده از ماژول mod_md Let’s Encrypt و ایجاد گواهی خودکار TLS/SSL را در سرور اوبونتو 20.04 LTS را فرا گرفتیم. برای اطلاعات بیشتر میتوانید به صفحه رسمی mod_md در اینجا مراجعه کنید.
منبع: Cybercity.biz