freeradius学习3--filter_username

本文详细介绍了如何在FreeRADIUS服务器中配置filter_username政策,通过查看配置文件和测试不同用户名,展示了如何检查并拒绝包含空格、非法字符的用户名,确保用户名合规。

1、查看/etc/raddb/sites-enabled/default文件,去掉注释和空行

#grep -v "#" /etc/raddb/sites-enabled/default | tr -s '\n'

找到authorize节,内容类似如下:

authorize {

        filter_username

        preprocess

        chap

        suffix

        eap {

                ok = return

        }

        files

        expiration

        logintime

        pap

        Autz-Type New-TLS-Connection {

                  ok

        }

}

2、filter_username在/etc/raddb/policy.d目录下的filter文件中定义

#more /etc/raddb/policy.d/filter

3、下面测试一个filter_username中的if条件

 if (&User-Name =~ / /) {

                        update request {

                                &Module-Failure-Message += 'Rejected: User-Name contains whitespace'

                        }

                        reject

                }

表示用户名中不得包含空格,否则返回reject

#radtest "alice " passme 127.0.0.1 100 testing123

屏幕输出如下:

Received Access-Reject Id 143 from 127.0.0.1:1812 to 127.0.0.1:39232 length 20

(0)-: Expected Access-Accept got Access-Reject

验证失败,什么原因,看不出来。

切换到服务运行窗口

......

authorize {

(0)     policy filter_username {

(0)       if (&User-Name) {

(0)       if (&User-Name)  -> TRUE

(0)       if (&User-Name)  {

(0)         if (&User-Name =~ / /) {

(0)         if (&User-Name =~ / /)  -> TRUE

(0)         if (&User-Name =~ / /)  {

(0)           update request {

(0)             &Module-Failure-Message += 'Rejected: User-Name contains whitespace'

(0)           } # update request = noop

(0)           [reject] = reject

(0)         } # if (&User-Name =~ / /)  = reject

(0)       } # if (&User-Name)  = reject

(0)     } # policy filter_username = reject

(0)   } # authorize = reject

......

从涂蓝色的调试信息中可以看出来,用户名中含有空格,直接被拒绝了。

4、其余的基本类似

#radtest alice@example@com passme 127.0.0.1 100 testing123

相关调试信息:if (&User-Name =~ /@[^@]*@/ )  -> TRUE

#radtest alice@example..com passme 127.0.0.1 100 testing123

相关调试信息:if (&User-Name =~ /\.\./ )  -> TRUE

#radtest alice@com passme 127.0.0.1 100 testing123

相关调试信息:if ((&User-Name =~ /@/) && (&User-Name !~ /@(.+)\.(.+)$/))   -> TRUE

#radtest alice@example.com. passme 127.0.0.1 100 testing123

相关调试信息:if (&User-Name =~ /\.$/)   -> TRUE

#radtest alice@.example.com passme 127.0.0.1 100 testing123

相关调试信息:if (&User-Name =~ /@\./)   -> TRUE

5、下面再看看符合规范的两个例子

#radtest alice@example.com passme 127.0.0.1 100 testing123

#radtest alice passme 127.0.0.1 100 testing123

调试信息如下:

......

 policy filter_username {

         if (&User-Name) {

         if (&User-Name)  -> TRUE

         if (&User-Name)  {

        if (&User-Name =~ / /) {       

         if (&User-Name =~ / /)  -> FALSE

        if (&User-Name =~ /@[^@]*@/ ) {

         if (&User-Name =~ /@[^@]*@/ )  -> FALSE

        if (&User-Name =~ /\.\./ ) {

         if (&User-Name =~ /\.\./ )  -> FALSE

        if ((&User-Name =~ /@/) && (&User-Name !~ /@(.+)\.(.+)$/))  {

        if ((&User-Name =~ /@/) && (&User-Name !~ /@(.+)\.(.+)$/))   -> FALSE

        if (&User-Name =~ /\.$/)  {

         if (&User-Name =~ /\.$/)   -> FALSE

        if (&User-Name =~ /@\./)  {

         if (&User-Name =~ /@\./)   -> FALSE

         } # if (&User-Name)  = notfound

 } # policy filter_username = notfound

......

涂绿色的表示用户没有发现违反上述规则

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值