预期的访问接受在 FreeRadius 教程中得到了访问拒绝

Expected Access-Accept got Access-Reject in FreeRadius tutorial

我想安装一个 FreeRADIUS 服务器来创建企业 WiFi,但我遇到了 official tutorial. I tried WPA 2 Enterprise from scratch using a Raspberry Pi and FreeRadius 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 容器中,Docker文件是:

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

有人可以帮帮我吗? 此致

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

我对另一个关于用户文件格式的问题写了相当详细的回答here。我会通读它以大致了解用户文件的工作原理并创建您自己的条目。

至少一个用于验证用户身份的条目将包含他们的用户名和某种参考凭据。

bob Cleartext-Password == 'password'

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

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

最后,我使用基于 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

与谁有关!!!

用户“应该”列在 /usr/local/etc/raddb/users 中,而不是某些教程中指出的 /usr/local/etc/raddb/mods-conf/authorized 中的用户。