FreeRadius教程中预期的Access-Accept获得Access-Reject

时间:2018-06-21 14:47:48

标签: docker freeradius

我想挂载FreeRADIUS服务器来创建企业WiFi,并且official tutorial遇到问题。我尝试了WPA 2 Enterprise from scratch using a Raspberry PiFreeRadius Server installation and configuration on Linux system,但没有成功。 尝试执行测试radtest -x testing password localhost 0 testing123时遇到麻烦。服务器响应为:

Sent Access-Request Id 86 from 0.0.0.0:35959 to 127.0.0.1:1812 length 77
    User-Name = "testing"
    User-Password = "password"
    NAS-IP-Address = 172.18.0.2
    NAS-Port = 0
    Message-Authenticator = 0x00
    Cleartext-Password = "password"
Received Access-Reject Id 86 from 127.0.0.1:1812 to 127.0.0.1:35959 length 20
(0) -: Expected Access-Accept got Access-Reject

我正在将服务器安装在Docker容器中,该Dockerfile是:

FROM base/archlinux

RUN pacman -Syyu; pacman -S freeradius make inetutils --noconfirm

EXPOSE 1812
EXPOSE 1813

# Archlinux is not installig freeradius on /etc/raddb but when I launch
# the server, the main proccess looks at that directorie
RUN cp -r /etc/raddb.default /etc/raddb

RUN sed -i '1 i\testing Cleartext-Password := password' /etc/raddb/users

ENTRYPOINT [ "radiusd", "-X" ]

要运行docker容器,请执行以下操作:

docker build -t freeradius .

docker run freeradius

并启动测试:

docker exec container_id radtest -x testing password localhost 0 testing123

有人可以帮我吗? 问候

3 个答案:

答案 0 :(得分:0)

您应该阅读FreeRADIUS用户文件的工作原理(/etc/raddb/users)。这就是您的教程似乎用来存储测试凭据的内容。用户文件也是大多数人开始使用FreeRADIUS的方式,因为它以相对简单的格式封装了许多功能。

我对有关用户文件格式here的另一个问题写了相当详细的答案。我将通读该文章,以概述用户文件的工作原理并创建您自己的条目。

至少要对用户进行身份验证的条目将包含其用户名和某种参考凭证。

bob Cleartext-Password == 'password'

将允许用户'bob'使用密码'password'进行身份验证。

注意:您将需要重新启动或kill -HUP RADIUS守护程序才能使其重新读取对用户文件的更改。

答案 1 :(得分:0)

最后,我实现了使用基于Ubuntu(https://github.com/tpdock/freeradius)的Freeradius docker映像而不是ArchLinux。并使用MySQL代替用户文件(/etc/raddb/users)进行用户身份验证

有docker-compose文件:

version: '3'

services:
  db:
    restart: always
    image: mysql:5.7 
    volumes:
      - ./db/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
      - ./db/volume:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_USER: freeradius
      MYSQL_PASSWORD: freeradius
      MYSQL_DATABASE: freeradius
    ports:
      - "3306:3306"
  freeradius-server-docker:
    restart: always
    image: tpdock/freeradius
    ports:
      - 1812:1812/udp
      - 1813:1813/udp
    environment:
      RADIUS_LISTEN_IP: '*'
      RADIUS_CLIENTS: secret@127.0.0.1
      RADIUS_SQL: 'true'
      RADIUS_DB_HOST: db
      RADIUS_DB_NAME: freeradius
      RADIUS_DB_USERNAME: freeradius
      RADIUS_DB_PASSWORD: freeradius
    links:
      - db

然后在./db/docker-entrypoint-initdb.d/script.sql上插入MySQL脚本以插入用户

insert into radcheck (username, attribute, op, value) values ('test', 'Cleartext-Password', ':=', 'test');

我还必须将模式插入./db/docker-entrypoint-initdb.d/schema.sql

schema.sql

获取的架构

答案 2 :(得分:0)

可能与谁有关!

/ usr / local / etc / raddb / users中列出的用户是“ shold be”,而不是某些教程所指示的/ usr / local / etc / raddb / mods-conf / authorized中的一个。