rlm_attr_filter(5) FreeRADIUS Module rlm_attr_filter(5)

rlm_attr_filter - ماژول فیلتر مشخصه‌های FreeRADIUS

ماژول rlm_attr_filter برای فیلتر کردن برخی مشخصه‌ها و مقادیر در بسته‌های دریافتی (یا ارسالی) radius به کار می‌رود. این ماژول چارچوبی انعطاف‌پذیر در اختیار سرور قرار می‌دهد تا مشخصه‌های ارسالی به سرورهای خانگی یا NASها یا دریافتی از آن‌ها را فیلتر کند. این قابلیت برای نمونه در شرایط برون‌سپاری دایل‌آپ برای تصمیم‌گیری‌های سیاستی مختلف، مانند محدود کردن کلاینت به محدوده‌های خاصی از Idle-Timeout یا Session-Timeout، مفید است.

قوانین فیلتر معمولاً بر مبنای قلمرو (per-realm) تعریف و اعمال می‌شوند؛ که در آن قلمرو هر چیزی است که بر اساس پیکربندی ماژول rlm_realm تعریف و مطابقت داده شده باشد. همچنین می‌توان با ویرایش پیکربندی key برای این ماژول، قوانین فیلتر را به صورت اختیاری با استفاده از مشخصه دیگری اعمال کرد.

در نسخه 2.0.1 و نگارش‌های پیشین، بخش "accounting" بسته Accounting-Request را فیلتر می‌کرد، با وجود اینکه در مستندات به عنوان فیلترکننده پاسخ ثبت شده بود. این مشکل در نسخه 2.0.2 و نگارش‌های بعدی رفع شده است. اکنون بخش "preacct" می‌تواند برای فیلتر کردن بسته‌های Accounting-Request استفاده شود. بخش "accounting" اکنون بسته‌های Accounting-Response را فیلتر می‌کند. مدیرانی که از "attr_filter" در بخش "accounting" استفاده می‌کنند باید ارجاع به "attr_filter" را از "accounting" به "preacct" منتقل کنند.

فایلی که قوانین فیلتر مشخصه‌ها را تعریف می‌کند از ساختار نگارشی مشابه با فایل users پیروی می‌کند. با این حال چند تفاوت وجود دارد:

هیچ check-item به جز نام کلید مجاز نیست.
تنها یک مدخل DEFAULT می‌تواند وجود داشته باشد.
قوانین مربوط به هر مدخل از بالا به پایین پردازش می‌شوند و یک
مشخصه باید از *تمام* قوانینی که بر آن اثر می‌گذارند عبور کند تا
از فیلتر رد شود. ترتیب قوانین دارای اهمیت است.
عملگرها و کاربرد آن‌ها در تعریف قوانین به شرح زیر است:
=
این عملگر مجاز نیست. در صورت استفاده، پیام هشدار نمایش داده
شده و مانند == با آن رفتار می‌شود.
:=
تنظیم (Set)؛ این مشخصه و مقدار همیشه در جفت‌های A/V خروجی قرار
خواهند گرفت. اگر مشخصه از قبل وجود داشته باشد، رونویسی می‌شود.
==
برابر (Equal)؛ مقدار باید دقیقاً یکسان باشد.
=*
همیشه برابر (Always Equal)؛ اجازه دادن به تمام مقادیر برای مشخصه تعیین‌شده.
!*
هرگز برابر نباشد (Never Equal)؛ ممنوع کردن تمام مقادیر برای مشخصه تعیین‌شده.
(این حالت زائد است، زیرا هر جفت A/V که صراحتاً مجاز نشده باشد، حذف خواهد شد).
!=
نابرابر (Not Equal)؛ مقدار نباید یکسان باشد.
>=
بزرگ‌تر یا مساوی (Greater Than or Equal)
<=
کوچک‌تر یا مساوی (Less Than or Equal)
>
بزرگ‌تر (Greater Than)
<
کوچک‌تر (Less Than)
اگر عبارت‌های باقاعده فعال باشند عملگرهای زیر نیز ممکن خواهند
بود. (عبارت‌های باقاعده به طور پیش‌فرض گنجانده شده‌اند مگر اینکه
سیستم شما از آن‌ها پشتیبانی نکند، که حالت نادری است).
فیلد مقدار از ساختار استاندارد عبارت‌های باقاعده استفاده می‌کند.
=~
برابر عبارت باقاعده (Regular Expression Equal)
!~
نابرابر عبارت باقاعده (Regular Expression Not Equal)
برای مشاهده نمونه‌های کاربردی از ترتیب قوانین و چگونگی استفاده از
عملگرهای گوناگون، فایل پیش‌فرض /etc/raddb/mods-config/attr_filter/ را ببینید.

موارد پیکربندی عبارتند از:

مکان فایلی را مشخص می‌کند که برای بارگذاری قوانین فیلتر به کار می‌رود. این فایل برای فیلتر کردن پاسخ حسابرسی، بسته قبل از پروکسی شدن، پاسخ پروکسی از سرور خانگی، یا پاسخ ما به NAS استفاده می‌شود.
معمولاً %{Realm} (پیش‌فرض). همچنین می‌تواند %{User-Name} یا مشخصه دیگری باشد که در درخواست وجود دارد. توجه داشته باشید که این ماژول همیشه بر اساس مشخصه‌های موجود در درخواست کلیدگذاری می‌کند، و نه در هیچ بسته دیگری.
در صورت تنظیم روی 'yes'، مشخصه‌هایی که صراحتاً با هیچ قانون فیلتری مطابقت ندارند نیز مجاز خواهند بود. این رفتار می‌تواند برای یک بلوک فیلتر منفرد با استفاده از مورد کنترلی Relax-Filter لغو شود. مقدار پیش‌فرض برای این مورد پیکربندی 'no' است.

بسته‌های Accounting-Request را فیلتر می‌کند.
بسته‌های Accounting-Response را فیلتر می‌کند.
بسته‌های Accounting-Request یا Access-Request را پیش از ارسال پروکسی آن‌ها فیلتر می‌کند.
پاسخ‌های Accounting-Response، Access-Accept، Access-Reject یا Access-Challenge را از یک سرور خانگی فیلتر می‌کند.
بسته‌های Access-Request را فیلتر می‌کند.
بسته‌های Access-Accept یا Access-Reject را فیلتر می‌کند.

/etc/raddb/radiusd.conf /etc/raddb/mods-config/attr_filter/*

radiusd(8), radiusd.conf(5)

Chris Parker, cparker@segv.org

27 June 2013