تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

نحوه احراز هویت با رمز عبور در Apache روی سرور مجازی اوبونتو


۴ مهر ۱۴۰۴

گاهی لازم است بخش‌هایی از یک وب‌سایت فقط در اختیار افراد مشخصی قرار بگیرد؛ مثلا محتوای ویژه اعضا، بخش مدیریت یا صفحاتی که هنوز در حال توسعه هستند. اگرچه بسیاری از وب‌اپلیکیشن‌ها سیستم احراز هویت مخصوص به خودشان را دارند، اما همیشه هم کافی یا در دسترس نیستند. در چنین شرایطی می‌توان از قابلیت‌های خود وب‌سرور برای محدود کردن دسترسی استفاده کرد.

در این آموزش یاد می‌گیرید چگونه روی یک سرور Apache در Ubuntu لایه‌ای از امنیت اضافه کنید و با استفاده از رمز عبور، دسترسی به بخش‌های دلخواه سایت‌تان را کنترل نمایید. این کار هم ساده است و هم امنیت وب‌سایت شما را تا حد زیادی افزایش می‌دهد.

در ادامه خواهید خواند:

  • پیش نیاز
  • مرحله 1: نصب پکیج ابزارهای Apache
  • مرحله 2: ایجاد فایل رمز عبور
  • مرحله 3: پیکربندی احراز هویت با رمز عبور در Apache
  • مرحله 4: تایید احراز هویت با رمز عبور
  • جمع بندی
احراز هویت در Apache روی Ubuntu

پیش نیاز

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

  • یک سرور Ubuntu 24.04 که روی آن یک کاربر غیر ریشه (non-root) با دسترسی sudo تنظیم شده باشد و فایروال فعال باشد.
  • نصب بودن وب‌سرور Apache روی سرور.
  • فعال بودن SSL برای Virtual Host شما.
    • اگر دامنه دارید، پیشنهاد می‌شود با استفاده از Let’s Encrypt سایت خود را امن کنید. (این روش گواهی رایگان و معتبر ارائه می‌دهد.)
    • اگر دامنه ندارید و فقط برای تست یا استفاده شخصی نیاز دارید، می‌توانید از گواهی Self-signed استفاده کنید. این نوع گواهی رمزنگاری مشابهی دارد اما بدون اعتبارسنجی دامنه.

بعد از تکمیل این پیش‌نیازها، می‌توانید وارد سرور شوید و مراحل آموزش را ادامه دهید.

مرحله 1: نصب پکیج ابزارهای Apache

ابتدا سرور خود را به‌روز کرده و پکیجی را که برای این آموزش نیاز داریم نصب می‌کنیم. در این آموزش از یک ابزار به نام htpasswd استفاده خواهیم کرد که بخشی از پکیج apache2-utils است و برای ایجاد فایل پسورد و مدیریت نام‌های کاربری و رمز عبور کاربران مورد استفاده قرار می‌گیرد. این ابزار به Apache اجازه می‌دهد تا محتوای محدود شده را فقط به کاربران مشخص نمایش دهد.

ابتدا فهرست بسته‌های سرور را به‌روزرسانی کنید:

sudo apt update

سپس پکیج ابزارهای Apache را نصب کنید:

sudo apt install apache2-utils

پس از نصب، شما به دستور htpasswd دسترسی خواهید داشت و می‌توانید فایل رمز عبور خود را ایجاد کرده و کاربران مورد نظر را برای دسترسی به محتوای محدود شده اضافه کنید.

با سرور مجازی Ubuntu لیارا، زیرساخت پروژه‌های خود را سریع و امن راه‌اندازی کن.
✅ نصب آسان و آماده استفاده✅ منابع اختصاصی و پایدار✅ دسترسی کامل SSH
خرید و راه‌اندازی سرور Ubuntu

مرحله 2: ایجاد فایل رمز عبور

دستور htpasswd به شما امکان می‌دهد یک فایل رمز عبور ایجاد کنید که Apache بتواند کاربران را احراز هویت کند. برای این کار، یک فایل مخفی با نام  .htpasswd در مسیر پیکربندی /etc/apache2 ایجاد خواهیم کرد.

وقتی برای اولین بار از این ابزار استفاده می‌کنید، باید از گزینه  -c استفاده کنید تا فایل جدید ایجاد شود. در مثال زیر، نام کاربر نمونه sammy است و یک ورودی جدید در فایل ایجاد می‌شود:

sudo htpasswd -c /etc/apache2/.htpasswd sammy

پس از اجرای دستور، از شما خواسته می‌شود رمز عبور را وارد و تایید کنید.

نکته: گزینه  -c فقط برای ایجاد فایل جدید استفاده می‌شود. اگر می‌خواهید کاربران دیگری اضافه کنید، این گزینه را حذف کنید تا فایل قبلی بازنویسی نشود. مثال:

sudo htpasswd /etc/apache2/.htpasswd another_user

برای مشاهده محتویات فایل، می‌توانید دستور زیر را اجرا کنید:

cat /etc/apache2/.htpasswd

خروجی نمونه:

sammy:$apr1$eponJaBR$9uyVIRpDpbHoseI.hS1cq/
another_user:$apr1$dDXiQxte$RGn3CVfFLQOPf5lSJgNvV1

اکنون کاربران و رمز عبورهایشان در قالبی ذخیره شده که Apache می‌توانید آن‌ها را بخواند و برای کنترل دسترسی استفاده کند.

مرحله 3: پیکربندی احراز هویت با رمز عبور در Apache

در این مرحله، باید Apache را طوری پیکربندی کنید که قبل از ارائه محتوای محافظت شده، فایل  .htpasswd را بررسی کند. شما می‌توانید این کار را به دو روش انجام دهید:

  • مستقیم در فایل Virtual Host سایت
  • استفاده از فایل‌های .htaccess در دایرکتوری‌هایی که نیاز به محدودیت دارند

استفاده از فایل Virtual Host معمولا بهتر است و عملکرد سریع‌تری دارد، اما اگر می‌خواهید کاربران غیر ریشه بتوانند محدودیت‌ها را مدیریت کنند، گزینه دوم مناسب است.

توجه: این روش‌ها را می‌توان برای هر Virtual Host فعال اعمال کرد. اگر Virtual Host خودتان استفاده می‌کنید، حتما مسیرها و نام‌ها را با تنظیمات واقعی سرور جایگزین کنید.

نحوه ریدایرکت آدرس www به دامنه ریشه با Apache در اوبونتو 24.02
 ریدایرکت آدرس www

پیکربندی کنترل دسترسی در فایل Virtual Host (پیشنهادی)

ابتدا فایل Virtual Host مورد نظر خود را باز کنید. در مثال ما، فایل زیر استفاده می‌شود:

sudo nano /etc/apache2/sites-available/your_domain.conf

پس ا حذف توضیحات اضافی، فایل باید شبیه به این باشد:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName your_domain
    ServerAlias www.your_domain
    DocumentRoot /var/www/your_domain
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

احراز هویت در Apache بر اساس دایرکتوری انجام می‌شود. برای محدودکردن دسترسی، باید یک بلاک <Directory> ایجاد کنید و مسیر مورد نظر را مشخص کنید. در این مثال، کل Document Root محدود می‌شود، اما می‌توانید فقط یک دایرکتوری خاص را هدف قرار دهید:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName your_domain
    ServerAlias www.your_domain
    DocumentRoot /var/www/your_domain
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

<Directory "/var/www/your_domain">
    </Directory>
</VirtualHost>

درون بلاک <Directory> مشخص کنید که می‌خواهید Basic Authentication را فعال کنید. برای AuthName یک نام دلخواه انتخاب کنید که هنگان ورود به سیستم به کاربر نمایش داده شود. مسیر فایل پسورد خود را با دستور AuthUserFile تعیین کنید و با Require valid-user مشخص کنید که فقط کاربران معتبر اجازه دسترسی دارند:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName your_domain
    ServerAlias www.your_domain
    DocumentRoot /var/www/your_domain
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

<Directory "/var/www/your_domain">
      AuthType Basic
      AuthName "Restricted Content"
      AuthUserFile /etc/apache2/.htpasswd
      Require valid-user
  </Directory>
</VirtualHost>

پس از اتمام ویرایش، فایل را ذخیره و ببندید (در nano با CTRL+X سپس Y و ENTER). برای بررسی صحت پیکربندی از دستور زیر استفاده کنید:

sudo apache2ctl configtest

اگر خروجی Syntax OK بود، وب‌سرور را ریستارت کنید تا محدودیت اعمال شود:

sudo systemctl restart apache2

برای اطمینان از اجرای صحیح سرویس، وضعیت آن را بررسی کنید:

sudo systemctl status apache2

اکنون دایرکتوری مشخص شده باید با رمز عبور محافظت شود.

با سرور مجازی ابری لیارا، زیرساخت پروژه‌های خود را با انعطاف‌پذیری کامل مدیریت کنید.
✅ منابع اختصاصی✅ مقیاس‌پذیری سریع✅ دسترسی Root
خرید و راه‌اندازی سرور مجازی ابری

پیکربندی کنترل دسترسی با فایل‌های .htaccess

Apache می‌تواند از فایل‌های  .htpasswd برای اعمال تنظیمات در دایرکتوری‌ها استفاده کند. این روش کمی کندتر است چون Apache باید این فایل‌ها را در هر درخواست دوباره بخواند، اما اگر نیاز داید کاربران غیر ریشه محدودیت‌ها را مدیریت کنند، مناسب است.

ابتدا فایل پیکربندی اصلی Apache را باز کنید:

sudo nano /etc/apache2/apache2.conf

بلاک <Directory> مربوط به مسیر /var/www/ را پیدا کنید و AllowOverride را از None به All تغییر دهید تا Apache فایل‌های .htaccess را پردازش کند:

<Directory /var/www/your_domain>
  Options Indexes FollowSymLinks
  AllowOverride All
  Require all granted
</Directory>

سپس یک فایل .htaccess در مسیر دایرکتوری مورد نظر بسازید (مثلا کل Document Root):

sudo nano /var/www/your_domain/.htaccess

درون فایل، احراز هویت را مشخص کنید:

AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user

فایل را ذخیره و وب‌سرور را ریستارت کنید:

sudo systemctl restart apache2
sudo systemctl status apache2

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

نحوه نصب Nginx در سرور مجازی اوبونتو Ubuntu
نصب Nginx در سرور مجازی

مرحله 4: تایید احراز هویت با رمز عبور

برای اطمینان از اینکه محتوای شما محافظت شده است، سعی کنید به محتوای محدود شده خود در مرورگر دسترسی پیدا کنید. برای این کار به آدرس زیر بروید:

https://your_domain_or_server_IP

هنگامی که به صفحه دسترسی پیدا می‌کنید، یک پنجره درخواست نام کاربری و رمزعبور برای شما باز می‌شود که مشابه تصویر زیر است:

اگر اطلاعات کاربری صحیح وارد کنید، اجازه دسترسی به محتوا را خواهید داشت.

اگر رمز یا نام کاربری اشتباه وارد شود یا روی Cancel کلیک کنید، صفحه خطای ریر را دریافت خواهید کرد.

جمع بندی

راه‌اندازی احراز هویت با رمز عبور در Apache یک روش ساده و موثر برای افزایش امنیت وب‌سایت شما است. با استفاده از فایل .htpasswd و تنظیمات Virtual Host یا .htpasswd، می‌توانید دسترسی به دایرکتوری‌ها یا بخش‌های حساس سایت را محدود کنید و مطمئن شوید که تنها کاربران معتبر قادر به مشاهده محتوا هستند.

این روش نه تنها لایه‌ای اضافی از امنیت به سایت شما اضافه می‌کند، بلکه برای سناریوهای تست، توسعه و حتی سایت‌های کوچک و شخصی نیز کاربردی و سریع است. با رعایت مراحل این آموزش و بررسی عملکرد پس از پیاده‌سازی، می‌توانید به راحتی یک محیط محافظت شده و مطمئن برای محتوای خود فراهم کنید.

به اشتراک بگذارید