TACACS+

Tacacs+ ist ein vom U.S. Department of Defense entwickeltes Standardprotokoll, das später von CISCO erweitert wurde. TACACS+ lagert, im Gegensatz zu RADIUS die Authorization Funktionalität aus, wodurch zuätzliche Flexibilität, sowie die Möglichkeit granulare Zugriffskontrollen, wer welches Kommando auf welchem System ausführen darf, geschaffen werden.

Jedes Kommando, das durch einen Benutzer eingegeben wird, wird zum zentalen TACACS+ Server zur Authorisierung gesendet, der dieses dann gegen eine Liste erlaubter Kommandos für jeden Benutzer prüft.
Ein weiterer großer Vorteil ist, dass bei TACACS+ der gesamte Datenstrom, wenn auch nur schwach, verschlüsselt wird. RADIUS hingegen verschlüsselt nur das Passwort und überträgt alle anderen Daten, wie z.B. auch den Benutzernamen unverschlüsselt.
Wirft man einen Blick auf die Protokollierung, so offenbart sich ein weiterer Unterschied zwischen RADIUS und TACACS+: RADIUS protokolliert nur den Start, den Stop, sowie Zwischeninfos der Session. TACACS+ hingegen kann so konfiguriert werden, dass jeder eingegebene Befehl detailliert protokolliert wird. Entsprechend konfigurierte SIEM Systeme können diese Protokoll auf Anomalien hin überwachen und bei einem Security Incident entsprechend reagieren.
Auch beim verwendeten Protokoll zeigt sich ein Vorteil von TACACS+. RADIUS verwendet das zustandslose UDP, TACACS+ hingegen TCP (Port 49), was einer stabilen Verbindung zum AAA Server entgegen kommt.
Für mich stellt das ein klares Votum für die Bevorzugung von TACACS+ im Sinne der Sicherheit dar.
Gemeinsam ist, dass beide AAA Protokolle es ermöglichen eine zentrale Benutzerverwaltung für z.B. Switche, Router usw. zu schaffen. Ein wichtiger Schritt hin zu einer sicheren Netzwerkumgebung.

Installation von TACACS+ unter Ubuntu 16

Die Installation von TACACS+ läuft unter Ubuntu ebenso einfach ab, wie bei beinahe jedem anderen Paket: Ein einfaches

apt-get install tacacs+

genügt um einen vollständig lauffähigen TACACS+ Server zu erhalten, der nur noch konifguriert werden muß. Die entsprechende Konfigurationsdatei liegt unter /etc/tacacs+ und nennt sich tac_plus.conf
Ein Beispiel für eine funktionierende Konfiguration für Comware7 Geräte sieht wie folgt aus:
accounting file = /var/log/tac_plus.acct
key = zyhu37PHWB
user = scheike {
        name = "Roland Scheike"
        member = fulladmin
        login = des oa2/GhiCr/Gh2
}
user = viewer {
        name = "ReadOnly User"
        member = readonly
        login = des eh3J/BI6sjsl6
}
group = fulladmin {
        default service = permit
        service = exec {
                priv-lvl = 15
        }
        cmd = * {
                permit .*
        }
}
group = readonly {
        service = exec {
                priv-lvl = 15
        }
        cmd = display {
                permit interface
                permit mac-address
        }
        cmd = quit {
                permit .*
        }
}
/etc/tacacs+/tac_plus.conf

In Zeile 2 wird das Shared Secret definiert, das auf allen Devices, die mit dem AAA Server sprechen wollen, eingetragen sein muß.
Die benötigten Kennwörter in Zeile 6 und 11 werden mit dem Befehl tac_pwd, der bei der Installation von TACACS+ mit installiert wurde, auf der Kommandozeile verschlüsselt.
In der Konfigurationsdatei werden zwei Benutzer, sowie zwei Gruppen definiert. Die Gruppe mit dem Namen fulladmin stellt den Vollzugriff auf das Device dar; die Gruppe readonly ist auf Befehle, die mit "display interface", "display mac-address" und "quit" beginnen, beschränkt. 
Ansonsten sollte die Datei selbsterklärend sein.

Beschränkung der Ziele

Geht es nun noch darum die möglichen Ziele, d.h. die IP Adressen der Switche, zu beschränken, mit der sich ein Benutzer verbinden darf, so können ACLs verwendet werden.
acl = acl_eins {
        permit = 10\.11\.12
        deny = .*
}

group = einsadmin {
        default service = permit
        service = exec {
                priv-lvl = 15
        }
        cmd = * {
                permit .*
        }
        acl = acl_eins
}
Wie deutlich zu sehen, wird die ACL acl_eins in Zeile 14 an die Gruppe "einsadmin" gekoppelt. Der Usereintrag referenziert die Gruppe und erbt somit die Definition der ACL.

In Zeile 2 werden die erlaubten Zieladressen, im Beispiel alle IPs, die mit 10.11.12 beginnen, definiert. Das Escapen der Punkte ist auf Grund der Regex Notation notwendig und kann, falls weggelassen, zu unerwünschten Effekten führen.

Führt man nun die beiden Konfigurationen zusammen, so erhält man eine vollständig lauffähige TACACS+ Konfiguration mit einer Beschränkung der erlaubten Ziele.