آپاچی؛ شب ۲۲: محدودیت شبکه با UFW و firewalld
فهرست نوشته
Require ip فقط درخواست HTTP را محدود میکند؛ فایروال میتواند اتصال غیرمجاز را پیش از Apache ببندد. امشب HTTPS آزمایشگاه را فقط برای .20 باز میکنیم و راه مدیریت را حفظ میکنیم.
این جلسه بخشی از دورهٔ آپاچی در ۵۰ شب است. قرارداد نامها، مسیرها و روش اعمال تغییر را در راهنمای دوره بخوان.
محیط: VM اختصاصی lab، کنسول فعال، Snapshot و آدرس واقعی مبدأ SSH. این تمرین اتصال .21 به 443 را قطع میکند؛ برای درسهای بعد سیاست پایهٔ دوکلاینتی را بازیابی کن.
Ubuntu و UFW#
UFW مدیر قواعد فایروال است؛ همزمان مدیر دیگری را برای همان قواعد فعال نکن. ابتدا sudo ufw status numbered و sudo ufw show added را ببین. قواعد عمومیِ مجازکنندهٔ 443 یا پروفایل Apache Full میتوانند محدودیت جدید را بیاثر کنند؛ فقط قواعد شناختهشدهٔ همین آزمایش را با شماره حذف کن.
sudo ufw allow from 192.168.56.20 to any port 22 proto tcp
sudo ufw allow from 192.168.56.20 to any port 443 proto tcp
sudo ufw default deny incoming
sudo ufw enable
sudo ufw status verbose
این نمونه فرض میکند SSH تو نیز از .20 میآید. اگر مبدأ دیگری داری، پیش از enable قانون مدیریت را برای همان آدرس اضافه کن. Debian لزوماً UFW نصب ندارد؛ یا آن را آگاهانه انتخاب کن یا policy معادل را با مدیر موجود بساز.
Alma/Rocky و firewalld#
zone ناحیهٔ قواعد رابط شبکه است. مقدار LAB_ZONE را از zone فعال کارت Host-only بگیر؛ نام public را حدس نزن:
sudo firewall-cmd --get-active-zones
sudo firewall-cmd --zone="$LAB_ZONE" --list-all
sudo firewall-cmd --zone="$LAB_ZONE" --add-rich-rule='rule family="ipv4" source address="192.168.56.20/32" port port="443" protocol="tcp" accept'
اگر در همین lab سرویس عمومی https یا پورت عمومی 443/tcp فعال است، آن مجوز را از همان zone بردار؛ قانون SSH را نگه دار. تغییرات ابتدا runtime هستند؛ پس از آزمون، فقط همین تغییرهای مشخص را با --permanent ثبت کن و runtime/permanent را مقایسه کن.
معیار نتیجه#
از .20 یک اتصال تازه باید HTTPS بگیرد؛ از .21 نباید به پاسخ HTTP برسد. 403 نشان میدهد اتصال از فایروال گذشته است. IPv6 و zone با target ACCEPT یا قواعد مستقیم را هم بررسی کن؛ مجوز عمومی دیگری نباید باقی باشد.
بازگشت: از کنسول، قواعد ثبتشدهٔ پایه را بازیابی کن و SSH تازه را امتحان کن. برای ACME عمومی HTTP-01، پورت 80 باید مطابق روش challenge قابل دسترس باشد؛ این policy بستهٔ lab را روی سرور عمومی کپی نکن.
منبع: فایروال Ubuntu ، rich language در firewalld .