آپاچی؛ شب ۴۸: ممیزی CIS با شاهد و بررسی فقطخواندنی
فهرست نوشته
وجود directive در یک فایل، فعال بودن آن را اثبات نمیکند. امشب ممیزی را از config خواندهشده تا رفتار شبکه پیش میبریم و وضعیت هر کنترل را با شاهد ثبت میکنیم.
این جلسه بخشی از دورهٔ آپاچی در ۵۰ شب است. قرارداد نامها، مسیرها و روش اعمال تغییر را در راهنمای دوره بخوان.
محیط: PDF و worksheet نسخهٔ انتخابی شب چهلوهفتم؛ روی VM واقعی lab اجرا کن. این جلسه اصلاح خودکار انجام نمیدهد.
شواهد ساختار و اجرا#
sudo "$APACHE_CTL" -v
sudo "$APACHE_CTL" -M
sudo "$APACHE_CTL" -S
sudo "$APACHE_CTL" -t -D DUMP_INCLUDES
sudo "$APACHE_CTL" -t -D DUMP_RUN_CFG
sudo ss -lntp
ps -eo user,pid,ppid,args
sudo stat -c '%a %U:%G %n' "$WWW_CONF" /etc/apache-lab/tls/www.key
metadata کلید ثبت میشود، نه محتوای آن. در Apache بستهای، parent ممکن است برای پورت کمشماره و خواندن کلید با root آغاز شود و کارگرها اختیار را کم کنند؛ نقش هر فرایند را با معیار همان کنترل بسنج. صرف دیدن یک root یا یک www-data نتیجهٔ ممیزی نیست.
برای نسخه، در Debian dpkg-query -W apache2 و در RHEL rpm -q httpd را هم ثبت کن؛ advisory توزیع میتواند backport را توضیح دهد. مقایسهٔ رشتهٔ نسخهٔ upstream بهتنهایی وضعیت آسیبپذیری را تعیین نمیکند.
رفتار در مرز سرویس#
با ابزارهای درسهای قبل، HTTP و HTTPS، نام ناشناس، نسخهٔ TLS نامجاز، دسترسی مستقیم backend، مسیر خصوصی، .env، wp-config و اجرای PHP در upload را آزمایش کن. آزمون منفی از .21 باید واقعاً از ماشین دیگر باشد؛ جعل یک هدر جای آن را نمیگیرد.
| شناسهٔ کنترل از PDF | وضعیت | شاهد | اثر و مالک |
|---|---|---|---|
| شناسهٔ واقعیِ انتخابشده | ارزیابینشده | فرمان و خروجی پاکشده | مالک سرویس |
| شناسهٔ واقعیِ انتخابشده | نیازمند اصلاح | پاسخ نامطلوب و config فعال | اثر تغییر |
اینها placeholder هستند؛ تا PDF و خروجی واقعی را وارد نکردهای، نتیجهٔ قبول نمیسازند. برای توصیهٔ دستی، گزارش scanner جای ارزیابی انسان را نمیگیرد.
ابزار خودکار با پوشش مشخص#
CIS-CAT Pro در صفحهٔ رسمی با عضویت مربوط معرفی شده است. اگر ابزار را در اختیار داری، benchmark/profile درست را انتخاب و گزارش را با آزمون دستی تطبیق بده. OpenSCAP سیستمعامل یا اسکریپت اینترنتی بهصورت خودکار ممیزی همین Apache Benchmark محسوب نمیشود.
تمرین: یک خط ServerTokens صحیح را در فایل .bak خارج از Include قرار بده؛ چرا جستوجوی متن میتواند نتیجهٔ غلط بدهد؟ شواهد با تاریخ و checksum config نگه دار؛ اسرار و خروجی خام خصوصی منتشر نشوند.
منبع: گزینههای برنامهٔ httpd ، CIS-CAT Pro .