Как я конфигурил прокси-сервер. Первые три задачи для начинающих.
Задача для промышленного использования находится в Задаче №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)
В этой задаче рассмотрим аутентификацию по имени пользователя и паролю, т.е. браузер пользователя будет запрашивать имя и пароль пользователя.
Всё тоже самое, только произошли изменения в файлах:
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
Перейти в раздел Линукс
Перейти в раздел Домой