Показати сторінкуСтарі ревізіїПосилання сюдиЕкспорт до PDFПовернутися наверх Ця сторінка доступна тільки для перегляду. Ви можете продивитися вихідний текст, але не можете змінювати його. Якщо ви вважаєте, що це не вірно, зверніться до адміністратора. ====== NoDeny Next ====== ===== Встановлення NoDeny Next на Debian ===== <WRAP center round info 65%> Установка NoDeny+ на Debian мені потрібна, т.к. всі свої сервери я тримаю на віртуалках, а як відомо, у FreeBSD проблеми зі швидкістю запису на диск під KVM QEMU! До того ж, я не використовую файрвол білінгу, який заточений під FreeBSD </WRAP> ===== NoDeny завантаження ===== **на момент написання статті є 3 репозиторії:**\\ * демоверсія ''[[svn://nodeny-plus.com.ua/nodenyfree]]''\\ * стабільна ''[[svn://nodeny-plus.com.ua/release]]''\\ * нова гілка ''[[svn://nodeny-plus.com.ua/release/next]]''\\ я буду використовувати останній, оскільки у мене є підписка 8-) і так, завантажуємо білінг <code bash> cd /usr/local svn co svn://nodeny-plus.com.ua/release/next nodeny </code> Ставимо пакети для білінгу <code bash> 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 </code> liqpay\pingserver\та інші <code bash> apt-get install -y libxml-simple-perl libdigest-sha-perl liblwp-useragent-determined-perl libcrypt-ssleay-perl </code> для telegram <code bash> cpanm -n WWW::Telegram::BotAPI </code> для ponmon <code bash> apt-get install -y snmp libnet-telnet-cisco-perl libparallel-forkmanager-perl cpanm -n Net::SNMP::Util </code> ===== Web Server ===== Встановлення Apache <code bash> apt-get install -yq apache2 </code> Включаємо потрібні нам модулі для опача: <code bash> sudo a2enmod ssl rewrite suexec include cgid </code> Створимо конфіг замість дефолтного <code bash> nano /etc/apache2/sites-available/nodeny.conf </code> з таким вмістом <code bash> <VirtualHost *:80> ServerAdmin admin@example.com ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/nodeny <FilesMatch "\.(pl|cgi|shtml|phtml|php)$"> AddHandler cgi-script .pl Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch CGIPassAuth On </FilesMatch> <IfModule alias_module> ScriptAlias /cgi-bin/ "/usr/lib/cgi-bin/" #ErrorDocument 404 "/cgi-bin/stat.pl" DirectoryIndex "/cgi-bin/stat.pl" </IfModule> <IfModule !alias_module> DirectoryIndex index.html </IfModule> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> </code> Створимо симлінки для білінгу <code bash> 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 </code> Виставимо права <code bash> perl /usr/local/nodeny/install.pl -w=www-data </code> Застосовуємо свій конфіг <code bash> sudo a2ensite nodeny.conf sudo a2dissite 000-default.conf </code> перевіримо помилки конфігурації <code bash> sudo apache2ctl configtest </code> Ви повинні побачити наступний результат: <code bash> Syntax OK </code> Застосовуємо зміни <code bash> systemctl restart apache2 systemctl status apache2 </code> (1) Для включення https [[https://www.8host.com/blog/sozdanie-sertifikata-lets-encrypt-dlya-apache-v-debian-10/]] ===== База даних ===== <WRAP center round important 100%> Я не використовуватиму MySQL, оскільки з білінгом чудово працює і Percona server for mysql 8! [[https://andreyex.ru/operacionnaya-sistema-debian/kak-ustanovit-mariadb-na-debian-10/|Джерело]]\\ А на Percona можна буде підняти Galera Cluster! </WRAP> {{section>debian:percona8#vstanovlennja_percona_mysql_server_8_na_debian_12}} <code bash> mysql -u root -p </code> Створимо базу даних nodeny <code mysql> create database nodeny; use nodeny; source /usr/local/nodeny/bill.sql; </code> <code bash> </code> ===== Install apache2 php phpMyAdmin ===== {{section>debian:apache&noheader}} {{section>debian:phpmyadmin&noheader}} ===== Webmin ===== {{section>debian:webmin&webmin&noheader}} ===== FreeRadius ===== <WRAP center round important 100%> Даний варіант установки не з офіційної документації і розроблений для нашої мережі, але може бути портований і в інші мережі! Він не має MySQL модуля, але є потужний модуль PERL, який дозволяє робити запити до бази набагато зручніше в плані маніпуляцій. На офіційному сайті FreeRadius сказано, що rlm_perl продуктивніше rlm_sql. Використання цього варіанта ви робите на свій страх і ризик :). </WRAP> <code bash> apt-get install freeradius freeradius-mysql freeradius-utils apt-mark hold freeradius </code> ==== Конфігурація ==== Видалимо зайве, попередньо зробивши бекап :-D <code bash> 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 </code> <code bash> nano /etc/freeradius/3.0/mods-config/attr_filter/access_reject </code> поправимо тут <code bash> DEFAULT # EAP-Message = * ANY, State =* ANY, Message-Authenticator =* ANY, Error-Cause =* ANY, Reply-Message =* ANY, MS-CHAP-Error = * ANY, Proxy-State =* ANY </code> Створимо основний конфіг ''/etc/freeradius/3.0/sites-enabled/nodeny'' з таким вмістом: <code bash> cat <<EOT >> /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 } } EOT </code> Також, за бажанням, можна завантажити конфіг сервера статистики <code bash> ln -s /etc/freeradius/3.0/sites-available/status /etc/freeradius/3.0/sites-enabled/status </code> Опишемо локальний сервер доступу для тестів, сюди ж вписуємо всі свої БРАСи за аналогією <code bash> cat <<EOT > /etc/freeradius/3.0/clients.conf client 127.0.0.1 { ipaddr = 127.0.0.1 secret = hardpass5 shortname=NoDenyDB nastype = cisco } EOT </code> <code bash> cat <<EOT > /etc/freeradius/3.0/mods-config/files/authorize DEFAULT Auth-Type = Perl Fall-Through = yes EOT </code> <code bash> cat <<EOT > /etc/freeradius/3.0/mods-enabled/perl perl { filename = /usr/local/nodeny/nod/_radius.pl } EOT </code> ==== Permission denied ==== Оскільки freeradius використовує модулі з директорії білінгу, при запуску можемо отримувати помилку, схожу на наступну <code bash> '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"' </code> Щоб це виправити, необхідно змінити користувача запуску freeradius, щоб freeradius міг використовувати файли за межами каталогу своїх конфігурацій <code bash> nano /etc/freeradius/3.0/radiusd.conf </code> У секції 'security' коментуємо користувача та групу <code bash> #user = freerad #group = freerad </code> Також перевизначимо системний юніт <code bash> systemctl edit --full freeradius </code> В ньому потрібно закоментувати рядки де вказано користувача і групу, від імені яких відбувається запуск. <code bash> #User=freerad #Group=freerad </code> <code bash> systemctl daemon-reload service freeradius restart </code> Перевіряємо <code bash> journalctl -xeu freeradius.service </code> Маємо побачити щось схоже на наступне <code bash> 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 </code> ==== Завершение установки ==== <code bash> systemctl enable freeradius systemctl restart freeradius systemctl status freeradius </code> Не забуваємо налаштувати файрвол Перевіряємо використання портів ss -alun4 | grep -E '1812|1813' Бачимо <code bash> 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:* </code> https://wiki.mikbill.pro/billing/bez_deneg debian/nodeny.txt Востаннє змінено: 09/02/2025 21:32повз Method Увійти