Версия для печати

Настройка интернет шлюза 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