同福

FreeRADIUS+Google Authenticator实现OTP认证(服务器端)

安装

安装依赖

apt update
apt install -y sudo
apt install -y freeradius freeradius-utils freeradius-rest libpam-google-authenticator

配置

创建root的OTP密钥

1、创建root的OTP密钥
执行命令google-authenticator命令。

google-authenticator -i "otp.tongfu.net"

b)使用Google Authenticator工具App拍照二维码
c)后面每一步都选y

2、创建OTP共享用户主目录

mkdir -p /etc/pam/users.d

3、创建root的OTP共享用户目录

mkdir -p /etc/pam/users.d/root

4、移动root的OTP密钥文件到OTP共享用户目录下

mv /root/.google_authenticator /etc/pam/users.d/root/

5、授权OTP共享用户目录

chown freerad:freerad -R /etc/pam/users.d/*

启用pam模块

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

配置pam模块

/etc/freeradius/3.0/mods-enabled/pam

默认pam_auth指向radiusd,不用改了

配置pam.d配置文件

/etc/pam.d/radiusd

1、注释掉所有默认配置
2、增加如下内容

auth required pam_google_authenticator.so user=freerad secret=/etc/pam/users.d/${USER}/.google_authenticator

配置users配置文件

/etc/freeradius/3.0/users

在最后增加如下内容

DEFAULT Auth-Type := PAM

配置默认站点

/etc/freeradius/3.0/sites-enabled/default

1、在authenticate下面添加/放开pam设置

        pam

2、在authenticate的pam下面增加如下配置

        Auth-Type PAM {
                pam
        }

测试

启动调试模式

停掉freeradius服务

systemctl stop freeradius

手动启动freeradius服务

freeradius -X

测试用户tftest的OTP认证

使用radtest命令测试用户tftest的OTP认证

radtest test 123456 localhost 0 testing123

启动服务

/etc/freeradius/3.0/clients.conf

在client localhost里把ipaddr=127.0.0.1改成ipaddr=0.0.0.0允许任何IP来访问。

启动freeradius服务

systemctl start freeradius