Розбіжності
Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
Порівняння попередніх версій Попередня ревізія Наступна ревізія | Попередня ревізія | ||
debian:nodeny [2022/03/05 03:11] – Method | debian:nodeny [2025/07/27 20:58] (поточний) – Method | ||
---|---|---|---|
Рядок 1: | Рядок 1: | ||
====== NoDeny Next ====== | ====== NoDeny Next ====== | ||
- | ===== Встановлення NoDeny | + | ===== Встановлення NoDeny |
<WRAP center round info 65%> | <WRAP center round info 65%> | ||
Рядок 49: | Рядок 49: | ||
</ | </ | ||
- | ===== Web Server | + | ===== База даних |
- | Встановлення | + | <WRAP center round important 100%> |
+ | Я не використовуватиму MySQL, оскільки з білінгом чудово працює і Percona server for mysql 8! | ||
+ | [[https:// | ||
+ | А на Percona можна буде підняти Galera Cluster! | ||
+ | </ | ||
+ | {{section> | ||
<code bash> | <code bash> | ||
- | apt-get install | + | mysql -u root -p |
</ | </ | ||
+ | |||
+ | Створимо базу даних nodeny | ||
+ | <code mysql> | ||
+ | create database nodeny; | ||
+ | use nodeny; | ||
+ | source / | ||
+ | </ | ||
+ | |||
+ | ===== Web Server ===== | ||
+ | |||
+ | {{section> | ||
Включаємо потрібні нам модулі для опача: | Включаємо потрібні нам модулі для опача: | ||
<code bash> | <code bash> | ||
- | sudo a2enmod | + | sudo a2enmod cgid |
</ | </ | ||
Рядок 74: | Рядок 91: | ||
AddHandler cgi-script .pl | AddHandler cgi-script .pl | ||
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch | Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch | ||
+ | CGIPassAuth On | ||
</ | </ | ||
< | < | ||
Рядок 120: | Рядок 138: | ||
systemctl restart apache2 | systemctl restart apache2 | ||
systemctl status apache2 | systemctl status apache2 | ||
- | </ | ||
- | |||
- | Відкриваємо порти фаєрволу | ||
- | <code bash> | ||
- | sudo ufw allow http | ||
- | sudo ufw allow https | ||
- | sudo ufw reload | ||
</ | </ | ||
(1) Для включення https [[https:// | (1) Для включення https [[https:// | ||
- | ===== База даних ===== | + | <code bash> |
- | <WRAP center round important 100%> | + | ==== Налаштування |
- | Я не використовуватиму MySQL, оскільки з білінгом чудово працює і MariaDB! | + | |
- | [[https:// | + | |
- | А на MariaDB можна буде підняти Galera Cluster! | + | |
- | </ | + | |
- | {{section> | + | |
+ | Підключимо модулі (-x), встановимо власника та права на файли (-w), створимо стартовий конфіг (-m), створимо суперадміну (-p): | ||
<code bash> | <code bash> | ||
- | mysql -u root -p | + | perl / |
+ | perl / | ||
+ | perl / | ||
+ | perl / | ||
</ | </ | ||
- | Створимо базу даних nodeny | ||
- | <code mysql> | ||
- | create database nodeny; | ||
- | use nodeny; | ||
- | source / | ||
</ | </ | ||
- | <code bash> | + | ===== Install phpMyAdmin ===== |
- | </ | + | За потреби встановлюємо phpMyAdmin |
- | ===== Install apache2 php phpMyAdmin ===== | ||
- | {{section> | ||
{{section> | {{section> | ||
+ | ===== Webmin ===== | ||
+ | За бажанням встановлюємо Webmin | ||
- | |||
- | ===== Webmin ===== | ||
{{section> | {{section> | ||
===== FreeRadius ===== | ===== FreeRadius ===== | ||
- | [[https:// | ||
- | |||
<WRAP center round important 100%> | <WRAP center round important 100%> | ||
Даний варіант установки не з офіційної документації і розроблений для нашої мережі, | Даний варіант установки не з офіційної документації і розроблений для нашої мережі, | ||
Рядок 172: | Рядок 173: | ||
</ | </ | ||
+ | <code bash> | ||
+ | apt-get install freeradius freeradius-mysql freeradius-utils libauthen-radius-perl | ||
- | ==== Встановлення пакетів ==== | + | apt-mark hold freeradius |
- | <code bash> | + | |
- | apt-get install | + | cpanm -n Authen:: |
- | + | ||
- | sudo ufw allow to any port 1812 proto udp | + | |
- | sudo ufw allow to any port 1813 proto udp | + | |
- | sudo ufw reload | + | |
</ | </ | ||
+ | ==== Конфігурація ==== | ||
Видалимо зайве, попередньо зробивши бекап :-D | Видалимо зайве, попередньо зробивши бекап :-D | ||
<code bash> | <code bash> | ||
Рядок 207: | Рядок 207: | ||
</ | </ | ||
- | Створимо основний конфіг | + | Створимо основний конфіг |
- | | + | <code bash> |
- | з таким вмістом: | + | cat <<EOT >> |
- | <code bash / | + | |
server nodeny { | server nodeny { | ||
listen { | listen { | ||
Рядок 261: | Рядок 260: | ||
perl | perl | ||
} | } | ||
- | |||
} | } | ||
+ | EOT | ||
</ | </ | ||
Рядок 272: | Рядок 271: | ||
Опишемо локальний сервер доступу для тестів, | Опишемо локальний сервер доступу для тестів, | ||
<code bash> | <code bash> | ||
- | echo '' | + | cat <<EOT > / |
- | nano / | + | |
- | </code> | + | |
- | + | ||
- | <code bash / | + | |
client 127.0.0.1 { | client 127.0.0.1 { | ||
- | ipaddr = 127.0.0.1 | + | |
- | secret = hardpass5 | + | secret = hardpass5 |
- | shortname=NoDenyDB | + | shortname=NoDenyDB |
- | nastype = cisco | + | nastype = cisco |
} | } | ||
+ | EOT | ||
</ | </ | ||
<code bash> | <code bash> | ||
- | echo '' | + | cat << |
- | nano /etc/freeradius/ | + | |
- | </ | + | |
- | + | ||
- | <code bash / | + | |
DEFAULT Auth-Type = Perl | DEFAULT Auth-Type = Perl | ||
Fall-Through = yes | Fall-Through = yes | ||
+ | EOT | ||
</ | </ | ||
<code bash> | <code bash> | ||
- | echo '' | + | cat << |
- | nano / | + | |
- | </code> | + | |
- | + | ||
- | <code perl / | + | |
perl { | perl { | ||
filename = / | filename = / | ||
} | } | ||
+ | EOT | ||
+ | </ | ||
+ | |||
+ | ==== Permission denied ==== | ||
+ | |||
+ | Оскільки freeradius використовує модулі з директорії білінгу, | ||
+ | <code bash> | ||
+ | 'Can`t open perl script "/ | ||
+ | ' | ||
+ | '/ | ||
</ | </ | ||
- | Я не знаю чому, але радіус | + | Щоб це виправити, необхідно змінити користувача запуску freeradius, щоб freeradius |
- | | + | |
<code bash> | <code bash> | ||
nano / | nano / | ||
</ | </ | ||
- | у секції | + | У секції |
<code bash> | <code bash> | ||
- | # | + | #user = freerad |
- | # group = freerad | + | #group = freerad |
</ | </ | ||
- | ==== Mysql процедури ==== | + | Також |
+ | <code bash> | ||
+ | systemctl edit --full freeradius | ||
+ | </ | ||
- | < | + | В ньому потрібно закоментувати рядки де вказано користувача і групу, від імені яких відбувається запуск. |
- | ALTER DATABASE nodeny CHARACTER SET utf8 COLLATE utf8_general_ci; | + | < |
+ | # | ||
+ | # | ||
</ | </ | ||
- | < | + | < |
- | DELIMITER $$ | + | systemctl daemon-reload |
- | CREATE DEFINER=`root`@`localhost` PROCEDURE `p5_radcheck`(IN `login` VARCHAR(64)) | + | service freeradius restart |
- | BEGIN | + | </ |
- | DECLARE real_login VARCHAR(64) DEFAULT NULL; | + | |
- | SELECT SUBSTRING_INDEX(login, | + | |
- | SELECT id, name, ' | + | |
- | FROM users WHERE name=real_login; | + | |
- | END$$ | + | |
- | DELIMITER ; | + | |
- | DELIMITER $$ | + | Перевіряємо |
- | CREATE DEFINER=`root`@`localhost` PROCEDURE `p5_radupdate`(IN `login` VARCHAR(64), | + | <code bash> |
- | BEGIN | + | journalctl |
- | DECLARE usr_id INT; | + | </ |
- | DECLARE usr_ip VARCHAR(15) DEFAULT NULL; | + | |
- | DECLARE real_login VARCHAR(64) DEFAULT NULL; | + | |
- | DECLARE ip_index INT ; | + | |
- | + | ||
- | SELECT SUBSTRING_INDEX(login, | + | |
- | IF login REGEXP '[+][0-9]+$' THEN | + | |
- | SELECT CAST(REPLACE(REPLACE(login, | + | |
- | ELSE SET ip_index=0; | + | |
- | + | ||
- | SELECT id INTO usr_id FROM users WHERE name=real_login LIMIT 1; | + | |
- | SELECT get_ip_by_num(usr_id, | + | |
- | CALL set_auth(ip, | + | |
- | END$$ | + | |
- | DELIMITER ; | + | |
- | + | ||
- | 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, | + | |
- | + | ||
- | IF login REGEXP ' | + | |
- | SELECT CAST(REPLACE(REPLACE(login, | + | |
- | ELSE SET ip_index=0; | + | |
- | SELECT id INTO usr_id FROM users WHERE name=real_login LIMIT 1; | + | Маємо побачити щось схоже на наступне |
- | | + | <code bash> |
- | + | freeradius[240578]: | |
- | SELECT NULL, | + | freeradius[240578]: |
- | | + | freeradius[240578]: |
- | | + | freeradius[240578]: |
- | END$$ | + | freeradius[240578]: GNU General Public License |
- | DELIMITER ; | + | freeradius[240578]: For more information about these matters, see the file named COPYRIGHT |
- | + | freeradius[240578]: | |
- | DELIMITER $$ | + | freeradius[240578]: |
- | CREATE DEFINER=`root`@`localhost` PROCEDURE `p5_radparam`(IN `login` VARCHAR(64)) | + | freeradius[240578]: |
- | BEGIN | + | freeradius[240578]: Creating attribute Unix-Group |
- | DECLARE usr_id INT; | + | freeradius[240578]: rlm_detail |
- | DECLARE real_login VARCHAR(64) DEFAULT NULL; | + | freeradius[240578]: |
- | + | freeradius[240578]: | |
- | IF login REGEXP '[+][0-9]+$' THEN | + | freeradius[240578]: |
- | SELECT SUBSTRING_INDEX(login, ' | + | freeradius[240578]: |
- | ELSE SET real_login=login; | + | freeradius[240578]: |
- | + | ||
- | 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=' | + | |
- | END$$ | + | |
- | DELIMITER ; | + | |
- | + | ||
- | DELIMITER $$ | + | |
- | CREATE DEFINER=`root`@`localhost` PROCEDURE `p5_radtraf`(IN `login` VARCHAR(64), | + | |
- | 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, | + | |
- | ELSE SET real_login=login; | + | |
- | + | ||
- | SELECT id INTO usr_id FROM users WHERE name=real_login LIMIT 1; | + | |
- | + | ||
- | SELECT trafin | + | |
- | | + | |
- | | + | |
- | | + | |
- | ON DUPLICATE KEY UPDATE traf_in=trafin, | + | |
- | SET @s = CONCAT(' | + | |
- | 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 bash> | <code bash> | ||
Рядок 434: | Рядок 364: | ||
</ | </ | ||
+ | Не забуваємо налаштувати файрвол | ||
+ | Перевіряємо використання портів | ||
+ | ss -alun4 | grep -E ' | ||
- | + | Бачимо | |
- | + | <code bash> | |
- | rc.local | + | UNCONN 0 0 127.0.0.1: |
- | + | UNCONN 0 0 0.0.0.0: | |
- | https:// | + | UNCONN 0 0 0.0.0.0:1813 0.0.0.0:* |
+ | </ | ||
https:// | https:// |