Отчет по определенному пользователю

Хочу доказать руководству, что в компании интернет используется по большей части не по назначению. И задача поставленная мне до нести до руководителей отделов поставленную передо мной задачу в ограничении сотрудников интернетом стала для меня наиболее актуальной. Уже лучше я сейчас потрачу некоторое количество времени, все разберу, задокумментирую – просто впоследствии я смогу опираясь на эту заметку во многих компаниях повысить отдел 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.

От ekzorchik

Всем хорошего дня, меня зовут Александр. Я под ником - ekzorchik, являюсь автором всех написанных, разобранных заметок. Большинство вещей с которыми мне приходиться разбираться, как на работе, так и дома выложены на моем блоге в виде пошаговых инструкции. По сути блог - это шпаргалка онлайн. Каждая новая работа где мне случалось работать вносила новые знания и нюансы работы и соответственно я расписываю как сделать/решить ту или иную задачу. Это очень помогает. Когда сам разбираешь задачу, стараешься ее приподнести в виде структурированной заметки чтобы было все наглядно и просто, то процесс усвоения идет в гору. Также прошу на https://win.ekzorchik.ru https://lin.ekzorchik.ru https://net.ekzorchik.ru https://voip.ekzorchik.ru https;//home.ekzorchik.ru