使用简单的 GUI 配置 TACACS+ 服务器

Configuring TACACS+ Server With A Simple GUI

在大型网络中管理身份验证和授权是一项挑战:密码需要不时设置和轮换,需要控制对某些配置设置的访问,最后,用户的操作需要记录在某处。 这就需要在网络中有一个中央控制器来负责这些功能。 现代路由器和交换机通常运行 Linux 操作系统,它们支持 TACACS+ 协议,使系统管理员能够实施灵活的身份验证和授权规则。 然而,Linux 操作系统的 TACACS+ 服务器实现虽然简洁,但缺乏图形用户界面,这使得守护进程配置成为一个流畅直观的过程。 在接下来的几段中,我们将讨论如何在 Linux 操作系统上配置 TACACS+ 守护进程,并演示如何部署一个简单而直观的 GUI,用于配置 TACACS+ 实例。

TACACS+ 代表终端访问控制器访问控制系统增强版,是一个主要由 Cisco 设计并在 RFC8907 中标准化的协议。 该协议的主要目标是在中央服务器上处理远程电信硬件上执行的命令的身份验证和授权。 TACACS+ 是一个很棒的协议,可以与 RADIUS 相媲美。 它的主要优点如下:它允许借助 MD5 哈希函数和电信硬件与中央服务器之间共享的密钥来加扰或混淆(虽然在密码学意义上并非真正的加密)整个有效负载,它支持 TCP 协议进行传输,并且它提供了以灵活方式执行 AAA 功能的可能性。 有关该协议的更多详细信息,请参见相应的 RFC。

Linux 存在一个非常简洁的 TACACS+ 服务器实现。 在这里,我们将讨论如何在 Linux 上配置此实现,并涉及与部署用于配置协议实例的基于 GUI 的工具相关的方面。

为了安装 TACACS+,请在您的网络设备群可以访问的服务器上运行以下命令

$ sudo apt-get update && sudo apt-get upgrade -y

$ sudo apt-get install -y perl build-essential libnet-ldap-perl libnet-ssleay-perl libauthen-pam-perl libpam-runtime libio- pty-perl libbind-dev libssl-dev libpcre3-dev libpcre++-dev libfreeradius-dev zlib1g-dev libgcrypt20-dev libcurl4-openssl-dev libpam0g-dev libsctp-dev libevent-dev

$ cd  ̃

$ wget http://www.pro-bono-publico.de/projects/src/DEVEL.tar.bz2

$ bzip2 -dc DEVEL.tar.bz2 | tar xvfp -

$ cd PROJECTS

$ sudo make

$ sudo make install

$ sudo mkdir /var/log/tac_plus

$ sudo mkdir /var/log/tac_plus/access

$ sudo mkdir /var/log/tac_plus/accounting

$ sudo mkdir /var/log/tac_plus/authentication

$ cp tac_plus/extra/etc_init.d_tac_plus /etc/init.d/tac_plus

$ chmod +x /etc/init.d/tac_plus

现在不用担心启动服务器。 我们稍后将在 GUI 的帮助下进行操作。 现在一切都已准备就绪,可以安装 GUI 部分。 首先,下载包含 TACACS+ GUI 的 Python 实现的存储库,如下所示

$ sudo apt-get install git

$ cd  ̃

$ git clone https://github.com/dmitriykuptsov/tacacsgui.git

$ cd tacacsgui

The next step is to run the installation script:

$ cd deployment

$ sudo bash deploy.sh

现在一切都已准备就绪,可以配置 TACACS+ 实例。 默认管理员用户名和密码可以在 database/schema.sql 文件中查找和更改。 现在打开浏览器并指向您新部署的 TACACS+ GUI 服务器的 IP 地址(通常,您将在浏览器中键入 http://<TACACS+ 服务器的 IP 地址>:8080/,除非您修改了服务器以满足您的需求)。

TACACS Configuration Login

登录服务器并导航到系统选项卡。 现在是修改默认系统配置的合适时机。 但是,通常,您只需要在此处设置 TACACS+ 服务器的密钥。 我使用 apg 实用程序以及以下参数来生成大小为 192 位的密钥,这是一个足够好的密钥长度

$ apg -a 1 -x 32 -m 32

TACACS Configuration System

填写身份验证密钥的值并保存表单。 现在我们准备为 TACACS+ 实例创建我们的第一个配置。 转到配置选项卡,然后按“添加新配置”按钮。 输入配置的名称,例如 Default,然后按“保存”按钮。 单击“构建并验证”以测试配置是否有效。 如果一切正常,您现在可以部署您的第一个 TACACS+ 实例。 为此,请单击“部署”按钮。 现在您可以检查配置是否已应用并且 TACACS+ 实例正在运行。 有一个小型的 Bash 脚本在后台定期运行,并检查 /usr/local/etc/tac plus.cfg 文件是否已更改。 如果出现问题,您可以随时检查 /etc/crontab 中定义的 cronjob 是否按设计运行。 如果一切正常,以下命令的输出应指示 tac plus 守护进程正在运行(给自己一分钟时间再执行检查,因为 cronjob 每分钟运行一次)

# ps aux | grep tac_plus

TACACS Configuration Actions

现在是时候定义命令、用户并将用户分配到组了。 让我们从组开始。 单击组选项卡,然后单击“添加新组”按钮。 输入组的名称,例如 Experts,填写组的到期日期,并将默认命令策略设置为“允许”(此组将具有广泛的权限)。 让我们创建一个策略更严格的组。 再次单击“创建组”,输入组的名称,例如 Juniors,并将默认策略设置为“拒绝”。 是的,别忘了设置组的到期日期。 现在保存组后,单击 Junior 组旁边的“编辑”。 此时,您可以开始添加允许该组中的用户执行的命令

TACACS Group Configuration

只需开始键入命令名称,所有匹配的命令都将弹出在对话框中。 选择所需的命令,然后单击“添加”按钮。 您可以根据需要向组添加任意数量的命令。 完成此操作后,别忘了通过单击“更新”按钮来更新组。 下一步是将用户添加到系统配置。 单击用户选项卡,然后单击“添加用户”按钮。 输入您的用户名和加密密码(初始密码可以很简单,因为用户将可以通过重置表单重置其密码,该表单的链接可以在首页上找到)。 现在,此表单中的密码应以加密形式输入。 要加密密码,您可以始终使用 openssl 库,如下所示

$ openssl passwd -1 resetme

将生成的密码复制到相应的字段并保存用户信息。 现在,用户保存后,您应该将其分配到一个组。 为此,单击所需用户旁边的“编辑”按钮,然后在打开的表单中开始键入组名称,然后将其添加到用户。 完成后,我们终于需要将我们的组和用户添加到配置中。 单击配置选项卡,选择您部署的配置,然后单击“编辑”。 在打开的页面中,添加您的所有组和所有用户,如下图所示

TACACS Configuration Groups

配置填充完毕后,您可以测试和部署配置。 恭喜,TACACS+ 已准备好用于身份验证、授权和计费。 还有一件事,仅作为示例,以下是华为交换机的 TACACS+ 的简单配置

system-view

hwtacacs enable

hwtacacs-server template ht

 hwtacacs-server authentication <IP address of TACACS+ server>

 hwtacacs-server authorization <IP address of TACACS+ server>

 hwtacacs-server accounting <IP address of TACACS+ server>

 hwtacacs-server shared-key cipher witOvibWotshEdPhutOgDiCrup3quod0

 quit

aaa

 authentication-scheme default

 authentication-mode local hwtacacs

 quit

 authorization-scheme default

 authorization-mode local hwtacacs

  authorization-cmd 1 hwtacacs local

  authorization-cmd 2 hwtacacs local

  authorization-cmd 3 hwtacacs local

  authorization-cmd 4 hwtacacs local

  authorization-cmd 5 hwtacacs local

  authorization-cmd 6 hwtacacs local

  authorization-cmd 7 hwtacacs local

  authorization-cmd 8 hwtacacs local

  authorization-cmd 9 hwtacacs local

  authorization-cmd 10 hwtacacs local

  authorization-cmd 11 hwtacacs local

  authorization-cmd 12 hwtacacs local

  authorization-cmd 13 hwtacacs local

  authorization-cmd 14 hwtacacs local

  authorization-cmd 15 hwtacacs local

  quit

accounting-scheme default

  accounting-mode hwtacacs

  accounting realtime 3

  accounting start-fail online

quit

 domain default_admin

 authentication-scheme default

  authorization-scheme default

  accounting-scheme default

  hwtacacs-server ht

quit quit

quit save

现在,每当您 SSH 连接到交换机时(请记住,如果您的基础设施使用不安全的链路,请勿使用 Telnet,如果您的基础设施从第三方提供商处租用通信通道,则可能会发生这种情况),身份验证和授权将在中央服务器上完成。 这样,可以轻松撤销用户,添加更复杂的授权方案并轮换用户密码。

加载 Disqus 评论