====== NoDeny Next ======
===== Встановлення NoDeny Next на Debian =====
Установка NoDeny+ на Debian мені потрібна, т.к. всі свої сервери я тримаю на віртуалках, а як відомо, у FreeBSD проблеми зі швидкістю запису на диск під KVM QEMU!
До того ж, я не використовую файрвол білінгу, який заточений під FreeBSD
===== NoDeny завантаження =====
**на момент написання статті є 3 репозиторії:**\\
* демоверсія ''[[svn://nodeny-plus.com.ua/nodenyfree]]''\\
* стабільна ''[[svn://nodeny-plus.com.ua/release]]''\\
* нова гілка ''[[svn://nodeny-plus.com.ua/release/next]]''\\
я буду використовувати останній, оскільки у мене є підписка 8-)
і так, завантажуємо білінг
cd /usr/local
svn co svn://nodeny-plus.com.ua/release/next nodeny
Ставимо пакети для білінгу
apt-get install -y libcrypt-rijndael-perl libdbd-mysql-perl libjson-perl libnet-arp-perl libcpanel-json-xs-perl liblwp-protocol-https-perl libcgi-pm-perl
liqpay\pingserver\та інші
apt-get install -y libxml-simple-perl libdigest-sha-perl liblwp-useragent-determined-perl libcrypt-ssleay-perl
для telegram
cpanm -n WWW::Telegram::BotAPI
для ponmon
apt-get install -y snmp libnet-telnet-cisco-perl libparallel-forkmanager-perl
cpanm -n Net::SNMP::Util
===== Web Server =====
Встановлення Apache
apt-get install -yq apache2
Включаємо потрібні нам модулі для опача:
sudo a2enmod ssl rewrite suexec include cgid
Створимо конфіг замість дефолтного
nano /etc/apache2/sites-available/nodeny.conf
з таким вмістом
ServerAdmin admin@example.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/nodeny
AddHandler cgi-script .pl
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
CGIPassAuth On
ScriptAlias /cgi-bin/ "/usr/lib/cgi-bin/"
#ErrorDocument 404 "/cgi-bin/stat.pl"
DirectoryIndex "/cgi-bin/stat.pl"
DirectoryIndex index.html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Створимо симлінки для білінгу
rm -fR /usr/lib/cgi-bin
ln -s /usr/local/nodeny/htdocs/ /var/www/nodeny
ln -s /usr/local/nodeny/cgi-bin/ /usr/lib/cgi-bin
Виставимо права
perl /usr/local/nodeny/install.pl -w=www-data
Застосовуємо свій конфіг
sudo a2ensite nodeny.conf
sudo a2dissite 000-default.conf
перевіримо помилки конфігурації
sudo apache2ctl configtest
Ви повинні побачити наступний результат:
Syntax OK
Застосовуємо зміни
systemctl restart apache2
systemctl status apache2
(1) Для включення https [[https://www.8host.com/blog/sozdanie-sertifikata-lets-encrypt-dlya-apache-v-debian-10/]]
===== База даних =====
Я не використовуватиму MySQL, оскільки з білінгом чудово працює і MariaDB!
[[https://andreyex.ru/operacionnaya-sistema-debian/kak-ustanovit-mariadb-na-debian-10/|Джерело]]\\
А на MariaDB можна буде підняти Galera Cluster!
{{section>debian:mariadb&mariadb&noheader}}
mysql -u root -p
Створимо базу даних nodeny
create database nodeny;
use nodeny;
source /usr/local/nodeny/bill.sql;
===== Install apache2 php phpMyAdmin =====
{{section>debian:apache&noheader}}
{{section>debian:phpmyadmin&noheader}}
===== Webmin =====
{{section>debian:webmin&webmin&noheader}}
===== FreeRadius =====
Даний варіант установки не з офіційної документації і розроблений для нашої мережі, але може бути портований і в інші мережі!
Він не має MySQL модуля, але є потужний модуль PERL, який дозволяє робити запити до бази набагато зручніше в плані маніпуляцій.
На офіційному сайті FreeRadius сказано, що rlm_perl продуктивніше rlm_sql.
Використання цього варіанта ви робите на свій страх і ризик :).
apt-get install freeradius freeradius-mysql freeradius-utils
==== Конфігурація ====
Видалимо зайве, попередньо зробивши бекап :-D
cp -r /etc/freeradius/3.0/ /etc/freeradius/3.0.orig/
rm /etc/freeradius/3.0/sites-enabled/*
rm /etc/freeradius/3.0/mods-enabled/eap
rm /etc/freeradius/3.0/mods-enabled/ntlm_auth
rm /etc/freeradius/3.0/mods-enabled/mschap
nano /etc/freeradius/3.0/mods-config/attr_filter/access_reject
поправимо тут
DEFAULT
# EAP-Message = * ANY,
State =* ANY,
Message-Authenticator =* ANY,
Error-Cause =* ANY,
Reply-Message =* ANY,
MS-CHAP-Error = * ANY,
Proxy-State =* ANY
Створимо основний конфіг
nano /etc/freeradius/3.0/sites-enabled/nodeny
з таким вмістом:
server nodeny {
listen {
type = auth
ipaddr = *
port = 1812
}
listen {
type = acct
ipaddr = *
port = 1813
}
authorize {
detail
# preprocess
files
perl
}
authenticate {
Auth-Type PAP {
pap
}
# Auth-Type CHAP {
# chap
# }
# Auth-Type MSCHAP {
# mschap
# }
Auth-Type Perl {
perl
}
}
preacct {
acct_unique
preprocess
}
accounting {
attr_filter.accounting_response
perl
}
session {
radutmp
}
post-auth {
perl
}
}
Також, за бажанням, можна завантажити конфіг сервера статистики
ln -s /etc/freeradius/3.0/sites-available/status /etc/freeradius/3.0/sites-enabled/status
Опишемо локальний сервер доступу для тестів, сюди ж вписуємо всі свої БРАСи за аналогією
echo '' > /etc/freeradius/3.0/clients.conf
nano /etc/freeradius/3.0/clients.conf
client 127.0.0.1 {
ipaddr = 127.0.0.1
secret = hardpass5
shortname=NoDenyDB
nastype = cisco
}
echo '' > /etc/freeradius/3.0/users
nano /etc/freeradius/3.0/users
DEFAULT Auth-Type = Perl
Fall-Through = yes
echo '' > /etc/freeradius/3.0/mods-enabled/perl
nano /etc/freeradius/3.0/mods-enabled/perl
perl {
filename = /usr/local/nodeny/nod/_radius.pl
}
==== Permission denied ====
Оскільки freeradius використовує модулі з директорії білінгу, при запуску можемо отримувати помилку, схожу на наступну
'Can`t open perl script "/usr/local/nodeny/nod/_radius.pl": Permission denied'
'rlm_perl: perl_parse failed: /usr/local/nodeny/nod/_radius.pl not found or has syntax errors'
'/etc/freeradius/3.0/mods-enabled/perl[1]: Instantiation failed for module "perl"'
Щоб це виправити, необхідно змінити користувача запуску freeradius, щоб freeradius міг використовувати файли за межами каталогу своїх конфігурацій
nano /etc/freeradius/3.0/radiusd.conf
У секції 'security' коментуємо користувача та групу
#user = freerad
#group = freerad
Також перевизначимо системний юніт
systemctl edit --full freeradius
В ньому потрібно закоментувати рядки де вказано користувача і групу, від імені яких відбувається запуск.
#User=freerad
#Group=freerad
systemctl daemon-reload
service freeradius restart
Перевіряємо
journalctl -xeu freeradius.service
Маємо побачити щось схоже на наступне
freeradius[240578]: Copyright (C) 1999-2022 The FreeRADIUS server project and contributors
freeradius[240578]: There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
freeradius[240578]: PARTICULAR PURPOSE
freeradius[240578]: You may redistribute copies of FreeRADIUS under the terms of the
freeradius[240578]: GNU General Public License
freeradius[240578]: For more information about these matters, see the file named COPYRIGHT
freeradius[240578]: Starting - reading configuration files ...
freeradius[240578]: Debugger not attached
freeradius[240578]: Perl version: 5.36.0
freeradius[240578]: Creating attribute Unix-Group
freeradius[240578]: rlm_detail (auth_log): 'User-Password' suppressed, will not appear in detail output
freeradius[240578]: Compiling Autz-Type Status-Server for attr Autz-Type
freeradius[240578]: Compiling Auth-Type PAP for attr Auth-Type
freeradius[240578]: Compiling Auth-Type Perl for attr Auth-Type
freeradius[240578]: radiusd: #### Skipping IP addresses and Ports ####
freeradius[240578]: Configuration appears to be OK
==== Завершение установки ====
systemctl enable freeradius
systemctl restart freeradius
systemctl status freeradius
Не забуваємо налаштувати файрвол
Перевіряємо використання портів
ss -alun4 | grep -E '1812|1813'
Бачимо
UNCONN 0 0 127.0.0.1:18121 0.0.0.0:*
UNCONN 0 0 0.0.0.0:1812 0.0.0.0:*
UNCONN 0 0 0.0.0.0:1813 0.0.0.0:*
https://wiki.mikbill.pro/billing/bez_deneg