zoukankan      html  css  js  c++  java
  • Freeradius+Cisco2500AC+OpenLdap认证

    为了将公司内部认证统一化,启用了802.1x认证,认证流程如下:

    UserClient->AC控制器->Freeradius->OpenLdap

    其中:

    Freeradius做认证使用

    OpenLdap存储用户账户密码

    现在开始配置:

    环境:

    Centos7

    OpenLdap2.4.4

    Freeradius 3.0.13

    1.安装Freeradius

    #yum -y install freeradius* //Free RADIUS Version 3.0.13

    2.修改配置文件
    vim/etc/raddb/users
    最后一行添加

    testuser Cleartext-Password := "test123"  

    说明:这一步仅仅是添加一个测试用户,测试Freeradius是否正常启动的,如果不想测试,可以不建这个用户

    3.vim/etc/hosts如果设置host这里应该设置hostname的值。
    [ip][hostname]

    4.测试
    再打开一个终端,执行
    radtest testuser test123 127.0.0.1 0 testing123

    其中 testuser 是用户  test123是密码 ,就是步骤2中新建的用户  testing123是共享密钥

    如果看到

    SendingAccess-Requestofid87to127.0.0.1port1812
    User-Name="testuser"
    User-Password="testpassword"
    NAS-IP-Address=192.168.50.65
    NAS-Port=1812
    Message-Authenticator=0x00000000000000000000000000000000
    rad_recv:Access-Acceptpacketfromhost127.0.0.1port1812,id=87,length=20
    则表示radius服务器配置成功。 

    5.编辑eap文件

    配置文件如下

    cat /etc/raddb/mods-enabled/eap|grep -v "#"|grep -v "^$"
    eap {
    default_eap_type = peap
    timer_expire = 60
    ignore_unknown_eap_types = no
    cisco_accounting_username_bug = no
    max_sessions = ${max_requests}
    md5 {
    }
    leap {
    }
    gtc {
    auth_type = PAP
    }
    tls-config tls-common {
    private_key_password = whatever
    private_key_file = ${certdir}/server.pem
    certificate_file = ${certdir}/server.pem
    ca_file = ${cadir}/ca.pem
    dh_file = ${certdir}/dh
    ca_path = ${cadir}
    cipher_list = "DEFAULT"
    cipher_server_preference = no
    ecdh_curve = "prime256v1"
    cache {
    enable = no
    }
    verify {
    }
    ocsp {
    enable = no
    override_cert_url = yes
    url = "http://127.0.0.1/ocsp/"
    }
    }
    tls {
    tls = tls-common
    }
    ttls {
    tls = tls-common
    default_eap_type = peap
    copy_request_to_tunnel = no
    use_tunneled_reply = no
    virtual_server = "inner-tunnel"
    }
    peap {
    tls = tls-common
    default_eap_type = mschapv2
    copy_request_to_tunnel = no
    use_tunneled_reply = no
    virtual_server = "inner-tunnel"
    }
    mschapv2 {
    }
    }

    6.启用ldap功能,因为账户密码存储在ldap上,所以freeradius需要配置ldap的连接信息

    # ln -s /etc/raddb/mods-available/ldap /etc/raddb/mods-enabled/ldap

    7 编辑ldap配置文件

    cat mods-enabled/ldap|grep -v "#"|grep -v "^$"
    ldap {
    server = '127.0.0.1'
    port = 389
    identity = 'cn=root,dc=domain,dc=com'
    password = 'your_password'
    base_dn = 'ou=OP,dc=domain,dc=com'
    sasl {
    }
    update {
    control:Password-With-Header	+= 'userPassword'
    control:NT-Password	:= 'sambaNTPassword' //重要,一定要记得更改这一行,下面会说原因
    control:	+= 'radiusControlAttribute'
    request:	+= 'radiusRequestAttribute'
    reply:	+= 'radiusReplyAttribute'
    }

     如果Freeradius的eap配置中 default_eap_type = peap 如果配置成peap的话,OpenLdap中的用户密码存储的时候可以采用两种方式

    1.)明文存储,Freeradius认证没问题,但是很不安全,因为能看到用户的明文密码

    2.)使用NT-Password加密存储,他其实是xp系统中用的MD4加密,所以OpenLdap中就需要添加samba的支持,然后将sambaNTPassword存储的密码字段映射为Freeradius中的NT-Password字段

    我采用的是方式2

    这段配置可以参考资料 https://hub.packtpub.com/storing-passwords-using-freeradius-authentication/

    8.vim sites-available/inner-tunnel 取消里面的所有的ldap注释

    9 vim sites-available/default 取消里面的所有的ldap注释

    至此,Freeradius的配置部分就完成了

    启动radius可以使用 

    radiusd -X  //带有debug模式启动,可以查看调试信息
    

    第二部分 OpenLdap配置

    1.安装不写了,参考我的文章 http://www.cnblogs.com/Kevin-1967/p/8931304.html

    2.安装完成后,需要按照上述步骤7中说的那样,添加samba支持,方法如下:

    #yum install -y samba-common samba samba-client
    #cp /usr/share/doc/samba-4.6.2/LDAP/samba.schema /etc/openldap/schema/
    #cp /usr/share/doc/samba-4.6.2/LDAP/samba.ldif /etc/openldap/schema/
    #ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/samba.ldif
    #systemctl restart slapd
    重启完OpenLdap的进程后,添加用户entry的时候就可以使用sambaSamAccount 的objectclass了,我添加用户的ldif文件模板如下
    dn: uid=testuser,ou=OP,dc=domain,dc=com
    objectClass: top
    objectClass: sambaSamAccount
    objectClass: inetOrgPerson
    cn: 测试用户1
    sambaSID: testuser
    sn: testuser
    uid: testuser
    mail: testuser@163.com
    sambaNTPassword: C941B8F73337FAC694888A9AA7376678
    telephoneNumber: 18812341234
    userPassword: e1NTSEF914cxeVRDWdeuR2NZdjl0e991bWtzNn0kn3pVNQ==
    

     说明:

    Freeradius认证拿的是SambaNTPassword字段的值,如果你还需要openldap完成其他认证,就需要同步修改userPassword字段

    所以,你需要写个网页,用户自助修改密码的时候同时修改OpenLdap中的sambaNTPassword字段和userPassword字段

    然后在cisco无线控制器上添加Freeradius即可,配置无线走802.1x认证,步骤略

    配置完。。。

    参考资料:
    http://www.178pt.com/179.html
    https://www.cnblogs.com/lemon-le/p/6207695.html
    参考资料:
    http://zgssheng.cn/2014/03/FreeRadius%20+%20802.1x:WPA%20+%20OpenLDAP%20wifi%E7%99%BB%E5%BD%95%E4%BD%BF%E7%94%A8%E4%B8%AA%E4%BA%BA%E5%B8%90%E5%8F%B7/
  • 相关阅读:
    Django drf 功能组件
    Django drf 视图家族
    Django drf初级
    Django drf序列化器 Serializer
    VUE 全整理
    Django Xadmin的安装方式
    python virtualenv虚拟环境搭建
    版本控制器:操作流程
    版本控制器:GIT线上操作
    《剑指offer》---跳台阶问题
  • 原文地址:https://www.cnblogs.com/Kevin-1967/p/8931413.html
Copyright © 2011-2022 走看看