Авторизация 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 сначала перезапусти, чтобы он перечитал конфиг.