Sarg squid настройка windows

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.

  1. Install Squid on Windows. You can follow this post squid-on-windows
  2. SARG port for windows is available in the SARG website itself SARG. Or download it by clicking here.
  3. Unzip it in C:\sarg
  4. Edit sarg.conf file inside c:\sarg\etc
    1. Edit access_log
    2. graph option
    3. output_dir where your web server can be pointed.
    4. Others that you think is important. This is very simple file with all needed description.
  5. 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-001.png

По умолчанию SARG формирует отчет за весь доступный период, отчет содержит детализацию по пользователям (адресам) и посещенным ими сайтам, использованию трафика и кэша, загрузкам. Отдельно можно просмотреть наиболее посещаемые сайты, данный отчет сортирует сайты не по трафику, а по количеству посещений.

SARG-002.png

По каждому пользователю можно получить исчерпывающую статистику:

SARG-003.png

Можно также просмотреть график потребления трафика и статистику работы по датам и времени.

SARG-004.png

Если есть желание, можете настроить отображение отчетов по собственному вкусу, конфигурация 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.

Дополнительные материалы:


  1. Linux. Настройка роутера (NAT + DHCP + Squid)
  2. Ubuntu Server. Настраиваем роутер NAT + DHCP + Squid3
  3. Ubuntu Server. Настраиваем контент-фильтр роутера (DansGuardian)
  4. DansGuardian. Сложности фильтрации русскоязычного контента
  5. Ubuntu Server. Настраиваем антивирусный фильтр роутера (ClamAV)
  6. Ubuntu Server. Дополняем контент-фильтр роутера антивирусом (DansGuardian + ClamAV)
  7. Ubuntu Server. Настраиваем форвардинг портов на роутере
  8. Ubuntu Server. Настраиваем аутентификацию через Squid
  9. Ubuntu Server. Ограничиваем скорость клиентов через Squid
  10. SARG — анализируем логи прокси-севера Squid
  11. SAMS — веб-интерфейс для управления Squid и не только
  12. Squid — настраиваем URL-фильтрацию по спискам
  13. Squid — блокируем потоковое мультимедиа
  14. Как устроена и работает система контроля доступа в Squid
  15. Настраиваем Squid для работы с Active Directory. Часть 1 — базовые настройки
  16. Настраиваем Squid для работы с Active Directory. Часть 2 — Kerberos-аутентификация
  17. Настраиваем Squid для работы с Active Directory. Часть 3 — Авторизация на основе групп AD
  18. WPAD или автоматическая настройка параметров прокси
  19. Устраняем ошибки Windows Update при работе через прокси-сервер Squid
  20. Настраиваем ограничение скорости для пользователей в Squid
  21. Сборка Squid 3.5 с поддержкой SSL из исходных кодов для Debian / Ubuntu
  22. Настраиваем роутер 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.

Install Sarg Squid Log Analyzer

In this article I will guide you on how to install and configure SARGSquid 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:

  1. Access logs path
  2. Output directory
  3. Date Format
  4. 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

Squid Log Analyzer

Specific Date

Date Wise Report

User Report

User Bandwidth Report

Top Accessed Sites

Squid Top Accessed Sites

Top Sites and Users

Squid Top Accessed Sites and Users

Top Downloads

Squid Top Downloads

Denied Access

Squid Denied Access

Authentication Failures

Squid 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 пользователя.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Windows 2000 beta 3 build 2000
  • Windows 10 запретить обновление драйверов видеокарты
  • Журнал критических ошибок windows 10
  • Как увеличить шрифт в меню пуск windows 10
  • Telegram for windows mac linux