Freeradius Active Directory 集成

来自 Alpine Linux

本文档解释了如何将 Freeradius 2 与 Microsoft Active Directory 用作身份验证服务器。

在编写本文档时,使用的软件是

  • Microsoft Windows Server 2003 R2 SP2
  • Alpine 2.0.2
  • freeradius-2.1.10-r7
  • freeradius-postgresql-2.1.10-r7


加入域

安装 samba 和 kerberos

# apk add samba winbind heimdal

编辑 /etc/samba/smb.conf。将标签“<...>”替换为您环境的适当值

[global]
workgroup = <MYWORKGROUP>
#change the netbios name as desired
netbios name = RADIUS
realm = <MYREALM>
server string = 
security = ads
encrypt passwords = yes
password server = <DCNAME>.<MYDOMAIN>
log file = /var/log/samba/%m.log
max log size = 0
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
preferred master = False
local master = No
domain master = False
dns proxy = No
# use uids from 10000 to 20000 for domain users
idmap uid = 10000-20000
# use gids from 10000 to 20000 for domain groups
idmap gid = 10000-20000
# allow enumeration of winbind users and groups
winbind enum users = yes
winbind enum groups = yes
winbind use default domain = yes
# If you don't use SMB signing 
# change the following setting to "no"
client use spnego = yes

编辑 /etc/krb5.conf。将标签“<...>”替换为您环境的适当值。替换标签时,请确保保留大小写

[libdefaults]
default_realm = <MYREALM>
[realms]
<MYREALM> = {
kdc = <DCNAME>.<MYDOMAIN>
default_domain = <MYDOMAIN>
}
[domain_realm]
.<mydomain> = .<MYREALM>
<mydomain> = <MYREALM>

更改 /etc/conf.d/samba 中的

daemon_list="winbindd"

设置自动启动

# rc-update add samba default

加入域

# net ads join -S <DCNAME>.<MYDOMAIN> -U Administrator

您应该收到一条消息,表明您已加入域。

启动 winbind

# rc-service samba start

检查 AD 集成是否工作

# wbinfo -u

您应该获得所有域用户的列表。

配置 Freeradius

安装 freeradius-postgres

# apk add freeradius-postgres

编辑 /etc/raddb/sql.conf 以匹配您的 postgresql 服务器的设置

server = "<fqdn>"
login = "<username>"
password = "<password>"

可以使用 /etc/raddb/sql/postgres/*.sql 中找到的脚本来配置 PostgreSQL。

除了上面的脚本之外,您还应该对 radius 数据库运行以下语句(将“<user>”替换为 radius 数据库的用户)

GRANT USAGE ON SEQUENCE radpostauth_id_seq TO <user>;
GRANT USAGE ON SEQUENCE radacct_radacctid_seq TO <user>;

创建/编辑 /etc/raddb/modules/ntlm_auth。将“MYDOMAIN”替换为您的域名

exec ntlm_auth {
               wait = yes
               program = "/usr/bin/ntlm_auth --request-nt-key --domain=MYDOMAIN --username=%{mschap:User-Name} --password=%{User-Password}"
}

您必须在 raddb/sites-enabled/default 文件和 raddb/sites-enabled/inner-tunnel 文件的每个 authenticate 部分中列出 ntlm_auth

authenticate {
       ...
       ntlm_auth
       ...
}

将以下文本添加到 users 文件的顶部

DEFAULT     Auth-Type = ntlm_auth

在 /etc/raddb/modules/mschap 文件中找到 mschap 模块,并查找包含 ntlm_auth = 的行。默认情况下已注释掉。应取消注释并按如下方式编辑(将“MYDOMAIN”替换为您的域名)

ntlm_auth = "/usr/bin/ntlm_auth --request-nt-key --username=%{mschap:User-Name:-None} --domain=%{%{mschap:NT-Domain}:-MYDOMAIN} --challenge=%{mschap:Challenge:-00} --nt-response=%{mschap:NT-Response:-00}"

通过编辑 /etc/raddb/clients.conf 来配置您的客户端。

在调试模式下启动 radius 以检查一切是否正常工作

# radiusd -X

如果一切正常,请按 Ctrl^C 并将其设置为自动启动

# rc-update add freeradius default
# rc-service freeradius start

默认情况下未启用 SQL 记帐。在 /etc/raddb/sites-enabled/default 中,删除 accounting 部分下 “sql” 的注释

accounting {
...
sql
...
}