Прозрачный Прокси-Сервер Squid С Паролем В Ubuntu 11.04

Недавно появилась задача реализовать некоторые функции Kerio в Linux, а именно авторизацию Пользователи прокси-сервера Squid в прозрачном режиме.

Это довольно легко сделать и В интернете много статей как это сделать, но в прозрачном режиме есть проблема (прозрачный прокси) авторизация не работает. Конечно, если у вас небольшое количество пользователей Это не проблема, я отключил прозрачный и прописал во всех браузерах прокси-сервер и всё.

Но когда пользователей и компьютеров много и всем не обязательно прописывать прокси-сервер возможность/время, вам придется искать решения.

Одним из решений является комбинация Squid+PHP+NAT. Система, на которой все это тестировалось и впоследствии работало, была Ubuntu 11.04. Установка: MySQL, PHP5, Apache2, iptables, squid.

apt-get install squid mysql-server mysql-client php5 apache2

Включите прозрачный режим в Squid:

nano /etc/squid/squid.conf # NETWORK OPTIONS http_port 192.168.0.1:3128 transparent

Разрешение прохождения трафика:

echo "1" > /proc/sys/net/ipv4/ip_forward

Настройка NAT в iptables:

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

Обертываем порт 80 в Наш сервер:

iptables -t nat -A PREROUTING -s 192.168.0.0/24 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.0.1:80

Добавьте в файл /etc/php5/apache2/php.ini:

extension=pdo.so extension=pdo_mysql.so

Далее мы создаем базу данных, в которой будут храниться наши пользователи.



mysql -u root -p CREATE DATABASE authphp CHARACTER SET utf8;

Подключение к новой базе данных:

\r authphp

Создайте таблицу с полями логина и пароля.



CREATE TABLE User (login CHAR(20), password CHAR(20));

Добавляем данные в таблицу

INSERT INTO User VALUES ('user','qwerty');

Выйдите из консоли MySQL

\q

Таким образом мы создали базу данных и добавили туда пользователя user с паролем qwerty. Дальше настала очередь самого PHP-скрипта, который будет осуществлять авторизацию.

Для работы с базой данных я использовал библиотеку RedBeanPHP, которую можно скачать с сайта Официальный веб-сайт Содержимое файла index.php

<Эphp require('rb.php'); $ip = getenv ("REMOTE_ADDR"); R::setup('mysql:host=localhost;dbname=authphp','root','qwerty'); if( $user = R::findOne('User',' login = ? and password = ?', array( $_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'] ) ) ) { header('Location: next.html'); system("sudo iptables -t nat -D PREROUTING -s 192.168.0.0/24 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.0.1:80"); system("sudo iptables -t nat -D PREROUTING -s $ip -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128"); system("sudo iptables -t nat -A PREROUTING -s $ip -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128"); system("sudo iptables -t nat -A PREROUTING -s 192.168.0.0/24 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.0.1:80"); exit(0); } $title = "Кальмар-сервер"; { header('WWW-Authenticate: Basic realm="'.

$title.'"'); header('HTTP/1.0 401 Unauthorized'); die("Otkaz"); } ?>

Содержимое файла hext.html

META HTTP-EQUIV="Refresh" CONTENT="0; URL=<a href="/yti/cgLLgcnVodHRwOi8vZ29vZ2xl2Zv" target="_blank" rel="nofollow noopener" title="Прозрачный прокси-сервер Squid с паролем в Ubuntu 11.04"> http://google.ru "

Просто поставь "<" before META and after URL= http://google.ru " "> " Таким образом, пользователь, желающий выйти в Интернет, сначала направляется на сервер, где PHP-скрипт запущен.

После того как пользователь ввел свое имя пользователя и пароль, правила добавляются.

в iptables, а пользовательский порт 80 завернут в squid на порту 3128 Собственно вот и всё, естественно можно навести красоту и вообще сделать что бы было аналогично Керио, можно еще добавить, чтобы соединение сбрасывалось скажем через час и снова потребовалось разрешение.

В общем, есть простор для творчества.

Надеюсь кому-то это пригодится, удачи.

Теги: #Системное администрирование #авторизация #конфигурация Linux #squid #php+nat #прозрачный прокси-сервер

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.