AAA مخفف Authentication، Authorization و Accounting است.

  • Authentication: به سوال شما کی هستید؟ پاسخ می‌دهد و نحوه اعتبارسنجی کاربر در زمان ورود را کنترل می‌کند.

  • Authorization: به سوال چه کاری می‌توانید انجام دهید؟ پاسخ می‌دهد و دستورات CLI که کاربر مجاز به اجرای آن‌ها است را کنترل می‌کند.

  • Accounting: به سوال چه کاری انجام دادید؟ پاسخ می‌دهد و فعالیت‌های کاربر مانند دستورات اجرا شده را ثبت می‌کند.

SoodarOS از قوانین AAA محلی و سرورهای AAA از راه دور پشتیبانی می‌کند:

  • محلی: قوانین Authorization محلی و Accounting محلی (system logger).

  • TACACS+: AAA از راه دور با استفاده از سرورهای TACACS+.

  • RADIUS: AAA از راه دور با استفاده از سرورهای RADIUS.

سرورهای راه دور

سرورهای از راه دور به عنوان اشیاء نام‌گذاری شده تعریف می‌شوند. پس از ایجاد یک سرور، وارد node آن شوید و پارامترهایی مانند آدرس IP، پورت، کلید مشترک، VRF و آدرس IP مبدا را پیکربندی کنید.

سرور TACACS+

TACACS+ (Terminal Access Controller Access-Control System Plus) یک پروتکل است که برای ارائه Authentication، Authorization و Accounting متمرکز برای مدیرانی که به دستگاه‌های شبکه دسترسی دارند، استفاده می‌شود. این پروتکل از رمزگذاری کامل payload پشتیبانی می‌کند و امنیت بیشتری در مقایسه با پروتکل‌های قدیمی‌تر مانند RADIUS دارد. همچنین، فقط TACACS+ از Authorization per-command پشتیبانی می‌کند.

ایجاد سرور TACACS+

tacacs server TACACAS_SERVER_NAME

یک node پیکربندی سرور TACACS+ ایجاد می‌کند (یا وارد آن می‌شود).

  • TACACAS_SERVER_NAME: نام سرور TACACS+.

مثال:

soodar(config)# tacacs server TAC1
soodar(config-server-tacacs)#

حذف سرور TACACS+

no tacacs server TACACAS_SERVER_NAME

تعریف یک سرور TACACS+ را حذف می‌کند.

  • TACACAS_SERVER_NAME: نام سرور TACACS+.

تنظیم آدرس سرور

address <A.B.C.D|X:X::X:X>

آدرس سرور (IPv4 یا IPv6) را تنظیم می‌کند.

  • <A.B.C.D|X:X::X:X>: آدرس IP سرور TACACS+. می‌تواند یک آدرس IPv4 یا IPv6 باشد.

تنظیم پورت سرور

port (1-65535)

پورت سرور را تنظیم می‌کند.

  • (1-65535): شماره پورت سرور TACACS+.

نکته

پیش‌فرض برای TACACS+ پورت 49 است.

تنظیم کلید مشترک

key KEY

کلید مشترک (secret) مورد استفاده برای TACACS+ را تنظیم می‌کند.

  • KEY: رشته کلید مشترک (secret).

تنظیم VRF

vrf VRFNAME

VRF برای دسترسی به سرور را تنظیم می‌کند.

  • VRFNAME: نام VRF برای استفاده در دسترسی به سرور TACACS+.

تنظیم آدرس IP مبدا

source-ip <A.B.C.D|X:X::X:X>

آدرس IP مبدا مورد استفاده برای اتصال به سرور را تنظیم می‌کند.

  • <A.B.C.D|X:X::X:X>: آدرس IP مبدا (IPv4 یا IPv6) مورد استفاده در بسته‌های TACACS+.

Timeout سرور TACACS+ (Global)

tacacs-server timeout (1-1000)

زمان انتظار برای پاسخ سرور TACACS+ (به ثانیه) را تنظیم می‌کند.

  • (1-1000): مقدار timeout به ثانیه.

نکته

Timeout پیش‌فرض 5 ثانیه است.

سرور RADIUS

ایجاد سرور RADIUS

radius server RADIUS_SERVER_NAME

یک node پیکربندی سرور RADIUS ایجاد می‌کند (یا وارد آن می‌شود).

  • RADIUS_SERVER_NAME: نام سرور RADIUS.

مثال:

soodar(config)# radius server RAD1
soodar(config-server-radius)#

حذف سرور RADIUS

no radius server RADIUS_SERVER_NAME

تعریف یک سرور RADIUS را حذف می‌کند.

  • RADIUS_SERVER_NAME: نام سرور RADIUS.

تنظیم آدرس سرور

address <A.B.C.D|X:X::X:X>

آدرس سرور (IPv4 یا IPv6) را تنظیم می‌کند.

  • <A.B.C.D|X:X::X:X>: آدرس IP سرور RADIUS. می‌تواند یک آدرس IPv4 یا IPv6 باشد.

تنظیم پورت سرور

port (1-65535)

پورت سرور را تنظیم می‌کند.

  • (1-65535): شماره پورت سرور RADIUS.

نکته

پیش‌فرض پورت 1645 است.

تنظیم Timeout سرور

timeout (1-1000)

Timeout سرور (به ثانیه) را تنظیم می‌کند.

  • (1-1000): مقدار timeout به ثانیه.

نکته

Timeout پیش‌فرض 5 ثانیه است.

تنظیم VRF

vrf VRFNAME

VRF برای دسترسی به سرور را تنظیم می‌کند.

  • VRFNAME: نام VRF برای استفاده در دسترسی به سرور RADIUS.

تنظیم آدرس IP مبدا

source-ip <A.B.C.D|X:X::X:X>

آدرس IP مبدا مورد استفاده در بسته‌های RADIUS را تنظیم می‌کند.

  • <A.B.C.D|X:X::X:X>: آدرس IP مبدا (IPv4 یا IPv6) مورد استفاده در بسته‌های RADIUS.

Authentication

Authentication نحوه اعتبارسنجی کاربران در زمان ورود را کنترل می‌کند.

لیست Authentication برای ورود

لیست‌های Authentication تعریف می‌کنند که از چه روش‌هایی برای Authentication کاربران در زمان ورود استفاده می‌شود. lines می‌توانند از این لیست‌ها استفاده کنند تا نحوه Authentication کاربرانی که از طریق آن line به دستگاه دسترسی دارند را تعیین کنند.

aaa authentication login <AUTH_LOGIN_LIST_NAME> {local|tacacs+|radius|none}

یک لیست Authentication ورود ایجاد یا به‌روزرسانی می‌کند. روش‌ها می‌توانند ترکیب شوند.

  • <AUTH_LOGIN_LIST_NAME>: نام لیست Authentication برای ایجاد یا تغییر.

  • local: استفاده از Authentication محلی (پایگاه داده کاربر محلی).

  • tacacs+: استفاده از سرور TACACS+ برای Authentication.

  • radius: استفاده از سرور RADIUS برای Authentication.

  • none: غیرفعال کردن Authentication (توصیه نمی‌شود).

نکته

یک لیست Authentication default داخلی وجود دارد که می‌تواند تغییر کند اما حذف نمی‌شود. این لیست به صورت پیش‌فرض در تمام lines ورود استفاده می‌شود مگر اینکه لیست دیگری مشخص شود.

نکته

روش Authentication پیش‌فرض local است.

نکته

اگر چندین روش مشخص شود، آن‌ها به ترتیب local، TACACS+، RADIUS امتحان می‌شوند.

نکته امنیتی

برای امنیت، Authentication از راه دور (TACACS+ یا RADIUS) نیاز دارد که کاربر در دستگاه نیز تعریف شود، اما رمز عبور استفاده نمی‌شود.

مثال:

soodar(config)# aaa authentication login default tacacs+ local

اعمال لیست Authentication به lines

login authentication AUTH_LOGIN_LIST_NAME

یک لیست Authentication ورود را به context line فعلی اعمال می‌کند.

  • AUTH_LOGIN_LIST_NAME: نام لیست Authentication برای اعمال.

برای مثال، برای اعمال فقط Authentication TACACS+ در line vty و هر دو Authentication محلی و TACACS+ در line console:

soodar(config)# aaa authentication login TACACS_ONLY tacacs+
soodar(config)# line vty
soodar(config-line)# login authentication TACACS_ONLY
soodar(config)# aaa authentication login default local tacacs+

توجه داشته باشید که line console از لیست Authentication default داخلی استفاده می‌کند، بنابراین نیازی به پیکربندی صریح نیست.

Accounting

Accounting فعالیت‌های کاربر را ثبت می‌کند. command accounting دستورات CLI اجرا شده را ثبت می‌کند. exec accounting کنترل Accounting شروع/توقف session را انجام می‌دهد.

لیست Accounting برای دستورات

لیست‌های Accounting دستورات تعریف می‌کنند که دستورات اجرا شده چگونه ثبت می‌شوند. lines می‌توانند از این لیست‌ها استفاده کنند تا نحوه ثبت دستورات اجرا شده را تعیین کنند.

aaa accounting commands <ACCT_CMD_LIST_NAME> start-stop {logger|tacacs+|radius}

command accounting را پیکربندی می‌کند. روش‌ها می‌توانند ترکیب شوند.

  • <ACCT_CMD_LIST_NAME>: نام لیست Accounting برای ایجاد یا تغییر.

  • start-stop: ثبت هر دو رویداد شروع و توقف دستور.

  • logger: ثبت در system logger.

  • tacacs+: ثبت در سرور TACACS+.

  • radius: ثبت در سرور RADIUS.

نکته

یک لیست Accounting default داخلی وجود دارد که می‌تواند تغییر کند اما حذف نمی‌شود. این لیست به صورت پیش‌فرض در تمام lines استفاده می‌شود مگر اینکه لیست دیگری مشخص شود.

نکته

به صورت پیش‌فرض، Accounting غیرفعال است.

نکته

اگر چندین روش مشخص شود، ثبت‌سازی به تمام روش‌های مشخص شده انجام می‌شود.

غیرفعال کردن command accounting

aaa accounting commands <ACCT_CMD_LIST_NAME> none

command accounting را برای این لیست غیرفعال می‌کند.

  • <ACCT_CMD_LIST_NAME>: نام لیست Accounting برای تغییر.

اعمال لیست Accounting دستورات به lines

accounting commands <ACCT_CMD_LIST_NAME>

لیست Accounting دستورات را به context line فعلی اعمال می‌کند.

  • <ACCT_CMD_LIST_NAME>: نام لیست Accounting برای اعمال.

برای مثال، برای فعال کردن command accounting به هر دو system logger و سرور TACACS+ در lines vty و غیرفعال کردن Accounting در line console:

soodar(config)# aaa accounting commands CMD_ACCT start-stop logger tacacs+
soodar(config)# line vty
soodar(config-line)# accounting commands CMD_ACCT

توجه داشته باشید که line console از لیست Accounting default داخلی استفاده می‌کند و پیکربندی پیش‌فرض این است که Accounting انجام نشود، بنابراین نیازی به پیکربندی صریح نیست.

لیست Accounting برای exec

exec accounting رویدادهای شروع و توقف session را ثبت می‌کند. لیست‌های exec accounting تعریف می‌کنند که Accounting session چگونه ثبت می‌شود. lines می‌توانند از این لیست‌ها استفاده کنند تا نحوه ثبت Accounting session را تعیین کنند.

aaa accounting exec <ACCT_EXEC_LIST_NAME> start-stop {tacacs+|radius}

exec accounting را پیکربندی می‌کند. روش‌ها می‌توانند ترکیب شوند.

  • <ACCT_EXEC_LIST_NAME>: نام لیست Accounting برای ایجاد یا تغییر.

  • start-stop: ثبت هر دو رویداد شروع و توقف session.

  • tacacs+: ثبت در سرور TACACS+.

  • radius: ثبت در سرور RADIUS.

نکته

یک لیست Accounting default داخلی وجود دارد که می‌تواند تغییر کند اما حذف نمی‌شود. این لیست به صورت پیش‌فرض در تمام lines استفاده می‌شود مگر اینکه لیست دیگری مشخص شود.

نکته

به دلایل حسابرسی و امنیتی، Accounting session همیشه به صورت محلی در system logger ثبت می‌شود علاوه بر هر سرور از راه دوری که پیکربندی شده باشد.

نکته

به صورت پیش‌فرض، Accounting از راه دور غیرفعال است.

نکته

اگر چندین روش مشخص شود، ثبت‌سازی به تمام روش‌های مشخص شده انجام می‌شود.

غیرفعال کردن exec accounting

aaa accounting exec <ACCT_EXEC_LIST_NAME> none

exec accounting را برای این لیست غیرفعال می‌کند.

  • <ACCT_EXEC_LIST_NAME>: نام لیست Accounting برای تغییر.

اعمال لیست Accounting exec به lines

accounting exec <ACCT_EXEC_LIST_NAME>

لیست Accounting exec را به context line فعلی اعمال می‌کند.

  • <ACCT_EXEC_LIST_NAME>: نام لیست Accounting برای اعمال.

برای مثال، برای فعال کردن Accounting ورود به هر دو system logger و سرور TACACS+ در lines vty و RADIUS در line console:

soodar(config)# aaa accounting exec EXEC_ACCT start-stop tacacs+
soodar(config)# aaa accounting exec default start-stop radius
soodar(config)# line vty
soodar(config-line)# accounting exec EXEC_ACCT

توجه داشته باشید که line console از لیست Accounting default داخلی استفاده می‌کند، بنابراین نیازی به پیکربندی صریح نیست. همچنین در این مثال، system logger همیشه برای exec accounting استفاده می‌شود علاوه بر هر سرور از راه دوری که پیکربندی شده باشد.

Authorization

Authorization کنترل می‌کند که آیا یک دستور مجاز به اجرا است یا خیر.

نکته

کاربران با privilege level 15 همیشه مجاز به اجرای تمام دستورات هستند بدون توجه به پیکربندی Authorization.

نکته

RADIUS از Authorization per-command پشتیبانی نمی‌کند، بنابراین فقط روش‌های TACACS+ و محلی برای Authorization دستورات در دسترس هستند.

لیست Authorization برای دستورات

لیست‌های Authorization دستورات تعریف می‌کنند که از چه روش‌هایی برای Authorization دستورات اجرا شده استفاده می‌شود. lines می‌توانند از این لیست‌ها استفاده کنند تا نحوه Authorization دستورات را تعیین کنند.

aaa authorization command <AUTH_CMD_LIST_NAME> {local|tacacs+|none}

روش‌های Authorization دستورات را پیکربندی می‌کند. روش‌ها می‌توانند ترکیب شوند.

  • <AUTH_CMD_LIST_NAME>: نام لیست Authorization برای ایجاد یا تغییر.

  • local: استفاده از قوانین Authorization محلی.

  • tacacs+: استفاده از سرور TACACS+ برای Authorization per-command.

  • none: غیرفعال کردن Authorization (تمام دستورات مجاز هستند).

نکته

یک لیست Authorization default داخلی وجود دارد که می‌تواند تغییر کند اما حذف نمی‌شود. این لیست به صورت پیش‌فرض در تمام lines استفاده می‌شود مگر اینکه لیست دیگری مشخص شود.

نکته

به صورت پیش‌فرض، Authorization غیرفعال است.

نکته

اگر چندین روش مشخص شود، هر دو Authorization محلی و TACACS+ اعمال می‌شوند. یک دستور مجاز است اگر یکی از روش‌ها آن را مجاز کند.

نکته

یک کاربر با privilege level 15 همیشه مجاز به اجرای تمام دستورات است بدون توجه به پیکربندی Authorization.

اعمال لیست Authorization دستورات به lines

authorization command <AUTH_CMD_LIST_NAME>

لیست Authorization دستورات را به context line فعلی اعمال می‌کند.

  • <AUTH_CMD_LIST_NAME>: نام لیست Authorization برای اعمال.

Local privilege (قوانین دستورات)

قوانین Authorization محلی به عنوان الگوهای regex برای هر privilege level ذخیره می‌شوند.

privilege level (1-14) LINE ...

یک regex دستور مجاز را برای یک privilege level اضافه می‌کند.

  • (1-14): privilege level (1 تا 14) برای اضافه کردن قانون.

  • LINE: یک regular expression که دستورات مجاز را برای این privilege level تعریف می‌کند.

مثال: اجازه دادن به کاربران با privilege level 5 برای اجرای زیرمجموعه‌ای از دستورات show:

soodar(config)# privilege level 5 ^show\s(interface|ip|route|version|privilege)$

نمایش قوانین privilege level

show privilege [level (0-15)] [json]

قوانین privilege level دستورات را نمایش می‌دهد.

  • level (0-15): نمایش قوانین برای privilege level مشخص شده. اگر حذف شود، تمام سطوح نمایش داده می‌شوند.

  • json: نمایش خروجی در فرمت JSON.