Хочу доказать руководству, что в компании интернет используется по большей части не по назначению. И задача поставленная мне до нести до руководителей отделов поставленную передо мной задачу в ограничении сотрудников интернетом стала для меня наиболее актуальной. Уже лучше я сейчас потрачу некоторое количество времени, все разберу, задокумментирую – просто впоследствии я смогу опираясь на эту заметку во многих компаниях повысить отдел IT в глазах руководства и начать использовать интернет в рамках продуктивного использования.
Сотрудники должны работать, а не использовать интернет для развлечения (многие до момента этой заметки даже порой смотрели различные телевизионные сервиалы, случали online радио, играли), и многие ни в чем не повинные коллеги поплатились за это своими коллегами которые настолько охамели (другого слова нет), что спалились перед самим генеральным директором. Сейчас большинство сотрудников используется squid для выхода в интернет как единый инструмент для урегулирования доступа что можно, а что нельзя поэтому мне нужно проработать момент настройки sarg для визуализации использования интернета.
На заметку:
Приложение SARG – это своего рода парсер логов формируемых SQUID’ом из которых генерируются отчеты в формате визуального представления которые в последствии можно открыть через любой браузер, т.к. файлы отчетов представляют собой html файлы.
Текущая схема выхода сотрудниками в интернет:
Пользователи – squid (OpenSUSE 13.2) – интернет
Сервис sarg буду поднимать на другой системе (в моем случае это будет система на которой я лучше себя чувствую да и блог нужно дополнить еще одной практической заметкой ориентированной на Ubuntu 12.04) , из это следует, что нужно будет пересылать логи работы squid на разворачиваемую систему с сервисом sarg. Также доступ к статистики SARG будет закрыт аутентификационными данными и доступом только с определенных IP адресов корпоративной сети.
Исходные данные:
ОС – Ubuntu 12.04.5 Server amd64
RAM = 2Gb
HDD = 20Gb
CPU = 2
Ethernet = 1 карта
Первым делом поднимаю связку – LAMP: (Linux Apache MySQL PHP)
ekzorchik@srv-mon:~$ sudo tasksel install lamp-server
ekzorchik@srv-mon:~$ sudo nano /etc/apache2/apache2.conf
ServerName srv-mon
Устанавливаю правильное время,часовой пояс,локаль:
ekzorchik@srv-mon:~$ sudo locale-gen ru_RU
ekzorchik@srv-mon:~$ sudo locale-gen ru_RU.UTF8
ekzorchik@srv-mon:~$ sudo dpkg-reconfigure locales
ekzorchik@srv-mon:~$ sudo nano /etc/profile
export LC_ALL="en_US.UTF-8"
Загружаю настройки профиля:
ekzorchik@srv-mon:~$ source /etc/profile
Далее устанавливаю из дефолтных репозатириев пакет SARG:
ekzorchik@srv-mon:~$ sudo apt-get install sarg -y
Следом создаю резервную копию дефолтного конфигурационного файла чтобы всегда иметь файл который можно взять за основу перед редактированием:
ekzorchik@srv-mon:~$ sudo cp /etc/sarg/sarg.conf /etc/sarg/sarg.conf.backup
Далее создаю каталог из которого будут браться файлы логов перенесенные с сервера squid:
ekzorchik@srv-mon:~$ sudo mkdir /var/log/squid
Далее создаю каталог сайта sarg для Web-сервера apache и собственно сам сайт входа:
ekzorchik@srv-mon:~$ sudo mkdir -p /var/www/sarg/log
ekzorchik@srv-mon:~$ sudo nano /etc/apache2/sites-available/sarg.conf
<virtualhost *:80>
ServerAdmin webmaster@localhost
ServerName srv-mon
ServerAlias sarg
DirectoryIndex index.html
DocumentRoot /var/www/sarg/
LogLevel warn
ErrorLog /var/www/sarg/log/error.log
CustomLog /var/www/sarg/log/access.log combined
</virtualhost>
ekzorchik@srv-mon:~$ sudo chown -R www-data:www-data /var/www/sarg/
ekzorchik@srv-mon:~$ sudo a2ensite sarg.conf
ekzorchik@srv-mon:~$ sudo service apache2 reload
Приступаю к настройке параметров формируемой статистики об использовании интернета сотрудниками компании:
(За основу беру рассматриваемую заметку: sarg on ubuntu 10.10 и lftp)
ekzorchik@srv-mon:~$ sudo nano /etc/sarg/sarg.conf
ekzorchik@srv-mon:~$ cat /etc/sarg/sarg.conf
# Путь к логам SQUID’а.
access_log /var/log/squid/access.log
# Заголовок
title "Squid - Анализ использования интернета"
# Настройки внешнего вида.
font_face Tahoma,Verdana,Arial
header_color darkblue
header_bgcolor blanchedalmond
font_size 9px
background_color white
text_bgcolor lavender
title_color green
# Временная папка
temporary_dir /tmp
# Директория с отчётами
output_dir /var/www/sarg/
# Запрашивать ли ip-адрес? пишем yes
resolve_ip yes
# topuser_sort_field {USER | CONNECT | BYTES | TIME} {reverse | normal} (тип сортировки отчёта TopUser)
topuser_sort_field BYTES reverse
# (тип сортировки отчёта User)
user_sort_field BYTES reverse
# файл содержит имена пользователей, которых не надо включать в отчёт
exclude_users /etc/sarg/exclude_users
# файл содержит адреса хостов и сетей, которые не надо включать в отчёт: например, 192.168.10.0
exclude_hosts /etc/sarg/exclude_hosts
# Формат даты, меняем на «e» (european, европейский)
date_format e
lastlog 0
remove_temp_files yes
# создавать index.html
index yes
index_tree file
# перезаписывать отчёт, если отчёт за указанный день уже существует
overwrite_report yes
# что делать, если в строке журнала нет идентификатора пользователя; ignore — пропускать строку, ip — записывать ip, everybody — вместо userid записывать строку «everybody»
records_without_userid ip
# использовать запятую вместо десятичной точки
use_comma yes
# какую программу использовать для посылки отчёта по почте
mail_utility mailx
# сколько сайтов включить в отчёт о самых популярных сайтах
topsites_num 100
topsites_sort_order CONNECT D
# тип сортировки индекса
index_sort_order D
exclude_codes /etc/sarg/exclude_codes
max_elapsed 28800000
# перечень-отчётов-через-пробел
report_type topusers topsites sites_users users_sites date_time denied auth_failures site_user_time_date downloads
usertab /etc/sarg/usertab
# вставлять в отчёт полный URL или только имя сайта
long_url no
# включать в почасовой отчёт байты или потраченное время
date_time_by bytes
# Кодировка, меняем на UTF-8
charset UTF-8
show_successful_message yes
show_read_statistics no
topuser_fields NUM DATE_TIME USERID CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE
user_report_fields CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE
topuser_num 0
download_suffix "zip,arj,bzip,gz,ace,doc,iso,adt,bin,cab,com,dot,drv$,lha,lzh,mdb,mso,ppt,rtf,src,shs,sys,exe,dll,mp3,avi,mpg,mpeg"
Не забываем сохранить внесенные изменения.
Также не лишним будет составить файл сопоставления внутренних IP адресов и ФИО сотрудника для удобного восприятия отчета руководством:
ekzorchik@srv-mon:~$ sudo nano /etc/sarg/usertab
10.7.8.108<нажимаем клавишу TAB>Kassa
10.7.8.187<нажимаем клавишу TAB>Sklad
10.7.8.44<нажимаем клавишу TAB>Bar
10.7.8.41<нажимаем клавишу TAB>Dep.Ceh
10.7.8.97<нажимаем клавишу TAB>Reception
10.7.8.147<нажимаем клавишу TAB>Diagnost
и т.д.
Теперь нужно проработать как переносить файлы со squid системы на текущую для последующего формирования отчета посещаемости:
ekzorchik@srv-mon:~$ sudo apt-get install lftp -y
ekzorchik@srv-mon:~$ sudo su -
root@srv-mon:~# lftp sftp://root:<PASSWORD>@<IP_ADDRESS_SQUID> -p 22 -e 'mirror -e /var/log/squid/ /var/log/squid; bye;'
Total: 1 directory, 49 files, 0 symlinks
New: 49 files, 0 symlinks
483226536 bytes transferred in 30 seconds (15.44M/s)
Далее распаковываю архивы дней:
root@srv-mon:~# xz -d /var/log/squid/access.log*.xz
А после формирую файлы отчетов по дням (у меня логи имеются с 19 августа по сегодняшний день):
root@srv-mon:~# sarg -z -x -f /etc/sarg/sarg.conf -d 20/08/2015-20/08/2015 -o /var/www/sarg/ -l /var/log/squid/access.log-20150820
root@srv-mon:~# sarg -z -x -f /etc/sarg/sarg.conf -d 21/08/2015-21/08/2015 -o /var/www/sarg/ -l /var/log/squid/access.log-20150821
root@srv-mon:~# exit
logout
проделываю формирование логов по всем дням таким образом.
Теперь если обратиться на URL вида: http://IP&DNS/sarg страница логов имеет нижеследующий вид:
Все конечно же хорошо, но так отчет получается за один день, а если нужно в совокупности сделать, т.к. за неделю, за месяц, то делается это следующим образом. Раз у меня есть данные за август и текущий месяц сентябрь, то мне нужно прикинуть сколько дней в этих месяцах чтобы составить необходимые отчеты.
Отлично теперь отчеты по неделям августа будут выглядеть так:
ekzorchik@srv-mon:~$ sudo sarg -z -x -f /etc/sarg/sarg.conf -d 17/08/2015-24/08/2015 -o /var/www/sarg/ -l /var/log/squid/access.log-201508{17..24}
ekzorchik@srv-mon:~$ sudo sarg -z -x -f /etc/sarg/sarg.conf -d 24/08/2015-31/08/2015 -o /var/www/sarg/ -l /var/log/squid/access.log-201508{25..31}
Теперь уже более наглядно видно, что пользователь Sklad усиленно в промежуток дней занимался явным безделием, просмотром онлайн телевидения.
Теперь уже по собранным и визуализированным данным можно смело составлять списки сайтов (http) которые явно не относятся к производственному процессу и их следует заблокировать правилами самого squid’а. (В моем ведомстве безопасностью и корректность работы всей компании это мультимедийный контент, развлекательные ресурсы, онлайн игры.)
Но вот если настал следующий день и также нужно сформировать статистику послучаемая последовательность действий следующая:
root@srv-mon:~# lftp sftp://root:<PASSWORD>@<IP_ADDRESS_SQUID> -p 22 -e 'mirror -e /var/log/squid/ /var/log/squid; bye;'
Total: 1 directory, 49 files, 0 symlinks
New: 35 files, 0 symlinks
Modified: 3 files, 0 symlinks
300159558 bytes transferred in 19 seconds (14.92M/s)
Removed: 0 directories, 35 files, 0 symlinks
root@srv-mon:~# xz -d /var/log/squid/access.log*.xz
root@srv-mon:~# sarg -z -x -f /etc/sarg/sarg.conf -d 23/09/2015-23/09/2015 -o /var/www/sarg/ -l /var/log/squid/access.log-20150923
либо так:
root@srv-mon:~# sarg -z -x -f /etc/sarg/sarg.conf -d $(date --date "yesterday" +%d)/09/2015-$(date --date "yesterday" +%d)/09/2015 -o /var/www/sarg/ -l /var/log/squid/access.log-201509$(date --date "yesterday" +%d)
что тоже работает.
Также добавляю задание в планировщик по формирования лога за текущий день: (если у Вас SARG установлен там же где и поднят SQUID)
root@srv-mon:~# crontab -e
# m – minute
# h – hour
# dom – day of month
# mon – month
# dow – day of week
# m h dom mon dow command
59 23 * * * root /usr/bin/sarg
В моем же случае необходимо делать по другому. Заострять внимание в этой заметке, как я выхожу из сложившейся ситуации пока не буду.
По прошествии нескольких дней когда я все это мониторил за пользователями по заданию от руководства я уже смог составить определенный список сайтов в которых нет нужды сотрудникам для исполнения своих должностных обязанностей. Да и сам вспомнил как использовать такой полезный инструмент как sarg в работе совместо с прокси сервером squid. В дальнейшем я подробно покажу, как сделать связку squid + https, т.е. возможность логировать и осуществлять контроль за хождениями на сайты имеющие в адресе префикс https говорящий, что сайт работает по защищенному соединению. Просто бывали случай, что служба СБ подозревала некоторых, что они сливают информацию, а вот доказать это не было возможности, а так был бы какой либо шанс извлечь из логов куда,что,когда делал сотрудник в интернете. Для себя и для всех уже сколько раз говорил, что логировать нужно все и вся.
Что-то я ушел от темы этой практической заметки, настала пора прощаться, до встречи с уважением автор блога – ekzorchik.