Розбіжності
Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
| Порівняння попередніх версій Попередня ревізія Наступна ревізія | Попередня ревізія | ||
| debian:nodeny [2023/12/07 15:35] – Method | debian:nodeny [2025/07/27 20:58] (поточний) – Method | ||
|---|---|---|---|
| Рядок 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 |
| </ | </ | ||
| Рядок 121: | Рядок 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%> | ||
| Даний варіант установки не з офіційної документації і розроблений для нашої мережі, | Даний варіант установки не з офіційної документації і розроблений для нашої мережі, | ||
| Рядок 173: | Рядок 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> | ||
| Рядок 208: | Рядок 207: | ||
| </ | </ | ||
| - | Створимо основний конфіг | + | Створимо основний конфіг |
| - | | + | <code bash> |
| - | з таким вмістом: | + | cat <<EOT >> |
| - | <code bash / | + | |
| server nodeny { | server nodeny { | ||
| listen { | listen { | ||
| Рядок 262: | Рядок 260: | ||
| perl | perl | ||
| } | } | ||
| - | |||
| } | } | ||
| + | EOT | ||
| </ | </ | ||
| Рядок 273: | Рядок 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> | ||
| Рядок 435: | Рядок 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:// | ||