key = "" accounting file = /var/log/tacacs-accounting.log logging = local5 # Access-list to cover certain switches acl = access-sw-only { # 10.230.0.0/15, 10.232.0.0/14 permit = ^10\.23[012345]\. } # Group that can only view configuration (careful, not audited!) group = view-only { default service = permit login = PAM service = exec { priv-lvl = 15 } cmd = clear { deny "." } cmd = configure { deny "." } cmd = copy { deny "startup" deny "running" permit "." } cmd = write { permit "terminal( )?$" } cmd = diagnostic { deny "." } cmd = debug { deny "." } } # Group with certain privileges on certain devices (comments inline) group = operator { default service = deny login = PAM service = exec { priv-lvl = 15 } #### Exec level commands #### cmd = show { permit "." } cmd = exit { permit "^()?$" } cmd = quit { permit "^()?$" } cmd = write { permit "terminal( )?$" permit "memory( )?$" } #### Configure commands #### cmd = configure { permit "^terminal( )?$" } #--- Allow the exec level commands from configure mode ---# cmd = do { permit "^show .*" permit "^sh .*" } #--- Allow entering interfaces ---# cmd = interface { #--- Disallow configuring uplinks (23-28) ---# deny "^GigabitEthernet [12]/0/2[345678]( )?$" deny "^GigabitEthernet 0/2[345678]( )?$" #--- Allow configuring physical interfaces ---# permit "^(Gigabit|Fast)Ethernet.*" } #--- Allow a range of specific interface configuration commands ---# cmd = switchport { permit "^access vlan [128][0-9][0-9]( )?$" permit "^mode access( )?$" permit "^trunk allowed vlan add [128][0-9][0-9]( )?$" permit "^trunk allowed vlan remove [128][0-9][0-9]( )?$" } cmd = description { permit "." } cmd = shutdown { permit "^()?$" } cmd = spanning-tree { permit "^portfast( )?$" permit "^bpduguard enable( )?$" } cmd = mls { permit "^qos cos [01234]( )?$" permit "^qos cos override( )?$" } #--- Allow creation and naming of VLANs 100-299 + 800-899 ---# cmd = vlan { permit "^[128][0-9][0-9]( )?$" } cmd = name { permit "." } #--- Allow unshutting interfaces, and clearing descriptions ---# cmd = no { permit "^shutdown( )?$" permit "^description" } acl = access-sw-only } user = operator1 { member = view-only } user = operator2 { member = operator }