Mise en Service de TACACS+
Dans le domaine de la gestion des réseaux, la sécurité et le contrôle des accès sont des éléments cruciaux. TACACS+ (Terminal Access Controller Access-Control System Plus) est un protocole conçu pour répondre à ces besoins en offrant une authentification, une autorisation et une traçabilité centralisées. Développé à l’origine par Cisco, il est particulièrement adapté aux environnements où les administrateurs doivent gérer l'accès à de multiples équipements réseau.
Dans cet article, nous allons configurer un serveur TACACS+.
Pourquoi l’utiliser TACACS+?
TACACS+ est un protocole AAA (Authentication, Authorization, Accounting) qui permet aux administrateurs réseau de :
- Centraliser l’authentification : au lieu de gérer les identifiants localement sur chaque appareil, tous les utilisateurs sont authentifiés via un serveur central.
- Contrôler les autorisations : il permet de définir des permissions spécifiques pour chaque utilisateur ou groupe, limitant leurs actions sur les appareils réseau.
- Auditer les actions : toutes les connexions et commandes exécutées sont consignées, facilitant la traçabilité et le dépannage.
Comparé à RADIUS, TACACS+ offre une meilleure granularité pour l’autorisation et utilise TCP, ce qui garantit une transmission plus fiable des données.
1- Installation de TACACS+, ici ce sera sur FreeBSD
- Mise à jour des paquets
sudo pkg update sudo pkg upgrade
- Installation de TACACS+
sudo pkg install tac_plus
2- Configuration de TACACS+
2.1- Localisation du fichier de configuration
TACACS+ fonctionne avec un fichier de configuration unique, ce fichier devrait se trouver dans :
/usr/local/etc/tac_plus.conf
Si ce n'est pas le cas, créez-le :
sudo nano /usr/local/etc/tac_plus.conf
2.2- Exemple de fichiers de configurations
Fichier minimaliste avec authentification directement auprès du fichier de configuration:
key = "super_secret_key"
accounting file = /var/log/tac_plus.acct
group = admins {
default service = permit
service = exec {
priv-lvl = 15
}
}
user = user1 {
default service = deny
login = cleartext "userpass"
member = admins
}
Fichier plus complet avec utilisation du module PAM pour l'authentification auprès d'un LDAP:
#/usr/local/etc/tac_plus.conf
#On défini la clé
key = clétacacs
#On défini le fichier de log
accounting file = /var/log/tac_plus.acct
#On défini les switches qui auront l'autorisation de se connecter
acl = default {
permit = 192.168.24[8-9].([0-9]{1,3})
permit = 192.168.25[0-2].([0-9]{1,3})
}
#On peut définir des configurations spécifiques par switch
#host = 192.168.248.80 {
# key = clétacacs
# prompt = "Entrez le nom d'utilisateur et mot de passe tel que défini sur le serveur Radius"
#
# # A définir si le niveau de privilège (priv-lvl) est à 1, si le niveau
# # est à 15 l'utilisateur n'a pas besoin de saisir un mdp enable
# enable = des LeMotDePasseChiffré
# }
###########
# GROUPS #
###########
group = admin-15 {
#Toutes les commandes et services sont autorisées
default service = permit
#Authentification par pam en lien avec le ldap avec le fichier /etc/pam.d/tac_plus
login = PAM
#On utilise le fichier d'acl "default"
acl = default
#On défini le niveau de privilège à 15 (plus haut niveau)
#permettant de ne pas avoir à saisir le mdp enable
service = exec {
priv-lvl = 15
}
}
group = admin-1 {
default service = permit
login = PAM
acl = default
#On défini le niveau de privilège à 1 (plus bas niveau)
#l'utilisateur doit saisir le mdp enable pour pouvoir accéder
#aux commandes nécessitant un niveau de privilège de 15
service = exec {
priv-lvl = 1
}
enable = des lemotdepassechiffré
}
#Groupe avec seulement les droits en lecture, ne peut pas accéder en enable
group = read {
default service = permit
login = PAM
acl = default
service = exec {
priv-lvl = 1
}
}
################
# UTILISATEURS #
################
user = jean-michel.lecture {
member = read
}
user = fabrice.admin1 {
member = admin-15
}
user = Etienne.admin15 {
member = admin-15
}
Explication des éléments :
Chiffrer une chaîne de caractère pour l'utiliser dans le fichier de configuration
Le service tacacs offre la possibilité de chiffrer une chaîne de caractère puis de retourner une autre chaîne avec la commande “tac_pwd” qui peut être utilisé dans le fichier de configuration tac_plus.conf.
Exemple au niveau du serveur:
[root@tacacs-server:/home/user]# tac_pwd
Password to be encrypted: toto
QPgEC7djrTAmE
On peut ensuite utiliser la chaîne chiffré avec l'argument “des” de cette manière dans le fichier de configuration:
enable = des QPgEC7djrTAmE
Clé de chiffrement partagée
key = clétacacs_pas_celle_utilisé
Cette clé est partagée entre le serveur TACACS+ et les équipements réseau pour sécuriser les communications. Elle chiffre les échanges (par exemple, les identifiants des utilisateurs) entre les appareils.
Il faut s'assurer que cette clé est configurée sur tous les équipements réseaux.
Fichier de log pour la comptabilité (accounting file)
accounting file = /var/log/tac_plus.acct
Définit le chemin du fichier où seront enregistrées les activités (connexion, déconnexion, commandes exécutées).
Cela permet d'avoir une traçabilité complète des actions des utilisateurs, ce qui est utile pour les audits de sécurité et pour le dépannage.
Contrôle des accès via ACL
acl = default {
permit = 192.168.24[8-9].([0-9]{1,3})
permit = 192.168.25[0-2].([0-9]{1,3})
}
Définit quelles adresses IP ou plages d’adresses sont autorisées.
Le format utilisé accepte les expressions régulières pour spécifier des plages d’adresses.
Cela permet de limiter les connexions aux équipements autorisés seulement, ce qui améliore la sécurité en empêchant les connexions qui ne sont pas souhaitées.
Configurations spécifiques par switch
host = 192.168.248.80 {
key = clétacacs
prompt = "Entrez le nom d'utilisateur et mot de passe tel que défini sur le serveur Radius"
enable = des rDOjfG6iCjt15
}
Nous pouvons appliquer des configurations spécifiques, ce qui peut donner une flexibilité supplémentaire pour gérer des équipements réseau avec des besoins particuliers. Cette option rajoute néanmoins une complexité supplémentaire, à utiliser seulement si cela est nécessaire.
Groupes d’utilisateurs
group = admin-15 {
default service = permit
login = PAM
acl = default
service = exec {
priv-lvl = 15
}
}
Groupe d'administrateurs ayant le plus haut niveau de privilège (priv-lvl = 15).
Utilise le module PAM configuré pour s'authentifié (ici nous utiliserons LDAP).
On autorise la connexion pour les périphériques réseau dans l'acl "default".
Le mot de passe "enable" n'est, ici, pas requis, le niveau de privilège 15 permet d'eviter une double authentification pour l'accès aux commande privilégiées.
group = admin-1 {
default service = permit
login = PAM
acl = default
service = exec {
priv-lvl = 1
}
enable = des lemotdepassechiffré
}
Groupe d'administrateurs ayant un accès limité (priv-lvl = 1).
Utilise le module PAM configuré pour s'authentifié (ici nous utiliserons LDAP).
On autorise la connexion pour les périphériques réseau dans l'acl "default".
Le mot de passe "enable" est requis pour exécuter des commandes de niveau 15 et est défini directement dans le fichier, chiffré grâce à la commande "tac_pwd" (voir plus haut).
group = read {
default service = permit
login = PAM
acl = default
service = exec {
priv-lvl = 1
}
}
Groupe d'utilisateurs ayant seulement des droits en lecture, le mot de passe "enable" n'étant pas défini dans la configuration, ils ne peuvent pas augmenter leur niveau de privilège.
Utilisateurs
user = jean-michel.lecture {
member = read
}
user = fabrice.admin1 {
member = admin-1
}
user = Etienne.admin15 {
member = admin-15
}
On définit ici les utilisateurs et leur groupe d'appartenance, on peut également faire des configurations spécifiques comme au niveau des groupes, ce qui permet une gestion granulaire des accès par individu.
Si l'authentification se fait au niveau du LDAP il conviendra de mettre le même nom d'utilisateur.
Après modification du fichier, il faut relancer le service:
service tac_plus restart
3- Configuration de PAM (si utilisation LDAP)
PAM (Pluggable Authentication Module) est un système modulaire et flexible qui fournit des mécanismes d'authentification pour les applications et services sous Unix et Linux. Il permet d’intégrer et de centraliser la gestion des méthodes d'authentification, facilitant l’ajout ou la modification des politiques d'accès sans devoir réécrire le code des applications qui s’en servent.
PAM agit comme une couche intermédiaire entre les applications nécessitant une authentification et les méthodes d’authentification disponibles (par exemple, les fichiers locaux, LDAP, Kerberos, ou encore des solutions biométriques).
Dans notre cas, nous allons nous servir de PAM pour l'authentification LDAP.
Création du fichier :
cd /etc/pam.d
sudo nano tac_plus
Configuration :
#/etc/pam.d/tac_plus
# auth
auth sufficient /usr/local/lib/pam_ldap.so
# account
account sufficient /usr/local/lib/pam_ldap.so
# session
#session sufficient /usr/local/lib/pam_ldap.so no_warn try_first_pass
# password
password sufficient /usr/local/lib/pam_ldap.so
4- Configuration OpenLDAP (si utilisation LDAP)
Ce fichier est à modifier suivant votre paramétrage LDAP.
#/usr/local/etc/ldap.conf
host ldap.organisation.fr
base ou=mgmtswitches,ou=services,dc=organisation,dc=fr
binddn cn=services,ou=admin,dc=organisation,dc=fr
bindpw lemdpducompteldap
pam_login_attribute uid
pam_lookup_policy no
pam_check_host_attr no
pam_check_service_attr no
pam_password crypt
5- Fichiers des logs
- Accounting : /var/log/tac_plus.acct
- Service tacacs : grep tac /var/log/messages
6- Configuration des équipements réseau
Allied Telesis
conf t
tacacs-server host IpDuServeurTacacs+ key laclédetacacs
aaa authentication enable default group tacacs+ local
aaa authentication login default group tacacs+ local
aaa accounting login default start-stop group tacacs+
aaa accounting commands 1 default stop-only group tacacs+
aaa accounting commands 7 default stop-only group tacacs+
aaa accounting commands 15 default stop-only group tacacs+
Cisco
conf t
aaa authentication login default group tacacs+ local
aaa authentication enable default group tacacs+ enable
aaa authorization exec default group tacacs+ local
aaa authorization commands 15 default group tacacs+ none
aaa accounting commands 1 default stop-only group tacacs+
aaa accounting commands 7 default stop-only group tacacs+
aaa accounting commands 15 default stop-only group tacacs+
tacacs server TACACS
address ipv4 IpDuServeurTacacs+
key laclédetacacs
Si l'équipement n'arrive pas à joindre le serveur Tacacs l'authentification passe sur le login et enable local.