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

Загрузить пакет можно по адресу http://sourceforge.net/projects/abills/

# cd /usr/
# wget http://skylink.dl.sourceforge.net/project/abills/abills/0.75/abills-0.75.tgz
# tar zxvf abills-0.7x.tgz
# cp /usr/abills/libexec/config.pl.default /usr/abills/libexec/config.pl

Ubuntu 12.4
ABillS 0.57

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

apt-get update
apt-get dist-upgrade

после установки SSH можно пользоваться внешним терминалом (например Putty) , так удобнее

apt-get install ssh

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

apt-get install mysql-server mysql-client libmysqlclient-dev apache2 apache2-doc apache2-mpm-prefork \
apache2-utils libexpat1 ssl-cert cvs libdbi-perl libdbd-mysql-perl libdigest-md4-perl \
libdigest-sha-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
a2enmod cgi

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

/etc/init.d/apache2 restart

Настройка Абилс

cp /usr/abills/libexec/config.pl.default /usr/abills/libexec/config.pl

из файла config.pl(основной конфигурационный файл системы) удаляем старые параметры и добавляем новые

# nano /usr/abills/libexec/config.pl
$conf{dbpasswd}='sdfesfa';

Настройка 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 DEFAULT CHARACTER SET utf8 COLLATE  utf8_general_ci;
flush privileges;

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

mysql --default-character-set=utf8 -u root -p -D abills < /usr/abills/abills.sql

Установка RADIUS

устанавливаем нужные библиотеки для сборки freeradius

apt-get install libmysqlclient-dev libgdbm3 libgdbm-dev

ищем установленные библиотеки perl

 
# find /usr/lib/ | grep libperl.so
libperl.so.5.14.2

теперь делаем линки для подальшей компиляции

ln -s /usr/lib/libperl.so.5.14.2 /usr/lib/libperl.so
ln -s /usr/lib/libperl.so.5.14.2 /usr/lib/libperl.so.5.14

скачиваем freeradius версии 2

wget ftp://ftp.freeradius.org/pub/freeradius/freeradius-server-2.2.9.tar.gz
tar zxvf freeradius-server-2.2.9.tar.gz

cd freeradius-server-2.2.9
./configure --prefix=/usr/local/freeradius --with-rlm-perl-lib-dir=/usr/lib/ --with-openssl=no
make && make install

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

Файл для автозапуска ,- создаем и вставляем в него следующий текст

nano /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/radiusd/radiusd.pid"
DESCR="FreeRADIUS daemon"

test -f $PROGRAM || exit 0

# /var/run may be a tmpfs
if [ ! -d /var/run/radiusd ]; then
 mkdir -p /var/run/radiusd
 chown freerad:freerad /var/run/radiusd
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
chmod +x /etc/init.d/freeradius

update-rc.d freeradius defaults
Настройка Freeradius
cp /usr/abills/misc/freeradius/v2/radiusd.conf /usr/local/freeradius/etc/raddb/radiusd.conf
rm /usr/local/freeradius/etc/raddb/sites-enabled/*
cp /usr/abills/misc/freeradius/v2/users_perl /usr/local/freeradius/etc/raddb/users
cp /usr/abills/misc/freeradius/v2/default_rlm_perl /usr/local/freeradius/etc/raddb/sites-enabled/abills_default
cp /usr/abills/misc/freeradius/v2/perl /usr/local/freeradius/etc/raddb/modules/

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

nano /usr/local/freeradius/etc/raddb/radiusd.conf
prefix = /usr/local/freeradius

user = freerad
group = freerad

из файла clients.conf ,- удаляем все , туда вписываем только айпи насов которые будут работать с радиусом , их их secret-ы :

nano /usr/local/freeradius/etc/raddb/clients.conf
client 127.0.0.1 {
   secret = secretpass
   shortname = shorrname
}

Создание user и group если freeradius ранее не был установлен то без этого не стартует

#groupadd freerad
#useradd -g freerad -s /bash/bash freerad
# chown -R freerad:freerad /usr/local/freeradius/etc/raddb
# mkdir /var/run/radiusd/
# chown -R freerad:freerad /var/run/radiusd/

стартуем в режиме отладки

#  /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


и даем доступ на ведение лога ошибок

# touch /tmp/sql_errors && chmod 777 /tmp/sql_errors

Добавляем линки на gzip и mysqldump для создания бэкапов базы:

# ln -s /bin/gzip /usr/bin/gzip
# ln -s /usr/bin/mysqldump /usr/local/bin/mysqldump


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

a2enmod ssl
a2enmod rewrite
a2enmod suexec
a2enmod include


Веб интерфейс администратора:
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 secretpass 0 127.0.0.1

(в версиях Ubuntu , где нету radtest , - устанавливаем freeradius-utils)

# apt-get install freeradius-utils 

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

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

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

Дополнительно