在 Debian 8 Jessie 上使用 Cisco 路由器安装和配置 TACACS+
当今的技术在很大程度上依赖于网络设备以及该网络设备的正确配置。管理员的任务是确保配置更改不仅在实施前经过彻底测试,而且任何配置更改均由有权进行更改的个人完成,并确保记录更改。
此安全原则称为AAA (Triple-A) 或身份验证、授权和记帐。有两个非常著名的系统为管理员提供 AAA 功能,以确保对设备和这些设备所服务的网络的访问安全。
RADIUS(远程访问拨入用户服务)和TACACS+(终端访问控制器访问控制系统增强版)。
Radius 传统上用于对访问网络的用户进行身份验证,这与 TACACS 不同,TACACS 传统上用于设备管理。这两种协议之间的巨大差异之一是 TACACS 将 AAA 功能分离为独立功能的能力。
TACACS 与 AAA 功能分离的好处是可以控制用户执行某些命令的能力。这对于希望为网络人员或其他 IT 管理员提供非常细粒度的不同命令权限的组织来说非常有利。
本文将逐步介绍如何设置 Debian 系统来充当 TACACS+ 系统。
环境设置
- Debian 8 安装并配置有网络连接。请阅读这篇关于如何安装 Debian 8 的文章
- Cisco 网络交换机 2940(大多数其他 Cisco 设备也可以工作,但交换机/路由器上的命令可能会有所不同)。
在 Debian 8 上安装 TACACS+ 软件
设置这个新的TACACS服务器的第一步是从存储库获取软件。使用‘apt’命令可以轻松完成此操作。
apt-get install tacacs+
上述命令将在端口 49 上安装并启动服务器服务。这可以通过几个实用程序来确认。
lsof -i :49
netstat -ltp | grep tac
这两个命令应返回一行,指示 TACACS 正在该系统上的端口 49 上侦听。
此时,TACACS 正在侦听该计算机上的连接。现在是时候配置 TACACS 服务和用户了。
配置 TACACS 服务和用户
如果服务器碰巧有多个地址,通常最好将服务绑定到特定的 IP 地址。要完成此任务,可以修改默认守护程序选项以指定 IP 地址。
nano /etc/default/tacacs+
该文件指定TACACS系统应启动的所有守护程序设置。默认安装只会指定配置文件。通过向此文件添加'-B'参数,可以使用特定的IP地址供TACACS侦听。
DAEMON_OPTS="-C /etc/tacacs+/tac_plus.conf " - Original Line
DAEMON_OPTS="-C /etc/tacacs+/tac_plus.conf -B X.X.X.X " - New line, where X.X.X.X is the IP address to listen on
Debian 中的特别说明:由于某种原因,尝试重新启动 TACACS+ 服务以读取新的守护进程选项失败(通过 service tacacs_plus重新启动)。
这里的问题似乎是当通过 init 脚本启动 TACACS 时,PID 静态设置为 “PIDFILE=/var /run/tac_plus.pid ” 但是,当“-B X.X.X.X ”被指定为守护进程选项时,pid文件的名称将更改为“/var/run /tac_plus.pid.X.X.X.X”。
我不完全确定这是否是一个错误,但为了暂时解决这种情况,可以通过将行更改为 init 脚本中手动设置 PIDFILE“PIDFILE=/var/run/tac_plus.pid.X.X.X.X”,其中 X.X.X.X 是 TACACS 应该侦听的 IP 地址,然后使用以下命令启动服务:
service tacacs_plus start
重新启动服务后,可以再次使用 lsof 命令来确认 TACACS 服务正在侦听正确的 IP 地址。
lsof -i :49
如上所示,TACACS 正在侦听上面 TACACS 默认文件中设置的特定 IP 地址上的 IP 地址。此时需要创建用户和特定命令集。
此信息由另一个文件管理:“/etc/tacacs+/tac_plus.conf”。使用文本编辑器打开此文件以进行适当的修改。
nano /etc/tacacs+/tac_plus.conf
该文件是所有TACACS规范(用户权限、访问控制列表、主机密钥等)所在的位置。首先需要创建的是网络设备的密钥。
这一步有很大的灵活性。可以为所有网络设备配置单个密钥,也可以为每个设备配置多个密钥。该选项取决于用户,但为了简单起见,本指南将使用单个键。
key = "super_secret_TACACS+_key"
配置密钥后,应构建组来确定稍后将分配给用户的权限。创建组使权限委派变得更加容易。以下是分配完全管理员权限的示例。
group = admins {
default service = permit
service = exec {
priv-lvl = 15
}
}
- 组名称由“group=admins”行确定,其中 admins 是组名称。
- “默认服务=允许”行表示如果未显式拒绝某个命令,则隐式允许该命令。
- “service=exec { priv-lvl=15 }”允许 Cisco 设备上 exec 模式下的特权级别 15(特权级别 15 是最高级别)思科设备)。
现在需要将用户分配到管理员组。
user = rob {
member = admins
login = des mjth124WPZapY
}
- “user=rob ” 节允许用户名 rob 访问某些资源。
- “member=admins”告诉 TACACS+ 参考之前名为 admins 的组,以获取该用户有权执行的操作的列表。
- 最后一行,“login=des mjth124WPZapY”是一个des加密密码,供该用户进行身份验证(请随意使用破解器来破解这个超级“复杂”的密码示例)!
重要:通常最好的做法是将加密密码放入此文件中,而不是纯文本中,因为这样可以在有人阅读此文件时增加一点安全性文件并且不一定具有访问权限。
对此的一个很好的预防措施是至少删除配置文件上的全局读取访问权限。这可以通过以下命令来完成:
chmod o-r /etc/tacacs+/tac_plus.conf
service tacacs_plus reload
此时,服务器端已准备好接受来自网络设备的连接。现在让我们转到 Cisco 交换机,并将其配置为与此 Debian TACACS+ 服务器通信。