麻瓜骑士 2023-11-22 14:48 采纳率: 0%
浏览 12
已结题

如何搭建开源且支持数据库的Tacacs服务器?

我要搭建一个tacacs server,用来对登录思科华三的交换机,aruba的无线控制器,fortinet的防火墙,F5的负载均衡等设备的用户进行身份认证,现在正使用的是思科的ISE,现在的目标就是要平替掉它,需要有用户分组,设备分组,自定义可执行命令组,还有授权组,希望能从数据库中读取这些信息,好为以后做HA高可用打基础。

img

  • 写回答

11条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-11-22 15:20
    关注

    引自强大而免费的微信小程序:皆我百晓生

    搭建开源且支持数据库的Tacacs服务器需要经过以下步骤:

    1. 安装Tacacs服务器
    在Linux服务器上安装Tacacs服务器软件,常用的Tacacs服务器软件有FreeTacacs+和Tacacs-ng。这些软件可以从其官方网站或者通过包管理器进行安装。

    2. 配置Tacacs服务器
    在Tacacs服务器上进行配置,需要指定认证源以及登录设备的信息。以下是一个示例的Tacacs服务器配置文件(tac_plus.conf)的内容:

    # 指定日志文件路径
    accounting file = /var/log/tac_plus.acct
    
    # 指定Tacacs+认证源的配置文件路径
    authentication default = login_authen
    accounting default = login_acct
    
    # 处理交换机设备的认证配置
    # 设置允许认证的设备列表
    source login_authen {
        permit = 192.168.1.0/24
        default = UC
    }
    
    # 定义认证源UC(用户认证),使用数据库进行用户认证
    user = @UC {
        login = PAM
        service = exec {
            priv-lvl = 15
            }
        }
    
    # 定义认证源EOUI(设备认证),使用设备的IP地址进行认证
    user = @EOUI {
        cleartext_login_prompt = "Username:"
        cleartext_login_user = "tacacs"
        cleartext_login_password = "tacacs"
        }
    
    # 定义设备组
    group = WLC {
        default service = permit
        service = exec {
            priv-lvl = 5
            }
        }
    
    # 定义可执行命令组
    command = show {
        permit = *
        }
    
    # 定义Shell profiles
    shell = network-admin {
        cmd = show
        }
    
    # 定义权限设置
    # 设备组分组
    acl = WLC {
        permit = 192.168.2.0/24
        }
    
    # 实施的策略
    policy = default {
        order = 10 {
            if has acl WLC {
                permit service = shell network-admin
                }
            }
        }
    

    3. 配置数据库
    为了能够从数据库中读取用户或设备信息,需要在Tacacs服务器上配置数据库连接。常见的数据库包括MySQL和PostgreSQL。下面是一个Tacacs服务器连接MySQL数据库的示例:

    在Tacacs服务器的配置文件(tac_plus.conf)中添加以下内容:

    # 指定数据库类型和连接信息
    database = mysql {
        module = mysql
        host = localhost
        user = tacacs
        password = tacacs
        dbname = tacacs
        }
    
    # 定义数据库查询语句
    mysql login_authen {
    
        # 用户认证查询
        default query = "SELECT password FROM users WHERE username='%s'"
    
        session query = "SELECT service FROM users WHERE user='%s'"
    
        # 设备认证查询
        default cleartext_query = "SELECT password FROM devices WHERE ip='%s'"
        }
    
    # 定义数据库查询语句
    mysql login_acct {
        accounting_update query = "UPDATE users SET bytes_in=%b, bytes_out=%B \
            WHERE username='%s'"
        }
    

    4. 创建数据库表格
    根据Tacacs服务器配置文件中定义的数据库查询语句,创建对应的数据库表格,并插入相关的用户和设备信息。

    例如,对于上述配置文件中使用MySQL数据库的情况,可以使用以下命令创建数据库表格:

    CREATE TABLE users (
        username VARCHAR(255) PRIMARY KEY,
        password VARCHAR(255),
        bytes_in BIGINT,
        bytes_out BIGINT
    );
    
    CREATE TABLE devices (
        ip VARCHAR(255) PRIMARY KEY,
        password VARCHAR(255)
    );
    
    INSERT INTO users (username, password) VALUES ('user1', 'password1');
    INSERT INTO devices (ip, password) VALUES ('192.168.1.1', 'password2');
    

    5. 启动Tacacs服务器
    完成配置后,启动Tacacs服务器,使其开始监听指定的端口并处理认证请求。

    在Linux命令行中,可以使用以下命令启动Tacacs服务器:

    tac_plus -C /path/to/tac_plus.conf
    

    6. 测试Tacacs服务器
    使用登录思科华三的交换机、Aruba的无线控制器、Fortinet的防火墙或F5的负载均衡器等设备进行连接测试,通过Tacacs服务器进行身份认证。

    可以在设备上进行Tacacs服务器的配置,设置Tacacs服务器的IP地址和认证密钥。

    例如,在思科交换机上的配置命令如下:

    aaa new-model
    aaa authentication login default group tacacs+ local
    aaa authorization exec default group tacacs+ local
    
    tacacs-server host 192.168.1.2 key secret_key
    

    通过连接设备,输入用户名和密码进行登录,Tacacs服务器会进行身份认证,如果认证通过,则可以进行后续操作。

    需要注意的是,上述步骤仅提供了一个基本的搭建Tacacs服务器的指导,具体的配置和调整需根据自己的环境和需求进行。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月26日
  • 修改了问题 11月22日
  • 赞助了问题酬金20元 11月22日
  • 创建了问题 11月22日

悬赏问题

  • ¥15 matlab2017
  • ¥15 在vxWorks下TCP/IP编程,总是connect()报错
  • ¥15 AnolisOs7.9如何安装 Qt_5.14.2的运行库
  • ¥20 求:怎么实现qt与pcie通信
  • ¥50 前后端数据顺序不一致问题,如何解决?(相关搜索:数据结构)
  • ¥15 基于蒙特卡罗法的中介效应点估计代码
  • ¥15 罗技G293和UE5.3
  • ¥20 Tesla 特斯拉K80显卡 如果需要使用该设备,你需要禁用系统上的另一个设备。
  • ¥30 QT调用百度智能云千帆模型无法取得返回文本
  • ¥50 CCD工业视觉相机检测出现光边