سیستم کنترل دسترسی کنترل‌کننده پایانه

**سیستم کنترل دسترسی کنترل‌کننده پایانه** یا **تکاکس** (به انگلیسی: **Terminal Access Controller Access-Control System** - **TACACS**, ‎/ˈtækæks/‎) به خانواده‌ای از پروتکل‌ها اطلاق می‌شود که برای احراز هویت راه دور و خدمات مرتبط با کنترل دسترسی شبکه از طریق یک سرور متمرکز به‌کار می‌روند.

پروتکل اصلی TACACS که قدمت آن به سال ۱۹۸۴ بازمی‌گردد، برای ارتباط با سرور احراز هویت مورد استفاده قرار می‌گرفت و در شبکه‌های یونیکس قدیمی، از جمله اما نه محدود به ARPANET، MILNET و BBNNET رایج بوده است. این پروتکل منشأ پیدایش چندین پروتکل مرتبط دیگر نیز شد.
**تکاکس توسعه‌یافته** (به انگلیسی: **Extended TACACS** یا **XTACACS**) یک گسترش اختصاصی بر پروتکل TACACS است که توسط Cisco Systems در سال ۱۹۹۰ معرفی شد و با نسخهٔ اصلی سازگاری عقب‌رو ندارد. هر دو پروتکل TACACS و XTACACS به یک سرور دسترسی راه دور اجازه می‌دهند تا با سرور احراز هویت ارتباط برقرار کنند و تعیین نمایند که آیا کاربر به شبکه دسترسی دارد یا نه.

**تکاکس پلاس** (به انگلیسی: **TACACS Plus** یا **TACACS+**) پروتکلی است که توسط شرکت سیسکو توسعه یافته و از سال ۱۹۹۳ به‌عنوان یک استاندارد باز منتشر شده‌است. گرچه این پروتکل ریشه در TACACS دارد، اما TACACS+ یک پروتکل مستقل است که احراز هویت، مجازسازی و حساب‌رسی (AAA) را مدیریت می‌کند. TACACS+ تا حد زیادی جایگزین نسخه‌های قبلی خود شده‌است.

## تاریخچه
**TACACS** در سال ۱۹۸۴ توسط شرکت BBN (که بعدها به BBN Technologies مشهور شد) برای مدیریت ARPANET و MILNET توسعه یافت؛ شبکه‌هایی که در آن زمان ترافیک بدون طبقه‌بندی را برای DARPA منتقل می‌کردند و بعدها به شبکه NIPRNet وزارت دفاع ایالات متحده تبدیل شدند.

در ابتدا، این پروتکل با هدف خودکارسازی فرایند احراز هویت طراحی شد و این امکان را فراهم می‌کرد که هر کاربری که به یک میزبان (host) در شبکه وارد شده است، بدون نیاز به احراز هویت مجدد، به میزبان دیگری در همان شبکه متصل شود. نخستین شرح رسمی این پروتکل توسط برایان اندرسون از BBN، با عنوان «پروتکل‌های کنترل دسترسی TAC» در یادداشت فنی BBN CC-0045، با اصلاح جزئی برای جلوگیری از دو بار ورود در TELNET و با ارائه تغییرات در دسامبر ۱۹۸۴ در IETF منتشر شد.

Cisco Systems از اواخر دهه ۱۹۸۰ پشتیبانی از TACACS را در محصولات شبکه‌ای خود آغاز کرد و به تدریج چندین افزونه به این پروتکل افزود. در سال ۱۹۹۰، افزونه‌های سیسکو به صورت پروتکل اختصاصی جدیدی با عنوان **تکاکس توسعه‌یافته** (XTACACS) ارائه شدند.

اگرچه TACACS و XTACACS استاندارد باز نیستند، Craig Finseth از دانشگاه مینه‌سوتا با همکاری سیسکو، در سال ۱۹۹۳ شرحی از این پروتکل‌ها را به صورت IETF RFC 1492 برای اهداف اطلاعاتی منتشر کرد.

## توصیف فنی
### TACACS
پروتکل **TACACS** در RFC 1492 تعریف شده و به طور پیش‌فرض از پورت ۴۹ (چه از طریق TCP و چه UDP) استفاده می‌کند. TACACS این امکان را برای یک کلاینت فراهم می‌سازد تا یک نام کاربری و گذرواژه را دریافت کرده و یک درخواست احراز هویت را به سرور احراز هویت TACACS (که گاهی به آن دایمون TACACS می‌گویند) ارسال نماید. این سرور تعیین می‌کند که آیا باید درخواست احراز هویت پذیرفته شود یا رد، و پاسخ مناسب را بازمی‌گرداند.

سپس، گره TIP (گره مسیریابی که ارتباطات دایل‌آپ را می‌پذیرد و کاربر معمولاً می‌خواهد به آن وارد شود) بر اساس این پاسخ، دسترسی کاربر را مجاز یا غیرمجاز اعلام می‌کند. به این ترتیب، فرایند تصمیم‌گیری «شفاف» می‌شود و الگوریتم‌ها و داده‌هایی که برای تصمیم‌گیری استفاده می‌شوند، به طور کامل تحت کنترل کسی است که دایمون TACACS را اجرا می‌کند.

### XTACACS
**تکاکس توسعه‌یافته** (به انگلیسی: **Extended TACACS** یا **XTACACS**)، عملکردهای بیشتری به TACACS می‌افزاید. این نسخه، سه وظیفه احراز هویت، مجازسازی و حساب‌رسی (AAA) را از یکدیگر جدا می‌کند و هرکدام را به صورت فرایندهای جداگانه درمی‌آورد؛ بنابراین امکان مدیریت آن‌ها توسط سرورها و فناوری‌های مجزا فراهم می‌شود.

### TACACS+
**تکاکس پلاس** (به انگلیسی: **TACACS+**) افزونه‌ای است که توسط سیسکو سیستمز برای TACACS طراحی شده و در RFC 8907 شرح داده شده‌است. TACACS+ شامل سازوکاری است که امکان پنهان‌سازی محتوای هر بسته را بدون تغییر سرفصل بسته فراهم می‌کند. همچنین امکان کنترل دسترسی بسیار دقیق را به صورت مجوزدهی مرحله‌به‌مرحله دستورها ارائه می‌دهد.

TACACS+ معمولاً TACACS و XTACACS را در شبکه‌های جدید یا به‌روزرسانی‌شده جایگزین کرده‌است. TACACS+ یک پروتکل کاملاً جدید است که با نسخه‌های پیشین خود، یعنی TACACS و XTACACS، سازگار نیست.

### مقایسه با RADIUS
تفاوت‌های متعددی میان این دو پروتکل وجود دارد که باعث شده در کاربردهای عملی، تفاوت چشمگیری داشته باشند.

TACACS+ تنها می‌تواند از TCP استفاده کند، در حالی که RADIUS معمولاً بر بستر UDP
اجرا می‌شود؛ با این حال، RADIUS می‌تواند از TCP (RFC 6613) و برای امنیت بیشتر از TLS (RFC 6614) و DTLS (RFC 7360) نیز بهره ببرد.

TACACS+ می‌تواند در دو حالت اجرا شود. در یک حالت، تمام ترافیک از جمله گذرواژه‌ها به صورت متن واضح ارسال می‌شوند و تنها روش امنیتی، فیلتر کردن آدرس IP است. در حالت دیگر، داده‌ها مبهم می‌شوند (RFC 8907 بخش ۴.۵)؛ به این صورت که سرفصل بسته به صورت آشکار باقی می‌ماند، اما بدنهٔ بسته (از جمله گذرواژه‌ها) با روشی مبتنی بر MD5 مبهم می‌شود. این روش مبهم‌سازی MD5 مشابه روشی است که برای خصوصیت User-Password در RADIUS (RFC 2865 بخش ۵.۲) استفاده می‌شود و بنابراین، ویژگی‌های امنیتی مشابهی دارد.

تفاوت مهم دیگر این است که TACACS+ صرفاً برای دسترسی مدیران به تجهیزات شبکه استفاده می‌شود، در حالی که RADIUS عمدتاً برای احراز هویت کاربران نهایی به‌کار می‌رود. TACACS+ از قابلیت «مجوزدهی دستوری» (command authorization) پشتیبانی می‌کند؛ به این صورت که مدیر شبکه می‌تواند به دستگاه شبکه وارد شود و تلاش کند فرامینی را اجرا کند. تجهیزات مذکور هر فرمان را توسط TACACS+ به سرور مربوط ارسال می‌کنند تا سرور تصمیم بگیرد که انجام آن فرمان مجاز است یا خیر.

عملکرد مشابهی در RADIUS (در RFC 5607) مطرح شده‌است، اما به نظر می‌رسد پشتیبانی از این استاندارد یا ضعیف است یا عملاً وجود ندارد.

TACACS+ قابلیت‌های پیشرفته‌ای برای احراز هویت مدیران و مجوزدهی فرمان ارائه می‌دهد، اما عملاً هیچ‌گاه برای احراز هویت کاربران نهایی شبکه مورد استفاده قرار نمی‌گیرد. در مقابل، RADIUS تنها امکانات محدودی برای احراز هویت مدیران و مجوزدهی فرمان دارد، اما پشتیبانی گسترده و قدرتمندی (و استفاده فراگیر) برای احراز هویت، مجازسازی و حساب‌رسی کاربران نهایی فراهم می‌کند.

در نتیجه، این دو پروتکل همپوشانی اندکی در عملکرد یا زمینه‌های کاربرد معمول خود دارند.

## پیاده‌سازی‌ها

### پیاده‌سازی‌های کلاینت
* *[[آریستا نتورکس|Arista EOS]]*، یک پیاده‌سازی مالکیتی
* *[[سیستم عامل اینترنت ورک سیسکو|Cisco IOS]]*، یک پیاده‌سازی مالکیتی
* *[[اکستریم نتورکس|Extreme Networks]]*، یک پیاده‌سازی مالکیتی
* *[[فورتی‌نت|Fortinet FortiOS]]*، یک پیاده‌سازی مالکیتی
* *Juniper Junos OS*، یک پیاده‌سازی مالکیتی
* *[[پالو آلتو نتورکس|Palo Alto Networks PAN-OS]]*، یک پیاده‌سازی مالکیتی
* *Pam_tacplus*، یک کتابخانه کلاینت پروتکل TACACS+ و پیمانه PAM
* *Augur Systems TACACS+*، یک کتابخانه رایگان و متن‌باز جاوا

### پیاده‌سازی‌های سرور
* *FreeRADIUS TACACS+ module*، یک پیاده‌سازی متن‌باز (در دسترس از نسخه ۴٫۰)
* *Tac_plus by Shrubbery*، یک پیاده‌سازی متن‌باز برای لینوکس
* *Tac_plus-ng by Pro-Bono-Publico*، یک پیاده‌سازی متن‌باز برای لینوکس
* *Tac_plus VM*، نسخه tac_plus با افزوده شدن webadmin در یک ماشین مجازی (دیگر به‌روز نمی‌شود)
* *Aruba ClearPass Policy Manager*، یک پیاده‌سازی مالکیتی
* *Cisco Identity Services Engine*، یک پیاده‌سازی مالکیتی
* *Portnox TACACS+-as-a-Service*، یک پیاده‌سازی مالکیتی به صورت سرویس ابری
* *Pulse Secure Pulse Policy Secure*، یک پیاده‌سازی مالکیتی
* *TACACS.net*، یک پیاده‌سازی مالکیتی از TACACS+ برای ویندوز
* *Augur Systems TACACS+*، یک کتابخانه رایگان و متن‌باز جاوا (مشتری کامل با چارچوب سرور)

## اسناد استاندارد
* RFC ۹۲۷ – گزینه شناسایی کاربر TACACS در Telnet
* RFC ۱۴۹۲ – یک پروتکل کنترل دسترسی که گاهی TACACS نامیده می‌شود
* RFC ۸۹۰۷ – پروتکل Terminal Access Controller Access-Control System Plus (TACACS+)
* RFC ۹۱۰۵ – یک مدل داده YANG برای Terminal Access Controller Access-Control System Plus (TACACS+)

## جستارهای وابسته
* Diameter
* RADIUS

## منابع




## پیوند به بیرون
* An Analysis of the TACACS+ Protocol and its Implementations from a security standpoint (نوشتهٔ Openwall)
* TACACS+ Benefits and Best Practices (مقالهٔ سیسکو)

:رده:پروتکل‌های توافق کلید
:رده:پروتکل‌های کنترل دسترسی رایانه
:رده:امنیت شبکه‌های رایانه‌ای

رده:پروتکل‌های توافق کلید
رده:پروتکل‌های کنترل دسترسی رایانه
رده:امنیت شبکه‌های رایانه‌ای