میزبانی سایت با کلودفلر و Nginx در سرور مجازی اوبونتو

کلودفلر سرویسی است که مابین بازدیدکننده و سرور صاحب سایت قرار می گیرد و به عنوان یک پراکسی معکوس برای سایت ها عمل می کند. کلودفلر یک شبکه تحویل محتوا  (CDN )را فراهم می کند در کنار سرویس های کاهش حملات DDOS و خدمات سرور نام دامنه توزیع شده.
Nginx یک وب سرور محبوب است که مسئول میزبانی سایت برخی از سایت های پرترافیک و بزرگ در اینترنت است. برای سازمانها یک امر متداول است که سایت های میزبانی شده توسط nginx و استفاده کننده از کلودفلر را از نظر CDN و ارائه کننده DNS ، خدمت رسانی کنند.
در این مقاله شما سایت خود را که با Nginx پیاده سازی شده است با گواهینامه Origin CA ارائه شده توسط کلودفلر امن خواهید کرد و Nginx را برای استفاده از درخواست های تایید اعتبار ، پیکربندی خواهید کرد. مزایای استفاده از این تنظیمات میزبانی سایت این است که از CDN کلودفلر و DNS سریع استفاده کنید، در حالی که اطمینان حاصل کنید که تمام اتصالات از طریق کلودفلر عبور می کنند. این مانع از رسیدن هر گونه درخواست مخرب به سرور شما می شود.

پیش نیازها

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

  • سرور اوبونتو
  • Nginx نصب شده بر روی سرور شما (برای آموزش می توانید به این لینک مراجعه کنید)
  • اکانت کلود فلر
  • یک دامنه ثبت شده که به اکانت کلودفلر شما اضافه شده باشد که به سرور Nginx شما اشاره کند.(برای انجام این مورد این مقاله را چک کنید : چطور حملاتDDOS به سایت خود را توسط اکانت کلودفلر دفع کنید)
  • یک سرور Nginx که پیکربندی تنظیمات دامنه در آن انجام شده باشد.(برای انجام این مورد از این لینک کمک بگیرید)

    گام اول – ایجاد یک گواهینامه Origin CA TLS

کلود فلر به شما اجازه می دهد که یک گواهینامه رایگان TLS با امضا کلودفلر بر روی سرور Nginx خود نصب کنید.با استفاده از این گواهینامه می توانید اتصالات بین سرورهای کلودفلر و سرور Nginx خود را امن کنید.
برای ایجاد گواهینامه Origin CA در داشبورد اکانت کلودفلر خود به قسمت Crypto بروید .از آنجا در بخش Origin Certificates بر روی دکمه Create Certificate کلیک کنید.

گرینه Let CloudFlare generate a private key and a CSR را به صورت انتخاب شده باقی بگذارید.

 

بر روی Next کلیک کرده و یک گفتگو با Origin Certificate و Private key را خواهید دید. شما باید هر دو را از کلودفلر به سرور خود انتقال دهید.

ما از دایرکتوری /etc/ssl/certs در سرور برای نگهداری Origin Certificate استفاده خواهیم کرد. دایرکتوری /etc/ssl/private فایل Private key را نگهداری خواهد کرد. هر دو پوشه قبلا در سرور وجود دارند.
در ابتدا محتویات Origin Certificate نمایش داده شده در جعبه گفتگو در مرورگر خود را کپی کرده و سپس در سرورتان فایل /etc/ssl/certs/cert.pem را برای ویرایش باز کنید.

sudo nano /etc/ssl/certs/cert.pem

محتویات گواهینامه را به فایل الحاق کرده سپس ذخیره کرده و از ویرایشگر خارج شوید.

سپس به مرورگر خود برگشته و محتویات Private key را کپی کنید .فایل /etc/ssl/private/key.pem را برای ویرایش باز کنید .

sudo nano /etc/ssl/private/key.pem

کلید را به فایل الحاق کرده ، فایل را ذخیره کرده و از ویرایشگر خارج شوید.

هشدار : گواهینامه Origin Certificate فقط توسط کلودفلر مورد اعتماد است و بنابراین فقط باید توسط سرورهایی که به صورت فعال به کلودفلر متصل هستند استفاده شود. اگر در هر حالتی کلودفلر متوقف یا غیرفعال شود گواهینامه Origin CA شما خطای گواهینامه ی غیر قابل اعتماد را نشان خواهد داد.
اکنون که فایل های گواهینامه و کلید را به سرورتان کپی کردید، باید تنظیمات Nginx را برای استفاده از آنها به روزرسانی کنید.

گام دوم- نصب گواهینامه Origin CA در Nginx

در قسمت قبلی شما origin certificate و private key را با استفاده از داشبورد کلودفلر ایجاد کرده و فایل ها را در سرورتان ذخیره کردید. حالا پیکربندی Nginx را برای سایت خود با استفاده از origin certificate و private key برای امن کردن اتصالات بین سرورهای کلودفلر و سرور خود ، به روز رسانی خواهید کرد.
Nginx یک بلوک سرور پیش فرض را در طول نصب ایجاد می کند. اگر وجود داشته باشد آن را حذف کنید ، چون قبلا یک بلاک سرور سفارشی شده برای دامنه خود پیکربندی کرده اید:

sudo rm /etc/nginx/sites-enabled/default

سپس فایل تنظیمات Nginx را برای دامنه خود باز کنید:

sudo nano /etc/nginx/sites-available/example.com

فایل باید مثل زیر باشد:

example.com’>/etc/nginx/sites-available/example.com
server {
listen 80;
listen [::]:80;

root /var/www/example.com/html;
index index.html index.htm index.nginx-debian.html;

server_name example.com www.example.com;

location / {
try_files $uri $uri/ =404;
}
}

ما فایل تنظیمات Nginx را برای انجام این موارد ویرایش خواهیم کرد:

  • باز کردن پورت ۸۰ و هدایت تمام درخواست ها به https
  •  باز کردن پورت ۴۴۳ و استفاده از origin certificate و private key که شما در بخش قبلی اضافه کرده اید.

فایل را ویرایش کنید آن باید مشابه زیر باشد:

example.com’>/etc/nginx/sites-available/example.com
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
return 302 https://$server_name$request_uri;
}

server {

# SSL configuration

listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl on;
ssl_certificate /etc/ssl/certs/cert.pem;
ssl_certificate_key /etc/ssl/private/key.pem;

server_name example.com www.example.com;

root /var/www/example.com/html;
index index.html index.htm index.nginx-debian.html;

location / {
try_files $uri $uri/ =404;
}
}
فایل را ذخیره کرده و از ویرایشگر خارج شوید :

سپس برای اطمینان تست کنید که خطای نحوی در هیچ یک از فایل های تنظیمات Nginx وجود نداشته باشد:

sudo nginx –t

اگر هیچ مشکلی یافت نشد Nginx را برای فعالسازی تغییرات ریستارت کنید.

sudo systemctl restart nginx

حالا در داشبورد کلودفلر به قسمت Crypto بروید و حالت ssh را روی Full بگذارید.

این کلودفلر را آگاه می کند که همیشه اتصالات بین کلودفلر و سرور Nginx شما را رمزنگاری کند.

حالا سایت خود را باز کنید و تایید کنید که به صورت صحیح تنظیم شده است. شما صفحه خانگی تان را خواهید دید که نمایش داده می شود و مرورگر گزارش خواهد داد که سایت امن است.
در قسمت بعدی ، شما Authenticated Origin Pulls را نصب خواهید کرد برای تایید اینکه سرور شما در واقع با کلودفلر ارتباط دارد و با سرورهای دیگر ارتباط ندارد. با انجام اینکار Nginx فقط برای پذیرفتن درخواست هایی که از گواهینامه کلاینت معتبر از کلودفلر استفاده می کنند، پیکربندی خواهد شد و درخواست هایی که از کلودفلر گذر نکرده اند، رها خواهند شد.

گام سوم – راه اندازی Authenticated Origin Pulls

گواهینامه Origin CA به کلادفلر برای تایید اینکه با سرور صحیح ارتباط دارد کمک خواهد کرد . اما سرور Nginx شما چطور تایید می کند که واقعا با کلادفلر ارتباط دارد؟ تایید هویت کلاینت TLS را وارد کنید .

در دست دادن دوطرفه TLS تایید هویت کلاینت ، هر دو طرف یک گواهینامه را برای تایید فراهم می کنند. سرور فقط برای پذیرفتن درخواست هایی که از یک گواهینامه کلاینت معتبر از کلودفلر استفاده می کنند ، پیکربندی شده است. درخواست هایی که از کلودفلر گذر نکرده اند، به علت نداشتن گواهینامه کلودفلر رها خواهند شد. این به این معنی است که مهاجمان نمی توانند مانع اقدام امنیتی کلودفلر شوند و به طور مستقیم به سرور Nginx شما متصل شوند.
کلودفلر گواهی های امضا شده توسط CA را با گواهینامه زیر ارائه می کند

—–BEGIN CERTIFICATE—–
MIIGBjCCA/CgAwIBAgIIV5G6lVbCLmEwCwYJKoZIhvcNAQENMIGQMQswCQYDVQQG
EwJVUzEZMBcGA1UEChMQQ2xvdWRGbGFyZSwgSW5jLjEUMBIGA1UECxMLT3JpZ2lu
IFB1bGwxFjAUBgNVBAcTDVNhbiBGcmFuY2lzY28xEzARBgNVBAgTCkNhbGlmb3Ju
aWExIzAhBgNVBAMTGm9yaWdpbi1wdWxsLmNsb3VkZmxhcmUubmV0MB4XDTE1MDEx
MzAyNDc1M1oXDTIwMDExMjAyNTI1M1owgZAxCzAJBgNVBAYTAlVTMRkwFwYDVQQK
ExBDbG91ZEZsYXJlLCBJbmMuMRQwEgYDVQQLEwtPcmlnaW4gUHVsbDEWMBQGA1UE
BxMNU2FuIEZyYW5jaXNjbzETMBEGA1UECBMKQ2FsaWZvcm5pYTEjMCEGA1UEAxMa
b3JpZ2luLXB1bGwuY2xvdWRmbGFyZS5uZXQwggIiMA0GCSqGSIb3DQEBAQUAA4IC
DwAwggIKAoICAQDdsts6I2H5dGyn4adACQRXlfo0KmwsN7B5rxD8C5qgy6spyONr
WV0ecvdeGQfWa8Gy/yuTuOnsXfy7oyZ1dm93c3Mea7YkM7KNMc5Y6m520E9tHooc
f1qxeDpGSsnWc7HWibFgD7qZQx+T+yfNqt63vPI0HYBOYao6hWd3JQhu5caAcIS2
ms5tzSSZVH83ZPe6Lkb5xRgLl3eXEFcfI2DjnlOtLFqpjHuEB3Tr6agfdWyaGEEi
lRY1IB3k6TfLTaSiX2/SyJ96bp92wvTSjR7USjDV9ypf7AD6u6vwJZ3bwNisNw5L
ptph0FBnc1R6nDoHmvQRoyytoe0rl/d801i9Nru/fXa+l5K2nf1koR3IX440Z2i9
+Z4iVA69NmCbT4MVjm7K3zlOtwfI7i1KYVv+ATo4ycgBuZfY9f/2lBhIv7BHuZal
b9D+/EK8aMUfjDF4icEGm+RQfExv2nOpkR4BfQppF/dLmkYfjgtO1403X0ihkT6T
PYQdmYS6Jf53/KpqC3aA+R7zg2birtvprinlR14MNvwOsDOzsK4p8WYsgZOR4Qr2
gAx+z2aVOs/87+TVOR0r14irQsxbg7uP2X4t+EXx13glHxwG+CnzUVycDLMVGvuG
aUgF9hukZxlOZnrl6VOf1fg0Caf3uvV8smOkVw6DMsGhBZSJVwao0UQNqQIDAQAB
o2YwZDAOBgNVHQ8BAf8EBAMCAAYwEgYDVR0TAQH/BAgwBgEB/wIBAjAdBgNVHQ4E
FgQUQ1lLK2mLgOERM2pXzVc42p59xeswHwYDVR0jBBgwFoAUQ1lLK2mLgOERM2pX
zVc42p59xeswCwYJKoZIhvcNAQENA4ICAQDKDQM1qPRVP/4Gltz0D6OU6xezFBKr
LWtDoA1qW2F7pkiYawCP9MrDPDJsHy7dx+xw3bBZxOsK5PA/T7p1dqpEl6i8F692
g//EuYOifLYw3ySPe3LRNhvPl/1f6Sn862VhPvLa8aQAAwR9e/CZvlY3fj+6G5ik
۳it7fikmKUsVnugNOkjmwI3hZqXfJNc7AtHDFw0mEOV0dSeAPTo95N9cxBbm9PKv
qAEmTEXp2trQ/RjJ/AomJyfA1BQjsD0j++DI3a9/BbDwWmr1lJciKxiNKaa0BRLB
dKMrYQD+PkPNCgEuojT+paLKRrMyFUzHSG1doYm46NE9/WARTh3sFUp1B7HZSBqA
kHleoB/vQ/mDuW9C3/8Jk2uRUdZxR+LoNZItuOjU8oTy6zpN1+GgSj7bHjiy9rfA
F+ehdrz+IOh80WIiqs763PGoaYUyzxLvVowLWNoxVVoc9G+PqFKqD988XlipHVB6
Bz+1CD4D/bWrs3cC9+kk/jFmrrAymZlkFX8tDb5aXASSLJjUjcptci9SKqtI2h0J
wUGkD7+bQAr+7vr8/R+CBmNMe7csE8NeEX6lVMF7Dh0a1YKQa6hUN18bBuYgTMuT
QzMmZpRpIBB321ZBlcnlxiTJvWxvbCPHKHj20VwwAz7LONF59s84ZsOqfoBv8gKM
s0s5dsq5zpLeaw==
—–END CERTIFICATE—–

شما همچنین می توانید گواهی نامه را به طور مستقیم از کلودفلر از اینجا دانلود کنید.
این گواهی نامه را کپی کنید.
سپس فایل /etc/ssl/certs/cloudflare.crt را برای نگهداری گواهی نامه کلادفلر ایجاد کنید.

sudo nano /etc/ssl/certs/cloudflare.crt

گواهی نامه را به فایل الحاق کرده ، ذخیره کرده و خارج شوید.

حالا پیکربندی Nginx خود را برای استفاده از TLS Authenticated Origin Pullsبه روز رسانی کنید . فایل پیکربندی دامنه خود را باز کنید :

sudo nano /etc/nginx/sites-available/example.com

دایرکتوری های ssl_client_certificate و ssl_verify_client همانطور که در مثال زیر نشان داده شده اضافه کنید:

example.com’>/etc/nginx/sites-available/example.com
. . .

server {

# SSL configuration

listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl on;
ssl_certificate /etc/ssl/certs/cert.pem;
ssl_certificate_key /etc/ssl/private/key.pem;
ssl_client_certificate /etc/ssl/certs/cloudflare.crt;
ssl_verify_client on;

. . .

فایل را ذخیره کرده و از ویرایشگر خارج شوید.

سپس برای اطمینان تست کنید که هیچ خطای نحوی در پیکربندی Nginx وجود نداشته باشد.

sudo nginx –t
اگر هیچ مشکلی یافت نشد ، Nginx را برای فعال کردن تغییرات ریستارت کنید.

sudo systemctl restart nginx

سرانجام ، برای فعال کردن Authenticated Pulls ، از داشبورد کلادفلر قسمت Crypto را باز کرده و گزینه Authenticated Origin Pulls را تغییر وضعیت دهید.


حالا سایت خود را باز کرده https://example.com و تایید کنید که به صورت صحیح نصب شده است ، مثل قبل شما صفحه خانگی تان را خواهید دید که نمایش داده می شود.
برای تایید اینکه سرور شما فقط درخواست های امضا شده توسط گواهی نامه کلودفلر را قبول خواهد کرد گزینه Authenticated Origin Pulls را برای غیر فعال کردن تغییر وضعیت دهید و سپس سایت خود را ریلود کنید . شما باید پیغام خطای زیر را دریافت کنید :

اگر درخواستی توسط گواهی نامه کلودفلر امضا نشده باشد سرور شما یک خطا را ایجاد می کند .
حالا که می دانید آن به صورت صحیح کار می کند ، به قسمت Crypto در داشبورد کلودفلر بروید و دوباره گزینه Authenticated Origin Pulls را عوض کنید تا آن را فعال کنید.

نتیجه گیری

در این مقاله شما با استفاده از رمزنگاری ترافیک بین کلودفلر و سرور Nginx با استفاده از Certificate Origin CA از کلودفلر، وبسایت راه اندازی شده با Nginx خود را امن کردید. پس از آن شما Authenticated Origin را بر روی سرور Nginx تنظیم کردید تا اطمینان حاصل کنید که فقط درخواست های سرور کلودفلر را پذیرفته و مانع اتصال هر کس دیگر از اتصال مستقیم به سرور Nginx می شود.

 

منبع

برگردان : آرزو رنجبرپور

لینک کوتاه مقاله :