802.1X网络认证环境搭建

本文细阐述的是EAP-PEAP的实现过程,华为交换机使用的是S5735S-L24T4X-A1

802.1X协议是一种基于端口的网络接入控制协议,其核心目标是在用户接入局域网之前,在物理层或链路层对设备进行身份验证 。在一个完整的802.1X体系中,存在三个关键角色:客户端、认证系统、以及认证服务器。

1. Ubuntu 24.04服务器安装FreeRADIUS

1.1 依赖更新与配置

bash 复制代码
sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install -y build-essential libssl-dev libtalloc-dev libkqueue-dev

1.2 FreeRADIUS部署

bash 复制代码
sudo apt-get install -y freeradius freeradius-utils freeradius-mysql

安装完成后验证服务是否正常启动,显示active (running)正常。

bash 复制代码
sudo systemctl status freeradius

1.3 数据库后端MariaDB的安装与初始化

安装MariaDB

bash 复制代码
sudo apt-get install -y mariadb-server
sudo systemctl start mariadb
sudo systemctl enable mariadb

创建数据库与用户:在终端输入sudo mysql -u root命令,进入MariaDB的命令行交互模式

  • 创建名为radius的数据库
  • 创建数据库用户radius并设置密码为radius_password_2024
sql 复制代码
CREATE DATABASE radius;
GRANT ALL ON radius.* TO 'radius'@'localhost' IDENTIFIED BY 'radius_password_2024';
FLUSH PRIVILEGES;
EXIT;

1.4 导入FreeRADIUS SQL架构

FreeRADIUS提供了一个标准的SQL架构文件,用于定义认证、授权、计费等表结构。

bash 复制代码
sudo -i
#这一步会提示输入数据库密码
mysql -u root -p radius < /etc/freeradius/3.0/mods-config/sql/main/mysql/schema.sql

1.5 FreeRADIUS核心认证策略配置

FreeRADIUS 只会响应来自已知客户端请求。在 /etc/freeradius/3.0/clients.conf中,需要添加华为交换机的IP地址及预共享密钥 。

实现需要配置交换机的IP地址和认证服务器在一个网段(下面是交换机的配置):

bash 复制代码
system-view
interface Vlanif 1
ip address 10.10.110.207 255.255.255.0
quit
ping 10.10.110.206 #ping下服务器看能否ping通
save #保存一下配置

/etc/freeradius/3.0/clients.conf中,需要添加华为交换机的IP地址及预共享密钥 。

复制代码
client huawei_switch {
    ipaddr = 10.10.110.207
    secret = Huawei_Radius_Key_2024
    shortname = S5735S-L
    nastype = other
}

1.6 证书自动化生成与管理

复制代码
sudo -i
cd /etc/freeradius/3.0/certs/
chmod +x ./bootstrap
./bootstrap
exit

该脚本将生成 server.pem(服务器证书)、server.key(私钥)和 ca.pem(根证书)。在生产环境中,客户端必须信任此根证书,否则认证将失败 。

1.7 启用SQL认证流

建立SQL模块的软链接

复制代码
sudo ln -s /etc/freeradius/3.0/mods-available/sql /etc/freeradius/3.0/mods-enabled/

在服务器中开启SQL调用

  • 搜索关键词 authorize {
  • 在该区域内找到 -sql#sql,将其修改为 sql(去掉前缀符号)。
  • 同理,搜索 accounting { 区域,确保其中的 sql 也被启用(去掉开头的 -# 号)。
bash 复制代码
sudo vim /etc/freeradius/3.0/sites-enabled/default

重复上述操作:在 authorize {accounting { 区域中,确保 sql 行没有被注释掉 。
| 💡

实际修改时无ccounting { 区域,忽略

bash 复制代码
sudo vim /etc/freeradius/3.0/sites-enabled/inner-tunnel

配置数据库连接参数

bash 复制代码
sudo vim /etc/freeradius/3.0/mods-available/sql

在文件内找到 sql {... } 部分,修改以下参数(对应之前在 MariaDB 中创建的信息):

  • driver = "rlm_sql_mysql"
  • dialect = "mysql"
  • server = "localhost"
  • login = "radius"
  • password = "radius_password_2024"
  • radius_db = "radius"
  • 关键点 :找到 read_clients = yes 这一行,去掉开头的 # 号。这允许 FreeRADIUS 从数据库的 nas 表中动态读取交换机配置 。

注释掉如下tls相关内容

复制代码
        mysql {
                # If any of the files below are set, TLS encryption is enabled
                #tls {
                #       ca_file = "/etc/ssl/certs/my_ca.crt"
                #       ca_path = "/etc/ssl/certs/"
                #       certificate_file = "/etc/ssl/certs/private/client.crt"
                #       private_key_file = "/etc/ssl/certs/private/client.key"
                #       cipher = "DHE-RSA-AES256-SHA:AES128-SHA"

                #       tls_required = yes
                #       tls_check_cert = no
                #       tls_check_cert_cn = no
                #}

                # If yes, (or auto and libmysqlclient reports warnings are
                # available), will retrieve and log additional warnings from
                # the server if an error has occured. Defaults to 'auto'
                warnings = auto
        }

验证与生效

bash 复制代码
# 强制杀死所有现有 radius 进程
sudo pkill freeradius

# 检查 1812 端口是否已被释放
sudo lsof -i :1812

# 重启服务
sudo systemctl restart freeradius

# 或者进入调试模式观察是否有 SQL 连接成功的日志
sudo freeradius -X

会有如下类似输出

复制代码
rlm_sql_mysql: Starting connect to MySQL server
......
Ready to process requests

2. 华为交换机配置

首先定义RADIUS服务器的地址和密钥,确保与clients.conf中的设置一致(在交换机中执行)

复制代码
<HUAWEI>system-view
[HUAWEI]radius-server template rd1
[HUAWEI-radius-rd1]radius-server authentication 10.10.110.206 1812
[HUAWEI-radius-rd1]radius-server accounting 10.10.110.206 1813
[HUAWEI-radius-rd1]radius-server shared-key cipher Huawei_Radius_Key_2024
[HUAWEI-radius-rd1]radius-server user-name domain-included

AAA方案与域的定义

复制代码
[HUAWEI]aaa
[HUAWEI-aaa]authentication-scheme sch1
[HUAWEI-aaa-authen-sch1]authentication-mode radius
[HUAWEI-aaa-authen-sch1]accounting-scheme sch1
[HUAWEI-aaa-accounting-sch1]accounting-mode radius
[HUAWEI-aaa-accounting-sch1]accounting realtime 15
[HUAWEI-aaa-accounting-sch1]quit

创建一个认证域,并将上述方案绑定到该域

复制代码
[HUAWEI-aaa]domain huawei.com
[HUAWEI-aaa-domain-huawei.com]authentication-scheme sch1
[HUAWEI-aaa-domain-huawei.com]accounting-scheme sch1
[HUAWEI-aaa-domain-huawei.com]radius-server rd1
[HUAWEI-aaa-domain-huawei.com]quit

802.1X接入配置文件与端口绑定,使用"统一模式"进行端口配置是目前华为官方推荐的最佳实践 。

bash 复制代码
# 创建 802.1X 接入配置文件
[HUAWEI-aaa]dot1x-access-profile name p1
[HUAWEI-dot1x-access-profile-p1]dot1x authentication-method eap
# 创建认证配置文件
[HUAWEI-dot1x-access-profile-p1]authentication-profile name auth_p1
[HUAWEI-authen-profile-auth_p1]dot1x-access-profile p1
[HUAWEI-authen-profile-auth_p1]access-domain huawei.com force
# 应用到交换机接口
[HUAWEI-authen-profile-auth_p1]interface GigabitEthernet 0/0/1 #重要:这个是客户端的接口,而不是服务器的接口
[HUAWEI-GigabitEthernet0/0/1]authentication-profile auth_p1

3. 登录数据库并添加测试用户

在ubutnu服务器侧执行

bash 复制代码
sudo mysql -u root -p radius #会提示输入root密码和数据库密码

输入密码进入后,执行以下SQL语句(创建一个用户名为 huawei_user,密码为 huawei@2024 的账号) :

sql 复制代码
INSERT INTO radcheck (username, attribute, op, value) 
VALUES ('huawei_user', 'Cleartext-Password', ':=', 'huawei@2026');
EXIT;

4. 客户端配置

启动核心服务(Wired AutoConfig)

Windows 默认不开启有线网的802.1X功能,必须手动启动服务:

  1. 按下键盘的 Win + R 键,输入 services.msc 并回车 。
  2. 在服务列表中找到 Wired AutoConfig (中文名:有线自动配置) 。
  3. 双击它,将"启动类型"改为 自动 ,并点击 启动 按钮 。
  4. 点击确定,此时你的网卡属性里才会出现"身份验证"选项卡 。

配置网卡身份验证属性

  1. 右键点击右下角的网络图标,选择"打开'网络和 Internet'设置",点击 更改适配器选项
  2. 找到你的"以太网"网卡,右键点击选择 属性
  3. 点击顶部的 身份验证 选项卡。
  4. 勾选 启用 IEEE 802.1X 身份验证
  5. 在"选择网络身份验证方法"中,选择 Microsoft: 受保护的 EAP (PEAP)

详细参数设置

  1. 点击上一步旁边的设置按钮 。
  2. 关键点:取消勾选 验证服务器证书(因为你目前使用的是 FreeRADIUS 生成的测试自签名证书,勾选会导致验证失败) 。
  3. 确保底部的"选择身份验证方法"是 安全密码 (EAP-MSCHAP v2)
  4. 点击其旁边的 配置 按钮,取消勾选"自动使用 Windows 登录名和密码",然后点确定返回 。

设置用户登录模式

  1. 回到网卡属性的"身份验证"页面,点击下方的 其他设置(或高级设置) 。
  2. 勾选 指定身份验证模式 ,在下拉框里选择 用户身份验证
  3. 点击"保存凭据",输入你在 Ubuntu 数据库(radcheck 表)里设置的账号和密码,或者点击确定,等插上网线时在弹出的对话框里输入 。

5. 常见命令

查看认证状态

bash 复制代码
<HUAWEI>display access-user
相关推荐
安科士andxe6 小时前
深入解析|安科士1.25G CWDM SFP光模块核心技术,破解中长距离传输痛点
服务器·网络·5g
YJlio9 小时前
1.7 通过 Sysinternals Live 在线运行工具:不下载也能用的“云端工具箱”
c语言·网络·python·数码相机·ios·django·iphone
CTRA王大大9 小时前
【网络】FRP实战之frpc全套配置 - fnos飞牛os内网穿透(全网最通俗易懂)
网络
testpassportcn10 小时前
AWS DOP-C02 認證完整解析|AWS DevOps Engineer Professional 考試
网络·学习·改行学it
通信大师11 小时前
深度解析PCC策略计费控制:核心网产品与应用价值
运维·服务器·网络·5g
Tony Bai12 小时前
告别 Flaky Tests:Go 官方拟引入 testing/nettest,重塑内存网络测试标准
开发语言·网络·后端·golang·php
消失的旧时光-194312 小时前
从 0 开始理解 RPC —— 后端工程师扫盲版
网络·网络协议·rpc
叫我龙翔13 小时前
【计网】从零开始掌握序列化 --- JSON实现协议 + 设计 传输\会话\应用 三层结构
服务器·网络·c++·json
“αβ”13 小时前
网络层协议 -- ICMP协议
linux·服务器·网络·网络协议·icmp·traceroute·ping
袁小皮皮不皮15 小时前
数据通信18-网络管理与运维
运维·服务器·网络·网络协议·智能路由器