debian:nodeny

Розбіжності

Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.

Посилання на цей список змін

Наступна ревізія
Попередня ревізія
debian:nodeny [05/03/2022 01:05] – створено Methoddebian:nodeny [09/02/2025 21:32] (поточний) – [Конфігурація] Method
Рядок 1: Рядок 1:
-====== NoDeny Next  ====== +====== NoDeny Next ====== 
-===== Установка NoDeny Nex на Debian ===== +===== Встановлення NoDeny Next на Debian ===== 
- \\  +
- \\  +
- \\  +
- \\  +
- \\ +
 <WRAP center round info 65%> <WRAP center round info 65%>
-Установка NoDeny+ на Debian для меня нужна, т.к. все свои сервера я держу на виртуалках, а как известно, у FreeBSD проблемы с скоростью записи на диск под KVM\QEMU!+Установка NoDeny+ на Debian мені потрібна, т.к. всі свої сервери я тримаю на віртуалках, а як відомо, у FreeBSD проблеми зі швидкістю запису на диск під KVM QEMU!
  
-К тому же я не использую файрвол билинга, который заточен под FreeBSD+До того жя не використовую файрвол білінгуякий заточений під FreeBSD
 </WRAP> </WRAP>
  
Рядок 15: Рядок 11:
  
  
-===== NoDeny загрузка =====+===== NoDeny завантаження =====
  
-**на момент написания статьи есть 3 репозитория:**\\ +**на момент написання статті є 3 репозиторії:**\\ 
-  * демоверсия  ''[[svn://nodeny-plus.com.ua/nodenyfree]]''\\ +  * демоверсія ''[[svn://nodeny-plus.com.ua/nodenyfree]]''\\ 
-  * стабильная  ''[[svn://nodeny-plus.com.ua/release]]''\\ +  * стабільна ''[[svn://nodeny-plus.com.ua/release]]''\\ 
-  * новая ветка ''[[svn://nodeny-plus.com.ua/release/next]]''\\+  * нова гілка ''[[svn://nodeny-plus.com.ua/release/next]]''\\
  
  
  
-я буду использовать последний, по скольку у меня есть подписка 8-)+я буду використовувати останній, оскільки у мене є підписка 8-)
  
-и так, скачиваем билинг+і так, завантажуємо білінг
 <code bash> <code bash>
 cd /usr/local cd /usr/local
Рядок 32: Рядок 28:
 </code> </code>
  
-Ставим пакеты для билинга+Ставимо пакети для білінгу
 <code bash> <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 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> </code>
  
-liqpay\pingserver\и другие+liqpay\pingserver\та інші
 <code bash> <code bash>
 apt-get install -y libxml-simple-perl libdigest-sha-perl liblwp-useragent-determined-perl libcrypt-ssleay-perl apt-get install -y libxml-simple-perl libdigest-sha-perl liblwp-useragent-determined-perl libcrypt-ssleay-perl
Рядок 52: Рядок 48:
 cpanm -n Net::SNMP::Util cpanm -n Net::SNMP::Util
 </code> </code>
- 
  
 ===== Web Server ===== ===== Web Server =====
-Установка Apache+Встановлення Apache
 <code bash> <code bash>
 apt-get install -yq apache2 apt-get install -yq apache2
 </code> </code>
  
-Включаем нужные нам модули для апача:+Включаємо потрібні нам модулі для опача:
 <code bash> <code bash>
 sudo a2enmod ssl rewrite suexec include cgid sudo a2enmod ssl rewrite suexec include cgid
 </code> </code>
  
-Создадим конфиг вместо дефолтного+Створимо конфіг замість дефолтного
 <code bash> <code bash>
 nano /etc/apache2/sites-available/nodeny.conf nano /etc/apache2/sites-available/nodeny.conf
 </code> </code>
-с таким содержимым+з таким вмістом
 <code bash> <code bash>
 <VirtualHost *:80> <VirtualHost *:80>
     ServerAdmin admin@example.com     ServerAdmin admin@example.com
     ServerName example.com     ServerName example.com
-    ServerAlias www.example.com+    ServerAlias ​​www.example.com
     DocumentRoot /var/www/nodeny     DocumentRoot /var/www/nodeny
 <FilesMatch "\.(pl|cgi|shtml|phtml|php)$"> <FilesMatch "\.(pl|cgi|shtml|phtml|php)$">
     AddHandler cgi-script .pl     AddHandler cgi-script .pl
     Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch     Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
 +    CGIPassAuth On
 </FilesMatch> </FilesMatch>
 <IfModule alias_module> <IfModule alias_module>
-    ScriptAlias /cgi-bin/ "/usr/lib/cgi-bin/"+    ScriptAlias ​​/cgi-bin/ "/usr/lib/cgi-bin/"
     #ErrorDocument 404 "/cgi-bin/stat.pl"     #ErrorDocument 404 "/cgi-bin/stat.pl"
     DirectoryIndex "/cgi-bin/stat.pl"     DirectoryIndex "/cgi-bin/stat.pl"
Рядок 93: Рядок 89:
 </code> </code>
  
-Создадим симлинки для билинга+Створимо симлінки для білінгу
 <code bash> <code bash>
 rm -fR /usr/lib/cgi-bin rm -fR /usr/lib/cgi-bin
Рядок 100: Рядок 96:
 </code> </code>
  
-Выставим права+Виставимо права
 <code bash> <code bash>
 perl /usr/local/nodeny/install.pl -w=www-data perl /usr/local/nodeny/install.pl -w=www-data
 </code> </code>
  
-Применяем свой конфиг+Застосовуємо свій конфіг
 <code bash> <code bash>
 sudo a2ensite nodeny.conf sudo a2ensite nodeny.conf
Рядок 111: Рядок 107:
 </code> </code>
  
-проверим ошибки конфигурации+перевіримо помилки конфігурації
 <code bash> <code bash>
 sudo apache2ctl configtest sudo apache2ctl configtest
 </code> </code>
  
-Вы должны увидеть следующий результат:+Ви повинні побачити наступний результат:
 <code bash> <code bash>
 Syntax OK Syntax OK
 </code> </code>
  
-Применяем изменения+Застосовуємо зміни
 <code bash> <code bash>
 systemctl restart apache2 systemctl restart apache2
Рядок 127: Рядок 123:
 </code> </code>
  
-Открываем порты фаервола +(1) Для включення https [[https://www.8host.com/blog/sozdanie-sertifikata-lets-encrypt-dlya-apache-v-debian-10/]]
-<code bash> +
-sudo ufw allow http +
-sudo ufw allow https +
-sudo ufw reload +
-</code> +
- +
-(1) Для включения https [[https://www.8host.com/blog/sozdanie-sertifikata-lets-encrypt-dlya-apache-v-debian-10/]]+
  
-===== База данных =====+===== База даних =====
 <WRAP center round important 100%> <WRAP center round important 100%>
-Я не буду использовать MySQL, т.к. с билингом прекрасно работает и MariaDB+Я не використовуватиму MySQL, оскільки з білінгом чудово працює і Percona server for mysql 8
-[[https://andreyex.ru/operacionnaya-sistema-debian/kak-ustanovit-mariadb-na-debian-10/|Источник]]\\ +[[https://andreyex.ru/operacionnaya-sistema-debian/kak-ustanovit-mariadb-na-debian-10/|Джерело]]\\ 
-А на MariaDB можно будет поднять Galera Cluster!!!+А на Percona можна буде підняти Galera Cluster!
 </WRAP> </WRAP>
-{{section>ru:debian:mariadb&mariadb&noheader}}+{{section>debian:percona8#vstanovlennja_percona_mysql_server_8_na_debian_12}}
  
 <code bash> <code bash>
Рядок 148: Рядок 137:
 </code> </code>
  
-Создадим базу данных nodeny+Створимо базу даних nodeny
 <code mysql> <code mysql>
 create database nodeny; create database nodeny;
 use nodeny; use nodeny;
-source /usr/local/nodeny/bill.sql; +source /usr/local/nodeny/bill.sql;
 </code> </code>
  
Рядок 159: Рядок 148:
  
 ===== Install apache2 php phpMyAdmin ===== ===== Install apache2 php phpMyAdmin =====
-{{section>ru:debian:apache&noheader}} +{{section>debian:apache&noheader}} 
-{{section>ru:debian:phpmyadmin&noheader}}+{{section>debian:phpmyadmin&noheader}}
  
  
  
 ===== Webmin ===== ===== Webmin =====
-{{section>ru:debian:webmin&webmin&noheader}}+{{section>debian:webmin&webmin&noheader}}
  
 ===== FreeRadius ===== ===== FreeRadius =====
-[[https://kifarunix.com/install-freeradius-with-daloradius-on-debian-9/]] 
- 
 <WRAP center round important 100%> <WRAP center round important 100%>
-Данный вариант установки не из официальной документации и разработан для нашей сети но может быть портирован и в другие сети+Даний варіант установки не з офіційної документації і розроблений для нашої мережі, але може бути портований і в інші мережі
-Он не имеет MySQL модуля, но есть мощный модуль PERL, который позволяет делать запросы к базе на много удобней в плане манипуляций. +Він не має MySQL модуля, але є потужний модуль PERL, який дозволяє робити запити до бази набагато зручніше в плані маніпуляцій. 
-На официальном сайте FreeRadius сказано что rlm_perl производительней rlm_sql. +На офіційному сайті FreeRadius сказано, що rlm_perl продуктивніше rlm_sql. 
-Использование даного варианта вы делаете на свой страх и риск :).+Використання цього варіанта ви робите на свій страх і ризик :).
 </WRAP> </WRAP>
  
- 
-==== Установка пакетов ==== 
 <code bash> <code bash>
 apt-get install freeradius freeradius-mysql freeradius-utils apt-get install freeradius freeradius-mysql freeradius-utils
-   + 
-sudo ufw allow to any port 1812 proto udp +apt-mark hold freeradius
-sudo ufw allow to any port 1813 proto udp +
-sudo ufw reload+
 </code> </code>
  
-Удалим лишнее, предварительно сделав бэкап :-D+==== Конфігурація ==== 
 +Видалимо зайве, попередньо зробивши бекап :-D
 <code bash> <code bash>
 cp -r /etc/freeradius/3.0/ /etc/freeradius/3.0.orig/ cp -r /etc/freeradius/3.0/ /etc/freeradius/3.0.orig/
Рядок 200: Рядок 184:
 nano /etc/freeradius/3.0/mods-config/attr_filter/access_reject nano /etc/freeradius/3.0/mods-config/attr_filter/access_reject
 </code> </code>
-поправим здесь +поправимо тут 
-<code bash >+<code bash>
 DEFAULT DEFAULT
-# EAP-Message =* ANY, +# EAP-Message = * ANY, 
- State =* ANY, +State =* ANY, 
- Message-Authenticator =* ANY, +Message-Authenticator =* ANY, 
- Error-Cause =* ANY, +Error-Cause =* ANY, 
- Reply-Message =* ANY, +Reply-Message =* ANY, 
- MS-CHAP-Error =* ANY, +MS-CHAP-Error = * ANY, 
- Proxy-State =* ANY+Proxy-State =* ANY
 </code> </code>
  
-Создадим основной конфиг  +Створимо основний конфіг ''/etc/freeradius/3.0/sites-enabled/nodeny'' з таким вмістом: 
-   nano /etc/freeradius/3.0/sites-enabled/nodeny +<code bash
-с таким содержимым: +cat <<EOT >> /etc/freeradius/3.0/sites-enabled/nodeny
-<code bash   /etc/freeradius/3.0/sites-enabled/nodeny>+
 server nodeny { server nodeny {
     listen {     listen {
Рядок 266: Рядок 249:
         perl         perl
     }     }
- 
 } }
 +EOT
 </code> </code>
  
- +Також, за бажанням, можна завантажити конфіг сервера статистики
-Такжепо желанию, можно подгрузить конфиг сервера статистики+
 <code bash> <code bash>
 ln -s /etc/freeradius/3.0/sites-available/status /etc/freeradius/3.0/sites-enabled/status ln -s /etc/freeradius/3.0/sites-available/status /etc/freeradius/3.0/sites-enabled/status
 </code> </code>
  
-Опишем локальный сервер доступа для тестов, сюда же вписываем все свои БРАСы по аналогии+Опишемо локальний сервер доступу для тестів, сюди ж вписуємо всі свої БРАСи за аналогією
 <code bash> <code bash>
-echo '' >  /etc/freeradius/3.0/clients.conf +cat <<EOT > /etc/freeradius/3.0/clients.conf 
-nano /etc/freeradius/3.0/clients.conf +client 127.0.0.1 { 
-</code> +    ipaddr = 127.0.0.1 
- +    secret = hardpass5 
-<code bash   /etc/freeradius/3.0/clients.conf> +    shortname=NoDenyDB 
-client  127.0.0.1 { +    nastype = cisco
- ipaddr  = 127.0.0.1 +
- secret = hardpass5 +
- shortname = NoDenyDB +
- nastype = cisco+
 } }
 +EOT
 </code> </code>
  
 <code bash> <code bash>
-echo '' > /etc/freeradius/3.0/users +cat <<EOT > /etc/freeradius/3.0/mods-config/files/authorize
-nano /etc/freeradius/3.0/users +
-</code> +
- +
-<code bash  /etc/freeradius/3.0/users>+
 DEFAULT Auth-Type = Perl DEFAULT Auth-Type = Perl
     Fall-Through = yes     Fall-Through = yes
 +EOT
 </code> </code>
  
 <code bash> <code bash>
-echo '' > /etc/freeradius/3.0/mods-enabled/perl +cat <<EOT > /etc/freeradius/3.0/mods-enabled/perl
-nano /etc/freeradius/3.0/mods-enabled/perl +
-</code> +
- +
-<code perl /etc/freeradius/3.0/mods-enabled/perl>+
 perl { perl {
         filename = /usr/local/nodeny/nod/_radius.pl         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> </code>
  
-Я не знаю почему, но радиус отказывается работать с моим скриптом на дебиане по причине недостаточных прав на файл. я перепробовал все комбинации прав и владельцев на файл, но результат тот же. Единственное что помогло, так это изменить в настройках самого радиуса пользователя и группу либо вообще их закоментировать. Я так и поступил:+Щоб це виправити, необхідно змінити користувача запуску freeradius, щоб freeradius міг використовувати файли за межами каталогу своїх конфігурацій
-  +
 <code bash> <code bash>
 nano /etc/freeradius/3.0/radiusd.conf nano /etc/freeradius/3.0/radiusd.conf
 </code> </code>
  
-в секции "securityкомментируем пользователя и группу+У секції 'securityкоментуємо користувача та групу
 <code bash> <code bash>
-      user = freerad +#user = freerad 
-      group = freerad+#group = freerad
 </code> </code>
  
 +Також перевизначимо системний юніт
 +<code bash>
 +systemctl edit --full freeradius
 +</code>
  
-==== Mysql процедуры ====+В ньому потрібно закоментувати рядки де вказано користувача і групу, від імені яких відбувається запуск. 
 +<code bash> 
 +#User=freerad 
 +#Group=freerad 
 +</code>
  
-<code sql+<code bash
-ALTER DATABASE nodeny CHARACTER SET utf8 COLLATE utf8_general_ci;+systemctl daemon-reload 
 +service freeradius restart
 </code> </code>
  
-<code sql+Перевіряємо 
-DELIMITER $$ +<code bash
-CREATE DEFINER=`root`@`localhost` PROCEDURE `p5_radcheck`(IN `login` VARCHAR(64)) +journalctl -xeu freeradius.service 
-BEGIN +</code>
-  DECLARE real_login VARCHAR(64) DEFAULT NULL; +
-  SELECT SUBSTRING_INDEX(login, '+', 1) INTO real_login; +
-  SELECT id, name, 'Password' AS Attribute, AES_DECRYPT(passwd,'hardpass') AS Value,'==' +
-    FROM users WHERE name=real_login; +
-END$$ +
-DELIMITER ;+
  
-DELIMITER $$ +Маємо побачити щось схоже на наступне 
-CREATE DEFINER=`root`@`localhost` PROCEDURE `p5_radupdate`(IN `login` VARCHAR(64), IN `ip` VARCHAR(16), IN `properties` VARCHAR(255)+<code bash> 
-BEGIN +freeradius[240578]: Copyright (C1999-2022 The FreeRADIUS server project and contributors 
-  DECLARE usr_id INT+freeradius[240578]: There is NO warrantynot even for MERCHANTABILITY or FITNESS FOR A 
-  DECLARE usr_ip VARCHAR(15) DEFAULT NULL; +freeradius[240578]: PARTICULAR PURPOSE 
-  DECLARE real_login VARCHAR(64) DEFAULT NULL; +freeradius[240578]: You may redistribute copies of FreeRADIUS under the terms of the 
-  DECLARE ip_index INT ; +freeradius[240578]: GNU General Public License 
-   +freeradius[240578]: For more information about these matterssee the file named COPYRIGHT 
-  SELECT SUBSTRING_INDEX(login'+', 1) INTO real_login; +freeradius[240578]: Starting - reading configuration files ... 
-  IF login REGEXP '[+][0-9]+$' THEN +freeradius[240578]: Debugger not attached 
-  SELECT CAST(REPLACE(REPLACE(login, real_login, ''),'+','') AS UNSIGNED) INTO ip_index; +freeradius[240578]: Perl version: 5.36.0 
-  ELSE SET ip_index=0;END IF; +freeradius[240578]: Creating attribute Unix-Group 
-  +freeradius[240578]: rlm_detail (auth_log)'User-Passwordsuppressedwill not appear in detail output 
-  SELECT id INTO usr_id FROM users WHERE name=real_login LIMIT 1; +freeradius[240578]: Compiling Autz-Type Status-Server for attr Autz-Type 
-  SELECT get_ip_by_num(usr_id, ip_index) INTO usr_ip; +freeradius[240578]: Compiling Auth-Type PAP for attr Auth-Type 
-  CALL set_auth(ip, CONCAT('mod=pppoe;',REPLACE(properties,':',''))); +freeradius[240578]: Compiling Auth-Type Perl for attr Auth-Type 
-END$$ +freeradius[240578]: radiusd: #### Skipping IP addresses and Ports #### 
-DELIMITER ;+freeradius[240578]Configuration appears to be OK 
 +</code>
  
-DELIMITER $$ 
-CREATE DEFINER=`root`@`localhost` PROCEDURE `p5_radreply`(IN `login` VARCHAR(64)) 
-BEGIN 
-  DECLARE usr_id INT; 
-  DECLARE ip_index INT ; 
-  DECLARE usr_ip VARCHAR(15) DEFAULT NULL; 
-  DECLARE real_login VARCHAR(64) DEFAULT NULL; 
- 
-  SELECT SUBSTRING_INDEX(login, '+', 1) INTO real_login; 
-   
-  IF login REGEXP '[+][0-9]+$' THEN 
-  SELECT CAST(REPLACE(REPLACE(login, real_login, ''),'+','') AS UNSIGNED) INTO ip_index; 
-  ELSE SET ip_index=0;END IF; 
- 
-  SELECT id INTO usr_id FROM users WHERE name=real_login LIMIT 1; 
-  SELECT get_ip_by_num1(usr_id, ip_index) INTO usr_ip; 
- 
-  SELECT NULL,login,'Framed-IP-Address',usr_ip,'='; 
-  SELECT NULL,login,'Framed-IP-Netmask','255.255.255.255','='; 
-  SELECT NULL,login,'Framed-Protocol','PPP','='; 
-END$$ 
-DELIMITER ; 
- 
-DELIMITER $$ 
-CREATE DEFINER=`root`@`localhost` PROCEDURE `p5_radparam`(IN `login` VARCHAR(64)) 
-BEGIN 
-  DECLARE usr_id INT; 
-  DECLARE real_login VARCHAR(64) DEFAULT NULL; 
-   
-  IF login REGEXP '[+][0-9]+$' THEN 
-  SELECT SUBSTRING_INDEX(login, '+', 1) INTO real_login; 
-  ELSE SET real_login=login;END IF; 
- 
-  SELECT id INTO usr_id FROM users WHERE name=real_login LIMIT 1; 
-   
-  SELECT s.module, s.param FROM `v_services` s  
-  LEFT JOIN users u ON(s.uid=u.id)   
-  WHERE u.state='on' AND s.uid=usr_id AND s.tags NOT LIKE '%,wait_pos_balance,%'; 
-END$$ 
-DELIMITER ; 
- 
-DELIMITER $$ 
-CREATE DEFINER=`root`@`localhost` PROCEDURE `p5_radtraf`(IN `login` VARCHAR(64), IN `ses` VARCHAR(32), IN `trafin` BIGINT(20), IN `trafout` BIGINT(20)) 
-BEGIN 
-  DECLARE usr_id INT; 
-  DECLARE t_in BIGINT; 
-  DECLARE t_out BIGINT; 
-  DECLARE real_login VARCHAR(64) DEFAULT NULL; 
-   
-  IF login REGEXP '[+][0-9]+$' THEN 
-  SELECT SUBSTRING_INDEX(login, '+', 1) INTO real_login; 
-  ELSE SET real_login=login;END IF; 
- 
-  SELECT id INTO usr_id FROM users WHERE name=real_login LIMIT 1; 
-   
-  SELECT trafin - IFNULL((SELECT traf_in FROM ses_traf WHERE ses_id=ses LIMIT 1),0) INTO t_in; 
-  SELECT trafout - IFNULL((SELECT traf_out FROM ses_traf WHERE ses_id=ses LIMIT 1),0) INTO t_out; 
-  UPDATE users_trf SET in1=in1 + t_in, out1=out1 + t_out WHERE uid=usr_id; 
-  INSERT INTO ses_traf SET ses_id=ses, traf_in=trafin, traf_out=trafout, time=UNIX_TIMESTAMP() 
-    ON DUPLICATE KEY UPDATE traf_in=trafin, traf_out=trafout, time=UNIX_TIMESTAMP(); 
-  SET @s = CONCAT('INSERT INTO X', YEAR(NOW()), '_', MONTH(NOW()), '_', DAY(NOW()), ' VALUES(?,?,?,?,?,?)'); 
-  PREPARE stmt1 FROM @s;  
-  SET @iface = 0; 
-  SET @cls = 1; 
-  SET @ts = CEIL(UNIX_TIMESTAMP() / 60) * 60; 
-  SET @usr_id = usr_id; 
-  SET @t_in = t_in; 
-  SET @t_out = t_out; 
-  EXECUTE stmt1 USING @usr_id, @iface, @ts, @cls, @t_in, @t_out; 
-  DEALLOCATE PREPARE stmt1; 
-END$$ 
-DELIMITER ; 
-</code> 
 ==== Завершение установки ==== ==== Завершение установки ====
 <code bash> <code bash>
Рядок 441: Рядок 353:
 </code> </code>
  
 +Не забуваємо налаштувати файрвол
  
 +Перевіряємо використання портів
 +  ss -alun4 | grep -E '1812|1813'
  
- +Бачимо 
- +<code bash> 
-rc.local +UNCONN 0      0          127.0.0.1:18121      0.0.0.0:* 
- +UNCONN 0      0            0.0.0.0:1812       0.0.0.0:* 
-https://softnastroy.com/content/vklyuchaem-rclocal-v-debian-9-stretch.html +UNCONN 0      0            0.0.0.0:1813       0.0.0.0:* 
 +</code>
  
  
 https://wiki.mikbill.pro/billing/bez_deneg https://wiki.mikbill.pro/billing/bez_deneg
  • debian/nodeny.1646442302.txt.gz
  • Востаннє змінено: 05/03/2022 01:05
  • повз Method