Настройка интернет шлюза pfSense 2.1.5

Оцените материал
(0 голосов)

Любую Linux систему, после установки необходимо немного (а иногда и значительно) донастроить под свои нужны. Интернет-шлюз на основе pfSense не является исключением.

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

Будем считать, что pfSense уже установлен на нашем шлюзе и проведена первичная настройка (пример: Установка pfSense )

Теперь, чтобы шлюз полностью оправдывал своё назначение желательно добавить проксисервер для сбора кэша и уменьшения web трафика, а так же хороший инструмент анализа данных трафика (разумеется мы желаем знать любимые злачные места пользователей дабы пресечь напрасную трату рабочего времени :) Для наших целей будем использовать связку Squid + Lightsquid.

Установка Squid + Lightsquid

Устанавливаются из набора пакетов.

Переходим в раздел System -> Packages, открываем вкладку Available Packages

Устанавливаем squid (Stable 2.7.9 pkg v.4.3.3) и затем Lightsquid (RC1 1.8.2 pkg v.2.33)

Настраиваем squid:

Переходим в раздел Service-> Proxy server и проверяем значения

pfsense-squid

Настраиваем Lightsquid:

Status – Proxy Report, вкладка Settings

pfsense-lightsquid

Жмем кнопку Save, а потом RefreshFull

Статистика станет доступна на вкладке Lightsquid Report (по адресу: https://192.168.1.1/lightsquid/index.cgi )

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

Оптимальным для посчёта трафика по всем портам является IPCAD, который в свою очередь будет интегрировать свои данные в общий отчёт, формируемый в предыдущем пункте.

Установка ipcad

Для дальнейшей работы потребуется открыть к pfSense доступ по SSH. Для этого заходим в WEB-интерфейс в раздел System -> Advanced и устанавливаем галочку в пункте "Enable Secure Shell", после чего сохраняем конфигурацию.

Теперь воспользуемся для доступа к шлюзу по SSH программой WinSCP (с помощью неё мы одновременно получим доступ и к командной строке шлюзе и к его файловой системе). Для подключения вводим IP шлюза. После установки соединения принимаем новый сертификат безопасности и вводим логин root и пароль.

Скачиваем

и закачиваем в файловую систему шлюза в каталог /usr/bin и задаём ему права 0555. Данный файл потребуется для импорта статистики ipcad в общий отчёт.

После этого в WinSCP открываем кансоль (Commands - Open Terminal) и устанавливаем необходимый для работы пакет:

pkg_add -r compat6x-i386

и после этого устанавливаем собственно ipcad:

pkg_add -r ipcad

При использовании релиза Pfsense 2.1.5 установка compat6x не требуется.

Кроме того ipcad отсутствует в основном репозитории, поэтому для установки воспользуйтесь командой:

pkg_add -r ftp://ftp-archive.freebsd.org/pub/FreeBSD-Archive/old-releases/amd64/8.3-RELEASE/packages/Latest/ipcad.tbz

или

pkg_add -r ftp://ftp-archive.freebsd.org/pub/FreeBSD-Archive/old-releases/i386/8.3-RELEASE/packages/Latest/ipcad.tbz

в зависимости от релиза (32 или 64 - битного)

Конфигурирование ipcad.

Переходим в каталог /usr/local/etc и переименовываем файла ipcad.conf.default в ipcad.conf - это файл конфигурации.

Редактируем ipcad.conf:

  • В секции GLOBAL OPTIONS устанавливаем:

capture-ports enable;

  • В секции INTERFACE OPTIONS удаляем все строки interface не закрытые символом комментария # и вставляем на их место строку вида:

interface em1 filter "ip and dst net 192.168.1.0/24 and not src net 192.168.1.0/24 and not src port 80";

Здесь em1 - имя LAN интерфейса - то, что вы видите в GUI вашего pfSense (Status - Interfaces). Соответственно, 192.168.1.0/24 - наша LAN подсеть. 80 - порт, с которого пользователи получают http-трафик в случае прозрачного поркси - 80 (если непрозрачного прокси - значение Proxy port в Services - Proxy server - General GUI pfSense (по умолчанию - 3128).

Эта строка предписывает ipcad собирать статистику пакетов попадающих в локальную сеть извне (из интернет) на LAN-интерфейсе. При этом в статистику не должны попадать пакеты от squid т.к. он сам отразит их статистику в своем логе.

  • В подсекции aggregate <ip>/<masklen>... прописываем:

aggregate 192.168.1.0/24 strip 32; /* Don't aggregate internal range */
aggregate 0.0.0.0/0 strip 32; /* Don't! Aggregate external networks */

Таким образом прописываем нашу локальную подсеть и устанавливаем опцию strip в значение 32 - мы хотим знать все о каждом локальном IP. То же относится и к подсети 0.0.0.0/0 - хотим видеть каждый внешний IP.

  • Ниже в подсекции aggregate <port_range_start>[-<port_range_end>]... группируем порты, чтобы статистика не была переполнена портами схожими по назначению, но разными по номеру.

aggregate 3128 into 0;
aggregate 80-81 into 0;
aggregate 20-21 into 21;
aggregate 22-23 into 22;
aggregate 25 into 25;
aggregate 26-109 into 26;
aggregate 110 into 110;
aggregate 111-142 into 111;
aggregate 143 into 143;
aggregate 144-442 into 144;
aggregate 443 into 443;
aggregate 444-992 into 444;
aggregate 993 into 993;
aggregate 994 into 994;
aggregate 995 into 995;
aggregate 996-65535 into 65535;

  • Переходим в секцию RSH SERVER OPTIONS и приводим RSH access rules к следующему виду:

rsh root@127.0.0.1 admin; /* Can shutdown ipcad */
rsh root@127.0.0.1 backup; /* Can dump/restore/import accounting table */
rsh root@127.0.0.1; /* Can view and modify accounting tables */
rsh 127.0.0.1 view-only; /* Other users can view current tables */

  • В секции OTHER OPTIONS устанавливаем:

chroot=/var/log/ipcad;

memory_limit = 10m;

  • Сахраняем и закрываем файл ipcad.conf

В каталоге /var/log pfSense создаем подкаталог ipcad. В нем будут лежать ipcad.dump и ipcad.pid (их создавать не надо).

Перенос статистики ipcad в лог squid:

В каталоге /root pfSense создаем файл tolog.sh с првами 0755 и следующим содержимым:

 

rez2=""
iptoname ()
{
rez2=$1
REZ=$(/usr/bin/dig -x $1 +short)
if [ -z $REZ]
then
{
}
else
{
rez2=$REZ
}
fi
}
net="192.168.1"
ttime=`/usr/bin/rsh localhost sh ip acco | /usr/bin/grep 'Accounting data saved' | /usr/bin/awk '{print ($4)}'`
/usr/bin/rsh localhost clear ip accounting
/usr/bin/rsh localhost show ip accounting checkpoint | /usr/bin/grep $net > /root/tolog.txt
while read p1 p2 p3 p4 p5 p6 p7 p8
do
if [ "$p5" != "0" ]
then
rez2=""
iptoname "$p1"
echo "$ttime.000" 1 $p2 "TCP_MISS/200" $p4 "CONNECT" $rez2:"$p5 "-" "DIRECT/"$p1" -"" >>/var/squid/logs/access.log
else
fi
done < /root/tolog.txt
exit 0

Сверяемся с нашими значениями net подсети (192.168.1 в нвшем случае) и место хранения логов squid (в нашем случае /var/squid/logs/). Подсмотреть этот путь можно в поле Log store directory (Services - Proxy server - General) GUI pfSense.

Запуск ipcad и выгрузка логов:

Открываем для редактирования файл /cf/conf/config.xml. В самом начале, перед закрывающим тэгом </system> добавляем строчку:

<shellcmd>/usr/local/bin/ipcad -rds</shellcmd>

Это запуск ipcad при старте системы. Далее, ближе к концу файла находим конец секции </cron> и вставляем перед ним следующее:

<item>
<minute>*/1</minute>
<hour>*</hour>
<mday>*</mday>
<month>*</month>
<wday>*</wday>
<who>root</who>
<command>/root/tolog.sh</command>
</item>

Это поминутный сброс статистики ipcad в лог squid. Сохраняем и закрываем config.xml, удаляем файл /tmp/config.cache.


В общем-то это - все, перезагружаем pfSense!

В итоге получим нечто подобное:

lightsquid-ipcad

Использовался материал из статей:

http://ru.doc.pfsense.org

http://www.thin.kiev.ua

Комментарии  

Александр
0 # Александр 16.09.2015 08:25
Добрый день! Все сделал как описано в этой статье (у меня
2.1.5-RELEASE (i386)
built on Mon Aug 25 07:44:26 EDT 2014
FreeBSD 8.3-RELEASE-p16 )
Squid + Lightsquid стоит давно и отлично работает, логи lightsquid здесь (Log store directory) /var/sqid/log. все прописал как надо.
pkg_add -r ftp-archive.freebsd.org/.../.. .
установил. Но в логах новых соединений не появилось...
Ответить | Ответить с цитатой | Цитировать
pon
-1 # pon 16.09.2015 09:09
Помимо установки ipcad, его ещё нужно настроить. Так же настроить задание запуска выгрузки его логов. Собственно нужно выполнить всю статью до конца, иначе функционировать эта структура не будет так, как требуется.
Ответить | Ответить с цитатой | Цитировать
Алексей
+1 # Алексей 21.07.2015 20:19
Все получилось, спасибо. Вот только в отчетах вместо названий сайтов отображаются их ip адреса. В чем может быть дело?
Ответить | Ответить с цитатой | Цитировать
pon
0 # pon 27.07.2015 18:00
Если в логах присутствуют только IP адреса, то скачайте файл tolog.sh из статьи и закачайте его на шлюз
Ответить | Ответить с цитатой | Цитировать
un1
0 # un1 08.09.2015 23:55
Некоторые IP адреса не могут быть конвертированы в имя, так что совсем избавиться от них не удастся.
Ответить | Ответить с цитатой | Цитировать
Максим
0 # Максим 20.11.2014 12:10
Да, я использую 2.1.5-RELEASE (i386)
built on Mon Aug 25 07:44:26 EDT 2014
FreeBSD 8.3-RELEASE-p16

You are on the latest version.
Ответить | Ответить с цитатой | Цитировать
Юрий
+2 # Юрий 11.06.2015 04:46
Добавлю. Для правильно работы скрипта на pfsense необходимо установить пакет bind. Если используете pfsense 2.2.2, то в строчку:
REZ=$(/usr/bin/ dig -x $1 +short)

поправить на:
REZ=$(/usr/pbi/bin/dig -x $1 +short)
Ответить | Ответить с цитатой | Цитировать
un1
+3 # un1 08.09.2015 23:53
Автору спасибо за статью,
Были проблемы с скриптом tolog.sh, но
сейчас работает успешно в 2.2.4
нужен пакет: pkg install bind-tools
а так же для дистрибутива x64 нужен другой rsh www.dropbox.com/.../rsh?dl=0
Ответить | Ответить с цитатой | Цитировать
pon
-1 # pon 09.09.2015 09:31
На релизе 2.1 без проблем работает с тем, что в статье файлом rsh и на х86 и на х64 версиях.
Ответить | Ответить с цитатой | Цитировать
Максим
0 # Максим 19.11.2014 12:44
Вопрос как вы подключились через winSCP, у меня только putty конектится так как там сначала выходит выбор того чего мы хотим сделать после авторизации:
0) Logout (SSH only) 8) Shell
1) Assign Interfaces 9) pfTop
2) Set interface(s) IP address 10) Filter Logs
3) Reset webConfigurator password 11) Restart webConfigurator
4) Reset to factory defaults 12) pfSense Developer Shell
5) Reboot system 13) Upgrade from console
6) Halt system 14) Disable Secure Shell (sshd)
7) Ping host 15) Restore recent configuration
Ответить | Ответить с цитатой | Цитировать
pon
-2 # pon 19.11.2014 15:20
Для того, чтобы подключиться через winSCP не нужно выбирать ничего в терминале (непосредственн о на системе pfSense).
Нужно только, чтобы было разрешено подключение через SSH (это можно сделать через WEB-интерфейс).
Для подключения в winSCP указываем IP адрес pfSense и после удачного подключения - авторизуемся (вводим имя пользователя и пароль).
(чтобы было понятнее - подключение через winSCP происходит по сети по порту SSH)
Ответить | Ответить с цитатой | Цитировать
Максим
0 # Максим 20.11.2014 11:18
Да это понятно что по 22 порту, я переодически использую данный инструмент но он у меня отказывается коннектится к системе, авторизацию проходит но после этого вылетает с ошибкой коннекта.
Ответить | Ответить с цитатой | Цитировать
pon
0 # pon 20.11.2014 13:04
проверьте нет ли лишних (избыточных) изменений в настройках.
по идее достаточно только включенного Secure Shell Server, остальное лучше не трогать ...
Ответить | Ответить с цитатой | Цитировать
Anar
+2 # Anar 11.02.2015 16:08
Maksim: navernika ti na logina pisheh admin a nado pisat root...
Ответить | Ответить с цитатой | Цитировать
pon
0 # pon 11.02.2015 16:29
Думаю проблема как раз была в этом:)
Действительно - логиниться в winSCP нужно через root :)
Ответить | Ответить с цитатой | Цитировать
Яндекс.Метрика

По всем вопросам, связанным с сайтом просьба обращаться на e-mail: pontin@mail.ru