Linux-Tacacs+ 3A

 

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_adminsys_admin的组。network_admin组在路由器上具有完全权限15权限,而sys_admin组只能访问show命令,并且能够使用访问vlantrunkdescription等基本设置配置接口。

每个组都将应用ACL,其中network_admin组可以访问任何设备,而sys_admin组只允许访问特定设备。

每个用户都有自己的密码并启用密码。我还将展示两种验证用户身份的方法:

 

  1. 使用配置的密码和tac_pwd命令对其进行加密。
  2. 使用在系统上配置的用户并从/ etc / passwd文件进行身份验证。

 

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相关联,并且有效期为201511日。

network_admin团队将被授权在设备上运行任何命令,而sys_admin团队将具有运行命令的有限授权。

sys_admin团队将被授权运行以下命令:

  1. 授权启用模式。
  2. 授权运行任何show命令
  3. 被授权退出(注意不结束)模式。
  4. 授权执行配置即配置终端。
  5. 授权进入以太网,FastEthternetGigabitEthernet
  6. 接口配置。
  7. 授权更改switchport配置。
  8. 授权更改接口的描述。
  9. 拒绝运行任何其他命令。

 

 

要为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,.

 

接下来,我们将使用两种不同的方法为每个用户生成启用密码:

  1. 用户administrator将拥有与其帐户关联的自己的启用密码。
  2. 用户zhuhaijin.admin将使用配置的默认启用密码。

 

将使用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-daemonDebian体系里的一个守护进程管理软件,如果你不是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 

Linux-Tacacs+ 3A_第1张图片

设置开机自启:

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

Linux-Tacacs+ 3A_第2张图片

审计日志查看

tail -f /var/log/tac_plus/tac_plus.acct

Linux-Tacacs+ 3A_第3张图片

 

 

 

 

 

 

 

你可能感兴趣的:(中间件)