Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Сентября 18, 2019, 23:01 по Москве
Начало Помощь Поиск Войти Регистрация
Новости: Не ленись, тренируйся! Telegram - t.me/screensquid

+  Break-people
|-+  Пропасть
| |-+  Ящик неопределенного назначения
| | |-+  [Тема закрыта] mysql_acl_0.1 Squid MySQL модуль проверки подлинности
« предыдущая тема следующая тема »
Страниц: [1] Печать
Автор Тема: [Тема закрыта] mysql_acl_0.1 Squid MySQL модуль проверки подлинности  (Прочитано 6646 раз)
evgeniy
Гость
« : Марта 07, 2013, 00:53 по Москве »

 mysql_acl_0.1 Squid  MySQL модуль проверки подлинности.

Часть 1.  Можно не читать.
Это достаточно вольный перевод с английского, так уж получилось, в силу жизненных обстоятельств изучал в школе немецкий.  Можно её рассматривать как  руководство к действию, если вы хотите чтобы авторизация пользователей Squid осуществлялась через базу Mysql, или вообще никак не рассматривать. Мне это однажды понадобились, решил поделиться, может кому нужно. Кроме того модуль авторизации имеет достаточно много возможностей о которых вы сами можете узнать из оригинала.


Часть 2  Создание базы Mysql
Думаю не стоит описывать как я устанавливал LAMP, не являясь отъявленным Линуксоидом, это было сделано намного раньше специально для Screen Squid. Сам модуль авторизации я позаимствовал на сайте 1Bit.hu  http://onebithq.com/root/squid/mysqlacl где и вы можете его взять. mysql_acl выпущен под GNU General Public License. Принцип работы — проверка пары Логин/пароль или как в моем случае Ip/ доступ.
Теперь о базе, в зависимости от того, что вы будете авторизовать можно, создать еще одну таблицу в базе Screen Squid, да простят меня создатели break-people, или некую базу test. У меня здесь основное это Ip, и указание activ - можно или льзя.
CREATE TABLE users
(id int(11) NOT NULL auto_increment,
login varchar(16) NOT NULL default '',
password varchar(255) NOT NULL default '',
name varchar(255) NOT NULL default 'NO NAME',
ipuser varchar(32) NOT NULL default '0.0.0.0',
activ tinyint(1) NOT NULL default '1',
PRIMARY KEY  (id)) ENGINE=INNODB;
Добавляем логин и Ip пользователя, если предполагается авторизация по логину и паролю то и пароль соответственно. На всякий случай оба варианта.
INSERT INTO users (login, password, ipuser) VALUES('user1','paswuser1','192.168.0.5')
Если используете phpMyAdmin должно получиться как то так  (img1) таблица готова).


Часть 3 самая интересная :) . установка  mysql_ acl
Скачиваем  http://onebithq.com/root/download/squid/mysqlacl,  распаковываем смотрим. При необходимости правим пути в Мakefile а в define.h путь к файлу конфигурации mysql_acl.conf  на - «где хотим всё это видеть», либо вообще ничего не правим если все устраивает, главное потом не заблудиться.
 При сборке в понадобиться базовый пакет разработки Suse и  libmysqlclient-devel обязательно!
Собираем, make, устанавливаем make install. Файл конфигурации у меня в /etc/squid а модуль mysql_ acl  живет в  /usr/libexec
Переименовываем исходный mysql_acl.conf в нем куча полезных примеров , свой гоблинский перевод не выкладываю, это вместо него)
mysql_acl.conf

# адрес сервера MySQL
hostname localhost

# пользователь  базы данных
# умолчанию был: www
username root

# Пароль пользователя для базы данных,
# был: squid
password *******   

# Имя базы данных MySQL
# default: 'mysql_acl'
database test

# mysqld socket
#default: mysqld_socket /tmp/mysqld.sock
# для  suse
mysqld_socket   /var/run/mysql/mysql.sock

# порт базы mysql
mysqld_port   3306

# проверка IP и разрешения на выход в инет
squidparams   %SRC
sqlquery default eq,direct,break select 1 from users where ipuser="%SRC" and activ="1"
sqlquery default eq,direct select 0

# вариант с авторизацией по логину и паролю
#squidparams   %LOGIN %PASSWD
#sqlquery default eq,direct,break select 1 from users where login="%LOGIN" and password="%PASSWD"
#sqlquery default eq,direct select 0

Тестирование:  в папке с собранным  mysql_auth выполняем последовательно:
1. Запуск программы -  # ./mysql_acl
3. Просто  Enter  результат — ERR
4. Комбинацию из цифр 12345..  — ERR
5. Любой IP которого нет в базе  — ERR
6. IP в базе 192.168.0.5     результат –  ОK
7. Меняем в состояние в поле activ с 1 на 0
192.168.0.5     результат –  ERR
8. Останавливаем Ctrl+C. Если используется логин/пароль все аналогично.
Модуль работает осталось подружить его с Squid (img2)


Часть 4  самая короткая. Дружба.
В squid.conf добавить
#Доступ по IP База данных  MySQL
external_acl_type mysql_acl %SRC /usr/libexec/mysql_acl
acl acl_mysql external mysql_acl squidparams
….................................................................................
#Разрешаем подключение по Ip (База данных MySQL)
http_access allow acl_mysql 

Хорошего настроения! (img3)
« Последнее редактирование: Апреля 07, 2014, 09:06 по Москве от KerryT » Записан
KerryT
Терапевты
***
Сообщений: 1891

Верю в тебя, все получится!

« Ответ #1 : Марта 08, 2013, 20:01 по Москве »

%SRC - параметр же из Squid? :)

Очень хорошо, написано :) Если ты непротив, я адаптирую это под наш единый стиль и разместим на проекте :)
Записан

Мы тебе помогли?:) Принимаем пожертвования на мечту http://break-people.ru/cmsmade/?page=how_to_donate_to_project
evgeniy
Гость
« Ответ #2 : Марта 11, 2013, 15:29 по Москве »

Конечно адаптировать  :)
Все верно, %SRC -параметр squid. Модуль mysql_acl_0.1 позволяет организовывать запросы с использованием параметров такого типа
%LOGIN   Имя пользователя для входа в систему
%IDENT   идентификатор пользователя - строка совпадения с именем пользователя
%SRC   IP-адрес источника (клиент)
%DST   IP   адрес назначения (сервер) -  запрошенный хост
%PROTO   тип протокола передачи (http, ftp, etc)
%PORT   номер порта назначения (сервер) - Запрошенный порт
%METHOD    метод HTTP-запроса (get, post, etc) - метод, которым осуществлен запрос
 
в конфиге mysql_acl 
squidparams   %LOGIN %SRC %DST %PROTO %PORT
sqlquery acl1   or,recursive   select 1 from user_acl_allow where user="%LOGIN" and proto="%PROTO" and host="%DST"
sqlquery acl1   and,recursive   select 0 from user_acl_deny where user="%LOGIN" and prot="%PROTO" and host="%DST"
sqlquery acl2   eq,direct   select 1 from host_acl_allow where host="%SRC"   

В squid.conf соответственно
external_acl_type mysql_acl %LOGIN %SRC %DST %PROTO %PORT /путь_к/mysql_acl
acl mysqlacl1 external mysql_acl acl1
acl mysqlacl2 external mysql_acl acl2
http_access allow password mysqlacl1
http_access allow mysqlacl2
Ну и создать соответствующие поля в базе. Как работает  я не проверял :) , но в планах есть.
Ещё здесь - http://mikoandras.hu/projects/mysql_auth/ сайт того же автора, это вообще отдельный модуль специально для авторизации, логин - пароль, с поддержкой шифрования пароля во всевозможных вариантах.
Записан
KerryT
Терапевты
***
Сообщений: 1891

Верю в тебя, все получится!

« Ответ #3 : Апреля 01, 2013, 14:40 по Москве »

Добрался, сегодня ночью переберу :)
Записан

Мы тебе помогли?:) Принимаем пожертвования на мечту http://break-people.ru/cmsmade/?page=how_to_donate_to_project
KerryT
Терапевты
***
Сообщений: 1891

Верю в тебя, все получится!

« Ответ #4 : Апреля 03, 2013, 12:10 по Москве »

Переработал, спасибо за материал!

Посмотреть можно:

http://break-people.ru/cmsmade/index.php?page=articles_squid_practice_configure_authorization_squid_with_mysql_acl_module
Записан

Мы тебе помогли?:) Принимаем пожертвования на мечту http://break-people.ru/cmsmade/?page=how_to_donate_to_project
KerryT
Терапевты
***
Сообщений: 1891

Верю в тебя, все получится!

« Ответ #5 : Апреля 07, 2014, 09:06 по Москве »

Тему закрываю
Записан

Мы тебе помогли?:) Принимаем пожертвования на мечту http://break-people.ru/cmsmade/?page=how_to_donate_to_project
Страниц: [1] Печать 
« предыдущая тема следующая тема »
 


Войти

Powered by MySQL Powered by PHP Powered by SMF 2.0 RC1 | SMF © 2006–2009, Simple Machines LLC Valid XHTML 1.0! Valid CSS!