5. Настройка прокси в pfSense

Теперь нам нужно раздавать всем пользователям интернет через прокси сервер и вести учет посещаемых сайтов.

  • Как я определился ранее прокси сервер будет прозрачным
  • Статистика по трафику должна собираться по всем соединениям, а не только по http
  • Статистика должна отображаться в понятном виде - кто когда куда ходил и сколько оттуда скачал

 

1. Устанавливаем необходимые пакеты

  • Идём в WEB-интерфейс, System -> Packages -> вкладка Available Packages.
  • Устанавливаем пакеты Squid (не путать со Squid3!) и Lightsquid (для отображения статистики).
  • После успешной установки во вкладке Installed Packages должны появиться эти два пакета.

41

 

2. Теперь настроим Squid

  • Идём Services -> Proxy server
  • Выбираем сетевой интерфейс на котором будет работать прокси - это LAN
  • Ставим галочку Allow users on interface. По непроверенным данным если не поставить этот флажок, то к нашему прокси серверу можно будет подключиться через интернет. А нам это надо? Нет.
  • Ставим галку Transparent proxy
  • Ставим галку Enable logging. Это для того чтобы потом была возможность отображать статистику
  • Каталог хранения лог-файлов Log store directory должен остаться прежним (у меня он /var/squid/logs), эти логи будет использовать Lightsquid для отображения статистики
  • Значение параметра Log rotate я поставил 62. Делается это для автоматического архивирования старых лог-файлов. Статистика прокси-сервера смотрится только из актуального лог-файла, а не из архивного. Поэтому интервал ротации нужно брать столько дней, когда лог перестает быть актуальным для вас, например, 2 месяца, т.е. 62 дня.
  • Язык (Language) на котором будут отображаться сообщения для пользователей устанавливаем Russian-1251
  • Остальное оставляем неизменным, жмём Save

 42

 И еще пара интересных опций, которые работают только в режиме Transparent:

  1. Bypass proxy for these source IPs — сюда можно вписать список компьютеров локальной сети через разделитель ; которым разрешено ходить в обход прокси-сервера.
  2. Bypass proxy for these destination IPs — сюда можно вписать список внешних ресурсов через разделитель ; до которых все компьютеры локальной сети смогут ходить напрямую (не через прокси).

 

3. Теперь настроим доступ к логам Squid'а для Lightsquid'а.

  • Для этого в разделе Services -> Proxy server переходим во вкладку Access Control
  • В строке External Cache-Managers вписываем IP-адрес 127.0.0.1
  • Жмём Save

 

4. Настраиваем Lightsquid.

Для этого идём Status -> Squid Proxy Reports. Тут нам сразу бросается в глаза красная фраза IMPORTANT: ...., не переживайте, всё что надо было сделать - мы сделали.

  • Устанавливаем Language в положение Russian
  • IP Resolve Method устанавливает в каком виде будет отображен каждый пользователь интернета в статистике. С этим параметром можете потом поиграться, но пока ставим Demo
  • Refresh sheduler — интервал обновления статистики. Чем меньше интервал, тем больше будет нагружен pfSense. На этапе настройки и отладки лучше установить минимально возможное значение — 10 мин, но затем лучше выбрать более рациональное значение, например, 60 мин.
  • Жмём Save, а после этого Refresh full

43

Система такая: Когда какой-нибудь пользователь входит в интернет весь его трафик заворачивается на порт Squid'а - 3128, который всю информацию по http записывает в log-файл: /var/squid/logs/access.log. Lightsquid - в свою очередь каждые 10 минут (параметр Refresh sheduler) получает данные из этого файла и строит статистику доступную здесь: Status -> Squid Proxy Reports -> вкладка Lightsquid Report.

Перед тем как открывать эту страницу статистики, полазьте немного в интернете чтобы было что отображать.

Сначала там может появиться страница с ошибкой.50

Ничего страшного, оставьте ее в покое, просто чуть позже (минут через 10-15) попробуйте открыть её заново.

44

45

46

 При нажатии на кнопку Refresh now Lightsquid прочитает log-файл и извлекёт из него сегодняшние данные интернет-трафика и обновит отчет.

При нажатии на кнопку Refresh full Lightsquid прочитает log-файл и извлекёт из него все данные за последние 62 дня (параметр Log rotate) интернет-трафика и обновит отчет (это может занять очень много времени)

 

Мы настроили сбор, обработку и документирование данных по трафику HTTP (80 порт). Но разумеется это не весь трафик, а зачастую лишь малая его часть. Помимо различных соединений файловыми хранилищами, почтовыми сервисами и интернет пейджерами (ICQ, Skype и т.д.) уже многие сайты переходят на работу по защищенному соединению HTTPS (443 порт). Разумеется благоразумно учитывать и эту часть трафика.

Оптимальным для посчёта трафика по всем портам является IPCAD, который будет дописывать свои данные в отчёт squid'a /var/squid/logs/access.log.

К сожалению, в разделе System -> Packages отсутствует пакет IPCAD, поэтому придется немного поплясать с бубном.

В начале плясок, для нашего удобства, настроим доступ к pfSense через SSH-протокол.

 

5. Настройка доступа к pfSense через SSH

  • Идём в System -> Advanced. В разделе Secure Shell ставим флажок Enable Secure Shell, жмем Save
  • После сохранения вылазиет сообщение типа изменения успешно сохранены и через 20 секунд вас перенаправят на такой-то адрес. Ждём и не вмешиваемся, после того как  это сообщение исчезнет, в правом верхнем углу загорится желтая пиктограмма51
  • Жмём на желтую пиктограмму, открываются сообщения:53
  • дословно переводится так:
    • pfSense начал создавать отсутствующие SSH-ключи. Запуск SSH может занять некоторое время. Имейте в виду что сохранение каких-либо изменений может быть осуществлено только после завершения операции по запуску SSH.
    • pfSense закончил создание ключей. SSH запущен.
  • Щёлкаем по каждому сообщению чтобы скрыть их.
  • Если Вы хотите открыть доступ к SSH из для WAN-порта, то добавим правило в Firewall:
    • Идём Firewall -> Rules -> вкладка WAN, жмём на кнопку с плюсиком для добавления правила
    • Interface -> WAN
    • Protocol -> TCP
    • Если вы хотите дать возможность всем подряд подключаться по SSH, то оставьте Source в положении any. Мне такое не надо, поэтому я здесь ставлю Single host or alias и указываю IP-адрес с которого буду управлять 192.168.0.191
    • Destination -> WAN address
    • Destination port range -> from: SSH (22)   to: SSH (22)
    • В description пишем что-нибудь вроде Allow SSH to WAN
    • Жмём Save, затем Apple Changes

На этом настройка pfSense заканчивается, теперь переходим к рабочему компьютеру сети предприятия (тот который 192.168.0.191). Я рекомендую для доступа к файловой системе через SSH использовать WinSCP, а для выполнения команд в консоли - Putty. Хотя в WinSCP и существует поддержка консоли, но у меня возникли проблемы с ответами на консольные вопросы типа Do you want it? y/N. В Putty таких проблем не возникает. Итак, качаем их, устанавливаем на компьютере и подключаемся.

Если Вы не меняли паролей, то доступ должен осуществляться так: login: root    pfsense   

52

6. Настройка IPCAD в pfSense

Как уже говорилось выше в разделе System -> Packages отсутствует пакет IPCAD, поэтому придется немного поплясать с бубном.

  • Для начала нам нужно скачать архив со всякими полезностями.
  • Файл rsh с помощью WinSCP копируем в папку /usr/bin и назначаем ему права 0555. Данный файл потребуется для импорта статистики ipcad в отчёт Squid'а.
  • Открываем файл tolog.sh и ищем строку net="192.168.2", здесь указывается ваша внутренняя сеть. Если у Вас она отличается от моей, то меняйте это значение (обратите внимание четвертая тройка не указывается). Помещаем tolog.sh в папку /usr/local/sbin и назначаем ему права 0755. Это скрипт переноса статистики ipcad в лог Squid

 После этого подключаемся к консоли с помощью Putty

  • Переходим в Shell, нажав кнопку 8 и Enter
  • Выполняем команду pkg. Скорее всего этот пакет у Вас не установлен и система попросит установить его. Соглашаемся, нажав y
    54
  • После успешной установки пакета pkg выполняем следующие команды:
    • pkg update
    • pkg install ipcad
      • Должно вылезти вот такое сообщение. Не обращаем на него внимания, потом мы всё это настроим, но немного иначе
        55
    • rehash
    • pkg install  bind-tools  (для того чтобы осуществлялась попытка разрешения IP адресов в URL)

Теперь нам надо немного подправить файл ipcad.conf что из архива с полезностями. Открываем его в блокноте, в секции "INTERFACE OPTIONS" найдите строку:

interface "em0" filter "ip and dst net 192.168.0.0/24 and not src net 10.0.0.0/8 and not 172.16.0.0/12 and not 192.168.0.0/16 and (not tcp or tcp and not src port 80)";

  • Здесь em0 - имя LAN интерфейса. В моём случае исправляем его на sge0. Если Вы забыли какой идентификатор у сетевой карты смотрящей в локалку, то зайдите в раздел Status -> Interfaces в WEB-интерфейсе pfSense.
  • 192.168.0.0/24 - сеть LAN интерфейса, я меняю её на свою локальную сеть, т.е. на 192.168.2.0/24
  • 80 (в конце строки) - порт, с которого пользователи получают трафик от прокси. Так как у нас прокси прозрачный, то порт остаётся восьмидесятым.

Эта строка предписывает ipcad собирать статистику пакетов попадающих в локальную сеть извне (из интернет) на LAN интерфейсе. При этом в статистику не попадают пакеты от Squid (т. е. те, порт источника которых равен, например, 80 в случае прозрачного прокси) т. к. Squid сам отразит их в своем логе. Также в статистику не попадают пакеты из других локальных сетей (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) если такой трафик проходит через pfSense. В случае если Squid не привязан к обсчитываемому интерфейсу, необходимо опустить последнюю часть строки: " and (not tcp or tcp and not src port 80)" - весь трафик будет считать ipcad.

Сохраняем изменения в файле и копируем его в папку /usr/local/etc, предварительно переименовать уже имеющийся такой файл в этой папке.

Теперь создайте каталог /var/ipcad. В нем будут находиться файлы ipcad.dump и ipcad.pid (их создавать не нужно).

Если у Вас существует несколько локальных сетевых интерфейсов, то можете писать их оба один под другим (как тут).

Если у Вас настроены VLAN`ы, то интерфейсы нужно писать в таком формате: interface rl0.101, где rl0 - родительский интерфейс для влана, 101 - номер влана. Свои интерфейсы можете посмотреть при помощи ifconfig -a

Запуск ipcad со стартом системы и поминутный запуск tolog.sh

Нам нужно сделать так чтобы ipcad запускался вместе с запуском системы, а скрипт tolog.sh запускался каждую минуту и дописывал данный в лог Squid'а.

  • Для этого идём в System -> Packages -> вкладка Available Packages и устанавливаем пакеты Shellcmd и Cron.
  • В разделе Services -> Shellcmd создайте новую команду:
    • Command: /usr/local/bin/ipcad -rds
    • Shellcmd Type: shellcmd

Теперь ipcad будет автоматически загружаться при старте системы. Чтобы не делать перезагрузку запустите ipcad сами, выполнив в Putty ту же самую команду: /usr/local/bin/ipcad -rds

Делаем поминутный запуск скрипта tolog.sh:

  • В разделе Services -> Cron создайте новое задание нажав на кнопочку с плюсиком, указываем параметры:
    • Minute, Hour, Day of the Month , Month of the Year и Day of the Week - везде ставим звёздочку *
    • User: root
    • Command: /usr/local/sbin/tolog.sh
  • Жмём Save

На одном форуме нашёл примечательное сообщение насчёт импорта данных из ipcad:

в ходе полугодового эксплуатации описаной системы дважды был косяк, заключайшийся в том, что когда раз в сутки сквид делает ротацию логов, скрипт, пишущий статистику ipcad успевал первым создать файл логов сквида, и создавал его от имени root, сквид потом пытался получить к своим логам доступ и обламывался, перезапускался и так до исправления.
решается проблема добавлением в скрипт tolog.sh в конце строчки с chown принудительно меняющей владельца файла на proxy

И вот интересно, в конце файла есть команда chown proxy:proxy /var/squid/logs/access.log, но вот вопрос: proxy-это какой-то встроенный пользователь pfSense или это имя компьютера на котором установлен pfSense? Самое интересное, что я как-то по воле случая присвоил имя именно proxy

7. Проверка работы

Прежде чем делать проверку, полазьте по интернету: по защищённым и незащищенным сайтам чтобы набрать статистику. И, не меньше чем через минуту, проверяйте логи.

С помощью WinSCP заходим в папку /var/squid/logs и открываем файл access.log. Матаем его в низ. Здесь у нас дописываются все обращения к интернету через прокси сервер:

56

То, чьё время с тремя нулями в конце, вставлено с помощью ipcad

Теперь идём в WEB-интерфейс Status -> Squid Proxy Reports -> вкладка Lightsquid Report.

57

Для генерации статистики по https я тупо залез на ютуб и включил видео плейлист.

Если в Вашем отчете нет 443-го порта, не расстраивайтесь, понажимайте на кнопочку Refresh Now, подождите минут 10 пока обновится статистика, всё будет.

В итоге мы видим исчерпывающую статистику использования интернета компьютером 192.168.2.3. Из минусов хочу отметить:

  • Отображение имени пользователя в виде #000 (?) (будем исправлять в последующих статьях...)
  • Отображение соединений по HTTPS отображаетя в виде IP-адресов, а если возможно разрешить его с помощью DNS, то в скобочках указывается разрешенное имя. Вроде бы неплохо, но контент идет зачастую с сайтов, чьи имена ни о чём не говорят, поэтому довольно проблемматично определить на каком же всё-таки сайте был пользователь

Вроде пока всё, жду комментариев...

P.S.: Если что-то не работает, попробуйте сделать перезагрузку

P.P.S.: После обновления до версии 2.3 была замечена проблема с отображением логов Squid. Решение здесь

При написании статьи использовались источники:

http://macrodmin.ru/2012/01/proksi-server-v-pfsense

http://www.pontin.ru/technical/linux/pfsense/pfsense-config

http://ru.doc.pfsense.org/index.php/Подсчет_трафика_с_помощью_Squid_и_ipcad_в_pfSense_2.2

https://toster.ru/q/270768#answer_726823

 

Содержание

(Просмотрено 43 666 раз, 5 раз за сегодня)
Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Комментариев к записи: 19

  1. Павел:

    Приветсвую!
    При запуске /usr/local/sbin/tolog.sh ругается
    ELF interpreter /libexec/ld-elf.so.1 not found
    Abort trap
    И логи в squid не скидываются. Не встречали такого и как исправить?

    • kna:

      Привет! Сам с таким не сталкивался. Гугл говорит что такое может возникнуть если в системе не установлены пакеты для запуска 32-битных приложений. Могу предположить что эта ошибка возникла на pfSense для amd64? Если не хотите заморачиваться и есть возможность - поставьте версию i386, там таких глюков точно нет. В противном случае надо искать каких пакетов не хватает и настраивать запуск 32х приложений, либо возможно редактировать как-то файл tolog.sh. Сейчас пока нет возможности этим заняться, но как будет время попробую решить Вашу проблему

      • Павел:

        Да, версия amd64)
        Уже настроил, под офис все, не хотелось бы все заново..
        Попробуй исправить, если что отпишусь.
        +За статьи по pfsense огромное спасибо)

        • akinp:

          Помогииитее! Та же проблема, долго настраивал, не хочу сносить( Дайте tolog.sh для amd64 🙁 Пожалуйста...

      • Евгений:

        Добрый день, решилась ли проблема с "ELF interpreter /libexec/ld-elf.so.1 not found Abort trap", и если решилась то как. Ставлю PfSense 2.4.1-RELEASE (amd64) и не отрабатывается tolog.sh

  2. Андрей:

    Добрый, день!
    Есть ли пакет ipcad для последней на данный момент версии pfsense 2.3? После обновления перестал работать сбор статистики в репозитории этого пакета теперь нет.

    Спасибо!

    • kna:

      Попробуйте в консоли выполнить команды pkg update, а затем pkg install ipcad. Возможно он сначала захочет обновить сам pkg, разрешите ему это сделать. Меня интересует что он скажет по поводу IPCAD?

      • Иван:

        pkg установлен изначально. Но Ipcad отсутствует в репозитории. "No packages available to install matching 'ipcad' have been found in the repositories"

  3. Андрей:

    после pkg install ipcad - Ответ пакет не найден. Pkg обновил.

  4. Андрей:

    если дословно : pkg: No pacakages avaliable to install matching 'ipcad' have been found in the repositories.

    • Александр:

      Здравствуйте! А решение вопроса было найдено? Если не секрет, так как у меня тоже пакет не обнаружен(

  5. kna:

    Вроде бы нашел решение проблемы, почитайте тут https://knasys.ru/проблема-squid-proxy-reports-pfsense-2-3/

  6. Aleksandr:

    Присоединяюсь к вопросу.
    Установил pfsense 2.3 а установить ipcad не могу. Отсутствует в репозитории.
    Поскорей бы в Packages его прикрутили, да упростили установку и настройку!

  7. Всем привет!
    Попробуйте установить так: https://forum.pfsense.org/index.php?topic=111722

  8. Попробуйте по этой инструкции, если не получается https://forum.pfsense.org/index.php?topic=117423.0

  9. alex_vag:

    Подскажите, как можно обновлять black листы для squidguard?
    Или, возможно из формировать самому?

  10. Денис:

    "Отображение имени пользователя в виде #000 (?) (будем исправлять в последующих статьях…)"
    Здравствуй! Только что настроил по твоему мануалу Lightsquid
    и у меня имена именно в таком виде...
    "Следующую статью" не нашел. Как исправить?

Оставить комментарий