Поехали:
Имеем машинку с 2 интерфейсами и freeBSD 7.2 с пересобранным ядром с опциями + включенный Nat
Код: Выделить всё
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=5
options IPFIREWALL_FORWARD
options IPDIVERT
options IPFIREWALL_DEFAULT_TO_ACCEPT
качаем архив отсюда http://sourceforge.net/projects/abills/ и ставим, обращаю ваше внимание на то что ставиться она из архива, если будут ставить из портов то у вас путь установки /usr/abills изменится на другой
Код: Выделить всё
tar zxvf abills-0.xx.tgz
cp -Rf abills /usr/
cp /usr/abills/libexec/config.pl.default /usr/abills/libexec/config.pl
Код: Выделить всё
cd /usr/ports/databases/mysql155-server
make && make install && rehash
Код: Выделить всё
echo 'mysql_enable="YES"' >> /etc/rc.conf
/usr/local/etc/rc.d/mysql-server start
Код: Выделить всё
ps axw | grep mysql
Код: Выделить всё
6210 p0 RV 0:00,00 grep mysql (csh)
6188 p1- S 0:00,02 /bin/sh /usr/local/bin/mysqld_safe
--defaults-extra-file=/var/db/mysql/my.cnf -- user=mysql --datadir=/var
6206 p1- S 0:00,94 /usr/local/libexec/mysqld
--defaults-extra-file=/var/db/mysql/my.cnf --basedir=/usr/local --datadir=/var/
Код: Выделить всё
cd /usr/ports/www/apache22
make
Код: Выделить всё
make install
- DBI
DBD-mysql
Digest-MD5 для Chap авторизации
Digest-MD4 для MS-Chap авторизации
Crypt-DES для MS-Chap авторизации
Digest-SHA1 для MS-ChapV2 авторизации
Time-HiRes Нужен только для тестирования скорости выполнения авторизации, аккаунтинга, и страниц веб-интерфейса
Код: Выделить всё
cd /usr/ports/databases/p5-DBI && make && make install
cd /usr/ports/databases/p5-DBD-mysql55 && make && make install
cd /usr/ports/security/p5-Digest-MD5 && make && make install
cd /usr/ports/security/p5-Digest-MD4 && make && make install
cd /usr/ports/security/p5-Crypt-DES && make && make install
cd /usr/ports/security/p5-Digest-SHA1 && make && make install
cd /usr/ports/devel/p5-Time-HiRes && make && make install
5- ставим Radius из портов (у меня встал 1.1.8 )
Код: Выделить всё
cd /usr/ports/net/freeradius
Код: Выделить всё
make # в менюшке надо выбрать поддержку DB MySQL
make install
создадим файл pre_abills.sql в каталоге /usr/abills со следующим содержимым:
Код: Выделить всё
use mysql;
INSERT INTO user (Host, User, Password) VALUES ('_ваш_сервер_','root',password('_придумайте_свой_пароль_'));
INSERT INTO db (Host, Db, User, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Index_priv, Alter_priv) VALUES ('_ваш_сервер_', 'abills', 'root', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y');
CREATE DATABASE abills DEFAULT CHARSET=cp1251;
Код: Выделить всё
mysql -u root -p < pre_abills.sql
Код: Выделить всё
mysqladmin flush-privileges
Код: Выделить всё
mysql --default-character-set=cp1251 -D abills < abills.sql
Код: Выделить всё
/usr/local/bin/mysqladmin -u root password '_придумайте_свой_пароль_'
7 - настраеваем Apache 2.2
создадим папку /var/log/httpd
Код: Выделить всё
mkdir /var/log/httpd
Код: Выделить всё
mcedit /usr/local/etc/apache22/httpd.conf
Код: Выделить всё
Include /usr/abills/misc/apache/abills_httpd.conf
было
Код: Выделить всё
<VirtualHost _default_:9443>
Код: Выделить всё
<VirtualHost *:9443>
Код: Выделить всё
echo 'apache22_enable="YES"' >> /etc/rc.conf
Загрузим модуль
Код: Выделить всё
kldload accf_http
Код: Выделить всё
echo 'accf_http_load="YES"' >> /etc/rc.conf
если вы не собираетесь использовать SSL то закомментируйте в /usr/abills/misc/apache/abills_httpd.conf строчки от <IfModule ssl_module> до </IfModule> тем самым отключив модуль SSL
Код: Выделить всё
/usr/abills/misc/certs_create.sh apache
Код: Выделить всё
/usr/local/sbin/apachectl configtest
Код: Выделить всё
/usr/local/etc/rc.d/apache22 start
Код: Выделить всё
shutdown -r now
Код: Выделить всё
ps axw | grep http
Код: Выделить всё
# 1033 ?? Ss 0:00.20 /usr/local/sbin/httpd -DNOHTTPACCEPT
# 1034 ?? I 0:00.01 /usr/local/sbin/httpd -DNOHTTPACCEPT
# 1035 ?? S 0:00.01 /usr/local/sbin/httpd -DNOHTTPACCEPT
# 1036 ?? I 0:00.01 /usr/local/sbin/httpd -DNOHTTPACCEPT
# 1037 ?? I 0:00.01 /usr/local/sbin/httpd -DNOHTTPACCEPT
# 1038 ?? I 0:00.00 /usr/local/sbin/httpd -DNOHTTPACCEPT
# 1053 ?? I 0:00.00 /usr/local/sbin/httpd -DNOHTTPACCEPT
# 1068 p4 RL+ 0:00.00 grep http
It works!
если апач всеж таки не стартует или стартует, но как то не так смотрим записи в
Код: Выделить всё
/var/log/messages
/var/log/httpd-error.log
в файле /usr/local/etc/raddb/users все строки комментируем, и в конец вставляем эту (По-умолчанию авторизовыватся через скрипт):
Код: Выделить всё
DEFAULT Auth-Type = Accept
Exec-Program-Wait = "/usr/abills/libexec/rauth.pl"
Код: Выделить всё
DEFAULT Acct-Status-Type == Start
Exec-Program = "/usr/abills/libexec/racct.pl"
DEFAULT Acct-Status-Type == Alive
Exec-Program = "/usr/abills/libexec/racct.pl"
DEFAULT Acct-Status-Type == Stop
Exec-Program = "/usr/abills/libexec/racct.pl"
Код: Выделить всё
client 127.0.0.1 {
secret = _пароль_
shortname = _имя_сервера_freeradius_
}
Код: Выделить всё
authorize {
preprocess
# chap
# counter
# attr_filter
# eap
# suffix
files
# etc_smbpasswd
# sql
# mschap
}
Код: Выделить всё
echo 'radiusd_enable="YES"' >> /etc/rc.conf
Код: Выделить всё
shutdown -r now
Правим конфигурационный файл системы /usr/abills/libexec/config.pl
Код: Выделить всё
mcedit /usr/abills/libexec/config.pl
Код: Выделить всё
#DB configuration
$conf{dbhost}='_имя_вашего_сервера_'; # тот что вы указывали в файле pre_abills.sql
$conf{dbname}='abills'; # имя базы из pre_abills.sql
$conf{dbuser}='root'; # я указывал именно root'a, но это изза откровенно слабых познаний в MySQL, вообще в офф.документации подразумевается любой пользователь но у меня с др. именем всегда получалось что Acces denied при приподключении к базе. Решил не много схитрить но по сути этот путь не корректен.
$conf{dbpasswd}='sqlpassword'; # из pre_abills.sql
$conf{ADMIN_MAIL}='info@your.domain'; # я тут вообще ничего менял
$conf{USERS_MAIL_DOMAIN}="your.domain"; # я тут вообще ничего менял
$conf{secretkey}="test12345678901234567890";# если вдруг надумаете сменить то отредактируйте его также в abills.sql
$conf{dbcharset}='cp1251'; # не забудте прописать сюда "cp1251" по умолчанию там пусто
Код: Выделить всё
*/5 * * * * root /usr/abills/libexec/billd -all
1 0 * * * root /usr/abills/libexec/periodic daily
1 1 * * * root /usr/abills/libexec/periodic monthly
Код: Выделить всё
mkdir /usr/abills/var/ /usr/abills/var/log
mkdir /usr/abills/backup
chown www /usr/abills/cgi-bin
chown www /usr/abills/cgi-bin/admin
chown www /usr/abills/Abills/templates
chown -Rf www /usr/abills/backup
Код: Выделить всё
shutdown -r now
C ЭТОГО МОМЕНТА Я В ПОСЛЕДУЮЩИХ ДЕЙСТВИЯХ НЕ УВЕРЕН
10- подключение Ipn
ставим Sudo
Код: Выделить всё
cd /usr/ports/security/sudo && make && make install
Код: Выделить всё
cd /usr/abills/libexec/
ln -s ../Abills/modules/Ipn/trafdstats trafdstats
ln -s ../Abills/modules/Ipn/traffic2sql traffic2sql
Код: Выделить всё
mysql -D abills < /usr/abills/db/Ipn.sql
Код: Выделить всё
mkdir /usr/abills/var/log/ipn
Код: Выделить всё
'Ipn'
Код: Выделить всё
#Ipn configuration
$conf{IPN_DETAIL}=1;
$conf{IPN_DETAIL_MIN_SIZE}=1024;
$conf{IPN_STATIC_IP}=1;.
$conf{IPN_FILTER}="/usr/abills/misc/ipn_filter.sh"; # у меня почему то именно в этой папке хотя в офф.документации не в misс а libexec
$conf{IPN_DETAIL_CLEAN_PERIOD}=30;
$conf{IPN_USERMENU}=1;.
$conf{IPN_DEPOSIT_OPERATION}=1;.
$conf{IPN_FW_FIRST_RULE}=20000;.
$conf{IPN_FW_START_RULE}="/usr/local/bin/sudo /sbin/ipfw -q delete %NUM";
$conf{IPN_FW_START_RULE}="/usr/local/bin/sudo /sbin/ipfw -q add %NUM allow ip from %IP to any";
$conf{IPN_FW_START_RULE}="/usr/local/bin/sudo /sbin/ipfw -q add %NUM allow ip from any to %IP.";
$conf{IPN_FW_STOP_RULE}="/usr/local/bin/sudo /sbin/ipfw -q delete %NUM";
$conf{IPN_FW_STOP_RULE}="/usr/local/bin/sudo /sbin/ipfw -q add %NUM deny ip from %IP to any";
$conf{IPN_FW_STOP_RULE}="/usr/local/bin/sudo /sbin/ipfw -q add %NUM deny ip from any to %IP";
$conf{IPN_FW_RULE_UID}=1;
Код: Выделить всё
shutdown -r now
Открываем веб интерфейс http://your.host:9443/admin/
Логин администратора по умолчанию abills пароль abillS
Прежде всего надо сконфигурировать сервера доступа 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) # я выбирал SQL
Alive Период отправки Alive пакетов
Disable Отключить
:Manage: Секция менеджмента NAS сервера
IP:PORT IP адрес и порт для контроля соединения. Например, для отключения пользователя из веб-интерфейса
User Пользователь для контроля
Password Пароль
RADIUS Parameters Дополнительные параметры которые передаются NAS серверу после успешной авторизации.
После заведения сервера доступа добавте ему пул адресов IP POOLs.
FIRST IP Первый адрес в пуле
COUNT Количество адресов
12- ставим Ipcad
Код: Выделить всё
cd /usr/ports/net-mgmt/ipcad/ && make && make install
Код: Выделить всё
mcedit /usr/local/etc/ipcad.conf
Код: Выделить всё
# Интерфейс для сбора статистики
interface _ваш_внутренний_интерфейс_;
# детализация по портам
#capture-ports enable;
# Агрегировать порты, уменьшает размер базы детализации
#aggregate 1024-65535 into 65535; /* Aggregate wildly */
#aggregate 3128-3128 into 3128; /* Protect these ports */
#aggregate 150-1023 into 1023; /* General low range */
# Експортирование статистики на адрес 127.0.0.1 порт 9996
# netflow export destination 127.0.0.1 9996;
# netflow export version 5; # NetFlow export format version {1|5}
# netflow timeout active 30; # Timeout when flow is active, in minutes
# netflow timeout inactive 15; # Flow inactivity timeout, in seconds
# netflow engine-type 73; # v5 engine_type; 73='I' for "IPCAD"
# netflow engine-id 1; # Useful to differentiate multiple ipcads.
dumpfile = ipcad.dump;
chroot = /var/ipcad/;
pidfile = ipcad.pid;
rsh enable at 127.0.0.1;
memory_limit = 16m;
Код: Выделить всё
*/5 * * * * root /usr/abills/libexec/traffic2sql _ID_вашего_NAS_сервера_ flowdir=/usr/abills/var/log/ipn/
Код: Выделить всё
echo 'ipcad_enable="YES"' >> /etc/rc.conf
Код: Выделить всё
mkdir /var/ipcad/
Код: Выделить всё
mcedit /usr/local/etc/sudoers
Код: Выделить всё
#Allow ipfw operation without password for webserver user
www ALL = NOPASSWD: /sbin/ipfw
В общем заставить заработать у меня не получилось но прямая причина этому банальная нехватка знаний или хотя бы понимания.
PS это проба пера
PPS у кого есть мысли где чего подправить и как до делать я только рад
PPPS настоятельно советую пользоваться снэпшотами если тестируете систему на виртуалке
PPPPS to Terminus - приношу свои извинения, косячек вышел