首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MultiOTP + FreeRADIUS + MS活动目录

MultiOTP + FreeRADIUS + MS活动目录
EN

Server Fault用户
提问于 2015-06-08 07:31:36
回答 3查看 4.4K关注 0票数 0

我正在运行一个CentOS 6.6 64位服务器,FreeRADIUS 2.1.12是从基本存储库安装的。此外,我使用的是MultiOTP (http://www.multiotp.net/),它被配置为连接到我们的Windows2012 R2服务器。

MultiOTP版本为4.3.1.1,对于配置FreeRADIUS,我使用了以下指南:http://wiki.freeradius.org/guide/multiOTP-HOWTO

我找不到任何关于旧版本的FreeRADIUS版本的信息,但至少使用PAP似乎有效:

代码语言:javascript
复制
radtest -t pap -x myusername mypasswordandtoken localhost 1812 sharedsecret
Sending Access-Request of id 95 to 127.0.0.1 port 1812
    User-Name = "myusername"
    User-Password = "mypasswordandtoken"
    NAS-IP-Address = 127.0.0.1
    NAS-Port = 1812
    Message-Authenticator = 0x00000000000000000000000000000000
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=95, length=20

radiusd -X输出如下所示:

代码语言:javascript
复制
[suffix] No '@' in User-Name = "myusername", looking up realm NULL
[suffix] No such realm "NULL"
++[suffix] returns noop
[eap] No EAP-Message, not doing EAP
++[eap] returns noop
++[files] returns noop
++[expiration] returns noop
++[logintime] returns noop
++? if (control:Auth-Type == 'MS-CHAP')
    (Attribute control:Auth-Type was not found)
? Evaluating (control:Auth-Type == 'MS-CHAP') -> FALSE
++? if (control:Auth-Type == 'MS-CHAP') -> FALSE
++- entering else else {...}
+++? if (!control:Auth-Type)
? Evaluating !(control:Auth-Type) -> TRUE
+++? if (!control:Auth-Type) -> TRUE
+++- entering if (!control:Auth-Type) {...}
++++[control] returns noop
+++- if (!control:Auth-Type) returns noop
++- else else returns noop
[pap] WARNING! No "known good" password found for the user.  Authentication may fail because of this.
++[pap] returns noop
Found Auth-Type = multiotp
# Executing group from file /etc/raddb/sites-enabled/default
+- entering group multiotp {...}
[multiotp]  expand: '%{User-Name}' -> 'myusername'
[multiotp]  expand: '%{User-Password}' -> 'mypasswordandtoken'
[multiotp]  expand: -src=%{Packet-Src-IP-Address} -> -src=127.0.0.1
[multiotp]  expand: -chap-challenge=%{CHAP-Challenge} -> -chap-challenge=
[multiotp]  expand: -chap-password=%{CHAP-Password} -> -chap-password=
[multiotp]  expand: -ms-chap-challenge=%{MS-CHAP-Challenge} -> -ms-chap-challenge=
[multiotp]  expand: -ms-chap-response=%{MS-CHAP-Response} -> -ms-chap-response=
[multiotp]  expand: -ms-chap2-response=%{MS-CHAP2-Response} -> -ms-chap2-response=
Exec-Program output:
Exec-Program: returned: 0
++[multiotp] returns ok

-t mschap中运行radtest不起作用,Radius输出如下:

代码语言:javascript
复制
[suffix] No '@' in User-Name = "myusername", looking up realm NULL
[suffix] No such realm "NULL"
++[suffix] returns noop
[eap] No EAP-Message, not doing EAP
++[eap] returns noop
++[files] returns noop
++[expiration] returns noop
++[logintime] returns noop
++? if (control:Auth-Type == 'MS-CHAP')
? Evaluating (control:Auth-Type == 'MS-CHAP') -> TRUE
++? if (control:Auth-Type == 'MS-CHAP') -> TRUE
++- entering if (control:Auth-Type == 'MS-CHAP') {...}
+++[control] returns noop
++- if (control:Auth-Type == 'MS-CHAP') returns noop
++ ... skipping else for request 1: Preceding "if" was taken
[pap] WARNING! No "known good" password found for the user.  Authentication may fail because of this.
++[pap] returns noop
Found Auth-Type = multiotpmschap
# Executing group from file /etc/raddb/sites-enabled/default
+- entering group multiotpmschap {...}
[multiotpmschap] Told to do MS-CHAPv1 with NT-Password
[multiotpmschap]    expand: %{User-Name} -> myusername
[multiotpmschap]    expand: %{User-Password} -> 
[multiotpmschap]    expand: -src=%{Packet-Src-IP-Address} -> -src=127.0.0.1
[multiotpmschap]    expand: -chap-challenge=%{CHAP-Challenge} -> -chap-challenge=
[multiotpmschap]    expand: -chap-password=%{CHAP-Password} -> -chap-password=
[multiotpmschap]    expand: -ms-chap-challenge=%{MS-CHAP-Challenge} -> -ms-chap-challenge=0xdf908aaeb26f4444
[multiotpmschap]    expand: -ms-chap-response=%{MS-CHAP-Response} -> -ms-chap-response=0x0001000000000000000000000000000000000000000000000000fbb0b53f018a0e1fec964169db2b88be0ca521a8d8a234b6
[multiotpmschap]    expand: -ms-chap2-response=%{MS-CHAP2-Response} -> -ms-chap2-response=
Exec-Program output: NT_KEY: F1111A9A8F0E249D347BE73B2D538685
Exec-Program-Wait: plaintext: NT_KEY: F1111A9A8F0E249D347BE73B2D538685
Exec-Program: returned: 99
[multiotpmschap] External script failed.
[multiotpmschap] MS-CHAP-Response is incorrect.
++[multiotpmschap] returns reject
Failed to authenticate the user.
Using Post-Auth-Type Reject
# Executing group from file /etc/raddb/sites-enabled/default
+- entering group REJECT {...}
[attr_filter.access_reject]         expand: %{User-Name} -> myusername
attr_filter: Matched entry DEFAULT at line 11
++[attr_filter.access_reject] returns updated
Delaying reject of request 1 for 1 seconds
Going to the next request
Waking up in 0.6 seconds.
Sending delayed reject for request 1
Sending Access-Reject of id 105 to 127.0.0.1 port 49595
    MS-CHAP-Error = "\000E=69
Waking up in 4.9 seconds.

另外,将执行mschap 2身份验证的应用程序连接到freeradius会产生与使用mschap与radclient相同的错误。

有人知道这个版本的FreeRADIUS是否可以与连接到活动目录的MultiOTP一起使用吗?

EN

回答 3

Server Fault用户

发布于 2016-02-22 16:27:02

是的,您是对的,MSCHAP和MSCHAPv2正在对密码进行散列,所以如果密码是引脚/内部密码+令牌,那么multiOTP重新计算它还是可以的,但是对于AD密码,没有办法做到,因为我们没有将AD密码存储在multiOTP中。

票数 2
EN

Server Fault用户

发布于 2016-02-20 04:33:47

此设置使用MultiOTP加密AD +令牌(MSCHAP),不取决于所使用的FreeRADIUS的哪个版本。如果你要深入了解事情是如何运作的,你就会意识到这是不可能的。现在,我认为MultiOTP无法从其数据库+令牌中使用AD重新生成散列以匹配来自客户端的加密密码(使用MSCHAP)。想象一下,对128位的哈希进行解密。

它适用于PAP,因为要比较用于身份验证的字符串是纯文本。在这种情况下,MultiOTP很容易重建与加密形式不同的字符串。

我希望这也能解释你为什么会犯这个错误。

票数 0
EN

Server Fault用户

发布于 2016-11-23 11:57:11

而不是:

代码语言:javascript
复制
Username: username
Password: [password] + [OTP]

您现在可以使用:

代码语言:javascript
复制
Username: username:OTP
Password: password

用户名= john,密码= myBigPassword,OTP = 123456的示例

代码语言:javascript
复制
Username: john:123456
Password: myBigPassword

由于OTP一直在变化,它是完全安全的,MS-CHAPv2 2起作用:-)

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/697304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档