# TACACS

TACACS è l'acronimo di Terminal Access Controller Access Control System e si riferisce a un tipo di protocollo informatico per l'autenticazione e l'autorizzazione remota (non quindi AAA), con relativi servizi, per il controllo degli accessi in rete tramite un server centralizzato. Il protocollo originale TACACS, risalente al 1984, è stato utilizzato per la comunicazione con un server per autenticazione, comune nelle vecchie reti UNIX, progettato per la rete Arpanet. Dal TACACS sono stati generati diversi protocolli:
* Extended TACACS (XTACACS) è un'estensione di proprietà di TACACS introdotta da Cisco Systems nel 1990. TACACS e XTACACS consentono entrambi ad un server con accesso remoto di comunicare con un altro server di autenticazione, al fine di determinare se l'utente può aver accesso alla rete. XTACACS aggiunge la funzionalità di Accounting, rendendo quindi il protocollo di tipo AAA. Un'altra aggiunta è la possibilità di operare con più server XTACACS, la quale aumenta la robustezza del sistema, evitando malfunzionamenti generali dell'intera rete generati da un singolo server non funzionante.
* Terminal Access Controller Access-Control System Plus (TACACS+) è un protocollo sviluppato da Cisco e rilasciato come standard libero a partire dal 1993. Nonostante derivi da TACACS, TACACS + è un protocollo separato che gestisce servizi di autenticazione, autorizzazione e accounting (AAA). TACACS + e altri protocolli AAA flessibili hanno di gran lunga sostituito i loro predecessori.

## Storia

TACACS venne sviluppato originariamente nel 1984 dalla BBN Technologies per la gestione di MILNET, designato per il traffico non classificato del Dipartimento della Difesa degli Stati Uniti e che sarebbe stato sostituito più tardi dal NIPRNet. Originariamente concepito come un mezzo per automatizzare l'autenticazione – permettendo ad un utente già registrato in un host in rete di connettersi ad un altro host presente sulla stessa rete senza la necessità di ri-autenticazione – fu descritto formalmente da Brian A. Anderson, della BBN, nel Dicembre 1984 in IETF RFC 927. Cisco Systems iniziò a supportare TACACS nei suoi prodotti di rete alla fine degli anni '80, con l'aggiunta di numerose estensioni al protocollo. Nel 1990, le estensioni introdotte da Cisco su TACACS diventarono un nuovo protocollo proprietario chiamato Extended TACACS (XTACACS). Nonostante TACACS e XTACACS non furono concepiti come protocolli liberi, Craig Finseth dell'Università del Minnesota, grazie anche all'assistenza di Cisco, pubblicò una descrizione di entrambi i protocolli nel 1993 nella IETF RFC 1492 per puro scopo informativo.

## Descrizione tecnica
### TACACS

TACACS è definito nel RFC 1492 e sfrutta la comunicazione con pacchetti UDP oppure TCP, usando di default la porta 49. I dati vengono scambiati tra client e server attraverso i pacchetti TACACS (aventi una lunghezza tra 6 e 516 byte), che sono inseriti nel campo dati dei pacchetti UDP. Username e password vengono inviati senza criptazione e vengono valutati in modalità case-insensitive. TACACS permette ad un client avente un nome utente e una password, di inviare una richiesta al server di autenticazione TACACS, che viene anche chiamato TACACS Daemon o semplicemente TACACSD. TACACSD utilizza comunicazioni TCP e generalmente utilizza la porta 49. Tale server è nella maggior parte dei casi un programma eseguito in un determinato calcolatore, il quale elaborando la richiesta del client, permette o nega l'accesso. Esso dovrebbe decidere se accettare o rifiutare la richiesta di autenticazione e inviare una risposta. Il TIP (nodo di distribuzione per accettare connessioni di linea dial-up) sarebbe quindi consentire l'accesso o meno, in base alla risposta.

### TACACS+

TACACS+ e RADIUS hanno sostituito TACACS e XTACACS nelle reti di più recente costruzione o aggiornate. TACACS+ è un protocollo completamente nuovo e non è compatibile con i suoi predecessori, TACACS e XTACACS. TACACS+ usa TCP (mentre RADIUS opera su UDP). Dal momento che TACACS+ utilizza un'architettura con autenticazione, autorizzazione e accounting (AAA), questi componenti separati del protocollo possono essere gestiti separatamente su server diversi. Poiché TCP è un protocollo orientato alla connessione, TACACS+ non deve implementare il controllo della trasmissione, mentre RADIUS deve rilevare e correggere gli errori di trasmissione, come la perdita di pacchetti e timeout, grazie all'utilizzo di UDP che non ha un vero e proprio canale di comunicazione. RADIUS cripta solamente la password degli utenti mentre viaggia dal client RADIUS al server RADIUS; tutte le altre informazioni, come il nome utente, l'autorizzazione e l'accounting vengono invece trasmessi in chiaro. Pertanto, è vulnerabile a diversi tipi di attacchi. TACACS+ cifra i dati elencati in precedenza e quindi non ha le vulnerabilità presenti nel protocollo RADIUS. TACACS+ è un'estensione di TACACS progettata da CISCO che codifica l'intero contenuto di ogni pacchetto. Inoltre, fornisce un controllo granulare (autorizzazione di comando) e consente di controllare quali comandi possono essere eseguiti dagli utenti su un router. Il protocollo TACACS+ offre supporto a diversi protocolli, quali:
* AppleTalk Remote Access (ARA);
* Net BIOS Frame Protocol Control;
* Novel Asynchronous Services Interface (NASI);
* X.25 PAD connection.

#### Servizi TACACS+

Come detto in precedenza TACACS+, utilizza i servizi di sicurezza AAA, in grado di fornire:
* Autenticazione: fornisce il controllo completo di autenticazione tramite login e password, concorrenza e risposta, supporto di messaggistica. La struttura di autenticazione prevede la possibilità di condurre un dialogo arbitrario con l'utente. Inoltre, il servizio di autenticazione TACACS+ supporta l'invio di messaggi ai monitor degli utenti. Ad esempio, un messaggio potrebbe notificare agli utenti che le password devono essere modificate a causa della politica di invecchiamento della password della società.
* Autorizzazione: fornisce il controllo a grana fine su funzionalità dell'utente per tutta la durata della sessione, come controllo degli accessi, durata della sessione, o supporto del protocollo. È inoltre possibile applicare restrizioni su ciò che un utente può eseguire con la funzione di autorizzazione TACACS+.
* Accounting: raccoglie e invia le informazioni utilizzate per il billing, auditing e reporting al demone TACACS+. Gli amministratori di rete possono utilizzare la funzione di contabilità per monitorare l'attività degli utenti per un controllo di sicurezza o per fornire informazioni sul billing degli utenti. Registrazioni contabili includono le identità degli utenti, i comandi eseguiti (come PPP), il numero di pacchetti, e il numero di byte.

#### Operazioni TACACS+

Quando un utente tenta un semplice login ASCII per l'autenticazione ad un server tramite TACACS+ , si compiono diverse fasi:
* Stabilita la connessione, il server di accesso alla rete si metterà in contatto il demone TACACS+ per ottenere un prompt dello username, che viene poi visualizzato all'utente stesso. L'utente immette il nome utente e il server di accesso alla rete e si interagisce con il demone TACACS+ per richiedere la password. Il server visualizzata la richiesta, l'utente immette una password e la password viene poi inviata al demone TACACS+.
* Il server di accesso riceverà una delle seguenti risposte da parte del demone TACACS+: ACCEPT - L'utente viene autenticato e il servizio può iniziare. Se il server è configurato per dare l'autorizzazione, essa verrà inviata; REJECT - L'utente non è riuscito ad autenticarsi e potrebbe essergli negato ulteriormente l'accesso, oppure potrà essere necessario ripetere la sequenza di login a seconda del demone TACACS+; ERROR - Si è verificato un errore durante l'autenticazione. Questo può avvenire nel demone o nella connessione di rete tra il demone e il server. Se si riceve una risposta di ERROR, il server tenta di utilizzare un metodo alternativo per l'autenticazione; CONTINUE - All'utente viene inviata una richiesta di informazioni di autenticazione aggiuntive.
* Un login di tipo PAP è simile a un login ASCII , tranne che il nome utente e la password arrivano al server di accesso in un pacchetto di protocollo PAP invece di essere digitato direttamente dall'utente.
* Se è necessaria l'autorizzazione TACACS+ , il demone TACACS+ è di nuovo contattato e restituisce una risposta di accettazione o rifiuto. Se viene restituito ACCEPT, la risposta conterrà i dati sotto forma di attributi utilizzati per dirigere la sessione EXEC o NETWORK per quell'utente, determinando servizi a cui l'utente può accedere. Generalmente i servizi accessibili sono: Telnet, rlogin, Point-to-Point Protocol (PPP) , Serial Line Internet Protocol (SLIP), servizi di EXEC, e parametri di collegamento, tra cui l'host o l'indirizzo IP del client, la lista di accesso e il timeout degli utenti.