محدودیت شبکه مشخص نمی‌کند چه کسی وارد شده است. امشب ورود با گذرواژه را روی HTTPS اضافه می‌کنیم و سیاست «کاربر درست و IP درست» را صریح می‌نویسیم.

این جلسه بخشی از دورهٔ آپاچی در ۵۰ شب است. قرارداد نام‌ها، مسیرها و روش اعمال تغییر را در راهنمای دوره بخوان.

محیط: مسیر /admin/ شب نوزدهم؛ ماژول‌های auth_basic، authn_file و authz_user. این تمرین روی HTTP اجرا نمی‌شود.

فایل گذرواژه بیرون از webroot#

AUTH_FILE در راهنما برای Debian برابر /etc/apache2/lab-users و برای RHEL برابر /etc/httpd/lab-users است:

sudo htpasswd -Bc "$AUTH_FILE" labreader
sudo chown root:"$APACHE_USER" "$AUTH_FILE"
sudo chmod 640 "$AUTH_FILE"

رمز را در prompt وارد کن؛ روی خط فرمان ننویس. -B ذخیره با bcrypt و -c ساخت فایل جدید است؛ برای اضافه کردن کاربر دوم -c را حذف کن تا کاربران قبلی پاک نشوند. در RHEL برچسب مسیر config را با restorecon بررسی کن.

بلوک Location قبلی را جایگزین کن:

<Location /admin/>
    AuthType Basic
    AuthName "Apache lab administration"
    AuthUserFile /etc/apache2/lab-users
    <RequireAll>
        Require ip 192.168.56.20
        Require user labreader
    </RequireAll>
</Location>

مسیر AuthUserFile در RHEL تغییر می‌کند. Basic نام و گذرواژه را با encoding می‌فرستد؛ محرمانگی آن به HTTPS وابسته است. RequireAll یعنی هر دو شرط لازم‌اند. RequireAny در این سناریو می‌تواند IP مجاز را بدون رمز یا کاربر صحیح را از IP نامجاز عبور دهد.

سه آزمون ضروری#

از .20 یک درخواست بدون credential و سپس با curl -u labreader بفرست؛ curl رمز را می‌پرسد. اولی باید 401 و دومی 200 شود. از .21 با همان credential نیز درخواست بفرست؛ باید دسترسی رد شود. کد دقیق خطای ترکیب auth و policy را در لاگ بررسی کن؛ معیار منفی، نرسیدن به محتوای حفاظت‌شده است.

بازگشت و تمرین: کاربر ناموجود و رمز غلط را امتحان کن. فایل رمز را در backup خصوصی نگه دار. برای برگشت، policy شب نوزدهم را بازیابی کن؛ حذف فایل رمز بدون تغییر config می‌تواند خطای سرور بسازد.

منبع: احراز هویت در Apache ، htpasswd .