freeRADIUS服务器为802.1x配置

时间:2016-04-20 12:29:39

标签: freeradius 802.11

我想将freeRADIUS服务器配置为企业WLAN测试的身份验证服务器。我是freeRADIUS服务器配置的新手。请给我一步一步或任何安装和配置链接

谢谢, Devaa

3 个答案:

答案 0 :(得分:2)

首先我们需要一个工作场所,所以我创建了一个目录:

mkdir /usr/src/freeradius && cd /usr/src/freeradius

接下来,我们需要获取源代码并获取所有依赖项,因此请更新源代码并输入以下命令:

apt-get update
apt-get build-dep freeradius
apt-get install libssl-dev fakeroot
apt-get source freeradius

这应该已经为我们下载了FreeRADIUS源代码,所以现在我们必须进行一些更改,告诉我们的编译器使用我们将要使用的EAP模块来构建它。首先修改/usr/src/freeradius/freeradius-1.1.3/debian/control并从libssl-dev移除Build-Conflicts:并将其添加到Build-Depends: line的末尾。您的文件应如下所示:

Build-Depends: debhelper (>= 5), libltdl3-dev, libpam0g-dev, libmysqlclient15-dev | libmysqlclient-dev, libgdbm-dev, libldap2-dev, libsasl2-dev, libiodbc2-dev, libkrb5-dev, snmp, autotools-dev, dpatch (>= 2), libperl-dev, libtool, dpkg-dev (>= 1.13.19), libssl-dev
Build-Conflicts:

接下来,您需要为EAP模块添加说明,因此请在文件末尾输入以下内容:

Package: freeradius-eaptls
Architecture: any
Depends: freeradius (= ${binary:Version}), ${shlibs:Depends}
Description: eap-tls module for FreeRADIUS server
Debian will not provide a binary version of the rlm_eap_tls.so library. This
module is required if you want to use EAP/TLS authentication, commonly used
for WiFi access points.

Package: freeradius-eappeap
Architecture: any
Depends: freeradius (= ${binary:Version}), ${shlibs:Depends}
Description: eap-peap module for FreeRADIUS server
Debian will not provide a binary version of the rlm_eap_peap.so library. This
module is required if you want to use EAP/PEAP authentication, commonly used
for WiFi access points.

保存并退出此文件。

接下来我们将修改/usr/src/freeradius/freeradius-1.1.3/debian/rules。查找并注释我们的“buildssl =”和“moduleslist = - ”行并添加以下行:

buildssl=–without-rlm_otp –without-rlm_sql_postgresql –without-snmp
modulelist=krb5 ldap sql_mysql sql_iodbc eap_peap eap_tls

保存并退出。

现在输入以下命令:

echo “usr/lib/freeradius/rlm_eap_tls*.so” >/usr/src/freeradius/freeradius-1.1.3/debian/freeradius-eaptls.install
echo “usr/lib/freeradius/rlm_eap_peap*.so” > /usr/src/freeradius/freeradius-1.1.3/debian/freeradius-eappeap.install

接下来让我们创建/usr/src/freeradius/freeradius-1.1.3/debian/freeradius-eaptls.postinst并输入以下内容:

#! /bin/sh

set -e

case "$1" in
 configure)
       if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then
         invoke-rc.d freeradius restart
       else
         /etc/init.d/freeradius restart
       fi
       ;;
 abort-upgrade)
       ;;
 abort-remove)
       ;;
 abort-deconfigure)
       ;;
esac

#DEBHELPER#

现在我们将创建/usr/src/freeradius/freeradius-1.1.3/debian/freeradius-eappeap.postinst并添加以下内容:

#! /bin/sh

set -e

case "$1" in
 configure)
       if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then
         invoke-rc.d freeradius reload
       else
         /etc/init.d/freeradius reload
       fi
       ;;
 abort-upgrade)
       ;;
 abort-remove)
       ;;
 abort-deconfigure)
       ;;
esac

#DEBHELPER#

现在困难部分已经完成,让我们编译我们的deb包。输入以下命令:

cd /usr/src/freeradius/freeradius-1.1.3/
dpkg-buildpackage -rfakeroot -uc -us

如果一切顺利,你现在应该在/usr/src/freradius中有几个.deb包,所以让我们输入以下内容来安装它们:

dpkg -i freeradius_1.1.3-3_i386.deb
dpkg -i freeradius-eaptls_1.1.3-3_i386.deb
dpkg -i freeradius-eappeap_1.1.3-3_i386.deb

通过发出以下命令检查FreeRADIUS是否已正确编译和安装:

ps aux | grep freeradius

And you should see something similar to this:

freerad 29998 0.0 0.8 44620 2224 ? Ssl 00:55 0:00 /usr/sbin/freeradius

如果没有以root身份在调试模式下启动FreeRADIUS,并寻找任何线索,以解决事情无法正常工作的原因:

freeradius –X

同时检查/usr/lib/freeradius并确保存在rlm_eap_peap-1.1.3.sorlm_eap_tls-1.1.3.so模块。

现在配置FreeRADIUS

首先我们将修改/etc/freeradius/radiusd.conf

  

注意:编辑配置文件时,请确保每个左括号({)都有相应的结束括号(}),否则您将破坏FreeRADIUS!

在MODULES下找到mschap节,并使用以下参数对其进行配置:

mschap {
                authtype = MS-CHAP
                use_mppe = yes
                require_encryption = yes
                require_strong = yes
 }

接下来验证授权节是否包含以下参数:

preprocess
mschap
suffix
eap
files

现在验证authenticate节是否配置如下:

authenticate {
    #  MSCHAP authentication.   
    Auth-Type MS-CHAP {
mschap
}
#  Allow EAP authentication.
         eap
}

现在我们必须向clients.conf添加客户端。客户端指的是验证器,例如接入点(AP)或无线控制器。对于此示例,我们将使用我的Juniper SSG5的192.168.44.129地址。将以下节添加到clients.conf

client  192.168.44.129 {
    secret = test123
    shortname = Juniper
}

接下来,我们将通过编辑/etc/freeradius/eap.conf来配置我们的服务器以支持PEAP。

首先将eap节中的default_eap_type更改为:

default_eap_type = peap

因为PEAP需要支持我们的示例证书,所以取消注释tls节以及以下参数。

tls {
private_key_password = whatever
private_key_file = ${raddbdir}/certs/cert-srv.pem
certificate_file = ${raddbdir}/certs/cert-srv.pem
CA_file = ${raddbdir}/certs/demoCA/cacert.pem
dh_file = ${raddbdir}/certs/dh
random_file = ${raddbdir}/certs/random
}

接下来查找并取消注释peap节和以下参数:

default_eap_type = mschapv2

现在在/etc/freeradius/users文件中添加一个测试用户,以便我们测试系统。添加以下内容:

“tobias” User-Password == “password123”

Restart FreeRADIUS with the following command:

/etc/init.d/freeradius restart

现在,如果您已正确完成所有操作,则应该能够使用以下命令与测试用户进行身份验证:

radtest tobias password123 localhost 0 testing123

您应该看到:

ending Access-Request of id 170 to 127.0.0.1 port 1812
    User-Name = "tobias"
    User-Password = "password123"
    NAS-IP-Address = 255.255.255.255
    NAS-Port = 0
rad_recv: Access-Accept packet from host 127.0.0.1:1812, id=170, length=20

此时一切都应该正常,但您必须将CA的证书导出到PEAP客户端,以便他们相信FreeRADIUS使用的服务器证书。我们目前使用的证书仅用于测试,不应用于生产。接下来,我将解释如何设置自己的证书颁发机构(CA)并创建自己的证书。

首先我们需要安装OpenSSL,因为我们需要生成一些复杂的密码,我们还会安装密码生成器PWGen。

apt-get install openssl pwgen

OpenSSL使用默认文件/etc/ssl/openssl.cnf,我们将对其进行备份和编辑,以便在我们开始生成证书时节省一些时间。

cp /etc/ssl/openssl.cnf /etc/ssl/openssl.cnf.bak

现在编辑/etc/ssl/openssl.cnf并找到以下行:

dir =./demoCA

并改为:

dir =/etc/freeradius/eap/eapCA

这是我将创建新CA的位置。您可能希望查看文件的其余部分并编辑环境的默认值。以下是我对openssl.cnf进行的一些更改。

-countryName_default = AU
+countryName_default = US

-stateOrProvinceName_default = Some-State
+stateOrProvinceName_default = Oregon

+localityName_default = Portland

-0.organizationName_default = Widget ltd
+0.organizationName_default = Fat of the LAN

现在创建并更改我们所有证书和CA将存在的目录:

mkdir /etc/freeradius/eap && cd /etc/freeradius/eap

我们将使用OpenSSL包含的脚本中的一个来生成我们的CA,但是在我们使用它之前你需要稍微自定义它,所以我们将在我们的证书目录中复制它。

cp /usr/lib/ssl/misc/CA.pl /etc/freeradius/eap

接下来,我们必须编辑CA.pl以告知它在哪里创建我们的CA.打开它并更改以下行:

CATOP=./demoCA

为:

CATOP=/etc/freeradius/eap/eapCA

您的CA是您的证书基础架构的核心,因此一旦您生成它并使用强密码保护它是很重要的。我将用pwgen生成一个随机的25个字符密码。每次签署证书时,请务必记录此密码。

pwgen 25 1
aem5xahheethohP5Woh5Eb3ph

现在让我们从/etc/freeradius/eap目录中运行脚本。

cd /etc/freeradius/eap
./CA.pl –newca

根据您的环境回答所有问题,并在出现提示时使用您刚刚创建的密码。脚本完成后,您将在/etc/freeradius/eap/eapCA中拥有自己的CA.接下来我们需要做的是为FreeRADIUS创建一个服务器证书,并使用我们的新CA签名。

./CA.pl –newreq-nodes

我们现在应该有一个新的密钥对以及准备发送给我们的CA的签名请求。

关于兼容性的快速说明。如果您计划在Windows客户端上使用任何这些证书,则需要将XP扩展添加到您生成的证书中。 xpextensions文件包含在Debian的FreeRADIUS包中,我将其包含在我们的非Debian读者的附录中。只需在我们的证书目录中复制它。

cp /usr/share/doc/freeradius/examples/xpextensions /etc/freeradius/eap

现在让我们使用我们的CA密钥签署FreeRADIUS的证书请求,并在提示时输入CA的密码:

./CA.pl –sign (Optionally add -extensions xpserver_ext -extfile /etc/freeradius/eap/xpextensions)

既然我们需要生成所有证书,我们需要创建一些密钥材料所需的文件,并告诉FreeRADIUS使用新的证书。要创建dh和随机文件,请发出以下命令:

openssl dhparam -check -text -5 512 -out dh
dd if=/dev/urandom of=random count=2
chmod 640 random newcert.pem newkey.pem newreq.pem dh

现在打开您的/etc/freeradius/eap.conf文件,找到tls节,然后进行更改以反映我们创建的新证书。

private_key_file = /etc/freeradius/eap/newkey.pem
certificate_file = /etc/freeradius/eap/newcert.pem
CA_file = /etc/freeradius/eap/eapCA/cacert.pem
dh_file = /etc/freeradius/eap/dh
random_file = /etc/freeradius/eap/random

当我们接触它时,取消注释以下几行:

fragment_size = 1024
include_length = yes

重新启动FreeRADIUS并将您的CA证书(/etc/freeradius/eap/eapCA/cacert.pem)复制到您的客户端。为新的启用PEAP的SSID配置客户端的请求者,将AP配置为使用802.1x和新的FreeRADIUS服务器,这样你就可以了!

如果您正在寻找有关RADIUS的更多信息,请查看本书。到目前为止,它非常有用。

答案 1 :(得分:0)

这个问题非常广泛。这实际上取决于您想要做什么,存储您的身份验证数据(例如用户/密码),您将使用哪种类型的EAP方法等。

但是,默认的FreeRADIUS配置对于大多数测试都可以很好地进行,而且变化很小。

首先编辑raddb/users文件,然后将新用户添加到顶部。表格应该像

username    Cleartext-Password := "password"

然后,您可以使用radtesteapol_test来检查这是否有效。

如果有效,您可以编辑clients.conf文件以添加无线AP或控制器。

然后您应该可以从无线网络连接。

然而,这可能非常复杂,并且在此过程中会出现很多问题,所以如果第一次不能使用,请不要气馁。

始终在测试时使用调试(radiusd -X)运行服务器,并读取所有输出。它会告诉你事情失败的地方。

FreeRADIUS wiki上有很多信息,例如以Basic configuration HOWTO开头。关于Alan Dekok's page还有很多很好的辅导建议。请注意,对于无线,您需要配置EAP。

答案 2 :(得分:0)

这是我用于安装freeradius的分步链接。 Freeradius 3 Ubuntu tutorial

如果您仍然遇到问题,请获取安装了radius的vps

相关问题