Internet Monitoring With SARG and Squid On Windows
SARG aka Squid Analysis Report Generator is a nice little tool that analyses Squid’s access.log files and creates a management friendly report along with graph.
This guide is for someone who have already configured SARG on Linux box.
- Install Squid on Windows. You can follow this post squid-on-windows
- SARG port for windows is available in the SARG website itself SARG. Or download it by clicking here.
- Unzip it in C:\sarg
- Edit sarg.conf file inside c:\sarg\etc
- Edit access_log
- graph option
- output_dir where your web server can be pointed.
- Others that you think is important. This is very simple file with all needed description.
- Make your scheduled task to run SARG and rotate Squid log files or restart Squid from services.msc .
Popular posts from this blog
Essential adb Command Examples
Copy file to your Android device from your computer adb push — copy file/dir to device example: adb push c:\mygame.apk /sdcard Copy file from your Android device to your computer adb pull — copy file/dir from device example: adb pull /sdcard/mymovie.avi c:\downloads Install app from your computer to your Android device adb install [-r] [-s] — push this package file to the device and install it (‘-r’ means reinstall the app, keeping its data) (‘-s’ means install on SD card instead of internal storage) example: adb install c:\mygame.apk Uninstall an app from your Android device adb uninstall [-k] — remove this app package from the device …
Logging Handler With Buffering And Uses Amazon SES For Python
This Python logging handler can be used to combine multiple log message in one email message and send the log email using Amazon SES . Boto is used to send email using Amazon SES. Email will be send once the buffer reaches the capacity you’ve specified. To force send the email before it reaches the buffer capacity you can shutdown the logger by calling its shutdown method.You can simultaneously keep logging in file or other places by adding more handler.
Fake SMTP Server For Development
This fake SMTP server comes handy when you have to do development which requires sending hundreds of email. This will act as an SMTP server but doesn’t relay emails but saves them in a file in predefined location and also display the emails in the GUI itself as they comes. This is cross compatible Java jar file and can be launched easily by typing: java -jar fakeSMTP.jar after downloading it from this website.
Одним из насущных вопросов для системного администратора является получение статистики использования интернета в организации. Располагая такими данными всегда можно ответить на вопрос руководства «куда ушел весь интернет», обосновать необходимость расширения канала, своевременно выявлять и пресекать нежелательный трафик. Сегодня мы рассмотрим такое решение для нашего роутера на платформе Ubuntu Server.
Онлайн-курс по устройству компьютерных сетей
На углубленном курсе «Архитектура современных компьютерных сетей» вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Основной интересующий нас тип траффика — HTTP, который составляет львиную долю входящего интернет-трафика в организации и наиболее интересен, так как позволяет судить об активности и предпочтениях пользователей (а также о том, как они проводят рабочее время). Все необходимые нам данные имеются в логах прокси-сервера Squid, но не будем же мы просматривать их вручную! Необходим инструмент, позволяющий анализировать и предоставлять отчеты на основе этих логов. Одним из таких инструментов является SARG — Squid Analysis Report Generator, что и отражено в его названии.
Приступим. Прежде чем браться за установку SARG необходимо подготовить сервер, данная утилита выдает отчеты в формате HTML и для работы с ними потребуется установленный веб-сервер. Если вы не собираетесь использовать роутер в качестве полноценного веб-сервера, то будет вполне достаточно легкого сервера lighttpd:
sudo apt-get install lighttpd
Сервер начинает работать сразу после установки, для проверки наберите в браузере адрес сервера и вы увидите стандартную страницу. По умолчанию lighttpd принимает соединения на всех интерфейсах, что нас никоим образом не устраивает, ограничим его работу внутренней сетью. Открываем конфигурационный файл /etc/lighttpd/lighttpd.conf, находим и приводим к следующему виду опцию:
server.bind = "10.0.0.1"
где 10.0.0.1 — внутренний адрес роутера, также не забудьте раскомментировать эту строку и перезагрузить веб-сервер:
sudo /etc/init.d/lighttpd restart
Устанавливаем SARG:
sudo apt-get install sarg
Настройка анализатора логов довольно проста и сводится к выбору языка, кодировки и формата отчета, а также пути для его размещения. Все изменения вносим в файл /etc/sarg/sarg.conf:
language Russian_UTF-8
graphs yes
graph_days_bytes_bar_color orange
output_dir /var/www/squid-reports
charset UTF-8
Также находим и комментируем строку:
#site_user_time_date_type table
Теперь можем проверить работу анализатора:
sudo /usr/bin/sarg
После того как утилита закончит работу набираем в браузере http://10.0.0.1/squid-reports, вы должны увидеть следующую страницу:
По умолчанию SARG формирует отчет за весь доступный период, отчет содержит детализацию по пользователям (адресам) и посещенным ими сайтам, использованию трафика и кэша, загрузкам. Отдельно можно просмотреть наиболее посещаемые сайты, данный отчет сортирует сайты не по трафику, а по количеству посещений.
По каждому пользователю можно получить исчерпывающую статистику:
Можно также просмотреть график потребления трафика и статистику работы по датам и времени.
Если есть желание, можете настроить отображение отчетов по собственному вкусу, конфигурация SARG использует для задания параметров вывода отчетов стандартные HTML теги и неплохо документирована. Если вы владеете HTML на базовом уровне, эта операция не должна вызвать у вас затруднений.
Анализатор настроен и работает, это хорошо. Но запускать его каждый раз вручную не очень интересно, поэтому настроим систему на получение ежедневных, еженедельных и ежемесячных отчетов. Для этого откроем файл /etc/sarg/sarg-reports.conf и укажем путь для размещения отчетов, а также адрес и ссылку для логотипа.
HTMLOUT=/var/www/squid-reports
LOGOIMG=/sqiud-reports/logo.png
LOGOLINK="http://10.0.0.1/squid-reports"
Учтите, что изображение логотипа должно находиться в пределах корневой папки веб-сервера (/var/www) и пути указываются от корня веб-сервера, а не файловой системы.
Теперь зададим расписание для формирования отчетов, которое необходимо добавить в /etc/crontab
00 09-18 * * * root sarg-reports today
00 22 * * * root sarg-reports daily
30 22 * * 0 root sarg-reports weekly
30 23 1 * * root sarg-reports monthly
Данное расписание означает, что каждый час с 9:00 до 18:00 (рабочий день организации) запускается скрипт формирования ежедневной статистики, каждый день в 22:00 формируется статистка за день, в 22:30 Воскресенья — статистка за неделю и первого числа каждого месяца в 23:30 статистика за месяц.
На этом настройку можно считать законченной, вся статистика будет доступна по адресу http://10.0.0.1/squid-reports.
Дополнительные материалы:
- Linux. Настройка роутера (NAT + DHCP + Squid)
- Ubuntu Server. Настраиваем роутер NAT + DHCP + Squid3
- Ubuntu Server. Настраиваем контент-фильтр роутера (DansGuardian)
- DansGuardian. Сложности фильтрации русскоязычного контента
- Ubuntu Server. Настраиваем антивирусный фильтр роутера (ClamAV)
- Ubuntu Server. Дополняем контент-фильтр роутера антивирусом (DansGuardian + ClamAV)
- Ubuntu Server. Настраиваем форвардинг портов на роутере
- Ubuntu Server. Настраиваем аутентификацию через Squid
- Ubuntu Server. Ограничиваем скорость клиентов через Squid
- SARG — анализируем логи прокси-севера Squid
- SAMS — веб-интерфейс для управления Squid и не только
- Squid — настраиваем URL-фильтрацию по спискам
- Squid — блокируем потоковое мультимедиа
- Как устроена и работает система контроля доступа в Squid
- Настраиваем Squid для работы с Active Directory. Часть 1 — базовые настройки
- Настраиваем Squid для работы с Active Directory. Часть 2 — Kerberos-аутентификация
- Настраиваем Squid для работы с Active Directory. Часть 3 — Авторизация на основе групп AD
- WPAD или автоматическая настройка параметров прокси
- Устраняем ошибки Windows Update при работе через прокси-сервер Squid
- Настраиваем ограничение скорости для пользователей в Squid
- Сборка Squid 3.5 с поддержкой SSL из исходных кодов для Debian / Ubuntu
- Настраиваем роутер NAT + DHCP + Squid3 с поддержкой фильтрации SSL-трафика
Онлайн-курс по устройству компьютерных сетей
На углубленном курсе «Архитектура современных компьютерных сетей» вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
SARG is an open source tool that allows you to analyse the squid log files and generates beautiful reports in HTML format with informations about users, IP addresses, top accessed sites, total bandwidth usage, elapsed time, downloads, access denied websites, daily reports, weekly reports and monthly reports.
The SARG is very handy tool to view how much internet bandwidth is utilized by individual machines on the network and can watch on which websites the network’s users are accessing.
In this article I will guide you on how to install and configure SARG – Squid Analysis Report Generator on RHEL/CentOS/Fedora and Debian/Ubuntu/Linux Mint systems.
Installing Sarg – Squid Log Analyzer in Linux
I assume that you already installed, configured and tested Squid server as a transparent proxy and DNS for the name resolution in caching mode. If not, please install and configure them first before moving further installation of Sarg.
Please remember without the Squid and DNS setup, no use of installing sarg on the system it will won’t work at all. So, it’s a request to install them first before heading to Sarg installation.
Step 1: Installing Sarg from Source
The ‘sarg‘ package by default not included in RedHat based distributions, so we need to manually compile and install it from source tarball. For this, we need some additional pre-requisites packages to be installed on the system before compiling it from source.
On RedHat/CentOS/Fedora
# yum install –y gcc gd gd-devel make perl-GD wget httpd
Once you’ve installed all the required packages, download the latest sarg source tarball or you may use the following wget command to download and install it as shown below.
# wget http://garr.dl.sourceforge.net/project/sarg/sarg/sarg-2.3.7/sarg-2.3.7.tar.gz # tar -xvzf sarg-2.3.7.tar.gz # cd sarg-2.3.7 # ./configure # make # make install
On Debian/Ubuntu/Linux Mint
On Debian based distributions, sarg package can be easily install from the default repositories using apt-get package manager.
$ sudo apt-get install sarg
Step 2: Configuring Sarg
Now it’s time to edit some parameters in SARG main configuration file. The file contains lots of options to edit, but we will only edit required parameters like:
- Access logs path
- Output directory
- Date Format
- Overwrite report for the same date.
Open sarg.conf file with your choice of editor and make changes as shown below.
# vi /usr/local/etc/sarg.conf [On RedHat based systems]
$ sudo nano /etc/sarg/sarg.conf [On Debian based systems]
Now Uncomment and add the original path to your squid access log file.
# sarg.conf # # TAG: access_log file # Where is the access.log file # sarg -l file # access_log /var/log/squid/access.log
Next, add the correct Output directory path to save the generate squid reports in that directory. Please note, under Debian based distributions the Apache web root directory is ‘/var/www‘. So, please be careful while adding correct web root paths under your Linux distributions.
# TAG: output_dir # The reports will be saved in that directory # sarg -o dir # output_dir /var/www/html/squid-reports
Set the correct date format for reports. For example, ‘date_format e‘ will display reports in‘dd/mm/yy‘ format.
# TAG: date_format # Date format in reports: e (European=dd/mm/yy), u (American=mm/dd/yy), w (Weekly=yy.ww) # date_format e
Next, uncomment and set Overwrite report to ‘Yes’.
# TAG: overwrite_report yes|no # yes - if report date already exist then will be overwritten. # no - if report date already exist then will be renamed to filename.n, filename.n+1 # overwrite_report yes
That’s it! Save and close the file.
Step 3: Generating Sarg Report
Once, you’ve done with the configuration part, it’s time to generate the squid log report using the following command.
# sarg -x [On RedHat based systems]
# sudo sarg -x [On Debian based systems]
Sample Output
[root@localhost squid]# sarg -x SARG: Init SARG: Loading configuration from /usr/local/etc/sarg.conf SARG: Deleting temporary directory "/tmp/sarg" SARG: Parameters: SARG: Hostname or IP address (-a) = SARG: Useragent log (-b) = SARG: Exclude file (-c) = SARG: Date from-until (-d) = SARG: Email address to send reports (-e) = SARG: Config file (-f) = /usr/local/etc/sarg.conf SARG: Date format (-g) = USA (mm/dd/yyyy) SARG: IP report (-i) = No SARG: Keep temporary files (-k) = No SARG: Input log (-l) = /var/log/squid/access.log SARG: Resolve IP Address (-n) = No SARG: Output dir (-o) = /var/www/html/squid-reports/ SARG: Use Ip Address instead of userid (-p) = No SARG: Accessed site (-s) = SARG: Time (-t) = SARG: User (-u) = SARG: Temporary dir (-w) = /tmp/sarg SARG: Debug messages (-x) = Yes SARG: Process messages (-z) = No SARG: Previous reports to keep (--lastlog) = 0 SARG: SARG: sarg version: 2.3.7 May-30-2013 SARG: Reading access log file: /var/log/squid/access.log SARG: Records in file: 355859, reading: 100.00% SARG: Records read: 355859, written: 355859, excluded: 0 SARG: Squid log format SARG: Period: 2014 Jan 21 SARG: Sorting log /tmp/sarg/172_16_16_55.user_unsort ......
Note: The ‘sarg -x’ command will read the ‘sarg.conf‘ configuration file and takes the squid ‘access.log‘ path and generates a report in html format.
Step 4: Accessing Sarg Report
The generated reports placed under ‘/var/www/html/squid-reports/‘ or ‘/var/www/squid-reports/‘ which can be accessed from the web browser using the address.
http://localhost/squid-reports OR http://ip-address/squid-reports
Sarg Main Window
Specific Date
User Report
Top Accessed Sites
Top Sites and Users
Top Downloads
Denied Access
Authentication Failures
Step 5: Automatic Generating Sarg Report
To automate the process of generating sarg report in given span of time via cron jobs. For example, let’s assume you want to generate reports on hourly basis automatically, to do this, you need to configure a Cron job.
vi /etc/crontab
Next, add the following line at the bottom of the file. Save and close it.
* */1 * * * /usr/bin/sarg -x
The above Cron rule will generate SARG report every 1 hour.
I also added our company logo to: /var/www/logo.jpg (just remember to add this line:
logo_image http://localhost/logo.jpg
to your /etc/sarg/sarg.conf file.)
Reference:
http://www.tecmint.com/sarg-squid-analysis-report-generator-and-internet-bandwidth-monitoring-tool/
Настройка SARG — анализатора логов Squid
Одной из причин использования прокси-сервера является не только собственно фильтрация трафика интернет-соединений, а также и сбор разнообразной статистики использования сети Интернет — посещаемость различных интернет-ресурсов, объем скачанной информации, активность того или иного пользователя и так далее.
Так как анализ логов Squid достаточно трудоемок, то, как правило, используют дополнительное ПО — анализатор логов. Его задачей является обработка логов Squid и представление их анализа, как правило в виде публикации на внутренний веб-сервер.
Одной из таких программ является SARG — Squid Analysis Report Generator.
Для того, чтобы SARG мог анализировать и публиковать данные в системе должен быть установлен Прокси-сервер Squid. установить его можно согласно нижеприведенной инструкции. Также для публикации отчетов должен быть настроен любой из веб-серверов, например Nginx. Ссылка на инструкцию.
После того, как Squid и Nginx установлены и настроены можно приступать к SARG:
Установим SARG из соответствующего пакета используя пакетный менеджер Вашей системы. В debian это apt:
apt-get install sarg
Сам SARG настраивается единственным файлом конфигурации /etc/sarg/sarg.conf. его Можно отредактировать любым редактором. Настраивать его несложно. Параметры достаточно подробно расписаны в самом файле конфигурации, либо в интернете. Приведу описание основных параметров и мои параметры:
- # Генерировать ли графики
graphs no
- # Заголовок для страницы отчётов
title "User Internet Usage Reports"
- # Временный каталог
temporary_dir /tmp
- # Каталог для сгенерированных отчетов. Его будем потом публиковать в Nginx. Если каталога нет, то его необходимо создать используя команду ОС mkdir -p /var/www/html/sarg
output_dir /var/www/htmp/sarg
- # Преобразовывать ли IP-адреса в DNS-имена
resolve_ip no
- # указывать использовать в отчетах IP адреса
user_ip yes
- # Cортировка отчета наиболее активных пользователей
#Разрешенные поля:
# Allowed fields: USER CONNECT BYTES TIME
topuser_sort_field BYTES reverse
- # Cортировка отчета активности пользователей
user_sort_field BYTES reverse
- # Формат даты, используемой в отчетах
# e (European=dd/mm/yy), u (American=mm/dd/yy), w (Weekly=yy.ww)
date_format e
- # Ограничение на количество отчетов. Оставим неделю
lastlog 7
- # Очищать temp после генерации
remove_temp_files yes
- # Cоздавать ли индексную страницу после генерации
index yes
- # Перезаписывать ранее сгенерированных отчеты
overwrite_report yes
- # Десятичный разделитель запятая. При no — точка
use_comma yes
- # Сортировка индекса отчётов: нисходящий (D[escending]), т.е обратный
index_sort_order D
- # Типы отчетов
report_type topusers users_sites
- # подробные адреса посещаемых ресурсов
long_url yes
- # Кодировка
charset UTF-8
- # Указываем выводить округленные отображаемые данные#
displayed_values abbreviation
Теперь настроим публикацию отчетов через nginx.
Создадим в папке /etc/nginx/sites-available файл конфигурации для sarg, назовем его sarg и добавим в него следующее содержимое:
server { #порт для сайта listen *:80; server_name sarg.local; # Кодировка charset utf-8; # Корень папки с обработанными логами и стартовый файл root /var/www/html/sarg; index index.html; # Смотреть статистику можно только из локальной сети location / { allow 10.0.0.0/8; deny all; } }
Теперь создадим символическую ссылку на нашу новую конфигурацию — это примерный аналог ярлыка в Windows, удалим конфигурацию по-умолчанию и перезапустим nginx.
ln /etc/nginx/sites-available/sarg /etc/nginx/sites-enabled/sarg
rm /etc/nginx/sites-available/default
systemctl restart nginx
Проверить что все работает можно набрав в браузере http://<имя_или_ip_сервера> . Например http://10.0.0.2
На этом настройка SARG окончена. В нашей базе знаний вы найдёте ещё множество статей посвящённых различным аспектам работы в Linux, а если вы ищете надежный виртуальный сервер под управлением Linux, обратите внимания на нашу услугу — Аренда виртуального сервера на базе Linux.
Последнее обновление: 21.04.2022
Средняя оценка: 5,0, всего оценок: 1
Спасибо за Вашу оценку!
К сожалению, проголосовать не получилось. Попробуйте позже
Этот мануал был написан в связи производственной необходимостью мониторить трафик (http и https) пользователей, а также распределения доступа по белым и черным спискам. За основу были взяты статьи: эта и вот эта , в которых использовалась технология peek-n-splice. В данных статьях конфигурация предполагает использование хоста со squid как шлюз, после доработки конфига, получился полноценный прокси-сервер с возможностью распределения прав доступа по группам из Active Directory. По завершению конфигурирования встал вопрос передачи настроек прокси-сервера для пользователей. В виду того, что в офисе часто ноутбуки берут домой — вся затея зашла в тупик. Изначально рассматривался вариант выдачи настроек прокси-сервера через DHCP, но он не самый лучший, т. к. офисы в разных подсетях, и разное оборудование, выходом из данной ситуации стал WPAD. Вкратце о данной технологии можно сказать так, клиентские машины на OS Windows ищут хост с именем wpad.example.ru (вплоть до доменов третьего уровня), чтобы запросить файл настроек для работы в сети. Исходя из такого принципа, нужно поднять веб-сервер, который просто бы отдавал файл wpad.dat Можно на самом хосте с прокси-сервером поднять веб-сервер (что и было сделано), а в DNS-сервере создать cname wpad на прокси-сервер. Прокси-сервер лучше использовать с возможностью сбора и просмотра статистики, благо выбор предостаточный. В виду некоторых консервативных соображений, было решено выбрать SARG. Он легкий в настройке, достаточно приемлемая статистика для офиса со штатом до 100 сотрудников.
Содержание
- 1 Введение
- 1.1 Упрощенная схема работы WPAD
- 1.2 Плюсы и минусы работы WPAD
- 1.3 Squid Peek-n-splice — how to it works
- 1.4 Плюсы и минусы Peek-n-splice
- 1.5 Необходимое для решения задачи
- 2 Конфигурирование операционной системы и установка Squid
- 2.1 Параметры сборки Squid
- 2.2 Установка пакетов из официальных репозиториев
- 2.3 Ручная установка Squid и дополнительных пакетов
- 2.4 Установка прав доступа на swap-каталог для squid
- 2.5 Конфигурационный файл squid
- 2.6 Настройка файла /etc/hosts
- 2.7 Настраиваем selinux
- 2.8 Генерация swap
- 2.9 Включение демона squid, проверка конфигурационного файла
- 2.10 Форвардинг трафика
- 3 Интеграция с контроллером домена Active Directory 2012R2
- 3.1 Конфигурация kerberos
- 3.2 Создание DNS-записи
- 3.3 Варианты интеграции с доменом
- 3.3.1 Интеграция средствами Windows
- 3.3.2 Интеграция средствами Linux
- 3.4 Рекомендуемые права на файл krb5.keytab
- 3.5 Группы в Active Directory для регулировки доступа в Интернет
- 3.6 Проверка авторизации в Active Directory при помощи файла krb5.keytab
- 4 WPAD
- 4.1 Установка и конфигурирование web-сервера apache2
- 4.2 Файл wpad.dat
- 4.3 CNAME в DNS
- 5 Статистика трафика
- 5.1 Установка SARG из исходников
- 5.2 Конфигурирование SARG
- 5.3 Расписание генерации отчетов посещаемости
- 5.4 Конфигурация web-сервера
- 5.5 Авторизация на сайте со статистикой
- 6 Групповые политики
- 6.1 Редактирование GPO
1.1 Упрощенная схема работы WPAD
— Клиент на ОС Windows обращается к DNS-серверу с запросом на хост wpad.example.ru, и DNS-сервер имя соответствующую запись указывает куда обратиться. Далее, клиент обращается к wpad.example.ru с запросом на файл настроек. Получив его, начинает действовать соответственно инструкций в нём.
1.2 Чем хороша данная технология
Плюсы:
— нет необходимости через GPO прописывать всем клиентам адрес-прокси
— Мобильность сотрудников (доступ к интернету вне офиса)
— Чтобы отключить использование данной технологии, достаточно отключить в «Свойствах браузера» — «Автоматическое получение настроек»
Минусы:
— «Автоматическое получение настроек» можно отключить любому пользователю, поэтому данную функцию лучше оставить включенной и запретить ее изменение через GPO
1.3 Squid Peek-n-splice — how to it works
Сотрудник пытается зайти на сайт с https через прокси. При установке зашифрованного соединие происходит «приветствие», которое передается в открытом виде, прокси-сервер его перехватывает, и исходя из конфигурации, squid разрешает или запрещает соединение. Т.е. перехватили на посмотреть «приветствие», разрешили или дропнули соединение.
1.4 Плюсы и минусы Peek-n-splice
Плюсы:
— Это не MITM-атака, и не будет проблем с банк-клиентами
— Отображение доменных имен в статитстике сайтов запрашиваемых по https
Минусы:
— К сожалению, нельзя полностью просмотреть какая именно интернет-страница была открыта как при MITM-атаке
— Данная конфигурация хорошо себя показала только на CentOS (на Debian были проблемы, через некоторое время случался kernel-panic)
1.5 И так, теперь стоит отметить что дано
— Хост с Active Directory 2012R2 (метод авторизация пользователей — Kerberos)10.0.0.9
— Хост с CentOS 7 (x64) (он же веб-сервер для отдачи wpad.dat, он же прокси-сервер) 10.0.0.10
— Тестовый хост с ОС Windows для проверки работы 10.0.0.11
«Поехали» Гагарин Ю.А.
2 Конфигурирование операционной системы и установка Squid
Процесс установки CentOS описывать нет смысла. Так что будем иметь в виду, что у нас свежеустановленный CentOS 7 x64. Итак, чтобы Squid работал одинаково хорошо с http и https трафиком, необходимо следующее:
2.1 Squid должен быть собран с такими параметрами
squid -v
$ squid -v
Squid Cache: Version 3.5.16
Service Name: squid
configure options: ‘—build=x86_64-redhat-linux-gnu’ ‘—host=x86_64-redhat-linux-gnu’ ‘—program-prefix=’ ‘—prefix=/usr’ ‘—exec-prefix=/usr’ ‘—bindir=/usr/bin’ ‘—sbindir=/usr/sbin’ ‘—sysconfdir=/etc’ ‘—datadir=/usr/share’ ‘—includedir=/usr/include’ ‘—libdir=/usr/lib64’ ‘—libexecdir=/usr/libexec’ ‘—sharedstatedir=/var/lib’ ‘—mandir=/usr/share/man’ ‘—infodir=/usr/share/info’ ‘—verbose’ ‘—exec_prefix=/usr’ ‘—libexecdir=/usr/lib64/squid’ ‘—localstatedir=/var’ ‘—datadir=/usr/share/squid’ ‘—sysconfdir=/etc/squid’ ‘—with-logdir=$(localstatedir)/log/squid’ ‘—with-pidfile=$(localstatedir)/run/squid.pid’ ‘—disable-dependency-tracking’ ‘—enable-follow-x-forwarded-for’ ‘—enable-auth’ ‘—enable-auth-basic=DB,LDAP,NCSA,NIS,PAM,POP3,RADIUS,SASL,SMB,getpwnam,fake’ ‘—enable-auth-ntlm=smb_lm,fake’ ‘—enable-auth-digest=file,LDAP,eDirectory’ ‘—enable-auth-negotiate=kerberos,wrapper’ ‘—enable-external-acl-helpers=wbinfo_group,kerberos_ldap_group,LDAP_group,delayer,file_userip,SQL_session,unix_group,session,time_quota’ ‘—enable-cache-digests’ ‘—enable-cachemgr-hostname=localhost’ ‘—enable-delay-pools’ ‘—enable-epoll’ ‘—enable-icap-client’ ‘—enable-ident-lookups’ ‘—enable-linux-netfilter’ ‘—enable-removal-policies=heap,lru’ ‘—enable-snmp’ ‘—enable-storeio=aufs,diskd,ufs,rock’ ‘—enable-wccpv2’ ‘—enable-esi’ ‘—enable-ssl-crtd’ ‘—enable-icmp’ ‘—with-aio’ ‘—with-default-user=squid’ ‘—with-filedescriptors=16384’ ‘—with-dl’ ‘—with-openssl’ ‘—with-pthreads’ ‘—with-included-ltdl’ ‘—disable-arch-native’ ‘—enable-ecap’ ‘—without-nettle’ ‘build_alias=x86_64-redhat-linux-gnu’ ‘host_alias=x86_64-redhat-linux-gnu’ ‘CFLAGS=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong —param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic’ ‘LDFLAGS=-Wl,-z,relro ‘ ‘CXXFLAGS=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong —param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC’ ‘PKG_CONFIG_PATH=:/usr/lib64/pkgconfig:/usr/share/pkgconfig’ —enable-ltdl-convenience
Либо же можно скачать архив с собранным squid и его зависимостями.
2.2 Установка необходимых пакетов из официальных репозиториев
Стоит отметить, что для установки кальмара нужны некоторые зависимости. К сожалению, у CentOS довольно скудные официальные репозитории, поэтому некоторые пакеты надо качать с неофициальных. Установка необходимых пакетов из оф.репозиториев:
# yum install -y libtool-ltdl perl-DBI perl-Digest-MD5 cyrus-sasl-gssapi krb5-workstation
2.3 Ручная установка Squid и дополнительных пакетов
# rmp -Uvh squid-3.5.8-4.el7.centos.x86_64.rpm libecap-1.0.0-3.el7.centos.x86_64.rpm squid-helpers-3.5.8-4.el7.centos.x86_64.rpm perl-Crypt-OpenSSL-X509-1.803-4.el7.x86_64.rpm
Если что-то не так, в терминале отобразится чего не хватает.
2.4 Установка прав доступа для каталога swap
# chown squid:squid /var/spool/squid
2.5 конфигурационный файл /etc/squid/squid.conf
squid.conf
### negotiate kerberos
auth_param negotiate program /usr/lib64/squid/negotiate_kerberos_auth -s HTTP/sq.example.ru@EXAMPLE.RU
auth_param negotiate children 60
auth_param negotiate keep_alive off
external_acl_type inet_medium ttl=300 negative_ttl=60 %LOGIN /usr/lib64/squid/ext_kerberos_ldap_group_acl -g Internet-medium@EXAMPLE.RU
external_acl_type inet_full ttl=300 negative_ttl=60 %LOGIN /usr/lib64/squid/ext_kerberos_ldap_group_acl -g Internet-full@EXAMPLE.RU
external_acl_type inet_low ttl=300 negative_ttl=60 %LOGIN /usr/lib64/squid/ext_kerberos_ldap_group_acl -g Internet-low@EXAMPLE.RU
acl localnet src 10.0.0.0/24
acl localnet src 192.168.0.0/24
acl my_full external inet_full
acl my_medium external inet_medium
acl my_low external inet_low
acl auth proxy_auth REQUIRED
# помимо дефолтного 443, для себра бизнес онлайн нуже доп. порт 9443
acl SSL_ports port 443 9443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
#В данной конфигурации whitelist — это список разрешенных сайтов для группы пользователей Internet-low@EXAMPLE.RU (доступ только на те сайты, которые в whitelist.txt)
#А blocked_http.txt — список запрещенных сайтов для группы Internet-medium@EXAMPLE.RU (на все сайты можно заходить, кроме тех, которые в blocked_http.txt)
acl white_list dstdomain «/etc/squid/whitelist.txt»
acl black_list dstdomain «/etc/squid/blocked_http.txt»
dns_nameservers 10.0.0.9
# access rule
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access deny !auth
http_access deny my_medium black_list
http_access allow my_medium
http_access allow my_low white_list
http_access deny my_low all
http_access allow my_full
# Разрешаем локалхост
http_access allow localhost
# Запрещаем все остальное
http_access deny all
#Непрозрачный порт, через который происходит взаимодействие клиентских хостов с прокси-сервером
http_port 10.0.0.10:3130 options=NO_SSLv3:NO_SSLv2
always_direct allow all
sslproxy_cert_error allow all
sslproxy_flags DONT_VERIFY_PEER
#Данная опция нужна для корректной работы peek-n-splice. Сам файл blocked_https.txt ни на что не влияет, но и он не должен быть пустым. Магия.
#
acl blocked ssl::server_name «/etc/squid/blocked_https.txt»
acl step1 at_step SslBump1
ssl_bump peek step1
#терминируем соединение, если клиент заходит на запрещенный ресурс
ssl_bump terminate blocked
ssl_bump splice all
coredump_dir /var/spool/squid
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern. 0 20% 4320
cache_dir aufs /var/spool/squid 20000 49 256
maximum_object_size 61440 KB
minimum_object_size 3 KB
#httpd_suppress_version_string on
#visible_hostname PROXYSERVER
cache_swap_low 90
cache_swap_high 95
maximum_object_size_in_memory 512 KB
memory_replacement_policy lru
logfile_rotate 4
2.6 Предварительно необходимо привести файл /etc/hosts к такому содержанию
127.0.0.1 localohost
10.0.0.10 sq.example.ru sq
2.7 Настраиваем selinux
В файле /etc/selinux/config должно быть значение:
SELINUX=enforcing
Устанавливаем пакет для работы с selinux:
# yum install policycoreutils-python
Добавляем правила selinux
Разрешаем подключения к кальмару:
# setsebool -P squid_connect_any on
Разрешаем kerberos:
# setsebool -P allow_kerberos on
Разрешаем подключения к кальмару на 3130 порту:
# semanage port -a -t squid_port_t -p tcp 3130
После изменения параметров selinux, необходимо перезагрузить систему для их применения.
# reboot
2.8 генерация swap
# squid -z
2.9 Включение демона squid, проверка конфигурационного файла
# systemctl enable squid
# squid -k parse
Варнингов и эрроров не должно быть. Если же что-то есть — необходимо проверить настройки.
2.10 Разрешаем форвардинг трафика
# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
Применяем настройку налету:
# sysctl -p
3 Интеграция с контроллером домена Active Directory 2012R2
Интеграция с контроллером домена необходима для того, чтобы пользователи домена могли авторизовываться на прокси-сервере по протоколу Kerberos. Самое разумное решение — оставить только Kerberos ввиду того, что данный метод самый безопасный, авторизация происходит автоматически. Что же касается клиентских машинах которые вне домена, то и здесь нет проблем, логин и пароль можно ввести вручную во всплывающем окне авторизации. Проверено, работает.
3.1 Конфигурационный файл /etc/krb5.conf
Конфигурационный файл /etc/krb5.conf необходимо привести к следующему виду:
krb5.conf
[libdefaults]
default_realm = EXAMPLE.RU
ticket_lifetime = 24h
default_keytab_name = /etc/krb5.keytab
[realms]
EXAMPLE.RU = {
kdc = dc1.example.ru
admin_server = dc1.example.ru
default_domain = example.ru
}
[domain_realm]
.example.ru = EXAMPLE.RU
example.ru = EXAMPLE.RU
3.2 Создание DNS-записи
Всем отлично известно, что Active Directory тесно завязан с DNS, и для корректной работы авторизации, необходимо создать узел (A или ААА) c указание имени хоста и его ip-адреса (Получается запись sq.example.ru c ip-адресом 10.0.0.10).
3.3 Варианты интеграции с доменом
И так,
есть два стула
варианта интеграции с доменом. Первый вариант — средствами Windows (ktpass), второй вариант — средствами Linux (Msktutil). Windows вариант хорош тем, что можно отключить срок действия пароля для пользователя squid. Версия Linux хороша тем, что можно вводить в домен через создание учетной записи компьютера.
3.3.1 Интеграция средствами Windows
Создаем пользователя в AD, например squid
Теперь генерируем krb5.keytab. В командной строке на контроллере домена с правами администратора необходимо выполнить данную команду:
C:\Windows\system32> ktpass -princ HTTP/sq.example.ru@EXAMPLE.RU -mapuser squid@EXAMPLE.RU -crypto rc4-hmac-nt -pass Pa$$wd12 -ptype KRB5_NT_PRINCIPAL -out C:\
Сам файлик krb5.keytab переместить (Можно при помощи WinSCP) на sq.example.ru в каталог /etc.
3.3.2 Интеграция средствами Linux
В архиве со сквидом и зависимостями также приложен msktutil, устанавливаем его:
# rpm -Uhv msktutil-0.5.1-2.el7.x86_64.rpm
Теперь выполняем следующую команду:
# msktutil -c -b "CN=COMPUTERS" -s HTTP/sq.example.ru -k /etc/krb5.keytab --computer-name sq-k --upn HTTP/sq.example.ru --server dc1.example.ru --verbose --enctypes 28
В случае успеха, вывод команды будет большим, копировать сюда не вижу смысла. Ошибок и варнингов быть не должно. Стоит обратить внимание на —computer-name sq-k это не опечатка. Имя хоста должно отличаться.
В виду необходимости обновлять пароль для учетной записи компьютера, делать это можно через cron.
# crontab -e
В него необходимо добавить задание:
00 3 * * * msktutil --auto-update --verbose --computer-name sq-k
3.4 Рекомендуемые права на файл krb5.keytab
После перемещения krb5.keytab, рекомендуется понизить права доступа к файлу
# chown squid:squid /etc/krb5.keytab && chmod 644 /etc/krb5.keytab
3.5 Группы доступа AD
В ActiveDirectory в
OU Users
необходимо создать три группы, согласно которых будет распределен доступ в Интернет: Internet-full, Internet-medium, Internet-low.
3.6 Проверка авторизации
Проверка авторизации в Active Directory при помощи файла /etc/krb5.keytab
# kinit -V -k -t /etc/krb5.keytab HTTP/sq.example.ru@EXAMPLE.RU
Вывод команды должен быть примерно такой:
Using default cache: /tmp/krb5cc_0
Using principal: HTTP/sq.example.ru@EXAMPLE.RU
Using keytab: /etc/krb5.keytab
Authenticated to Kerberos v5
А klist должен отобразить следующее:
klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: HTTP/sq.example.ru@EXAMPLE.RU
Valid starting Expires Service principal
09.10.2016 22:19:20 10.10.2016 08:19:20 krbtgt/EXAMPLE.RU@EXAMPLE.RU
renew until 10.10.2016 22:19:20
На это настройка Squid практически закончена, теперь перезагружаем хост для применения настроек. После перезагрузки для теста можно вручную прописать прокси в настройках sq.example.ru указав порт 3130.
4 WPAD
4.1 Установка и конфигурирование web-сервера apache2
Установка web-сервера:
# yum install -y httpd
После установки включаем в автозагрузку:
# systemctl enable httpd
Запускаем:
# systemctl start httpd
Если попробовать открыть в браузере доменное имя sq.example.ru, должна открыться тестовая страница apache2.
Далее необходимо создать /var/www/html/wpad.dat файл со следующим содержанием:
wpad.dat
function FindProxyForURL(url, host)
{
// var ip_host = dnsResolve(host);
// var localnet = «192.168.0.0»;
// var localhost = «127.0.0.0»;
// var localnet = «10.0.0.0»;
if (isInNet( host, «192.168.0.0», «255.255.255.0») ||
isInNet( host, «10.0.0.0», «255.255.255.0») ||
isInNet( host, «127.0.0.0», «255.0.0.0») ||
shExpMatch( host, «*.example.ru»))
{ return «DIRECT»; }
if (dnsDomainIs( host, «*.inet-example.ru» ))
{ return «DIRECT»; }
return «PROXY sq.exmaple.ru:3130»;
}
4.2 Описание файла wpad.dat
По дефолту в каталоге /var/www/html/wpad.dat файл отдается всем без дополнительных настроек apache2, а это как раз необходимо для корректного взаимодействия с клиентскими машинами на ОС Windows.
Строчки
if (isInNet( host, "192.168.0.0", "255.255.255.0") ||
isInNet( host, "10.0.0.0", "255.255.255.0") ||
Обозначают, что обращения к хостам в подсетях 192.168.0.0/24, 10.0.0.0/24 и 127.0.0.0/8 (последнее нужно для корректной работы сервисов при обращении к localhost) передаются напрямую, а также напрямую происходит соединение с домеными хостами .example.ru:
Строчки:
if (dnsDomainIs( host, "*.inet-example.ru" ))
{ return "DIRECT"; }
Обозначают, что при обращении к доменным именам .inet-example.ru происходит напрямую
Если запрашиваемый ресурс не попадает под вышеперечисленные условия, выполняется следующее:
return "PROXY sq.exmaple.ru:3130";
4.3 Создание CNAME
На DNS-сервере Active Directory необходимо создать cname wpad (FQDN wpad.example.ru) на sq.example.ru.
Для проверки необходимо открыть в браузере wpad/wpad.dat и файл wpad.dat должен автоматически скачаться. Таким образом, все хосты скачивают данный файл, и исходя из содержимого действуют. Рекомендуется сделать релог или перезагрузить все компьютеры в домене на ОС Windows, чтобы произошло скачивание файла.
5 Статистика
5.1 Установка SARG из исходников
Если не был установлен gcc ранее, сейчас самое время:
# yum install -y gcc gd gd-devel make wget
# wget http://liquidtelecom.dl.sourceforge.net/project/sarg/sarg/sarg-2.3.10/sarg-2.3.10.tar.gz
# tar -xvzf sarg-2.3.10.tar.gz
# cd sarg-2.3.10
# ./configure
# make
В файле
po/Makefile.in.in
указана версия gettext как 0.18, чтобы не было ошибки при make install, необходимо изменить на 0.19:
# make install
5.2 Конфигурирование SARG
Стандартный файл конфигурации
/usr/local/etc/sarg.conf
лучше забекапить:
# mv /usr/local/etc/sarg.conf /usr/local/etc/sarg.conf.default
Теперь создаем файл sarg.conf со следующим содержанием:
access_log /var/log/squid/access.log
output_dir /var/www/html/squid-reports
date_format e
overwrite_report yes
language UTF-8
5.3 Расписание генерации отчетов при помощи cron
# crontab -e
Добавляем строчку:
55 23 * * * /usr/local/bin/sarg -xd day-0
Данная строчка указывает, что отчеты будут генерироваться каждый день и за текущий день в 23:55
5.4 Конфигурация web-сервера
На ранее установленный веб-сервер можно еще возложить задачу отображение отчетов, с запросом ввода логина и пароля для авторизации. Создаем файл /etc/httpd/conf.d/sarg.conf со следующим сожержанием:
sarg.conf
Alias /reports /var/www/html/squid-reports/
<Directory /var/www/html/squid-reports/>
AuthType Basic
AuthName «Basic Authentication»
AuthUserFile /etc/httpd/conf/.htpasswd
require valid-user
AddDefaultCharset UTF-8
5.5 Авторизация на сайте со статистикой
Генерация файла логина и пароля для авторизации
# htpasswd -c /etc/httpd/conf/.htpasswd administrator
Перезапуск apache2:
# systemctl restart httpd
При попытке открыть sq.example.ru/reports будет предложено ввести логин и пароль. В случае успешной авторизации можно просмотреть статистику.
6 Групповые политики
Здесь все неоднозначно и может зависит, от каких-то особенностей. В текущей задаче было разумным решением исключить возможность установки прокси-сервера пользователя, или же отключения «Автоматического определения параметров».
6.1 Редактирование GPO
Для запрета ввода прокси-сервера или изменения настроек по автоматическому определению параметров, можно воспользоваться групповой политикой. Создаем и связываем групповую политику с
OU
например,
office
.
Редактируем групповую политику:
Пользователь → Политики → Административные шаблоны → Компоненты Windows → Internet Explorer
В данном каталоге найти параметры и перевести в статус «Включено»:
«Запретить изменение параметров прокси»
«Отключить изменение параметров автоматической»
В заключение сказать могу вот что, данная конфигурация успешно работает по настоящее время с весны 2016-го, и отлично себя зарекомендовала. На все вопросы буду рад ответить.
UPD №1: 12.11.16
1 Были убраны из конфига сквида лишние строки портов 3128 и 3129.
2 включил selinux и добавил правила.
3 Была убрана генерация сертификата из мануала(без него работает)
4 Мелкие исправления
UPD №2: 20.11.16
1 Были убраны из конфига krb5.conf лишние строки
2 Добавлен метод интеграции с AD через Msktutil
3 Добавлен форвардинг
4 Обновлен архив со сквидом и зависимостями
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Пригодилась ли вам данная статья?
67.39% Да, это то что я давно искал!31
26.09% Интересно, но себе делать не буду12
Проголосовали 46 пользователей. Воздержались 4 пользователя.