Apache

۱   مقدمه

پروتکل‌های SSL و TLS برای امن کردن ارتباط میان کاربر و سرور از طریق تصدیق هویت، رمزنگاری و صحت، طراحی و پیاده‌سازی شده است. جهت امن کردن داده‌ها این پروتکل‌ها از cipher suite هایی استفاده می‌کنند. هر cipher suite ترکیبی از الگوریتم‌های تصدیق اصالت‌، رمزنگاری و کد تصدیق هویت پیغام (MAC) است. در زمان پیکربندی TLS/SSL باید تنظیمات به‌درستی انجام‌شده و cipher suite های امن مورد استفاده قرار گیرد. برخی از مهم‌ترین این تنظیمات شامل غیرفعال کردن SSL 2.0 و SSL 3.0، غیرفعال کردن TLS 1.0 Compression و cipher suite های ناامن و استفاده از آخرین نسخه‌ی نرم‌افزارها است. پیکربندی ارائه‌ شده بر روی سروری با مشخصات زیر انجام‌شده است.

نام نرم‌افزار نسخه‌ی مورداستفاده
سیستم‌عامل SMP Debian 4.0.4-1+kali2 (2015-06-03)
OpenSSL

OpenSSL 1.0.1k 8 Jan 2015

Appache

Server version: Apache/2.4.10 (Debian)

جهت امن سازی می‌توان از تغییر قابل پیکربندی قرارگرفته در مسیرهای زیر استفاده کرد:

/etc/apache2/mods-enabled/ssl.conf

/etc/apache2/sites-enabled/default-ssl.conf

/etc/apache2/sites-enabled/default.conf

۲   ارزیابی وضعیت فعلی سرویس‌دهنده

برای ارزیابی وضعیت امنیتی SSL/TLS در سرویس‌دهنده خود از سرویس‌ زیر استفاده نمایید:

https://sslcheck.certcc.ir/

پس از انجام موارد امنیتی زیر مجدداً با استفاده از آدرس‌های فوق سرویس خود را پویش کنید تا از برطرف شدن مشکلات موجود مطمئن شوید.

۳   موارد پیشنهادی برای ارتقای امنیت

۱-۳     تنظیم الگوریتم‌های قدرتمند و Forward secrecy

درصورتی‌که بخواهید از الگوریتم‌های قدرتمند استفاده کنید باید خطوط زیر در فایل پیکربندی ssl.conf اضافه و یا ویرایش گردد. با پیکربندی SSLCipherSuite  به‌صورت زیر می‌توان آن را بهینه و امن کرد:

SSLProtocol all -SSLv2 -SSLv3

SSLHonorCipherOrder on

با پیکربندی SSLCipherSuite  به‌صورت زیر می‌توان آن را  امن کرد:

SSLCipherSuite
HIGH:EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+
ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH+aRSA+RC4:EECDH:EDH+
aRSA:RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4:!MEDIUM

برای محدودتر کردن یک url  خاص (مانند /strong/area ) به‌ نحوی‌ که سرور به ازای آن url از cipher‌های امن استفاده کند، باید به‌صورت زیر عمل کرد:

<Location “/strong/area”>

# but https://hostname/strong/area/ and below

# requires strong ciphers

SSLCipherSuite
HIGH:EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+
ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH+aRSA+RC4:EECDH:EDH+
aRSA:RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4:!MEDIUM

حداقل نیازمندی‌های لازم برای پیکربندی Forward secrecy به‌صورت زیر است:

  • OpenSSL 1.0.1c+
  • Apache 2.4x

پیکربندی این قابلیت، نیاز به دو مرحله دارد:

  1. پیکربندی وب سرور به‌ نحوی‌ که به‌صورت فعال suiteها را انتخاب کند.
  2. پیکربندی رشته‌ Suiteها

با انجام مراحل قبل برای تنظیم الگوریتم‌های قدرتمند، Forward secrecy نیز فعال می‌شود.

۲-۳     به‌روزرسانی نرم‌افزارها و نسخه‌ها

برخی از آسیب‌پذیری‌ها موجود بر روی SSL/TLS مربوط به نسخه‌های نرم‌افزارهای مورداستفاده است. به‌ عنوان نمونه آسیب‌پذیری heartbleed بر روی نسخه‌های قدیمی openssl وجود دارد. این نرم‌افزار باید به آخرین نسخه ارتقا پیدا کند. دستور زیر منجر به به‌روزرسانی نسخه‌های نرم‌افزار شما می‌گردد:

apt-get upgrade openssl

۳-۳     فعال کردن OCSP Stapling

روشی برای بالا بردن سرعت در چک کردن لیست ابطال کلید برای گواهی است. با استفاده از OCSP Stapling  نیاز نیست که سرویس‌گیرنده درخواستی را به سرور OCSP بدهد و با استفاده از اطلاعات مهیا شده همراه گواهی، می‌تواند از باطل نبودن گواهی اطمینان حاصل کند. جهت فعال‌سازی این قابلیت باید خطوط زیر به فایل پیکربندی اضافه گردد. باید دقت گردد که این قابلیت بر روی نسخه‌های بالاتر از ۲٫۳٫۳ قابل فعال‌سازی خواهد بود. این خط باید فایل پیکربندی قرارگرفته در مسیر زیر را ویرایش /etc/apache2/mods-enabled/ssl.conf کرد:

SSLUseStapling On

SSLStaplingCache shmcb:/tmp/ssl_stapling(32768)

SSLStaplingResponderTimeout 5

SSLStaplingReturnResponderErrors off

در صورتی‌ که از فایل‌های پیکربندی مانند default-ssl.conf قرارگرفته در مسیرهای دیگر استفاده می‌شود باید توجه گردد که SSLStaplingCache حتماً بیرون از تگ VirtualHost باشد. بقیه‌ی پارامترها می‌توانند در درون این تگ قرار بگیرند. البته قبل از آن باید مطمئن بود که Intermediate Certificate به‌درستی نصب شده است. باید مسیر این certificate مشابه زیر در فایل پیکربندی قرارداده‌شده باشد.

SSLCACertificateFile /etc/ssl/ca-certs.pem

برای نصب Intermediate Certificate می‌توان از دستورات زیر استفاده کرد، سپس مسیر را در فایل پیکربندی مشابه بالا قرارداد.

cd /etc/ssl

wget -O – https://www.startssl.com/certs/ca.pem https://www
.startssl.com/certs/sub.class1.server.ca.pem | tee -a ca-certs.pem> /dev/null

۴-۳     فعال کردن HSTS

HTTP Strict Transport Security یک بهبود امنیتی برای برنامه‌های تحت وبی است که از پروتکل HTTPS استفاده می‌کنند. وجود این مکانیسم باعث جلوگیری از  Downgrade Attack و  Cookie Hijacking می‌شود. این قابلیت همچنین مرورگر را ملزم می‌کند که حتماً از پروتکل HTTPS برای ارتباط با سرور استفاده کند. برای فعال‌سازی این قابلیت می‌توان به‌صورت زیر عمل کرد.

در ابتدا باید با استفاده از دستور زیر ماژول headers را فعال کرد:

a2enmod headers

همچنین باید قبل از آن در فایل پیکربندی default-ssl.conf خط زیر، بیرون از تگ VirtualHost قرار داده شود:

LoadModule headers_module /usr/lib/apache2/modules/mod_headers.so

سپس باید خط زیر درون تگ اضافه گردد.

Header always set Strict-Transport-Security “max-age=31536000; includeSubDomains”

همچنین جهت اجبار الزام کاربر به استفاده از HTTPS باید خط زیر را درون تگ قرارگرفته در فایل /etc/apache2/sites-enabled/default.conf اضافه کرد:

ServerName example.com

Redirect permanent / https://example.com/

باید به‌جای example.com نام سرور موردنظر قرارگرفته شود.

۵-۳     فعال کردن HPKP

HTTP Public Key Pinning یک قابلیت است که به وب‌سایت‌هایی که از HTTPS استفاده می‌کنند اجازه می‌دهد تا نسبت به جعل هویت حمله‌کننده مقاوم باشند. بدین معنی که تنها CA‌های معتبر، مجاز به امضای گواهی وب‌سایت می‌باشند. در غیر این صورت هر CA قرارگرفته در لیست مرورگر قادر به امضای گواهی خواهد بود. بنابراین امکان جعل هویت را از حمله‌کننده می‌گیرد.

جهت فعال‌سازی این قابلیت باید خط زیر درون تگ قرارگرفته درون فایل default-ssl.conf اضافه گردد:

Header set Public-Key-Pins “pin-sha256=\”klO23nT2ehFDXCfx3eHTDRESMz3asj1muO+4aIdjiuY=\”; pin-sha256=\”633lt352PKRXbOwf4xSEa1M517scpD3l5f79xMD9r9Q=\”; max-age=2592000; includeSubDomains”

۴   مراجع

[۱] https://httpd.apache.org/docs/2.4/ssl/ssl_howto.html

[۲] http://httpd.apache.org/docs/2.0/ssl/ssl_howto.html

[۳] https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers


دریافت نسخه ی PDF