Задача:
Сделать прокси сервер на базе 32-разрядной Ubuntu Linux 9.04 Desktop с авторизацией по логину и паролю, используя squid 3.0, с настройкой фаервола для защиты из вне.
Необходимый инвентарь:
1) Операционная система Ubuntu Linux 9.04 (http://www.ubuntu.com/getubuntu/download)
2) Пакет squid3_3.0.STABLE8-3+lenny2_i386.deb (http://packages.debian.org/lenny/i386/squid3/download)
3) Пакет squid3-common_3.0.STABLE8-3+lenny2_all.deb (http://packages.debian.org/lenny/all/squid3-common/download)
4) Пакет mini-httpd_1.19-8_i386.deb (http://packages.debian.org/lenny/i386/mini-httpd/download)
Необходимые команды:
1) Перезапуск squid: /etc/init.d/squid restart
2) Получение прав администратора (root) в Ubuntu 9.04: sudo -s -H
3) Запуск текстового редактора Gedit с открытием файла: gedit <имя файла>
4) Добавление нового пользователя и его пароля для авторизации на прокси сервере squid: htpasswd <имя файла, где хранятся логины и пароли> <имя нового пользователя>
<пароль нового пользователя>
<повтор пароля нового пользователя>
5) Изменение пароля пользователя для авторизации на прокси сервере squid:
htpasswd <имя файла, где хранятся логины и пароли> <имя пользователя> <новый пароль пользователя>
6) Удаление пользователя для авторизации на прокси сервере squid: удаление строки пользователя из файла, где хранятся логины и пароли, с помощью любого текстового редактора (например, gedit)
7)
8) Выполнение shell-скрипта: sh <имя файла-скрипта>
9) Вывод сведений о сетевых интерфейсах : ifconfig
10) Создание папки: mkdir <имя папки>
Использованные ссылки:
1) Получение пакетов .deb: http://packages.debian.org
2) Статья Забудкина Л. М. "Настройка Squid для начинающих (squid proxy acl)": http://www.opennet.ru/base/net/squid_inst.txt.html
3) Статья "Squid Web Proxy Cache": http://unixdocs.rags.ru/squid.html
4) Тема "Squid+авторизация пользователей" на форуме linuxforum.ru: http://linuxforum.ru/index.php?showtopic=58134
5) Руководство по iptables (Iptables Tutorial 1.1.19): http://www.opennet.ru/docs/RUS/iptables/
6) Статья "Squid установлен ?": http://www.asmodeus.com.ua/library/soft/squid/squid3.htm
Пути к ключевым файлам:
1) Полный путь к конфигурационному файлу Squid 3.0: /etc/squid3/squid.conf
2) Полный путь к модулю авторизации Squid 3.0: /usr/lib/squid3/ncsa_auth
3) Полный путь к файлу, содержащему команды, которые должны выполняться при запуске Ubuntu: /etc/rc.local
4) Полный путь к файлу-скрипту, выполняющемуся при загрузке Ubuntu: /etc/rc.local
5) Полный путь к файлу настройки сетевых интерфейсов: /etc/network/interfaces
Часть 1. Установка Ubuntu Linux 9.04 Desktop
1) Вставляем диск Ubuntu Linux 9.04 Desktop в дисковод оптических дисков (CD-ROM) и в BIOS ставим его в качестве первого устройства загрузки.
2) На этапе выбора диска/раздела для установки Ubuntu выбираем вариант ручной разметки диска. Первым разделом создаем swap-раздел (раздел подкачки) размером в два раза большим размера ОЗУ, вторым - раздел EXT3 с точкой монтирования "/", третьим - раздел EXT3 с точкой монтирования "home".
Часть 2. Установка Squid 3.0 и настройка авторизации
1) Скачиваем пакеты: 1) squid3_3.0.STABLE8-3+lenny2_i386.deb ; 2) squid3-common_3.0.STABLE8-3+lenny2_all.deb ; 3) mini-httpd_1.19-8_i386.deb. Устанавливаем сначала второй пакет, затем - первый, затем - третий.
2) Открываем терминал (Applications\Accessories\Terminal) Ubuntu. Получаем права администратора - вводим: sudo -s -H
Далее вводим пароль текущего пользователя.
3) Редактируем конфигурационный файл Squid 3.0 - вводим: gedit /etc/squid3/squid.conf
Переходим в начало файла и пишем там следующий текст:
http_port 3128
auth_param basic program /usr/lib/squid3/ncsa_auth /usr/local/squid/passwd
acl users proxy_auth REQUIRED
http_access allow users
http_access deny all
где:
3128 - порт Squid, на который будут идти пакеты
/usr/local/squid/passwd - путь к файлу, хранящему логины и пароли для авторизации на Squid
Сохраняем файл и закрываем текстовый редактор.
4) Создаем папку /usr/local/squid/ - в терминале пишем: mkdir /usr/local/squid/
Создаем файл, в котором будут храниться логины и пароли, и сразу первую учетную запись пользователя интернета - в терминале пишем: htpasswd -с /usr/local/squid/passwd vasya
Далее вводим пароль для пользователя vasya и подтверждаем его.
При необходимости добавляем еще одного пользователя: htpasswd /usr/local/squid/passwd dima
Далее вводим пароль для пользователя dima и подтверждаем его. И так далее.
5) Перезапускаем squid - в терминале пишем: /etc/init.d/squid restart
Если после нескольких секунд ожидания появляются две строки [OK], все получилось.
Часть 2. Настройка встроенного фаервола IPtables
1) Открываем терминал (Applications\Accessories\Terminal) Ubuntu. Получаем права администратора - вводим: sudo -s -H
Далее вводим пароль текущего пользователя.
2) Запускаем текстовый редактор - в терминале пишем: gedit /usr/local/squid/ipt_rules
В открывшемся окне редактора пишем shell-скрипт для настройки IPtables:
# Переменные:
# Сетевой интерфейс, смотрящий с сеть провайдера (Интернет)
inet_iface=ppp0
# Сетевой интерфейс, смотрящий в локальную сеть
local_iface=eth0
# Локальная сеть
local_network=192.168.0.0/24
# IP-адрес сервера в локальной сети
local_ip=192.168.0.200
# Порт Squid
squid_port=3128
# Порт сервера, на который будут идти запросы из локальной сети
local_port=80
iptables=/sbin/iptables
# ----------Установка политик по умолчанию-------------
# Очищаем все цепочки и устанавливаем политику по умолчанию в соответствии с принципом "Все, что не разрешено - запрещено"
$iptables -F INPUT
$iptables -F FORWARD
$iptables -F OUTPUT
$iptables -t nat -F
$iptables -P INPUT DROP
$iptables -P FORWARD DROP
$iptables -P OUTPUT DROP
#У пакетов, идущих к серверу из локальной сети на порт прокси сервера, меняем порт назначения на порт squid
$iptables -t nat -I PREROUTING -i $local_iface -s $local_network -d $local_ip -p tcp --dport $local_port -j DNAT --to-destination $local_ip:$squid_port
# Разрешаем входящие пакеты из локальной сети на порт squid
$iptables -A INPUT -i $local_iface -s $local_network -p tcp --dport $squid_port -j ACCEPT
# Разрешаем исходящие пакеты в Интернет
$iptables -A OUTPUT -o $inet_iface -j ACCEPT
# Скидываем все пакеты, пришедшие с интерфейса, смотрящего в Интернет с адресов локальных сетей классов A,B,C,D,E и адресов, не использующихся в Интернете
$iptables -A INPUT -i $inet_iface -s 172.16.0.0/12 -j DROP
$iptables -A INPUT -i $inet_iface -s 192.168.0.0/16 -j DROP
$iptables -A INPUT -i $inet_iface -s 10.0.0.0/8 -j DROP
$iptables -A INPUT -i $inet_iface -s 224.0.0.0/3 -j DROP
$iptables -A INPUT -i $inet_iface -s 127.0.0.0/8 -j DROP
$iptables -A INPUT -i $inet_iface -s 0.0.0.0/8 -j DROP
# Разрешаем входящие пакеты из Интернета, относящиеся к уже установленным соединениям,
$iptables -A INPUT -i $inet_iface -m state --state ESTABLISHED -j ACCEPT
# У пакетов, идущих от сервера в локальную сеть с порта squid, меняем порт на порт сервера
$iptables -t nat -I POSTROUTING -o $local_iface -d $local_network -p tcp --sport $squid_port -j SNAT --to-source $local_ip:$local_port
# Разрешаем исходящие пакеты в локальную сеть с порта сервера
$iptables -A OUTPUT -o $local_iface -d $local_network -p tcp --sport $squid_port -j ACCEPT
3) Сохраняем файл и закрываем окно текстового редактора.
4) Делаем так, чтобы наш скрипт настройки iptables выполнялся при старте системы - в терминале пишем: gedit /etc/rc.local
в открывшемся файле после первой строки "#!/bin/sh -e" пишем:
sh /usr/local/squid/ipt_rulesДолжно получиться так:#!/bin/sh -e
sh /usr/local/squid/ipt_rules
...
5) Сохраняем файл и закрываем окно текстового редактора.
Примечание.
Если встроенный в Ubuntu 9.04 менеджер сети (network manager) все время мешает нам, сбивая конфигурацию сетевых интерфейсов, его можно удалить и настроить сеть вручную.
Для удаления network manager в терминале, получив права root, пишем: aptitude purge network-manager
Для настройки сетевых интерфейсов вручную в терминале пишем: gedit /etc/network/interfaces
В открывшемся файле находим строку, похожую на "auto eth0" (eth0 - имя сетевого интерфейса, смотрящего в локальную сеть. У Вас оно может быть другое.) , и после нее на следующей строке пишем:
iface eth0 inet static
address 192.168.0.200
netmask 255.255.255.0
где:
192.168.0.200 - IP-адрес прокси сервера в локальной сети
После редактирования сохраняем файл и закрываем редактор gedit.
Комментариев нет:
Отправить комментарий