TACACS
作为思科路由器访问控制的重要环节,TACACS+扮演了至关重要的角色。TACACS+的全称是:Terminal Access Controller Access-Control System Plus(终端访问控制器访问控制系统),它是一款思科专属网络协议,提供了对于路由器,网络服务器等网络设备的访问控制功能。另外,它也包含身份验证、 授权和统计功能。
软件下载官网
http://shrubbery.net/tac_plus/
ftp://ftp.shrubbery.net/pub/tac_plus
安装依赖包:
yum -y install gcc make flex bison libwrap0-dev
yum -y install tcp_wrappers
yum install tcp_wrappers-devel -y
wget ftp://ftp.shrubbery.net/pub/tac_plus/tacacs+-F4.0.4.26.tar.gz
tar xf tacacs+-F4.0.4.26.tar.gz
cd tacacs+-F4.0.4.26
less INSTALL
. /configure --prefix=/usr --enable-acls --enable-uenable && make install
#安装TACACS +之后,二进制文件将在/ usr / bin /中可用(如果您选择安装到默认位置,文件将位于/ usr / local / bin中):
修改库文件路径(如果没有使用-prefix=/usr更改安装路径,然后将/usr/local/ lib添加到/etc/ld.so.conf)
cat /etc/ld.so.conf
include /etc/ld.so.conf.d/*.conf
/usr/lib
任意位置执行ldconfig重新加载库:
ldconfig
安装成功后,在目录/usr/local/bin/下,生成三个文件
ls /usr/bin/tac*
/usr/bin/tac /usr/bin/tac_plus /usr/bin/tac_pwd
#tac_plus是TACACS +守护进程
#tac_pwd用于从明文密码生成数据加密标准(DES)或消息摘要5(MD5)哈希。注意,如果要使用MD5,则需要在生成密码时使用-m选项。
配置TACACS +
在本例中,我将创建两个名为network_admin和sys_admin的组。network_admin组在路由器上具有完全权限15权限,而sys_admin组只能访问show命令,并且能够使用访问vlan,trunk和description等基本设置配置接口。
每个组都将应用ACL,其中network_admin组可以访问任何设备,而sys_admin组只允许访问特定设备。
每个用户都有自己的密码并启用密码。我还将展示两种验证用户身份的方法:
tac_plus.conf文件说明
首先,我们需要创建目录和tac_plus.conf文件,其中将定义TACACS +配置:
手动创建配置文件
mkdir /etc/tacacs
cd /etc/tacacs
touch tac_plus.conf
chmod 755 tac_plus.conf
我们还需要创建一个文件,其中将发送TACACS +记帐日志。
mkdir /var/log/tac_plus
touch /var/log/tac_plus/tac_plus.acct
编辑配置文件
vim /etc/tacacs/tac_plus.conf
# Encryption key
#加密密钥#需要配置的第一件事是用于加密守护进程和客户端之间的数据包的加密密钥。此密钥必须与客户端上配置的密钥匹配:
key = "itiaoling2019"
# Set where to send accounting records
#会计;所有记帐记录都写入文件,syslog优先级信息,或两者都写。在这个例子中,我将设置记帐记录发送到我们在/ var / log / tac_plus中创建的文件,以及syslog(到禁用发送到syslog并仅发送到该文件只需取消注释指定syslog的行#):
accounting syslog;
accounting file = /var/log/tac_plus/tac_plus.acct
# ACL for network_admin
groupacl = network_admin {
# allow access from all sources
permit = .*
# implicit deny (ie: anything else)
}
# ACL for sys_admin
groupacl = sys_admin {
# allow access from 10.10.10.250 only
permit = .*
# implicit deny (ie: anything else)
}
# network_admin group, full access to network devices
group = network_admin {
default service = permit
#expires = "Jan 1 2015"
acl = network_admin
service = exec {
priv-lvl = 15 #15最高权限
}
}
# sys_admin group, only has read access to the network devices and can change the access vlan on an interface
group = sys_admin {
default service = permit #deny可全部拒绝
#expires = "Jan 1 2015"
acl = sys_admin
service = exec {
priv-lvl = 15 #如果为0表示没有权限
}
cmd = enable {
permit .*
}
cmd = show {
permit .*
}
cmd = exit {
permit .*
}
cmd = configure {
permit .*
}
cmd = interface {
permit Ethernet.*
permit FastEthernet.*
permit GigabitEthernet.*
}
cmd = switchport {
permit "access vlan.*"
permit "trunk encapsulation.*"
permit "mode.*"
permit "trunk allowed vlan.*"
}
cmd = description {
permit .*
}
cmd = no {
permit shutdown
}
}
# User administrator using DES password and enable passwords
user = root {
member = network_admin
login = des cs/SJXb7aA4fQ #cisco
enable = des qVibJi8YfF.kk #root
}
# User bob authenticating from the system /etc/passwd and the default enable password
user = zhuhaijin.admin {
login = file /etc/passwd
member = sys_admin
}
# Global enable level 15 password
user = $enab15$ {
login = des TEVXvKs4mNq9c #zhuhaijin.admin
}
在我们的示例中,每个组都将配置一个默认服务(对于network_admin,它是允许的,而sys_admin组默认是拒绝所有服务)。每个组还将与之前定义的ACL相关联,并且有效期为2015年1月1日。
network_admin团队将被授权在设备上运行任何命令,而sys_admin团队将具有运行命令的有限授权。
sys_admin团队将被授权运行以下命令:
要为administrator创建密码,我们将使用tac_pwd命令生成DES加密密码以包含在tac_plus.conf文件中:
[root@localhost tacacs]# /usr/bin/tac_pwd
Password to be encrypted: cisco
cs/SJXb7aA4fQ
要创建用户zhuhaijin.admin,我们必须将帐户添加到TACACS +服务器:
[root@localhost tacacs]# useradd zhuhaijin.admin
[root@localhost tacacs]# passwd zhuhaijin.admin
更改用户 bob 的密码 。
新的 密码: zhj@2016,.
重新输入新的 密码: zhj@2016,.
接下来,我们将使用两种不同的方法为每个用户生成启用密码:
将使用tac_pwd命令以与定义其身份验证密码相同的方式生成administrator的启用密码:
[root@localhost tacacs]# /usr/bin/tac_pwd
Password to be encrypted: administrator
qVibJi8YfF.kk
对于用户zhuhaijin.admin,我们将使用TACACS +守护程序“$ enable $”中的一个特别定义的用户。“$ enable $”用户用于默认的系统范围的启用帐户,该帐户用于未配置特定启用密码的任何用户。我们需要使用tac_pwd为“$ enable $”用户生成启用密码:
[root@localhost tacacs]# /usr/bin/tac_pwd
Password to be encrypted: zhuhaijin.admin
aDk8k.X.aJcmY
现在我们已经生成了密码,我们可以创建用户帐户并将它们与各自的组相关联。
注意:如果我们使用tac_pwd生成的密码,我们必须将登录帐户指定为DES:
我们需要在/ etc / default下为tac_plus创建一个默认配置文件:
touch /etc/default/tac_plus
chmod 755 /etc/default/tac_plus
vim /etc/default/tac_plus
CONFIG_FILE="/etc/tacacs/tac_plus.conf"
OTHER_OPTS="-d 16 -L"
创建启动脚本文件
touch /etc/init.d/tac_plus
chmod 755 /etc/init.d/tac_plus
编辑启动脚本
vim /etc/init.d/tac_plus
#!/bin/sh
#
### BEGIN INIT INFO
# Provides: tac-plus
# Required-Start: $network
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: S 0 1 6
# Short-Description: Start tac-plus server.
# Description: Run the tac-plus server listening for
# AAA ( access, acounting and autorization request )
# from routers or RAS (remote access servers) via
# tacacs+ protocol
### END INIT INFO
PATH=/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/tac_plus
NAME=tac_plus
DESC="Tacacs+ server"
OTHER_OPTS="-d 256" # Default, if no /etc/default/tac-plus available
CONFIG_FILE="/etc/tacacs/tac_plus.conf" # Default, if no /etc/default/tac-plus available
test -f $DAEMON || exit 0
if [ -r /etc/default/tac_plus ] ; then
. /etc/default/tac_plus
fi
DAEMON_OPTS="-C $CONFIG_FILE $OTHER_OPTS"
case "$1" in
start)
echo -n "Starting $DESC: "
/usr/local/bin/start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
/usr/local/bin/start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid --exec $DAEMON $DAEMON -- $DAEMON_OPTS
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
/usr/local/bin/start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid --exec $DAEMON
echo "$NAME."
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop}" >&2
exit 1
;;
esac
exit 0
注意:star-stop-daemon是Debian体系里的一个守护进程管理软件,如果你不是debian系统,必须先安装这个软件才能使用;
centos安装star-stop-daemon
wget http://developer.axis.com/download/distribution/apps-sys-utils-start-stop-daemon-IR1_9_18-2.tar.gz
tar xf apps-sys-utils-start-stop-daemon-IR1_9_18-2.tar.gz
rm -fr dpkg_1.17.27.tar.xz
cd apps
cd sys-utils/
cd start-stop-daemon-IR1_9_18-2/
gcc start-stop-daemon.c -o start-stop-daemon
cp start-stop-daemon /usr/local/bin/start-stop-daemon
/usr/bin/tac_plus -P /etc/tacacs/tac_plus.conf
#测试tac_plus.cfg有没有错误
启动tac_plus查看端口
/etc/init.d/tac_plus start
设置开机自启:
chkconfig tac_plus on
到此服务器端的tacacs认证配置基本完成,然后网络工程师会去交换机上结合你的key(itiaoling2019)使用思科网络设备进行测试,会给你一台授权服务器(10.32.1.22),你可以自己通过xshell去连接这个IP,用户就是zhuhaijing.admin,密码:zhj@2016,.
登陆之后执行一下en命令如果不报错基本就ok啦。
查看tacacs启动运行日志
tail -f /var/log/tac_plus.log
审计日志查看
tail -f /var/log/tac_plus/tac_plus.acct