Как я конфигурил прокси-сервер. Первые три задачи для начинающих.

=> Форум технической поддержки <=

Задача для промышленного использования находится в Задаче №4

В версиях SQUID могут быть синтаксис различия, речь идет о SQUID версии "squid-2.4.STABLE7"

Рассчитывается , что настройка прокси-сервера начинается с определенными исходными настройками.

Первая задача: (Linux RH 8.0)

В первой задаче рассатривается прокси-сервер, который аутентифицирует по IP-адресам клиентов. Т.е. не запрашивается имени и пароля. В данной конфигурации есть два типа пользователей (IP-адресов) - Это "good" и "narmal". IP - адреса записанные в файл good не имею никаких ограничений, а IP-адреса хранящиеся в файле normal имеют определенные ограничения

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

а.) Только с определенного компьютера (IP-адреса к примеру 101.101.101.13) и имеющие ограничения: время работы с 9 до 21 часа, порносайты запрещены, скачивание больших файлов запрещено (большие файлы - avi, mp3, mpg, mpeg и им подобные) - "нормал"

б.) Только с определенного компьютера (IP-адреса к примеру 101.101.101.12) и не имеющие ограничения. - "Бог"

Итак, у Вас установлен кэширующий сервер - squid. Что бы его запустить необходимо набрать команду в командной строке. Я пользуюсь "root-консоль", для графической оболочки "KDE" находится: пуск->прочее->система-> Konsole (root).


Команда выглядит так: "/usr/sbin/squid -D" - пишите только, что в кавычках, но без них. А для того что бы остановить: "/usr/sbin/squid -k shutdown" и если он запущен до можно перезапустить, для внесения изменений в конфигурацию: "/usr/sbin/squid -k reconfigure".
























Но сейчас пока этого делать не нужно

Для начала в каталоге /etc/squid/ создадим каталог conf - в нем у нас будут храниться файлы "правил", а именно:

normal хранит IP-адреса, которые имееют правила ограничений

good хранит IP-адреса, которые не имееют никаких ограничений

porn список порносайтов, которые запрещено посещать пользователям из файла normal

noporn списак сайтов, которые могут быть идефицированы как порносайты, но не относятся к ним, т.е. исключения из списка porn

Теперь, когда создали каталог по пути /etc/squid/conf, создаем файлы правил в любом текстовом редакторе, к примеру Kate - находится: Пуск ->стандартные -> редактор Kate. Можно просто скопировать тексты на моём сайте, см. выше (normal, good, porn, noporn). Эти файлы не имеют расширений

Теперь, перейдем к конфигурированию файла squid.conf находящийся по пути /etc/squid/squid.conf

Опять берёте текстовый редактор, копируете текст моего конфигурационного файла squid.conf и сохраняете у себя как squid.conf

Обратите внимание на строку в этом файле:

cache_peer 10.49.0.10 parent 8080 3130 no-query default

Это означает куда будет цепляться Ваш прокси-сервер, т.е. внешняя сеть. Здесь нужно указать Ваш выше стоящий прокси-сервер к примеру:

cache_peer proxy.permonline.ru parent 8080 3130 no-query default

Цифры 8080 - означают порт подключения к внешнему прокси, обычно - 8080. А цыфры 3128 в строке http_port 3128 - это порт к которому будут подключатся Ваши клиенты. Т.е. в настройках Ваших клиентов в "свойствах обозревателя" нужно указать, что установки подключения к интернет настраиваются вручную и используется Прокси-сервер. Тут нужно поставить "галочки" на "использовать прокси-сервер" и "Не использовать прокси-сервер для локальных адресов". А в адресе указываете IP-адрес вашей сетевой карты, которая смотрит в локальную сеть, т.е. 101.101.101.101 и используемый порт 3128

Теперь можно запускать службу squid, см. выше. Всё должно работать, а если нет см. "P.S."


Вторая задача: (Linux RH 8.0)

В этой задаче рассмотрим аутентификацию по имени пользователя и паролю, т.е. браузер пользователя будет запрашивать имя и пароль пользователя.

Всё тоже самое, только произошли изменения в файлах:

squid.conf

normal Теперь здесь хранятся имена пользователей, которые имееют правила ограничений.

good Теперь здесь хранятся имена пользователей, которые не имееют никаких ограничений.

Теперь о самих паролях к пользователям указанных в файлах нормал и бог. аутентификацией будет заниматься программа ncsa_auth, находящаяся по пути: /usr/lib/squid/ncsa_auth. Соответственно, что бы ввести пароли нужно поработать в командной строке.

Как добавлять пользователей:

Добавление/изменение пользователей осуществляется с помощью проги htpasswd

- создание нового файла passwd (делается только первый раз)

htpasswd -c /etc/squid/conf/passwd name_user

(дальше он запросит ввести пароль и потверждение пароля, не отображается) где passwd - это файл, где будут храниться пароли с именами юзеров name_user - это имя пользователя (типа roman, oleg etc)

- дальше добавление юзеров уже делается так:

htpasswd /etc/squid/conf/passwd name_user

(без опции -c) - изменение юзеров также как в предыдущем пункте - просто перезаписывается существующий юзер

- удаление юзера - простое удаление строки с именем юзера из файла /etc/squid/conf/passwd в любом текстовом редакторе.

Теперь можно запускать службу squid, см. выше. Всё должно работать, а если нет см. "P.S."


Третья задача: (Linux Mandrake 9.1 и 9.2)

Этап ПЕРВЫЙ. Всё производилось под Linux Mandrake 9.1 и 9.2. В других системамах возможны отличия, в частности пути местонахождения файлов.

Теперь ещё усложним. аутентификация будет происходить по имени пользователя (имя-пароль), но добавлены ограничения по скаченному объему, а так же с полным контролем над пользователем. Т.е. со сбором статистики о каждом пользователе. А именно каждому пользователю присваевается своя таблица правил. И каждый пользователь сможет в режиме он-лайн посмотреть сколько он накачал и сколько ему осталось до предельного трафика и многое другое.

Для этого мы будем использовать MySQL-server и HTTP-server, Несколько скрин-шотов установленных пакетов программ

Screenshots - Несколько скриншотов упраления через Вэб

Базовые настройки сервера

При попытке настроить MySQL под RH 8.0 закончились неудачей

Попробовал на RH 9 - это вообще что то ужастное ... (моё личное мнение)

Пришлось попробовать Linux Mandrake 9.1

Впечатления отличные - мне понравилось, на данное время я использую Mandrakelinux 10.1

Но возникла проблема с SQUID-ом родной версии

Пришлось Установить "squid-2.4.STABLE7 (1.03 МБ)" - Отличная версия, без проблем.

Если Вы пользуетесь родной версией squid-а(из пакета Вашего дистрибутива), то необходимо изменить в конфигурационных файлах пути места нахождения приложений и самого squid-а

(Далее пойдёт речь о работе в Linux Mandreke 9.1)

Скопируйте заархивированный файл со Squid-ом: "squid-2.4.STABLE7-src.tar.gz (1.03 МБ)" в каталог: /usr - разархивируйте, по умолчанию в каталог: /usr/squid-2.4.STABLE7

Зайдите в него, "откройте коммандную строку" введите команду, "./configure" потом, когда он всё сделает, "make" затем, когда он всё сделает, "make install" SQUID установлен !

Он по умолчанию установился в /usr/local/squid/

Теперь создайте в системе пользователя squid в рабочей группе squid. Далее, Всем дочерним каталогам и файлам squid-а (/usr/local/squid/) присвойте права: владелец: squid, группа: squid.

При попытке его запустить, могут возникнуть проблемы с записью cashe, т.е. создание каталогов по пути /usr/local/squid/cache/ - проблема состоит в правах доступа к файлам и каталогам - нужно помочь ему. А именно:

/usr/local/squid/bin/squid -z

Далее копируем файл "auth" в каталог /usr/local/squid/bin/

Программа auth написанная на С++, и настроенная на доступ к MySQL под root без пароля по IP 101.101.101.101.

auth работает как согласующий элемент между SQUID и MySQL.

Если Вам необходимо поменять эти настройки этой программы, то вот Вам исходник. А скорее всего так и будет. Потому что необходимо этим самым прикрыть одну из дырок mysql. Т.е. по крайней мере установить пароль для root

В этом исходнике найдите строку: mysql_real_connect(&mysql,"Ваш IP адрес","root","здесь пароль root к mysql","proxy",0,NULL,0);

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

Команда компилирования:

g++ ./utv.cpp -o auth -lm -lmysqlclient

После этой команды появится скомпилированная программа auth

Для удобства установите себе файл менеджер "mc" - есть в наборе с мандрэйком 9.1

Для его вызова введите команду "mc"

Скопируйте конфигурационный файл: "squid.conf" в каталог: /usr/local/squid/etc/. но учтите, что этот файл сконфигурирован, что Ваш прокси подсоединен к другому прокси (IP 10.49.0.10 в порт 8080), а к вам юзеры конектятся на 101.101.101.101 порт 3128.

Теперь необходимо установить фильтры на маршрутизации - иначе Ваши пользователи смогут обойти Ваш прокси. Для этого Мы будем использовать iptables. А именно:

1. Скопируйте конфигурационный файл: "demo" в каталог: /usr/local/iptables-restore/.

2. Внесите измениения в конец файла: "rc.local" в каталогe: /etc/rc.d/

А именно:

touch /var/lock/subsys/local

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

/sbin/iptables-restore /usr/local/iptables-restore/demo

/usr/local/squid/bin/squid -D

Этим Вы откроете маршрутизацию Ваших юзеров на внешний прокси. Т.е. с сетки 101.101.101.0 на 10.52.1.0, причем порт 8080 на входе будет перекрыт (что бы пользователь не смог обойти прокси соединившись с внешним прокси по его открытому порту. Но если у внешнего прокси порт 3128, то параметры фильтра необходимо поменять наоборот. Т.е. по входу 8080 по выходу на внешний прокси с портом 3128).

3. Далее

создайте каталог conf в пути: /usr/local/squid/etc/ там будут храниться ещё несколько файлов подстройки, а именно: good - в нем храняться имена юзев, которые не имеют ограничений во времени и сайтов, narmal - имена юзеров которые ограничены на скачивание big файлов порнухи и ограничены по времени посещения с 9 до 21 часа могут только посещать. Ограничением по объёму будет заниматься MySQL. noporno - файл со списком сайтов не имеющий к запретным отношения, т.е. исключения из списка porno. porno - файл со списком сайтов запрещенных к просмотру.

4. Теперь запустите прокси:

/usr/local/squid/bin/squid -D (для перезапуска прокси /usr/local/squid/bin/squid -k reconfigure, для остановки /usr/local/squid/bin/squid -k shutdown)

5. Установите пароль root для доступа к каталогу http://ИМЯ КОМПЬЮТЕРА/admin/:

htpasswd -c /usr/local/squid/etc/conf/.htpasswd user_name

где user_name - это имя пользователя с правами root

Теперь у юзеровской машины при попытке выйти в инет, Ваш прокси будет запрашивать пароль. Но работать инет пока не будет, пока мы не запустим MySQL - это второй этап.


Этап ВТОРОЙ

Второй этап, MySQL:

Теперь необходимо установить планировщик. Т.е. обновление базы каждый час и обнуление 1 числа каждого месяца (возможны варианты). Для этого необходимо:

1. Создать каталог "plan" по пути /usr/local/squid/

2. Скопировать туда два файла "baza.pl" и "updates.pl" если не скачивается, то оба этих файла тут "plan.tar.gz" (эти файлы необходимо отредактировать под Ваши настройки сети - это очень просто, откройте эти файлы в текстовом редакторе и сами поймёте, что отредактировать. А именно имя компьютера (ingineer) и пользователей (loger и root), а так же что бы совпадали пути.

3. Сконфигурировать планировщик задач. Для этого воспользуемся командой crontab, т.е. в командной строке набираем:

crontab -e

Вы увидете список задач. Что бы перейти в режим редактирования нажмите "a", и введите две строки:

0 0-23 * * * /usr/local/squid/plan/baza.pl

0 1 1 * * /usr/local/squid/plan/updates.pl

Будте внимательны, каждая буковка важна, даже пробелы.

Теперь, ВНИМАНИЕ, для выхода из редактора нужно зделать несколько операций:

1. - сначала нажать на "esс"

2. - затем на символ ":" (двоеточие)

3. - затем на символ "x" (икс)

4. - потом на enter

Всё, планировщик запрограммирован.

5. Теперь самое сложное, запускаем службу MySQL, и шарим её в сеть.

Проверьте наличие установленных ПАКЕТОВ у вас в ситеме

В командной строке набиваем:

mysql mysql

Появиться приглашение "mysql > "

Наколачиваем строку:

update user set host='%' where host='localhost.localdomain' and user='root';

В некоторый версиях вместо localhost.localdomain необходимо указать localhost

Т.е. Вы поменяли вписанный localhost на любой хост (доступ с любого хоста-компьютера), под пользователем root , без пароля

Далее наколачиваем:

mysql > quit

[root@ingineer root]# mysqladmin reload

Теперь можно настраивать mysql по сети с виндовой машины при помощи программы: MySQL-Front_2.5_Setup.exe(1 MB)

6. Будем создавать базы :)

Скопируйте файл "www.zip" распакуйте его и скопируйте (сохраняя пути внутри архива) папки и файлы в каталог /var/

Скопируйте файл "MySQL.zip" Распакуйте его и сохраните на виндовой машине, где у Вас установлена MySQL-Front_2.5

Запускаем интересующие нас службы - MySQL, SQUID, HTTPD (должны быть запущены)

Переходим на виндовую машину с установленной программой MySQL-Front_2.5 и распакованным архивом MySQL.zip. Запускаем программу MySQL-Front


В левом окне найдите папку MySQL, нажмите на неё, затем в правом окне нажмите на "Query", появится окошечно с кнопкой (3-я слева) "открыть файл" (LOAD SQL) откройте файл mysql.sql (ранее разархивированный Вами из файла MySQL.zip), нажмите на "F9"

Проверте это действие, должно получится Так и Так. Если не так, то удалите лишнее, путём выделения строки (щёлкнуть по соответствующей, не нужной, строке "мышью") и нажав ctrl+del

Если не понятно есть видеофайл (217 KB) и кодек (169,3 KB) к этому видкофайлу

Создаём базу "log", при помощи команды "Create Database" (правой мышкой по корневому имени базы, в левом окне вверху), за тем так же выбираем эту базу и так же переходим на "Query" и так же открываем файл, только теперь файл "stat.sql", нажмите на "F9"

Создаём базу "proxy", при помощи команды "Create Database", за тем так же выбираем эту базу и так же переходим на "Query" и так же открываем файл, только теперь файл "auth.sql", нажмите на "F9"

Не забудьте после каждой такой операции нажимать на "F9", а так же в панеле инструментов "Reload User-Privileges" и "refresh"

Всё, базы созданы.

Но в таком виде есть две дырки доступа к базам MySQL под пользователями root и loger, без пароля - что очень опасно.

Как установить пароли на этих пользователем мы рассмотрим в задаче №4.

И последнее, в интернет проводнике наберите:

http://ingineer/admin/stat.html

Где "ingineer" - это имя Вашего компьютера (прокси-сервера).

Компьютер запросит пароль, вы должны ввести пользователя root и пароль к нему (который вы вводили в 5 пункте запуска SQUID)

У Вас появится пользовательский интерфей в котором Вы всё поймёте, что делать (Заводить юзеров, ограничевать их по скаченному объему, просмотр статистики и т.п.

Всё, всё работает. Удачи. Пишите если, что.

Улучшеная версия задача №4.

По сути задачи №3 и №4 полностью совместимы. И практически одинаковые, а отличаются только конфигурационными файлами, вэб-интерфейсом и более полным - удачным описаним конфигурирования. К примеру описано как закрыть дыры основной базы mysql, в отличии от этого описания (вход в mysql без пароля с любого компьютера под пользователями loger и root, что опасно).

Выявленные ПРОБЛЕМЫ.

ЗАДАТЬ ВОПРОС АВТОРУ по анкете.

ПОЧТА

Текст готов (текст изменён(добавлен) 25.02.2004)


Этап Третий

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

1. Установить программы "mgetty"(Только не удаление, а установка)

2. Установить программы "PPP"(Только не удаление, а установка)

3. В файле login.conf по пути /etc/mgetty+sendfax/ Снять коментарий со закоментированной строки:

#/AutoPPP/ - a_ppp /usr/sbin/pppd auth -chap +pap login debug

т.е. в начале этой строки убрать коментарий - # и у Вас получилась строка:

/AutoPPP/ - a_ppp /usr/sbin/pppd auth -chap +pap login debug

Сохраните.

4. Для прикручивания модема на автоподьем необходимо прописать в файле /etc/inittab и содержать строку:

s1:12345:respawn:/sbin/mgetty /dev/ttyS1 -D -s 38400 -n 3

Последняя цифра говорит о количестве пропущенных звонков перед автоподнятием, т.е. 3. Пример "файла inittab"

Коментарий: /dev/ttyS1 Говорит о том, что модем у Вас сидит на COM2, если на COM1 - /dev/ttyS0

38400 - Это скорость подключения модема к примеру можно поставить 56000

По прозьбе трудящихся сообщаю:

Что бы прикрутить несколько модемов на модемный пул небходимо:

в файле /etc/inittab в стрке:

s1:12345:respawn:/sbin/mgetty /dev/ttyS1 -D -s 38400 -n 3

Изменять сокет, т.е. s0, s1, s2 и т.д.

Так же как и номер СОМ-порта ttyS0, ttyS1, ttyS2 и т.д.

К примеру Вам необходимо прикрутить 3 модема, соответственно будет три строки, а не одна:

s0:12345:respawn:/sbin/mgetty /dev/ttyS0 -D -s 56000 -n 3

s1:12345:respawn:/sbin/mgetty /dev/ttyS1 -D -s 56000 -n 3

s2:12345:respawn:/sbin/mgetty /dev/ttyS2 -D -s 56000 -n 3

Проще выражаясь все три (и более) модема будут работать одновременно, т.е. три удаленных пользователя смогут подключиться к Вашему серверу

Для перезапуска службы набирите команду:

telinit Q

5. Теперь настройки подключения пользователей. Файлы настроек находятся по пути /etc/ppp/

Файл "options" содержит IP сервера и клиента

Файл "pap-secrets" содержит Имя пользователя и пароль

Всё, модем прикручен и работает.

P.S.:

Один раз была проблема, во время аутентификации (проверка имени и пароля), "скидывало"

Решение, Изменить права доступа на:

/etc/mgetty+sendfax/login.config. Это делается двумя командами:

chmod +0600 /etc/mgetty+sendfax/login.config

chown root:root etc/mgetty+sendfax/login.config

Перейти в раздел Линукс

Перейти в раздел Домой