====== 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