• ایرانشل
  • وبلاگ
    • مفاهیم امنیت شبکه
    • معرفی راهکارها و سرویس‌های امنیتی
    • آموزش‌‌ راهکارهای امنیت شبکه
    • تهدیدات امنیتی
  • اخبار
  • دوره‌های امنیت
    • مسیرهای شغلی امنیت سایبری

ورود

رمز عبور را فراموش کرده اید؟

هنوز عضو نشده اید؟ عضویت در سایت
ایرانشل
  • ایرانشل
  • وبلاگ
    • مفاهیم امنیت شبکه
    • معرفی راهکارها و سرویس‌های امنیتی
    • آموزش‌‌ راهکارهای امنیت شبکه
    • تهدیدات امنیتی
  • اخبار
  • دوره‌های امنیت
    • مسیرهای شغلی امنیت سایبری
ورود و ثبت نام

وبلاگ

وبلاگ > آموزش‌‌ راهکارهای امنیت شبکه > نحوه امن سازی Nginx از طریق Let’s Encrypt SSL

نحوه امن سازی Nginx از طریق Let’s Encrypt SSL

آموزش‌‌ راهکارهای امنیت شبکه
ارسال شده توسط ایرانشل
31 جولای 2020
992 بازدید

امن کردن سایت خود با Let’s Encrypt SSL 

Let’s Encrypt یک مرجع صدور گواهی کاملا رایگان و اتوماتیک است که توسط گروه ISRG یا Internet Security Group برای ارایه گواهی‌های رایگان SSL ایجاد شده است

 

گواهی‌هایی که توسط Let’s Encrypt صادر می‌شود برای همه مروگرها تا 90 از زمان صدورشان معتبر می‌باشند.

nginx-lets-encrypt-qradar.ir

نصب SSL از Let’s Encrypt

در این قسمت نحوه نصب و راه اندازی گواهی SSL از Let’s Encrypt بر روی Ubuntu 20.04 جهت امن‌سازی وب سرور Nginx آموزش داده می‌شود. همچنین نحوه تنظیم Nginx برای استفاده از گواهی SSL و نحوه فعال سازی HTTP/2 نیز نشان داده شده است.

نیازمندی‌ها

قبل از شروع حتما از وجود نیازمندی‌های زیر مطمئن شوید.

  • استفاده از دامنه‌ای معتبر. ما در اینجا از دامنه qradar.ir استفاده می‌کنیم.
  • اطمینان از نصب و فعال بودن وب سرور Nginx
  • تنظیم بودن فایروال برای عبور ترافیک بر روی پورت‌های 80 و 443 بر روی Firewall سرور Ububtu

نصب Certbot

ما در اینجا از Certbot برای دریافت و تمدید گواهی استفاده خواهیم کرد.

Certbot یک ابزار ساده و کامل برای اتوماتیک کردن کار دریافت و تمدید گواهی‌های SSL از Let’s Encrypt و تنظیم سرورها برای استفاده از گواهی SSL می‌باشد.

پکیج Certbot به صورت پیش‌فرض در Repositoryهای Ubuntu وجود دارد. برای نصب آن کافیست دستورات زیر را اجرا نمایید.

sudo apt update $

sudo apt install certbot $

ایجاد یک گروه diffe-Hellman قدرتمند

Deffi-Hellman Key exchange یک متد امن برای تبادل کلیدهای رمزنگاری، تحت یک کانال ارتباطی ناامن می‌باشد. برای ایجاد گروه DH جدید با طول کلید 2048 بیت از دستور زیر استفاده کنید.

sudo openssl dhgroup -out /etc/ssl/certs/dhparam.pem 2048 $

شما می‌توانید از طول کلید 4096 بیت نیز استفاده کنید، اما ایجاد این کلید ممکن است بیش از 30 دقیقه طول بکشد.

دریافت گواهی Let’s Encrypt SSL

برای دریافت گواهی برای نام دامنه qradar.ir از افزونه Webroot استفاده خواهیم کرد که با ایجاد یک فایل Temp برای اعتبارسنجی دامنه درخواست شده در مسیر webroot-patch}/.well-known/acme-challenge} $ کار می‌کند. سرور Let’s Encrypt یک درخواست HTTP به فایل Temp را برای تایید این که نام دامنه درخواستی بر روی سروری که Certbot نصب شده است، ارسال می‌کند.

برای سادگی بیشتر همه درخواست‌های HTTP برای well-known/acme-challenge را فقط به یک دایرکتوری، /var/lib/letsencrypt مسیردهی می کنیم.

sudo makdir -p /va/lib/letsencrypt/.well-known $

sudo chgrp www-data /var/lib/letsencrypt $

sudo chmod g+s /var/lib/letsencrypt $

برای جلوگیری از کدهای تکراری، در اینجا دو قطعه کد ایجاد و در کلیه بلاک‌های مربوط به تنظیمات سرورهای Nginx از آنها استفاده خواهیم کرد.

sudo /etc/nginx/snippets/letsencrypt.conf $

} location ^~ /.well-known/acme-challenge/ 

;allow all

;root /var/lib/letsecnrypt/

;default_type “text/plain”

{

در ادامه قطعه کد دوم یعنی ssl.conf را که شامل مجموعه اگوریتم‌های رمزنگاری پیشنهادی Mozilla، تنظیمات برای فعال سازی OCSP و HTTP Script Transport Security و اعمال کمی نظارت امنیتی بر روی Headerهای HTTP می‌باشد را ایجاد می‌کنیم.

sudo nano /etc/nginx/snippets/ssl.conf $

;ssl_dhparam /etc/ssl/certs/dhparam.pem 

;ssl_session_timeout 1d 
;ssl_session_cache shared:SSL:10m 
;ssl_session_tickets off 

;ssl_protocols TLSv1.2 TLSv1.3 
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-  SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
;ssl_prefer_server_ciphers on 

;ssl_stapling on 
;ssl_stapling_verify on 
;resolver 8.8.8.8 8.8.4.4 valid=300s 
;resolver_timeout 30s 

add_header Strict-Transport-Security “max-age=31536000; includeSubDomains” always
;add_header X-Frame-Options SAMEORIGIN 
;add_header X-Content-Type-Options nosniff 

بعد از ایجاد این دو قطعه نوبت اضافه کردن آنها به تنظیمات فایل سرور می‌باشد.

sudo nano /etc/nginx/site-available/qradar.ir 

} server 

;lisetn 80            

;server_name qradar.ir www.qradar.ir            

;include snippets/letsencrypt.conf             

{          

برای فعال سازی بلاک جدید سرور، یک لینک Symbolic از فایل به دتیرکتوری sites-enables ایجاد می‌کنیم.

/sudo ln -s /etc/nginx/sites-available/qradar.ir /etc/nginx/sites-enabled 

سرویس Nginx را ریستارت می‌کنیم تا تغییرات اعمال شود.

sudo systemctl restart nginx 

الان می‌توانیم Certbot را به همراه webroot اجرا و گواهی SSL را برای Qradar.ir دریافت نماییم.

sudo certbot certonly –agree-tos –email [email protected] –webroot -w /var/lib/letsencrypt/ -d qradar.ir -d www.qradar.ir

اگر گواهی به درستی صادر شود، Certbot پیغامی شبیه به پیغام زیر را چاب خواهد کرد.

 

در حال حاضر می‌توانیم از گواهی دریافتی برای سایت qradar.ir استفاده کنیم. برای این کار کافی است فایل مربوط به بلاک سرور را ویرایش و کدهای زیر را اضافه کنید.

sudo nano /etc/nginx/sites-available/qradar.ir 

} server   
;listen 80             
;server_name www.qradar.ir qradar.ir             

;include snippets/letsencrypt.conf             
;return 301 https://$host$request_uri             
{       

} server  
;listen 443 ssl http2          
;server_name www.qradar.ir          

;ssl_certificate /etc/letsencrypt/live/qradar.ir/fullchain.pem           
;ssl_certificate_key /etc/letsencrypt/live/qradar.ir/privkey.pem           
;ssl_trusted_certificate /etc/letsencrypt/live/qradar.ir/chain.pem           
;include snippets/ssl.conf           
;include snippets/letsencrypt.conf           

;return 301 https://qradar.ir$request_uri          
{    

} server  
;listen 443 ssl http2         
;server_name qradar.ir         

;ssl_certificate /etc/letsencrypt/live/qradar.ir/fullchain.pem         
;ssl_certificate_key /etc/letsencrypt/live/qradar.ir/privkey.pem         
;ssl_trusted_certificate /etc/letsencrypt/live/qradar.ir/chain.pem         
;include snippets/ssl.conf        
;include snippets/letsencrypt.conf        

 . . . other code  #      
{    

با تنظیمات بالا در واقع استفاده از HTTPS را اجباری و درخواست‌های wwwدار را به ورژن بدون www هدایت می‌کنیم.

کافی است یک بار سرویس Nginx را ریستارت نماییم تا تغییرات اعمال شود.

sudo systemctl reload nginx 

برای تصدیق نصب صحیح گواهی SSL با مرورگر خود به آدرس https://qradar.ir بروید. بایستی در کنار نام دامنه علامت قفل سبز رنگ را مشاهده کنید.

در صورتی که دامنه خود را با  SSL Labs Server Test تست نماید، حتما گرید A دریافت خواهید کرد.

اشتراک گذاری:

دیدگاهتان را بنویسید لغو پاسخ

درباره ایرانشل

تیم ایرانشل با این هدف تشکیل شده است‌ تا بتوانند با کمک شما همراهان عزیز اقدامات مثبتی در جهت شفاف‌سازی نیازمندی‌های امنیتی، معرفی سرویس‌ها و راهکارهای امنیتی انجام دهد.

عضویت در خبرنامه

اطلاعات تماس
  • تهران - خیابان شریعتی - بالاتر از پل سیدخندان
  • 09125162976
  • [email protected]
شبکه‌های اجتماعی
کلیه حقوق این وب سایت متعلق به ایرانشل می‌باشد.
جستجو

جستجو با زدن Enter و بستن با زدن ESC