| MOD_APPARMOR(8) | AppArmor | MOD_APPARMOR(8) |
نام (NAME)
mod_apparmor - ماژول آپاچی برای محدودسازی و امنیت برنامههای وب با AppArmor
توضیحات (DESCRIPTION)
یک پروفایل AppArmor بر روی یک برنامه اجرایی اعمال میشود؛ اگر بخشی از برنامه به مجوزهای دسترسی متفاوتی نسبت به سایر بخشها نیاز داشته باشد، برنامه میتواند از طریق aa_change_hat(2) به نقشی دیگر، که تحت عنوان زیرپروفایل (subprofile) یا کلاه (hat) نیز شناخته میشود، تغییر کلاه بدهد. ماژول آپاچی mod_apparmor از سازوکار aa_change_hat(2) استفاده میکند تا محدودسازی دقیقتر و ریزدانهتری را برای عناصر پویای درون آپاچی (مانند اسکریپتهای مجزای php و perl) فراهم آورد، در حالی که مزایای کارایی استفاده از mod_php و mod_perl همچنان حفظ میشود.
برای استفاده از mod_apparmor با آپاچی، اطمینان حاصل کنید که بارگذاری mod_apparmor در آپاچی، چه از طریق a2enmod، yast یا ویرایش دستی فایلهای پیکربندی apache2(8)/httpd(8) تنظیم شده باشد، و سپس آپاچی را مجدداً راهاندازی کنید. همچنین اطمینان حاصل کنید که apparmor نیز در حال کار است.
پس از بارگذاری mod_apparmor در آپاچی، تمامی درخواستهای ارسالی به آپاچی باعث میشوند mod_apparmor تلاش کند کلاه خود را به کلاهی تغییر دهد که با ServerName مربوط به سرور/vhost مطابقت دارد. اگر چنین کلاهی یافت نشود، در ابتدا با تلاش برای تغییر به کلاهی متشکل از ServerName-URI بازگشت میکند (به عنوان مثال "www.example.com-/app/some.cgi"). اگر آن کلاه نیز یافت نشود، به تلاش برای استفاده از کلاه نامگذاریشده توسط URI بازمیگردد (به عنوان مثال "/app/some.cgi"). اگر آن کلاه هم پیدا نشود، به تلاش برای استفاده از کلاه DEFAULT_URI بازگشت میکند؛ و چنانچه آن هم موجود نباشد، به استفاده از پروفایل سراسری آپاچی بازمیگردد. اغلب صفحات وب ایستا میتوانند به سادگی از کلاه DEFAULT_URI استفاده کنند.
علاوه بر این، پیش از رسیدن هرگونه درخواستی به آپاچی، mod_apparmor تلاش خواهد کرد کلاه خود را به کلاه HANDLING_UNTRUSTED_INPUT تغییر دهد. mod_apparmor در زمانی که آپاچی در حال تجزیه اولیه یک درخواست http است، پیش از تحویل آن به یک گرداننده خاص (مانند mod_php) جهت پردازش، تلاش میکند از این کلاه استفاده نماید.
از آنجا که تعریف کلاهها برای هر URI/URL اغلب امری طاقتفرسا و دشوار است، mod_apparmor گزینههای پیکربندی AAHatName و AADefaultHatName آپاچی را ارائه میدهد.
- AAHatName
- گزینه AAHatName به شما امکان میدهد کلاهی را برای استفاده در یک دستورالعمل پیکربندی <Directory>، <DirectoryMatch>، <Location> یا <LocationMatch> آپاچی مشخص کنید (برای جزئیات بیشتر به مستندات آپاچی مراجعه کنید). توجه داشته باشید که اگر دستورالعملهای پیکربندی <Directory*> و <Location*> با یکدیگر ترکیب و آمیخته شوند، ممکن است رفتار mod_apparmor دچار سردرگمی شود؛ بنابراین توصیه میشود فقط از یک نوع دستورالعمل پیکربندی استفاده کنید. اگر کلاه مشخصشده توسط AAHatName در پروفایل آپاچی وجود نداشته باشد، به رفتاری که در بالا توضیح داده شد بازمیگردد.
- AADefaultHatName
- گزینه AADefaultHatName به شما اجازه میدهد کلاهی پیشفرض را برای میزبانهای مجازی (virtual hosts) و سایر دستورالعملهای پیکربندی سرور آپاچی تعیین کنید تا بتوانید پیشفرضهای متفاوتی برای میزبانهای مجازی گوناگون داشته باشید. این مقدار میتواند توسط دستورالعمل پیکربندی AAHatName بازنویسی شود و تنها در صورتی بررسی میشود که دستورالعمل پیکربندی AAHatName منطبقی وجود نداشته باشد. مقدار پیشفرض AADefaultHatName همان ServerName برای پیکربندی سرور/vhost است. اگر کلاه AADefaultHatName وجود نداشته باشد، به رفتاری که در بالا شرح داده شد بازمیگردد.
خلاصه درخواست URI (URI REQUEST SUMMARY)
هنگام پروفایلسازی با mod_apparmor، به خاطر داشتن ترتیب عملیات زیر سودمند است:
در هر درخواست URI، در ابتدا mod_apparmor در صورت وجود، با استفاده از aa_change_hat(2) به ^HANDLING_UNTRUSTED_INPUT تغییر کلاه میدهد.
سپس، پس از انجام تجزیه اولیه درخواست، mod_apparmor:
- 1.
- تلاش میکند با aa_change_hat(2) در صورت وجود و امکان اعمال، به کلاه منطبق با AAHatName تغییر کلاه دهد، در غیر این صورت
- 2.
- تلاش میکند با aa_change_hat(2) به کلاه AADefaultHatName (خواه ServerName پیشفرض باشد یا مقدار مشخصشده در دستورالعمل پیکربندی AADefaultHatName برای سرور/vhost) تغییر وضعیت دهد، در غیر این صورت
- 3.
- تلاش میکند با aa_change_hat(2) به ServerName-URI تغییر وضعیت دهد، در غیر این صورت
- 4.
- تلاش میکند با aa_change_hat(2) به خود URI تغییر کلاه دهد، در غیر این صورت
- 5.
- تلاش میکند در صورت وجود، با aa_change_hat(2) به کلاه DEFAULT_URI تغییر کلاه دهد، در غیر این صورت
- 6.
- به خطمشی سراسری آپاچی بازمیگردد
اشکالات (BUGS)
در حال حاضر mod_apparmor() تنها از apache2 پشتیبانی میکند و فقط با پیکربندی MPM از نوع prefork آزمایش شده است -- پیکربندیهای چندنخی (threaded) آپاچی ممکن است به درستی کار نکنند. برای کاربران آپاچی 2.4، باید ماژول mpm_prefork را فعال کنید.
احتمالاً اشکالات دیگری نیز وجود دارد؛ در صورت مشاهده هرگونه مشکل، لطفاً آن را در https://gitlab.com/apparmor/apparmor/-/issues گزارش دهید.
همچنین ببینید (SEE ALSO)
apparmor(7)، apparmor_parser(8)، aa_change_hat(2) و https://wiki.apparmor.net.
| 2026-03-10 | AppArmor 4.1.7 |