Авторизация Squid через MySQL
О чем этот текст?
Данный материал рассказывает о том, как настроить авторизацию в Squid через MySQL. Этот подход удобен для тех, кто не использует какой-либо другой вид авторизации(например, через AD). Использование авторизации позволяет определить круг лиц, кому будет открыт доступ в Интернет.
Примечание
Прежде чем рвануть в бой убедись, что ты понимаешь назначение следующих тегов:
Основная часть
1. Установка Squid
Если у тебя уже установлен Squid и ты не помнишь с какими ключами его собирал, то, чтобы всё получилось наверняка - перекомпилируй его с опцией
--enable-basic-auth-helpers=DB
Возможно, конечно у тебя уже и так собран с этой опцией, поэтому поехали дальше.
Создай базу данных в MySQL. Любым удобным для тебя способом.
phpMyAdmin вполне подойдет.
Выполни следующий запросы.
Создай базу:
create database squid;
и таблицу:
CREATE TABLE 'passwd' (
'user' varchar(32) NOT NULL default '',
'password' varchar(35) NOT NULL default '',
'enabled' tinyint(1) NOT NULL default '1',
'fullname' varchar(60) default NULL,
'comment' varchar(60) default NULL,
PRIMARY KEY ('id'));
И третий запрос на создание тестовой записи.
insert into passwd values('test','pass',1,'Test User','for test');
Осилил? Тогда создай пользователя MySQL squiduser и дай на эту базу ему права.
Но можно пойти и другим путём. Создать всё то же самое через консоль MySQL:
mysql> create database squid;
mysql> grant select on squid.* to squiduser@localhost identified by 'squidpass';
mysql> CREATE TABLE 'passwd' (
'user' varchar(32) NOT NULL default '',
'password' varchar(35) NOT NULL default '',
'enabled' tinyint(1) NOT NULL default '1',
'fullname' varchar(60) default NULL,
'comment' varchar(60) default NULL,
PRIMARY KEY ('user')
);
mysql> insert into passwd values('testuser','test',1,'Test User','for testing purpose');
2. Настройка конфигурационного файла squid.conf
Давай теперь, кроме того, что MySQL узнал о наших намерениях, пусть о них узнает и Squid. Отредактируй схемы аутентификации в файле squid.conf.
auth_param basic program /usr/local/squid/libexec/squid_db_auth --user squiduser --password squidpass --plaintext --persist
auth_param basic children 5
auth_param basic realm Web-Proxy
auth_param basic credentialsttl 1 minute
auth_param basic casesensitive off
Затем добавь ACL, который определяет, что только прошедшие авторизацию пользователи получают доступ в Интернет:
acl db-auth proxy_auth REQUIRED
И внеси использование этого ACL в правила http_access.
http_access allow db-auth
http_access allow localhost
http_access deny all
Готово, проверяй доступ. А, ну Squid сначала перезапусти, чтобы он перечитал конфиг.