Содержание

FreeRADIUS

/etc/freeradius/radiusd.conf или /etc/raddb/radiusd.conf - Основной конфигурационный файл

Web интерфейс:

Mysql

Таблица nas для read_clients читается только при запуске freeradius!

Создание БД и пользователя:

CREATE DATABASE radius;
CREATE USER 'radius'@'localhost';
SET PASSWORD FOR 'radius'@'localhost' = PASSWORD('radpass');
GRANT SELECT ON radius.* TO 'radius'@'localhost';
GRANT ALL ON radius.radacct TO 'radius'@'localhost';
GRANT ALL ON radius.radpostauth TO 'radius'@'localhost';
FLUSH PRIVILEGES;

Заполняем БД:

FR=/etc/raddb/sql/mysql #для CentOS/RHEL
FR=/etc/freeradius/sql/mysql #для Debian/Ubuntu
mysql -u root -p radius < $FR/schema.sql
mysql -u root -p radius < $FR/nas.sql

для Alpine Linux:

mysql -u root -p radius < /etc/raddb/mods-config/sql/main/mysql/schema.sql

http://wiki.freeradius.org/guide/SQL HOWTO

Логирование radpostauth

В таблицу radpostauth и логи sqllog все запросы пишутся с паролями в открытом виде, для скрытия паролей необходимо в:

изменить запрос Post-Auth:

INSERT INTO ${postauth_table} (username, pass, reply, authdate)
 VALUES ( '%{SQL-User-Name}','%{%{User-Password}:-%{Chap-Password}}','%{reply:Packet-Type}','%S' )

на:

INSERT INTO ${postauth_table} (username, pass, reply, authdate)
 VALUES ( '%{SQL-User-Name}','','%{reply:Packet-Type}','%S' )

Шифрование пароля

Для использования вместо Cleartext-Password

Crypt-Password на разных языках:

perl -e 'print(crypt("password","SA")."\n");'
php -r "print(crypt('password','SA') . \"\n\");"
python -c 'import crypt; print crypt.crypt("password","SA")'
mysql -Ns -e "select encrypt('user','SA');"

https://hub.packtpub.com/storing-passwords-using-freeradius-authentication/ - Crypt,MD5,SMD5
http://freeradius.org/radiusd/man/rlm_pap.txt - Методы хранения пароля

Docker

Пример запуска FreeRADIUS из своего образа (Dockerfile):

docker run -d -p1812-1813:1812-1813/udp --name freeradius freeradius

Dockerfile

Dockerfile

# Version: 0.0.1
FROM alpine
MAINTAINER lioncub <lioncub@domain.com>
 
ENV REFRESHED_AT 2018–06–16
ENV http_proxy 'http://d2proxy.domain.com:3128'
 
ENV DB_HOST=mngt.domain.com \
  DB_PORT=3306 \
  DB_USER=radius \
  DB_PASS=radius \
  DB_NAME=radius
 
RUN apk update \
  && apk upgrade \
  && apk add --no-cache freeradius freeradius-mysql \
  && rm /var/cache/apk/* \
  && ln -s /etc/raddb/mods-available/sql /etc/raddb/mods-enabled/sql \
  && sed -i -e "s/driver =.*/driver = \"rlm_sql_mysql\"/" \
            -e "s/dialect =.*/dialect = \"mysql\"/" \
            -e "s/#\tserver = \"localhost\"/\tserver = \"$DB_HOST\"/" \
            -e "s/#\tport = 3306/\tport = \"$DB_PORT\"/" \
            -e "s/#\tlogin = \"radius\"/\tlogin = \"$DB_USER\"/" \
            -e "s/#\tpassword = \"radpass\"/\tpassword = \"$DB_PASS\"/" \
            -e "s/\tradius_db = \"radius\"/\tradius_db = \"$DB_NAME\"/" \
         /etc/raddb/mods-available/sql \
  && sed -i "\|# IPv6 versions|,/#  Authorization./ s/^/#/" /etc/raddb/sites-enabled/default
 
VOLUME /etc/raddb
 
ENTRYPOINT ["radiusd", "-fl", "stdout"]
 
EXPOSE 1812/udp 1813/udp


Ссылки

http://freeradius.org/
https://launchpad.net/~freeradius - PPA
http://coova.github.io/CoovaChilli/ - Captive Portal
http://iplink.mogilev.by/doku.php?id=freeradius - Пример настройки FreeRadius в связке с MySQL