Установка ABillS + Ubuntu + FreeRadius2 + RLMPerl

Сначала обновим систему

apt-get update
apt-get dist-upgrade

Перезагрузились и устанавливаем следующие пакеты

apt-get install mysql-server mysql-client libmysqlclient15-dev apache2 apache2-doc apache2-mpm-prefork \
apache2-utils libexpat1 ssl-cert cvs libdbi-perl libdbd-mysql-perl libdigest-md4-perl \
libdigest-sha1-perl libcrypt-des-perl

Создаем недостающие каталоги и меняем права:

mkdir /var/log/httpd/
mkdir -p /usr/abills/var/log
touch /usr/abills/var/log/abills.log
chown -Rf www-data:www-data /usr/abills/cgi-bin
chown -Rf www-data:www-data /usr/abills/Abills/templates
chown -Rf www-data:www-data /usr/abills/backup
Настройка вебсервера
cp /usr/abills/misc/apache/abills_httpd.conf /etc/apache2/sites-enabled/

Создаем сертификат

/usr/abills/misc/certs_create.sh apache

Запускаем установленные модули для апача:

a2enmod ssl
a2enmod rewrite
a2enmod suexec
a2enmod include

Перезапускаем apache:

/etc/init.d/apache2 restart
Настройка Абилс
cp /usr/abills/libexec/config.pl.default /usr/abills/libexec/config.pl

Удаляем старые параметры и добавляем новые

$conf{dbpasswd}='sdfesfa';
$conf{secretkey}="sdfadsfcv3ad2";
$conf{dbcharset}='utf8';
$conf{default_charset}='utf8';
$conf{MAIL_CHARSET}='utf8';
$conf{RADIUS2}=1;
Настройка Mysql
mysql --default-character-set=utf8 -u root -p 
use mysql;
INSERT INTO user (Host, User, Password) 
VALUES ('localhost','abills', password('sdfesfa'));

INSERT INTO db (Host, Db, User, Select_priv, Insert_priv, Update_priv, 
Delete_priv, Create_priv, Drop_priv, Index_priv, Alter_priv, 
Lock_tables_priv, Create_tmp_table_priv, Create_view_priv,
Show_view_priv, Execute_priv) 
VALUES ('localhost', 'abills', 'abills', 'Y', 'Y', 'Y', 'Y', 'Y', 
'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y');

CREATE DATABASE abills;
flush privileges;

Меняем ключ шифрования на тот что задали в конфигурационном файле

cat /usr/abills/db/abills.sql | sed s/test12345678901234567890/sdfadsfcv3ad2/ > /usr/abills/abills_secure.sql

Добавляем БД в Mysql

mysql --default-character-set=utf8 -u root -p -D abills < /usr/abills/abills_secure.sql
Установка Радиуса
apt-get install libmysqlclient-dev libmysqlclient16 libmysqlclient16-dev libgdbm3 libgdbm-dev

ln -s /usr/lib/libperl.so.5.10.1 /usr/lib/libperl.so
ln -s /usr/lib/libperl.so.5.10.1 /usr/lib/libperl.so.5.10
 
wget ftp://ftp.freeradius.org/pub/freeradius/freeradius-server-2.1.11.tar.gz
tar zxvf freeradius-server-2.1.11.tar.gz
cd freeradius-server-2.1.11
./configure --prefix=/usr/local/freeradius --with-rlm-perl-lib-dir=/usr/lib/
make && make install

ln -s /usr/local/freeradius/sbin/radiusd /usr/sbin/radiusd

Файл для автозапуска

vim /etc/init.d/freeradius
chmod +x /etc/init.d/freeradius
#!/bin/sh
# Start/stop the FreeRADIUS daemon.

### BEGIN INIT INFO
# Provides:          freeradius
# Required-Start:    $remote_fs $network $syslog
# Should-Start:      $time mysql slapd postgresql samba krb5-kdc
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Radius Daemon
# Description:       Extensible, configurable radius daemon
### END INIT INFO

set -e

. /lib/lsb/init-functions

PROG="freeradius"
PROGRAM="/usr/sbin/radiusd"
PIDFILE="/var/run/freeradius/freeradius.pid"
DESCR="FreeRADIUS daemon"

test -f $PROGRAM || exit 0

# /var/run may be a tmpfs
if [ ! -d /var/run/freeradius ]; then
  mkdir -p /var/run/freeradius
  chown freerad:freerad /var/run/freeradius
fi

export PATH="${PATH:+$PATH:}/usr/sbin:/sbin"

ret=0

case "$1" in
        start)
                log_daemon_msg "Starting $DESCR" "$PROG"
                start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $PROGRAM || ret=$?
                log_end_msg $ret
                exit $ret
                ;;
        stop)
                log_daemon_msg "Stopping $DESCR" "$PROG"
                if [ -f "$PIDFILE" ] ; then
                  start-stop-daemon --stop --retry=TERM/30/KILL/5 --quiet --pidfile $PIDFILE || ret=$?
                  log_end_msg $ret
                else
                  log_action_cont_msg "$PIDFILE not found"
                  log_end_msg 0
                fi
                ;;
        restart|force-reload)
                $0 stop
                $0 start
                ;;
        *)
                echo "Usage: $0 start|stop|restart|force-reload"
                exit 1
                ;;
esac

exit 0
update-rc.d freeradius defaults
Настройка Freeradius
cd /usr/abills/
rm /usr/local/etc/raddb/sites-enabled/*
cp misc/freeradius/v3/mods-enabled/perl /usr/local/etc/raddb/mods-enabled/perl
cp misc/freeradius/v3/mods-enabled/sql /usr/local/etc/raddb/mods-enabled/sql
cp misc/freeradius/v3/sites-enabled/abills_default /usr/local/etc/raddb/sites-enabled/abills_default
cp misc/freeradius/v3/users /usr/local/etc/raddb/users

Меняем в конфиге радиуса

vim radiusd.conf
prefix = /usr/local/freeradius

user = freerad
group = freerad
vim /usr/local/freeradius/etc/raddb/clients.conf
client 127.0.0.1 {
   secret = radsecret
   shortname = shorrname
}
chown -R freerad:freerad /usr/local/freeradius/etc/raddb
стартуем в режиме отладки 
#  /usr/local/freeradius/sbin/radiusd -X

если после старта выполучаете ошибка

symbol lookup error: /usr/lib/perl/5.10/auto/Cwd/Cwd.so: undefined symbol: Perl_Gthr_key_ptr

тогда нужно дополнительно подгрузить perl библиотеку

LD_PRELOAD=/usr/lib/libperl.so  /usr/local/freeradius/sbin/radiusd -X   
Постнастройка Abills

Вносим в cron периодические процессы /etc/crontab

 */5  *      *    *     *   root   /usr/abills/libexec/billd -all
 1     0     *    *     *   root    /usr/abills/libexec/periodic daily
 1     1     *    *     *   root    /usr/abills/libexec/periodic monthly

Веб интерфейс администратора:
https://your.host:9443/admin/

Логин администратора по умолчанию abills пароль abills

Веб интерфейс для пользователей:
https://your.host:9443/

В интерфейсе администратора прежде всего надо сконфигурировать сервера доступа NAS (Network Access Server).
Переходим в меню
System configuration→NAS

Параметры

IP IP адрес NAS сервера
Name Название
Radius NAS-Identifier Идентификатор сервера (можно не вписывать)
Describe Описание сервера
Type Тип сервера. В зависимости от типа по разному обрабатываются запросЫ на авторизацию
Authorization Тип авторизации.
SYSTEM - При хранении паролей в UNIX базе (/etc/passwd)
SQL - при хранении паролей SQL базе (MySQL, PosgreSQL)
Alive Период отправки Alive пакетов
Disable Отключить
:Manage: Секция менеджмента NAS сервера
IP:PORT IP адрес и порт для контроля соединения. Например, для отключения пользователя из веб-интерфейса
User Пользователь для контроля
Password Пароль
RADIUS Parameters Дополнительные параметры которые передаются NAS серверу после успешной авторизации.

После заведения сервера доступа добавте ему пул адресов IP POOLs.

FIRST IP Первый адрес в пуле
COUNT Количество адресов

Одному серверу доступа может принадлежать несколько пулов адресов.

Создание тарифного плана
Меню
System configuration→Internet→Tarif Plans

Регистрация пользователя
Customers→Users→Add

Заведение сервиса Internet на пользователя.
Customers→Users→Information→Services→Internet

Проверка
Для проверки правильно ли настроен сервис нужно запустить утилиту radtest указав логин и пароль существующего пользователя.
Логин: test Пароль: 123456

# radtest test 123456 127.0.0.1:1812 0 radsecret 0 127.0.0.1

Если всё правильно настроено, в журнале ошибок /Отчёт/Internet/Ошибка/ должна появиться строка

2005-02-23 12:55:55 LOG_INFO: AUTH [test] NAS: 1 (xxx.xxx.xxx.xxx) GT: 0.03799

Если Вы увидите другие ошибки смотрите в список ошибок. Если журнал ошибок пуст значит неправильно настроено взаимодействие с RADIUS сервером.