Как стать автором
Поиск
Написать публикацию
Обновить

Настройка squid+sams+ncsa на Ubuntu 10.04

К Вашему всеобщему вниманию выкладываю свой ман — полностью рабочий и со всеми дополнениями, которых не хватает частенько при настройке серверов прокси squid. Подобную информацию можно нарыть в интернете, но после «тех» настроек сервак или не запуститься или работать будет некорректно, так что приятного прочтения.

(почему именно NCSA, то ответ прост – перекопав много вариантов как с IP так и с доменной авторизацией, пришел к выводу что самая стабильная версия это NCSA, хоть требует первоначального геморроя с заведением пользователей, но один раз сделал (сделал бекап после первой настройки на всякий случай ;) ) и забыл.
Если у Вас есть мечта работы хорошего прокси-сервера в Вашем офисе, то инфа как раз для Вас.
Здесь собраны мною все дополнения и команды, необходимые для полной настройки и лишнего копания в инете – сам настроил его за 30 минут и все ок.

Исходные данные для установки:
(данные IP, mask, dns and gateway использовать своей сети)
Ubuntu 10.04 х386
Будущий сервер proxy.workgroup
ip 192.168.0.99 gt:192.168.0.77 dns:192.168.0.77

Установка:
При установке выбираем конфигурацию LAMP и OPENSSH-Server
В процессе установки вас спросят пароль для root mysql
После установки проверяем имя хоста в /ets/hostname ->> proxy.workgroup
и записи в /etc/hosts
127.0.0.1 localhost proxy
192.168.0.99 proxy.workgroup proxy


Записи, относящиеся к ipv6 можно удалить … (на Ваше усмотрение)
Настройки сетевой на Ваше усмотрение (лично у меня и по DHCP работает нормально все), а так если что:

mcedit /etc/network/interfaces (если открывать через mcedit, то первоначально выполните обновление системы и установите пакет mc)
iface eth0 inet static
address ……..
netmask ……….
gateway ……..

Проверяем установки времени:

date
Если нужно изменить -> man date

Проверим вашего пользователя:

Sudo su

Если же под рутом пароль не проходит, то:

Sudo passwd root (повторяем два раза пароль и вуаля root открыт)

Обновляем систему:

apt-get update
apt-get upgrade

Для следующей работы удобнее поставить mc:

apt-get install mc

Установка SQUID3 и SAMS
Ставим необходимые пакеты для сборки и работы sams:

apt-get install mc libpcre3 libpcre3-dev libmysqlclient15-dev php5-ldap php-fpdf squid3 squidguard gcc make php5-gd

Итак, нам необходимы исходники sams
Идем на google.ru, ищем и качаем Current Stable Release: sams-1.0.1.tar.bz2
Скачиваем архив и быстрым шагом, примонтировав расшаренную папку, перекинуть по сетке:
Создаем папку:

mkdir /mnt/music

Монтируем папку (обратите внимание на параметр iocharset):

mount //ip_address/share/music /mnt/music -o iocharset=utf8,username=user,password=pass

//ip_address/share/music — это каталог на сетевом диске в котором храниться вся музыка, не забудьте заменить ip_addres на реальный IP.
/mnt/music — это каталог в которым мы будет монтировать, его мы создали чуть выше
iocharset=utf8 — кодировка, лучше оставить ее если используется сетевой диск работающий под linux, а если под какой либо windows, то скорее всего надо будет заменить на cp1251
username — имя пользователя
password — пароль пользователя

Скачав архив, кидаем его в /usr/src/:

сp /путь/ /usr/src/
cd /usr/src/
bunzip2 sams-1.0.1.tar.bz2 && tar -xpf sams-1.0.1.tar && rm sams-1.0.1.tar
cd sams-1.0.1/

В файле samsdaemon.c

mcedit samsdaemon.c

ищем строку squid -k reconfigure
и меняем на squid3 -k reconfigure

Кто плохо знаком с консольными редакторами, пользуйтесь mc
или после сборки sams делаем симлинк (но думаю это не правильно…)
ln -s /usr/sbin/squid3 /usr/sbin/squid
иначе демон samsdaemon будет пытаться при реконфигурировании запустить /usr/sbin/squid вместо squid3

Теперь непосредственно конфигурирование:

./configure – -with-httpd-locations=/var/www
make
make install

Копируем файл запуска демона конфигурации

cp /etc/samsd.debian /etc/init.d/samsd
update-rc.d samsd defaults


Займемся доступом к mysql
mysql -u root -p (тут спросят пароль root для mysql)
GRANT ALL ON squidctrl.* TO sams@localhost IDENTIFIED BY “sams”;
(вместо “sams” вписываем свой пароль для юзера sams)
GRANT ALL ON squidlog.* TO sams@localhost IDENTIFIED BY “sams”;
(после каждой команды \g)
exit

Теперь отредактируем в конфиге пароли, логины и пути к squid3

mcedit /etc/sams.conf

Учтите, что в строке
SHUTDOWNCOMMAND=shutdown -h now
прописана команда на полный останов прокси!
Собственно редактируем следующие строки:

MYSQLPASSWORD=sams (пароль который мы указывали тут — GRANT ALL ON squidctrl.* TO sams@localhost IDENTIFIED BY “sams”; )
SQUIDROOTDIR=/etc/squid3
SQUIDLOGDIR=/var/log/squid3
SQUIDCACHEDIR=/var/spool/squid3

Теперь импортируем таблицы в mysql (путь указан кривой, так что придется через mc найти где лежит sams и там будут эти таблицы)
cd ./mysql
mysql -u root -p < sams_db.sql
mysql -u root -p < squid_db.sql

И идем редактировать конфиг сквида под свои нужды:
mcedit /etc/squid3/squid.conf

Ни в коем случае не менять структуру файла и не удалять комменты!

sams ориентируется в конфиге по его дефолтной структуре и тегам в комментариях.
Итак, поехали:
указываем адрес, который будет слушать/обслуживать наш прокси

http_port 192.168.0.99:3128
раскомментируем:
сache_dir ufs /var/spool/squid3 100 16 256
access_log /var/log/squid3/access.log
pid_filename /var/run/squid3.pid
(наже раскомментируем строки которые и будут выполнять службу NCSA)
url_rewrite_program /usr/local/bin/samsredir
url_rewrite_children 5
auth_param basic program /usr/lib/squid3/ncsa_auth /etc/squid3/ncsa.sams (если указан другой файл, то заменить на ncsa.sams)
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours

Теперь займемся обработчиком логов squid3 (access.log) – собственно непосредственный подсчет трафика
Обработчик логов sams может быть запущен samdaemon автоматически или из cron
Мы берем для простоты вариант работы с cron, создайте демону cron задание в файле /etc/crontab:

crontab -u root -e
и вставить строку */1 * * * * /usr/local/bin/sams
Должно получиться вот так:
# m h dom mon dow command
*/1 * * * * /usr/local/bin/sams

По окончанию всех действий необходимо подправить 2 пункта, которых так часто не хватает почти во всех мануалах что находил в поисковиках:

1) изменение файлов ./sams/src/webconfigtray.php и ./sams/src/configtray.php, а именно комментирвоание строк
/* function GetHostName()
* {
* if (!($value=getenv(‘SERVER_NAME’)))
* { $value=»N.A.»; }
* return($value);
*}
*/
2) Проблема с отчетом логов –выводит только максимальный год в морде sams 2009, исправляем:
Открываем файлик mysqltools.php и вот эти номера строки в 484 560 594 676 709
меняем
for($i=2001;$i<2010;$i++)
на
for($i=$year-10;$i<=$year+1;$i++)

Теперь перезапустим squid и займемся настройкой

/etc/init.d/squid3 restart

Открываем в Вашем любимом браузере:
http://192.168.0.99/sams/

Админ:
admin/qwerty
Статистика:
auditor/audit

Настройка WEB интерфейса:
ставим язык russian utf-8
Показывать графики в отчетах
Создавать PDF отчеты с помощью fpdf

Администрирование SAMS:
авторизация в NCSA
файл перенаправления запроса http://192.168.0.99/sams/icon/classic/blank.gif
Путь к каталогу, где лежат файлы запрета запроса http://192.168.0.99/sams/messages
Редиректор встроенный SAMS
Сохранять данные о трафике в базе за последние 12 месяцев


Удалить все существующие группы пользователей и шаблоны пользователей
удаляем все безжалостно…

Регулярные выражения:
создать список ban и поместить туда к примеру vk.com

Создаем шаблон пользователей users:
Запрет доступа по регулярным выражениям
ban
Авторизация NCSA

Теперь добавим группу Users
и первого юзера
(не забудьте поставить галку в поле – Пользователь активен)


Запускаем демона
/etc/init.d/samsd start
Идем в меню SQUID – реконфигурировать
Теперь для проверки reboot и будем смотреть как это все работает,
В браузере прописываем настройки прокси 192.168.0.99 порт 3128
Все должно работать, а при попытке входа на запрещенный URL должны получить:
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.