1. 综述
802.1X 是一种基于端口的网络访问控制协议,常用于无线局域网(WLAN)和有线局域网(LAN)中,以提供对用户或设备的身份验证。
本文简单介绍在ubuntu上安装freeradius服务器,交换机和无线控制器配置802.1X(思科型号,注意交换机和无线控制器必须支持802.1x认证功能,普通的华为路由器没有此功能),以及在linux客户端进行有线和无线802.1X认证。
需要的硬件设备:
(1)ubuntu主机,搭建freeradius服务器
(2)支持802.1X的交换机
(3)支持802.1X的无线控制器
(4)linux客户端,用于测试连接802.1X认证
(5)足够的网线
2. ubuntu上搭建freeradius服务器
- 选择合适版本的ubuntu桌面版本,这里有一个坑的地方,ubuntu桌面版本和linux客户端版本要保持大版本的一致,不然会由于openssl的版本问题,可能导致出错,如果不使用网络证书的话没啥问题。
- ubuntu上安装freeradius, 命令行sudo apt-get install freeradius。
- FreeRadius 环境测试,freeradius提供了测试功能,命令是radtest Username Password ServerIP Port Secre
freeradius默认是不用数据库的,用户信息,保存在users(注:这里简单起见不使用数据库)
注意:这里用root账号登录,不然会无法访问以下路径,也无法修改文件内容
cd /etc/freeradius/3.0
gedit users
- 测试的时候开两个终端,命令行sudo service freeradius stop先将freeradius服务关闭,一个终端执行 sudo freeradius -X,然后再开一个终端执行 radtest steve testing localhost 1812 testing123
- 1812是默认端口,testing是用来验证身份的,在clients.conf中写明
如果出现Access Accept的提示,测试成功!
这里值得注意的是最后手机或者IPad终端进行链接时,所输入的身份和密码是 steve和testing
如下图所示:
- 修改client.conf文件
反注释掉 client private-network -1 部分代码
修改ipaddr为电脑通过网线链接路由器或交换机(支持802.1X协议)DHCP获取到的IP:比如192.168.41.100,这里在测试环境下建议将IP改为0.0.0.0,允许所有的客户端进行连接。
cd /etc/freeradius/3.0
gedit client.conf
- 修改完配置文件,命令行sudo service freeradius stop先将freeradius服务关闭,一个终端执行 sudo freeradius -X重新启动即可生效。
- 保证freeradius服务器所在的ubuntu主机和交换机以及无线控制器直连,最好用网线直连,无认证的方式保持能够直接通信。
EAP功能补充 - freeradius开启EAP功能,编辑EAP配置文件,通常位于/etc/freeradius/3.0/mods-enabled/eap
gedit /etc/freeradius/3.0/mods-enabled/eap
找到eap配置块,并确保启用了TLS:
eap {
default_eap_type = tls
…
}
在tls-config tls-common块中,配置证书路径:
tls-config tls-common {
private_key_file = /etc/freeradius/3.0/certs/server.key
certificate_file = /etc/freeradius/3.0/certs/server.pem
ca_file = /etc/freeradius/3.0/certs/ca.pem
dh_file = /etc/freeradius/3.0/certs/dh
…
}
确保这些证书文件是存在的,并且权限正确。 - 证书的生成,如果你没有证书,可以使用FreeRADIUS提供的脚本来生成它们:
cd /etc/freeradius/3.0/certs
chmod +x bootstrap
./bootstrap
这将生成CA证书、服务器证书和客户端证书。
注:添加读权限,不然freeradius -X无法启动,tls会报错,会认为无法访问证书
chmod o+r /etc/freeradius/3.0/certs/server.pem
chmod o+r /etc/freeradius/3.0/certs/ca.pem
chmod o+r /etc/freeradius/3.0/certs/server.key
注意这里有坑:
证书是有有效期的,默认是60天。
需要在linux客户端上设置当前时间:
date -s “2024-05-30 10:55:02”
3. 思科交换机配置(有线网启用802.1X)
-
启用802.1x认证,在命令行界面输入:
aaa new-model
dot1x system-auth-control
以上两条命令启用aaa和802.1x功能。
cisco交换机的命令行位置如下图:
-
添加aaa验证的radius服务器
在命令行界面执行如下代码
radius server ubuntu-test
address ipv4 192.168.1.25 auth-port 1812
key testing123
exit
以上的密码在freeradius的clients.conf文件里保存,默认密码,192.168.1.25是ubuntu里的radius服务器的IP,请修改为实际的IP。 -
配置有线网接口开启使用802.1X认证,这一步需要控制具体的网口,如下图所示:
以上示例启用23号网口的802.1X认证。
- 将23号网线直连到Linux客户端上。
4. Linux客户端进行802.1X的有线网连接
-
首先请确保安装了wpa_supplicant
sudo apt-get install wpasupplicant -
配置 wpa_supplicant
创建或编辑wpa_supplicant的配置文件,通常这个文件位于/etc/wpa_supplicant/wpa_supplicant.conf。以下是一个基本的配置示例,用于有线网络
ctrl_interface=/var/run/wpa_supplicant
update_config=1
eapol_version=1
ap_scan=0network={
key_mgmt=IEEE8021X
eap=PEAP
identity=“steve”
password=“testing”
phase1=“peaplabel=0”
phase2=“auth=MSCHAPV2”
}
使用的是PEAP方式,不需要用网络证书。
这里的账号密码是/etc/freeradius/3.0/users里的steve和testing。
-
启动 wpa_supplicant
使用以下命令启动wpa_supplicant,确保指定正确的网络接口(例如eth0):
sudo wpa_supplicant -i eth0 -c /etc/wpa_supplicant/wpa_supplicant.conf -D wired -
如果配置正常的话可以发现连接上有线网,并能够和CISCO交换机通信。
5.思科无线控制器的配置(无线网启用802.1X)
- 创建radius服务器,
如下图所示:
- 启用802.1X认证
针对具体的wifi开启802.1X的无线认证功能。
补充EAP功能开启
- 创建EAP服务,如下图所示:
- 开启EAP服务,如下图所示:
6.Linux客户端进行802.1X的无线网连接
-
安装 wpa_supplicant:
如果你的系统中还没有安装wpa_supplicant,你可以通过包管理器安装它。在Ubuntu上,你可以使用:
sudo apt-get install wpasupplicant -
配置 wpa_supplicant:
你需要创建或编辑wpa_supplicant的配置文件,通常这个文件位于/etc/wpa_supplicant/wpa_supplicant.conf。以下是一个配置802.1X认证的示例配置:
ctrl_interface=/var/run/wpa_supplicant
network={
ssid=“你的SSID”
key_mgmt=WPA-EAP
eap=PEAP
identity=“steve”
password=“testing”
phase1=“peaplabel=0”
phase2=“auth=MSCHAPV2”
}
替换你的SSID、你的用户名和你的密码为实际的值,这里是账号密码是steve和testing。
无线网的802.1X认证方式为PEAP。 -
运行 wpa_supplicant:
使用以下命令启动wpa_supplicant,确保指定正确的接口(例如wlan0)和配置文件路径:
sudo wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf -D nl80211,wext -
使用 wpa_cli 连接网络:
一旦wpa_supplicant运行,你可以使用wpa_cli来管理连接。首先启动wpa_cli:
sudo wpa_cli
在wpa_cli的命令行界面,你可以使用以下命令来重新加载配置并连接网络:
reconfigure
然后,检查状态:
status
7. 总结
802.1X的配置难点在与freeradius服务器的配置,以及思科路由器和思科无线控制器的配置。以上是个人实际使用中的一点总结,希望有所帮助。