Cisco, Linux, Securité

Log des commandes via Tacacs+

Hello,

Aujourd’hui je vais vous donner mon petit script pour faire de l’accounting et du log de commande sur vos équipements Cisco à l’aide d’un serveur tacacs+

Pour ce faire je vais utiliser tac_plus sous linux plus un petit script bash pour remettre en forme le logs.

Je pense que je ne vous apprendrais rien sur l’utilitée d’avoir un serveur d’authentification tacacs+ lorsque vous devez administrer un parc d’équipements Cisco.
En revanche, il peux etre utile de l’utiliser pour restreindre les commandes entrées et récupérer celle-ci afin de savoir « qui a touché à mon switch/ap/routeur sans mon autorisation » (je ne dirais pas de qui vien cette phrase mais je pense qu’il se reconaitra si il lis cet article).

On retrouve le paquet sous le nom de net-nds/tac_plus sous Gentoo ou encore de tacacs+ sous Debian.

Une fois le paquet installé, il ne restera plus qu’a configurer le service. Je vous montre ici un exemple de configuration:

# Define where to log accounting data, this is the default.
accounting file = /var/log/tac_plus.acct

# This is the key that clients have to use to access Tacacs+
key = cisco123 # please change me :)


# Definition d'un groupe
group = netadmin {
  # execute logging script
  after authorization "/usr/local/bin/taclog $user $address $name $port $status"
  
  
  service = exec {
    # If command is unspecified permit it by default
    default attribute = permit
	# User should login in "enable" directly
    priv-lvl = 15
  }
  
  # Denay earsing
  cmd = earse {
    deny .*
  }
  # Deny deleting important files
  cmd = delete {
    deny ".*nvram:.*"
    deny ".*flash:startup.*"
    deny ".*bin"
    permit .*
  }

}

user = jrecurt {
  # Using Active Directory login trough pam
  login = PAM
  # Group membership
  member = netadmin
}

Voici la configuration minimum. Notez ici l’utilisation de after authorization qui apellera le script parametré chaques fois qu’une commande sera acceptée de la part de notre serveur tacacs+.
C’est celui-ci qui nous permettra de logguer les commandes entrées.

Du cotez de votre équipement, il faudra le configurer pour lui dire d’utiliser le serveur tacacs. Pour cela vous pouvez utiliser le model d’authentification suivant:

aaa new-model
aaa authentication login default group tacacs+ local
aaa authentication enable default none
aaa authorization config-commands
aaa authorization exec default group tacacs+ local
aaa authorization commands 1 default group tacacs+ none
aaa authorization commands 15 default group tacacs+ none
tacacs-server host 192.168.111.250
no tacacs-server directed-request
tacacs-server key 0 cisco123

notez bien la ligne aaa authorization config-commands. Celle-ci permettra également de logguer les commandes entrées en mode de configuration (conf-t) ainsi que tous les autres sous-menus.

Voici le contenu du fichier « /usr/local/bin/taclog ». Vous pouvez aussi le télécharger ici.

#!/bin/bash

file="/var/log/tac_cmd"

arguments=""
e=0
while [ $e -ne 1 ]
do
  read -t 1 tmp
  e=$?
  var=$(echo $tmp | cut -f1 -d"=")
  if [[ "$var" == "cmd" ]]
  then
    cmd=$(echo $tmp | sed "s/^.*=//")
  fi

  if [[ "$var" == "cmd-arg" ]]
  then
    cmd_arg=$(echo $tmp | cut -f2 -d"=")
    arguments="${arguments} ${cmd_arg}"
  fi
done

#Arguments $user $address $name $port status

echo "`date +"%x %X"` user=$1/$2 target=$3/$4 CMD=${cmd}$arguments status=$5" >> $file

Vous trouverez à la 3ème ligne le fichier de sortie qui servira a logguer les commandes tapées. Voici un appercu de ce qui est loggué dans le fichier.

04/09/2012 14:32:21 user=jrecurt/192.168.111.105 target=192.168.111.254/tty1 CMD=show interfaces status  status=pass
Colones Description
04/09/2012 14:32:21 date & heure (du serveur)
user=jrecurt/192.168.111.105 Nom d’utilisateur / adresse ip de l’utilisateur
target=192.168.111.254/tty1 Adresse de l’équipement réseau / console (utile lorsqu’il y a plusieurs session ouverte vers le meme équipement)
CMD=show interfaces status La commande exécutée sur l’équipement
status=pass L’état de l’exécution de la commande

Voila avec tout ca, vous saurez tout ce qui a été fait sur vos équipements. Vous savez sur qui vous pouvez taper 🙂

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.