Вы просматриваете старую версию данной страницы. Смотрите текущую версию.

Сравнить с текущим просмотр истории страницы

« Предыдущий Версия 53 Следующий »

Установим на чистую систему debian 12.5 (при установке системы выбраны standart system utilities и OpenSSH server).

Перед началом установки обновим систему и выполним перезапуск:

apt-get update
apt-get upgrade
apt-get dist-upgrade
reboot

Установим необходимые компоненты:

apt-get install -yq htop net-tools mariadb-server mariadb-client default-libmysqlclient-dev apache2 apache2-utils libexpat1 ssl-cert build-essential rrdtool librrdtool-oo-perl libperl-dev libsql-translator-perl gcc make libtalloc-dev arping curl wget mc nano cpanminus build-essential libnet-snmp-perl libsnmp-dev libdbd-mysql-perl git net-tools

Загрузка АСР Казна-39

Перейдем в директорию /usr и загрузим в неё последнюю публичную версию с сайта, установка коммерческой версии чуть ниже

cd /usr
git clone https://it39.su/asr-kazna-39/releases/39.git

Переименовываем в рабочий каталог

mv 39-Public_2_3_17 abills

Для коммерческой версии:

cd /usr
git clone https://it39.su/asr-kazna-39/releases/full_release.git # (ссылку получаете после заключения договора)

Переименовываем в рабочий каталог

mv ACP abills

Настраиваем папки

Создадим необходимые директории и установим права:

mkdir /var/log/httpd/
mkdir /usr/abills/var/db/
mkdir /usr/abills/var/db/rrd/
mkdir /usr/abills/backup
mkdir -p /usr/abills/var/log
touch /usr/abills/var/log/abills.log
mkdir /usr/abills/var/log/nas_logs/
touch /usr/abills/var/log/nas_logs/nas.log
ls -l /usr/abills/
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
touch /usr/abills/var/log/sql_errors
chown nobody /usr/abills/var/log/sql_errors
chmod 666 /usr/abills/var/log/sql_errors
mkdir /usr/abills/Certs

Настройка Apache

Модули

Активируем необходимые модули Apache2:

a2enmod ssl
a2enmod rewrite
a2enmod suexec
a2enmod include
a2enmod cgi
a2enmod headers

Конфиг

Скопируем веб-конфигурацию abills в директорию Apache2:

cp /usr/abills/misc/apache/acp_httpd_443.conf /etc/apache2/sites-enabled/

В начале конфигурации добавим ваш ServerName, например:

nano /etc/apache2/sites-enabled/acp_httpd_443.conf
ServerName acp.kazna-39.ru

Сертификат

Создадим сертификат (в Common name укажем имя хоста):

/usr/abills/misc/certs_create.sh apache

Для автоматического редиректа правим основной файл апача

nano /etc/apache2/sites-enabled/000-default.conf

Приводим его к такому виду

<VirtualHost *:80>
        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        #ServerName www.example.com

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf

        RewriteEngine On
        RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]

</VirtualHost>

Проверка

Убедимся в корректности конфигурации:

apachectl -t

И перезапустим Apache2 чтобы применить изменения:

/etc/init.d/apache2 restart

MySQL / MariaDB

Подключимся к mysql серверу:

mysql --default-character-set=utf8 -u root -p

Пользователи

Создадим пользователя и базу данных (где sqlpassword — укажем свой пароль):

use mysql;
GRANT ALL ON abills.* TO `abills`@localhost IDENTIFIED BY "sqlpassword"; 
CREATE DATABASE abills DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
flush privileges;
quit

Данные

Импортируем данные mysql базы данных:

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

Доп. таблицы

Установка обязательно, так как по умолчанию включены данные модули системы
mysql -u root --default-character-set=utf8 -D abills < /usr/abills/db/Iptv.sql
mysql -u root --default-character-set=utf8 -D abills < /usr/abills/db/Ureports.sql
mysql -u root --default-character-set=utf8 -D abills < /usr/abills/db/Storage.sql
mysql -u root --default-character-set=utf8 -D abills < /usr/abills/db/Accident.sql
mysql -u root --default-character-set=utf8 -D abills < /usr/abills/db/Abon.sql
mysql -u root --default-character-set=utf8 -D abills < /usr/abills/db/Equipment.sql
mysql -u root --default-character-set=utf8 -D abills < /usr/abills/db/Equipment_models.sql
mysql -u root --default-character-set=utf8 -D abills < /usr/abills/db/Paysys.sql
mysql -u root --default-character-set=utf8 -D abills < /usr/abills/db/Sms.sql
mysql -u root --default-character-set=utf8 -D abills < /usr/abills/db/Snmputils.sql
mysql -u root --default-character-set=utf8 -D abills < /usr/abills/db/Events.sql
mysql -u root --default-character-set=utf8 -D abills < /usr/abills/db/Sysinfo.sql

В случае ошибки выполним команду ниже и повторим импорт базы данных:

sed -i -e "1 s/^/SET SQL_MODE='NO_ENGINE_SUBSTITUTION,NO_AUTO_VALUE_ON_ZERO';/;" /usr/abills/db/abills.sql

Установка Freeradius

На все предупреждения ./configure кроме rlm_perl и rlm_sql_mysql можно не обращать внимания. 
На удаленном сервере установите libmysqlclient и libmysqlclient-dev

Проверка PERL

Проверка версии Perl
apt-get install libperl-dev -yq
find /usr/lib/ | grep libperl.so 
Смотрим вывод
/usr/lib/x86_64-linux-gnu/libperl.so.5.36.0
/usr/lib/x86_64-linux-gnu/libperl.so.5.36
/usr/lib/x86_64-linux-gnu/libperl.so

Делаем симлинк для того, чтобы библиотека подгрузилась во время компиляции

ln -s /usr/lib/x86_64-linux-gnu/libperl.so.5.36 /usr/lib/x86_64-linux-gnu/libperl.so

Симлинк уже может существовать

Настраиваем файл config.pl

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

Добавляем доступ к базе данных

#DB configuration
$conf{dbhost}='localhost';
$conf{dbname}='ktk';
$conf{dbuser}='ktk';
$conf{dbpasswd}='sqlpassword';
$conf{dbtype}='mysql';
#For MySQL 5 and highter (cp1251, utf8)
$conf{dbcharset}='utf8';


Сборка FreeRadius

Начинаем сборку и установку Freeradius из исходников

apt-get install -yq gcc make libtalloc-dev
cd /tmp
wget https://github.com/FreeRADIUS/freeradius-server/releases/download/release_3_2_6/freeradius-server-3.2.6.tar.gz
tar zxvf freeradius-server-3.2.6.tar.gz
cd freeradius-server-3.2.6
./configure --prefix=/usr/local/freeradius --with-rlm-perl-lib-dir=/usr/lib/x86_64-linux-gnu/ --with-rlm-sql-mysql-lib-dir=/var/lib/mysql/ --with-dhcp=yes --with-openssl=no > /dev/null
make && make install

Настройка

cd /usr/abills
mkdir /usr/local/freeradius/var/run/
mkdir /usr/local/freeradius/var/run/radiusd/
rm /usr/local/freeradius/etc/raddb/sites-enabled/*
cp misc/freeradius/v3/mods-enabled/perl /usr/local/freeradius/etc/raddb/mods-enabled/perl
cp misc/freeradius/v3/mods-enabled/sql /usr/local/freeradius/etc/raddb/mods-enabled/sql
cp misc/freeradius/v3/sites-enabled/ACP_KA3HA-39 /usr/local/freeradius/etc/raddb/sites-enabled/ACP_KA3HA-39
cp misc/freeradius/v3/sites-enabled/control-socket /usr/local/freeradius/etc/raddb/sites-enabled/control-socket
cp misc/freeradius/v3/users /usr/local/freeradius/etc/raddb/users
ln -s /usr/local/freeradius/bin/* /usr/bin/
ln -s /usr/local/freeradius/sbin/* /usr/sbin/

Создаём системный юнит

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

nano /etc/init.d/radiusd
#!/bin/sh
# Start/stop the FreeRADIUS daemon.

### BEGIN INIT INFO
# Provides:          radiusd
# 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="radiusd"
PROGRAM="/usr/sbin/radiusd"
PIDFILE="/usr/local/freeradius/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/radiusd
systemctl enable radiusd

Конфиг

Меняем в конфиге радиуса /usr/local/freeradius/etc/raddb/radiusd.conf

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

Благодаря модулю sql, можно хранить сервера доступа в базе данных (всё равно необходим перезапуск радиуса после добавления/изменения серверов, но не надо править clients.conf). 
Очищаем список серверов доступа из /usr/local/freeradius/etc/raddb/clients.conf (чтоб не было дубликатов из-за записей в базе)

echo '' > /usr/local/freeradius/etc/raddb/clients.conf

Заполняем нужные нам параметры соединения с БД

nano /usr/local/freeradius/etc/raddb/mods-enabled/sql
sql {
        database = "mysql"
        driver = "rlm_sql_${database}"
        server = "localhost"
        #port = 3306
        login = "acp_kazna"
        password = "sqlpassword"  #вместо sqlpassword подставляем своё значение из $conf{dbpasswd}
        radius_db = "abills"
        secretkey = "test12345678901234567890" # Серктный ключ кодирования

Запуск

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

/usr/sbin/radiusd -X

или

radiusd -X

Проверяем через другую консоль:

radtest test 123456 127.0.0.1:1812 0 secretpass 0 127.0.0.1

Доустанавливаем утилиты

apt-get install freeradius-utils

Необходимые модули Perl

Установим необходимые perl модули:

cd /usr/abills/misc/
perl perldeps.pl apt-get -batch
cd /usr/abills/misc
./perl_modules_install.sh


Также запустим скрипт который поможет найти ошибки:

cd /usr/abills/misc/
./post-install.sh

logrotate

Настроим ротацию логов FreeRADIUS, например:

nano /etc/logrotate.d/radiusd
/var/log/radius.log {
    rotate 2
    weekly
    create
    compress
    missingok
}

cron

Внесем в cron задания:

crontab -e
*/5  *      *    *     *   root   /usr/abills/libexec/billd -all > /dev/null 2>&1
1     0     *    *     *   root    /usr/abills/libexec/periodic daily NO_ADM_REPORT=1 > /dev/null 2>&1
1     1     *    *     *   root    /usr/abills/libexec/periodic monthly NO_ADM_REPORT=1 > /dev/null 2>&1
1     3     *    *     *   root    /usr/abills/libexec/periodic backup > /dev/null 2>&1

Смотрите также справку:

/usr/abills/libexec/periodic help

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

Создадим файл для логов и назначим права:

touch /usr/abills/var/log/sql_errors && chmod 666 /usr/abills/var/log/sql_errors


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

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

Обязательная проверка БД

cd /usr/abills/misc/db_check/
./db_check.pl CREATE_NOT_EXIST_TABLES

Сертификаты Сбера

Для нормальной работы эквайринга в РФ, необходимо установить корневые сертификаты от МинЦифры

/usr/abills/Sber/root_sber_certs.sh


Установка завершена

Веб-интерфейс администратора АСР Казна-39 можно открыть по адресу (стандартный логин — abills, пароль — abills):
https://HOST/admin/
Для пользователей:
https://HOST/

freeradius-server-3.2.6.tar.gz

  • Нет меток