debian:nodeny

Розбіжності

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

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

Порівняння попередніх версій Попередня ревізія
Наступна ревізія
Попередня ревізія
debian:nodeny [05/03/2022 01:11] 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%>
Рядок 74: Рядок 74:
     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>
Рядок 120: Рядок 121:
 systemctl restart apache2 systemctl restart apache2
 systemctl status apache2 systemctl status apache2
-</code> 
- 
-Відкриваємо порти фаєрволу 
-<code bash> 
-sudo ufw allow http 
-sudo ufw allow https 
-sudo ufw reload 
 </code> </code>
  
Рядок 133: Рядок 127:
 ===== База даних ===== ===== База даних =====
 <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>debian:mariadb&mariadb&noheader}}+{{section>debian:percona8#vstanovlennja_percona_mysql_server_8_na_debian_12}}
  
 <code bash> <code bash>
Рядок 163: Рядок 157:
  
 ===== FreeRadius ===== ===== FreeRadius =====
-[[https://kifarunix.com/install-freeradius-with-daloradius-on-debian-9/]] 
- 
 <WRAP center round important 100%> <WRAP center round important 100%>
 Даний варіант установки не з офіційної документації і розроблений для нашої мережі, але може бути портований і в інші мережі! Даний варіант установки не з офіційної документації і розроблений для нашої мережі, але може бути портований і в інші мережі!
Рядок 172: Рядок 164:
 </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>
Рядок 207: Рядок 196:
 </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 {
Рядок 261: Рядок 249:
         perl         perl
     }     }
- 
 } }
 +EOT
 </code> </code>
  
Рядок 272: Рядок 260:
 Опишемо локальний сервер доступу для тестів, сюди ж вписуємо всі свої БРАСи за аналогією Опишемо локальний сервер доступу для тестів, сюди ж вписуємо всі свої БРАСи за аналогією
 <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 +
-</code> +
- +
-<code bash /etc/freeradius/3.0/clients.conf>+
 client 127.0.0.1 { client 127.0.0.1 {
-ipaddr = 127.0.0.1 +    ipaddr = 127.0.0.1 
-secret = hardpass5 +    secret = hardpass5 
-shortname=NoDenyDB +    shortname=NoDenyDB 
-nastype = cisco+    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> </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> <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>
  
-==== Mysql процедури ====+Також перевизначимо системний юніт 
 +<code bash> 
 +systemctl edit --full freeradius 
 +</code>
  
-<code sql+В ньому потрібно закоментувати рядки де вказано користувача і групу, від імені яких відбувається запуск. 
-ALTER DATABASE nodeny CHARACTER SET utf8 COLLATE utf8_general_ci;+<code bash
 +#User=freerad 
 +#Group=freerad
 </code> </code>
  
-<code sql+<code bash
-DELIMITER $$ +systemctl daemon-reload 
-CREATE DEFINER=`root`@`localhost` PROCEDURE `p5_radcheck`(IN `login` VARCHAR(64)) +service freeradius restart 
-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 +journalctl -xeu freeradius.service 
-  DECLARE usr_id INT; +</code>
-  DECLARE usr_ip VARCHAR(15) DEFAULT NULL; +
-  DECLARE real_login VARCHAR(64) DEFAULT NULL; +
-  DECLARE ip_index INT ; +
-   +
-  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_num(usr_id, ip_index) INTO usr_ip; +
-  CALL set_auth(ip, CONCAT('mod=pppoe;',REPLACE(properties,':',''))); +
-END$$ +
-DELIMITER ;+
  
-DELIMITER $$ +Маємо побачити щось схоже на наступне 
-CREATE DEFINER=`root`@`localhost` PROCEDURE `p5_radreply`(IN `login` VARCHAR(64)+<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 ip_index INT ; +freeradius[240578]: PARTICULAR PURPOSE 
-  DECLARE usr_ip VARCHAR(15) DEFAULT NULL; +freeradius[240578]: You may redistribute copies of FreeRADIUS under the terms of the 
-  DECLARE real_login VARCHAR(64DEFAULT NULL;+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>
  
-  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>
Рядок 434: Рядок 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.1646442662.txt.gz
  • Востаннє змінено: 05/03/2022 01:11
  • повз Method