Serveur d’authentification TACACS+

Lorsque l’on commence à avoir un peu de matériel réseau (i.e. Cisco 🙂 ), il est alors intéressant de centraliser l’authentification et l’autorisation sur ses équipements.

Les serveurs que vous rencontrerez le plus souvent sont les Radius (bien connu des internautes :-p ) et plus spécifiquement à Cisco, Tacacs+.

On peut d’authentifier sur un Cisco de plusieurs façons, soit part un mot de passe local, soit via un serveur Radius, soit via un serveur TACACS+.

C’est cette dernière solution que nous allons mettre en oeuvre.

Je ne rentrerais pas dans les détails concernant L’authentification, l’autorisation et l’accounting (le fameux AAA) ni dans le choix de TACACS+ plutôt que Radius, aussi je vous invite à lire ce très bon article de Ben.

Bien évidemment, j’ai choisi mes serveurs OpenBSD pour y installé Tacacs+.

De plus le package TACACS+ est diponible pour le poisson qui pique ( tacacs+-4.0.4ap1.tgz pour la version 4.3).

Vous le trouverez sûrement pour votre distribution Linux favorite sinon, sur le FTP de Cisco, ftp-eng.cisco.com dans /pub/tacacs .

  • Partie Serveur

La configuration se fait dans le fichier /etc/tac_plus.conf.

Nous allons faire une configuration simplifiée qui nous servira a nous authentifier sur nos ciscos avec 2 comptes. Celui de l’administrateur et un compte Opérateur qui nous servira plus tard pour la sauvegarde 😉 (dans un futur billet) .

key = maclésecrète    (une clé d'échange)

accounting file = /var/log/tacacs

# Le password Enable :

user = $enable$ {

        login = des "1234567890"

        }

On évitera bien évidement de mettre les mots de passe en clair… L’utilitaire /usr/local/sbin/generate_passwd vous permettra de chiffrer vos mots de passe :

poissonquipique# ./generate_passwd

Password to be encrypted:

On défini un groupe « Admin » et un groupe « Operator » :

group = admin {

login = des "AB12GR54RE98"

expires = "Dec 31 2099"

}

group = operators {

login = cleartext "motdepassesupersecret"

expires = "Dec 31 2999"

Ici je mets login = cleartext pour définir un mot de passe en clair (c’est un exemple hein !!!!), crypté toujours vos mots de passe dans vos fichiers de configuration.

user = charlie {
default service = permit
member = admin
}

Je définie l’admin « charlie » qui fait partie du groupe « admin » et qui a tout les droits (default service=permit).

user = lulu {
member = operators
cmd = show { permit ver permit ip }
cmd = traceroute { permit .* }
cmd = logout { permit .* }
}

Je définie l’utilisateur « lulu » (oui je sais j’ai un humour imparable…), membre du groupe « operator » et n’a le droit d’executer que les commandes suivantes :

show version

show ip

traceroute (vers n’importe ou)

logout (vaut mieux 🙂 )

Ne reste plus qu’a lancer le serveur :

/usr/local/sbin/tac_plus -C /etc/tac_plus.conf

(A rajouter bien sûr dans votre /etc/rc.local et n’oubliez pas non plus d’ouvrir le port 49/tcp dans PacketFilter si vous faites du filtrage).

  • Partie Cisco

Sur les routeurs et switchs :

aaa new-model
aaa authentication login default group tacacs+ enable
tacacs-server host ipdupoissonquipique
tacacs-server directed-request
tacacs-server key maclésecrète

line vty 0 4
exec-timeout 0 0
password motdepasselocal
login authentication default

Sur un Pix 6.3 :

aaa-server TACACS+ protocol tacacs+
aaa-server TACACS+ max-failed-attempts 3
aaa-server TACACS+ deadtime 10
aaa-server TACACS+ (inside) host ipdupoissonquipique maclésecrète timeout 10
aaa-server LOCAL protocol local
aaa authentication ssh console TACACS+ LOCAL

Attention : N’oubliez pas de rajouter enable (ou local) a la fin de la ligne aaa authentication, ceci afin de vous permettre de vous identifier quand le serveur TACACS+ est indisponible (enfin, c’est vous qui voyez 😀 )

Et voilà, désormais vous pouvez vous logguer sur vos Cisco avec le user « charlie » et le mot de passe associé.

J’ai volontairement simplifié la procédure, il y a énormément d’options possible, d’accounting et d’autorisation que je vous laisse potasser tranquillement 😀

Quelques documents ICI

et LA

Ce billet a été posté dans cisco, OpenBSD, sécurité. Bookmark le permalink.

9 commentaires sur “Serveur d’authentification TACACS+

  1. Oui , mais tu doit reconfigurer 2 fois la meme chose pour radius et tacacs plus.

    Ca n’existe pas une methode de rediriger les requetes tacacs vers radius ( et vers ldap 🙂 , a ton avis ?

    cdt

  2. ???
    Tacacs+ *OU* Radius j’écris en début de billet…

    Pour utiliser les deux (quel interet ?), au niveau Cisco il suffit de rajouter radius :
    aaa authentication login vtymethod group radius tacacs+ enable

    Quand a la gestion des comptes, RADIUS et TACACS+ savent déjà se baser sur un serveur LDAP commun

  3. Bonjour, je suis en train d’installer un serveur Tacacs+ pour mon stage. ils veulent lié l’authentification avec LDAP.
    Vous parlez que c’est donc possible à faire.
    J’effectue des recherches dessus, mais je ne trouve rien de concret.
    Pouvez faire un article dessus ou m’indiquer des aides, s’il vous plait ?
    J’ai vu beaucoup de chose en rapport avec radius et ldap, mais pas avec tacacs. Ou alors ceux qui en parle n’ont pas la même manière de faire le fichier de configuration. Je suis un peu perdue.

    Votre article m’a déjà bien aidé comme les documents Cisco pour installer le serveur Tacacs+.

  4. Bonjour,
    Merci d’avoir répondu mais je l’avais déjà vu ce document.
    Certes le LDAP est sur Windows, mais la doc ne me « parle » pas (c’est embetant). Surtout pour les modif à faire sur mon tacacs+, qui ne reconnait pas pam.

  5. Je comprend le document (maintenant traduit ^^)
    On ne peut pas faire des modifications disant à mon serveur Tacacs+ que le Ldap se trouve à cette adresse et qu’il doit prendre ça ça pour les utilisateurs et mots de passe, sans passer par Windows ?

  6. Ca faisait 5 semaines que je faisais des recherches, mais comme je cherchais qqch de précis.
    Je vous remercie vous êtes très attentif.