آنچه در این مقاله میخوانید
نحوه احراز هویت با رمز عبور در Apache روی سرور مجازی اوبونتو
۴ مهر ۱۴۰۴
گاهی لازم است بخشهایی از یک وبسایت فقط در اختیار افراد مشخصی قرار بگیرد؛ مثلا محتوای ویژه اعضا، بخش مدیریت یا صفحاتی که هنوز در حال توسعه هستند. اگرچه بسیاری از وباپلیکیشنها سیستم احراز هویت مخصوص به خودشان را دارند، اما همیشه هم کافی یا در دسترس نیستند. در چنین شرایطی میتوان از قابلیتهای خود وبسرور برای محدود کردن دسترسی استفاده کرد.
در این آموزش یاد میگیرید چگونه روی یک سرور Apache در Ubuntu لایهای از امنیت اضافه کنید و با استفاده از رمز عبور، دسترسی به بخشهای دلخواه سایتتان را کنترل نمایید. این کار هم ساده است و هم امنیت وبسایت شما را تا حد زیادی افزایش میدهد.
در ادامه خواهید خواند:
- پیش نیاز
- مرحله 1: نصب پکیج ابزارهای Apache
- مرحله 2: ایجاد فایل رمز عبور
- مرحله 3: پیکربندی احراز هویت با رمز عبور در Apache
- مرحله 4: تایید احراز هویت با رمز عبور
- جمع بندی

پیش نیاز
برای تکمیل این آموزش به موارد زیر نیاز دارید:
- یک سرور 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
، میتوانید دسترسی به دایرکتوریها یا بخشهای حساس سایت را محدود کنید و مطمئن شوید که تنها کاربران معتبر قادر به مشاهده محتوا هستند.
این روش نه تنها لایهای اضافی از امنیت به سایت شما اضافه میکند، بلکه برای سناریوهای تست، توسعه و حتی سایتهای کوچک و شخصی نیز کاربردی و سریع است. با رعایت مراحل این آموزش و بررسی عملکرد پس از پیادهسازی، میتوانید به راحتی یک محیط محافظت شده و مطمئن برای محتوای خود فراهم کنید.