【Freeradius】使用Freeradius、LDAP和Google Authenticator实现双因素身份验证

本文介绍了如何在WindowsAD提供LDAP服务的环境中,使用Ubuntu22.04部署和配置Freeradius及GoogleAuthenticator,以增强网络访问的安全性,通过双因素身份验证进行认证和授权。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

随着网络安全威胁的增加,传统的用户名和密码已经变得不再安全。为了加强网络访问的安全性,双因素身份验证成为了一种流行且有效的解决方案。在本文中,我们将介绍如何在已有的Windows AD环境下,在Ubuntu 22.04上安装和配置Freeradius和Google Authenticator来实现双因素身份验证,来提供网络访问服务器认证、授权和帐户信息。。

  • Freeradius 是一个功能强大的开源 AAA (认证、授权、会计) 服务器,用于实现网络访问控制和用户认证。
  • Google Authenticator是谷歌提供的双因素身份验证服务,提供额外的安全层,确保用户登录和访问在线服务时的身份确认。
  • Windows AD 提供的LDAP服务是基于轻量目录访问协议,用于管理和访问Windows活动目录中的用户、组织结构和资源等信息。

实验环境:
Windows AD(已有):提供LDAP服务,作为用户信息的存储库。
Ubuntu 22.04:将用于安装和配置Freeradius和Google Authenticator。

以下是实施步骤:

第一步:在Ubuntu 22.04上安装Freeradius和Google Authenticator以及相关软件。

apt update && apt upgrade -y
apt-get install freeradius freeradius-common freeradius-utils freeradius-ldap libpam-google-authenticator -y

root@ud-Virtual-Machine:/home/ud# freeradius -v
radiusd: FreeRADIUS Version 3.0.26, for host x86_64-pc-linux-gnu, built on Jan  4 2023 at 03:23:09
FreeRADIUS Version 3.0.26
Copyright (C) 1999-2021 The FreeRADIUS server project and contributors
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE
You may redistribute copies of FreeRADIUS under the terms of the
GNU General Public License
For more information about these matters, see the file named COPYRIGHT

root@ud-Virtual-Machine:/home/ud# google-authenticator -h
google-authenticator [<options>]
 -h, --help                     Print this message
 -c, --counter-based            Set up counter-based (HOTP) verification
 -C, --no-confirm               Don't confirm code. For non-interactive setups
 -t, --time-based               Set up time-based (TOTP) verification
 -d, --disallow-reuse           Disallow reuse of previously used TOTP tokens
 -D, --allow-reuse              Allow reuse of previously used TOTP tokens
 -f, --force                    Write file without first confirming with user
 -l, --label=<label>            Override the default label in "otpauth://" URL
 -i, --issuer=<issuer>          Override the default issuer in "otpauth://" URL
 -q, --quiet                    Quiet mode
 -Q, --qr-mode={NONE,ANSI,UTF8} QRCode output mode
 -r, --rate-limit=N             Limit logins to N per every M seconds
 -R, --rate-time=M              Limit logins to N per every M seconds
 -u, --no-rate-limit            Disable rate-limiting
 -s, --secret=<file>            Specify a non-standard file location
 -S, --step-size=S              Set interval between token refreshes
 -w, --window-size=W            Set window of concurrently valid codes
 -W, --minimal-window           Disable window of concurrently valid codes
 -e, --emergency-codes=N        Number of emergency codes to generate

第二步:配置Freeradius和Google Authenticator。

1. 编辑的第一个配置文件是 /etc/freeradius/3.0/radiusd.conf 文件

# SECURITY CONFIGURATION
security {
	# user/group: The name (or #number) of the user/group to run radiusd as.
	user = root
	group = root
}

2. 需要编辑 FreeRadius 配置文件是 /etc/freeradius/3.0/sites-enabled/default。这个文件告诉 FreeRADIUS 如何使用 PAM 进行授权和认证。

在这里插入图片描述
在这里插入图片描述

3. 上面的配置片段使用了一个在 /etc/freeradius/3.0/policy.d/filter 中定义的新过滤器( “filter_google_otp”),它有助于从密码中提取6位数的TOTP。

在这里插入图片描述

4. 由于我们正在使用新的属性( “Google-Password”)在协议中名称没有意义。因此,将新的属性添加到 /etc/freeradius/3.0/dictionary 文件中,如下所示。

在这里插入图片描述

5. 设置 FreeRadius 客户端,在这里/etc/freeradius/3.0/clients.conf,我们可以设置客户端(例如:网络设备或服务器)用于连接到 RADIUS 服务器的密钥。请确保将默认密钥更改为不同的密钥,以提高安全性,以下配置仅供测试使用。在这里插入图片描述

6. 开始配置 freeradius LDAP 模块以连接到 LDAP 服务器。编辑文件 /etc/freeradius/3.0/mods-available/ldap,内容如下所示。

在这里插入图片描述

7. 由于我们配置了 FreeRADIUS 使用 PAM + LDAP 对用户进行身份验证,我们需要配置 /etc/pam.d/radiusd 文件,并指示它集成 Google Authenticator PAM。请按照以下配置并将其余行注释掉。在这里插入图片描述

8. 在配置完后,通过执行以下命令启用LDAP 模块和PAM 模块。

ln -s /etc/freeradius/3.0/mods-available/ldap /etc/freeradius/3.0/mods-enabled/
ln -s /etc/freeradius/3.0/mods-available/pam /etc/freeradius/3.0/mods-enabled/

9. 修改FreeRADIUS 服务的 systemd 服务单元文件/lib/systemd/system/freeradius.service

# Ensure the daemon can still write its pidfile after it drops
# privileges. Combination of options that work on a variety of
# systems. Test very carefully if you alter these lines.
RuntimeDirectory=freeradius
RuntimeDirectoryMode=0775
User=root
Group=root

10. 当所有配置文件都已更改时,需要重新启动服务才能使更改生效,可以执行以下命令重新启动 FreeRadius 服务。

systemctl daemon-reload
systemctl restart freeradius.service

第三步:测试

在开始测试之前,您需要创建 LDAP 用户 Google Authenticator,并保存在/google_auth文件夹下。

a. 创建vim add-otp-user

#!/bin/bash
if [ -z $1 ]; then
	echo "Usage: add_otp_user USERNAME"
	exit 1
fi
# Ensure the otp folder is present
[ -d /google_auth ] || mkdir -p /google_auth
	google-authenticator \
					 --time-based \
					 --disallow-reuse \
					 --force \
					 --rate-limit=3 \
					 --rate-time=30 \
					 --window-size=3 \
					 -s /google_auth/${1}.google_authenticator

b. 赋权

chmod -v +x add-otp-user

c. 运行脚本添加用户Google Auth密钥

#添加OTP 【where username matches the LDAP username】
bash ./add-otp-user <username> 

d. 测试所有配置是否成功

#Command Syntax
radtest <username> <password+google authenticator TOTP> localhost 1812 <RADIUS secret key>

#Example:
radtest use01 ldapuserpassword123456 localhost 1812 testing123#

在这里插入图片描述

通过实施以上步骤,您可以为您的Radius服务添加一层额外的安全性。双因素身份验证不仅提供了更强的身份认证,还可以减少身份盗窃和未授权访问的风险。然而,需要注意的是,双因素身份验证并不能保证100%的安全性。使用强密码、定期更换密码、定期更新系统和进行安全审计等其他安全措施同样重要。综合采取多种安全策略,才能有效保护系统和用户的数据安全。

通过结合Freeradius、Google Authenticator和LDAP的强大功能,您可以轻松实现双因素身份验证,并提升系统的安全性。不断关注并采取最新的安全技术,保护您的网络免受恶意入侵和数据泄露的威胁。为了您的系统和用户的安全,投入一些时间和精力来实施双因素身份验证是值得的!

<think>嗯,用户想在CentOS 9上安装配置FreeRADIUS服务器。我需要先整理一下步骤。首先,CentOS 9可能之前版本的包管理有些不同,比如用dnf代替yum。然后,FreeRADIUS的安装可能需要从源码编译,因为默认仓库可能没有最新的版本。参考之前的引用里提到过CentOS7的安装步骤,用户需要类似的指导,但针对CentOS9。 首先,环境准备部分。用户需要安装必要的开发工具依赖包。比如gcc、make这些编译工具,还有像libtalloc这样的库。可能需要运行dnf groupinstall "Development Tools"来安装开发工具组。然后关闭防火墙SELinux,这部分之前的CentOS7步骤类似,但需要确认命令是否有变化,比如systemctl的用法是否一样。 接下来是下载编译FreeRADIUS。用户需要从官网下载源码包,解压后进入目录,执行configure、make、make install。这里要注意权限问题,可能需要用sudo来执行安装。另外,configure的时候可能需要指定安装路径或启用某些模块,比如数据库支持,但用户的问题中没有提到需要数据库,可能基础配置就够了。 然后是配置FreeRADIUS的部分。编辑radiusd.conf,设置日志、认证端口等。用户需要知道默认的客户端配置,比如在clients.conf中添加本地客户端的IP共享密钥。测试时使用radtest命令,这里需要确保用户文件(如users)中有测试账号的正确配置。 可能遇到的问题包括依赖包缺失,编译错误,或者配置文件路径不正确。比如CentOS9的某些库名称可能不同,需要确认。另外,SELinux如果开启可能会阻止服务运行,所以建议先禁用它,或者配置相应的策略。 用户可能还希望服务器在启动时自动运行,所以需要创建systemd服务文件,并启用服务。这部分在之前的引用中提到过,但CentOS9的systemd配置是否相同呢?可能需要检查服务文件的路径内容是否正确。 最后,生成相关问题时,要考虑用户可能的后续需求,比如性能优化、与其他服务集成(如LDAP或MySQL),或者生产环境的安全配置。比如如何配置TLS加密,或者使用EAP方法进行更安全的认证。</think>### CentOS 9 安装配置 FreeRADIUS 服务器指南 #### 一、环境准备 1. **关闭防火墙与SELinux** ```bash sudo systemctl stop firewalld sudo systemctl disable firewalld sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config sudo setenforce 0 ``` 该操作可避免网络策略干扰服务运行[^2] 2. **安装开发工具** ```bash sudo dnf groupinstall "Development Tools" -y sudo dnf install openssl-devel libtalloc-devel -y ``` 这是编译FreeRADIUS的必要依赖 #### 二、源码编译安装 1. **下载源码包** ```bash wget https://github.com/FreeRADIUS/freeradius-server/archive/refs/tags/release_3_2_3.tar.gz tar xzf release_3_2_3.tar.gz cd freeradius-server-release_3_2_3/ ``` 2. **编译与安装** ```bash ./configure --prefix=/usr/local/freeradius make sudo make install ``` 通过`--prefix`指定自定义安装路径 #### 三、基础配置 1. **创建系统服务** ```bash sudo tee /etc/systemd/system/freeradius.service <<EOF [Unit] Description=FreeRADIUS After=network.target [Service] Type=forking ExecStart=/usr/local/freeradius/sbin/radiusd -d /usr/local/freeradius/etc/raddb ExecReload=/bin/kill -HUP $MAINPID [Install] WantedBy=multi-user.target EOF ``` 2. **配置测试客户端** 编辑`/usr/local/freeradius/etc/raddb/clients.conf`: ```nginx client localhost { ipaddr = 127.0.0.1 secret = testing123 require_message_authenticator = no } ``` #### 四、运行与验证 1. **启动服务** ```bash sudo systemctl daemon-reload sudo systemctl start freeradius sudo systemctl enable freeradius ``` 2. **执行基础测试** ```bash radtest testuser testpass 127.0.0.1 0 testing123 ``` 成功响应应包含`Access-Accept`报文 #### 五、进阶配置建议 1. **用户存储配置** - 编辑`/usr/local/freeradius/etc/raddb/mods-available/files` - 添加测试用户: ``` "testuser" Cleartext-Password := "testpass" ``` 2. **启用EAP-TLS认证** ```bash cd /usr/local/freeradius/etc/raddb/mods-enabled sudo ln -s ../mods-available/eap . ``` 需配置SSL证书后生效[^1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值