отслеживаем подключения по vpn на pfsense

Пандемия 2020 дала свои плоды: удаленная работа, массовое использование VPN. Конечно, любое руководство захочет контролировать удаленное подключение/отключение сотрудников. У себя в компании мы интегрировали VPN в пропускную систему создав виртуальный контроллер. Теперь отдел кадров видит кто посещал рабочее место зайдя в офис или подключался удаленно. Полностью расписывать весь механизм я не стану, лишь опубликую как можно организовать получение событий со шлюза на pfsense.

Для начала создаём сервер на ubuntu, например, виртуальный. Требования минимальны: 1 CPU, 256Мб памяти, 10Гб диск. Я щедро выделил 1Гб памяти и 100 Гб диска, вот что реально потребляет система:

Качаем минимальный дистрибутив в 74Мб http://archive.ubuntu.com/ubuntu/dists/focal/main/installer-amd64/current/legacy-images/netboot/mini.iso

устанавливаем syslog-ng

sudo apt update
sudo apt install syslog-ng

создаем конфиг /etc/syslog-ng/conf.d/external_log.conf

source s_udp {
    udp(port(514));
};
destination d_PFSENSE_VPN {
     program("/usr/bin/php /home/user/pfsense_vpn.php" );
};
filter f_PFSENSE_VPN {
    host("192.168.#.#");
    match(",l2tp," value ("MESSAGE"));
};
log {
    source(s_udp);
    filter(f_PFSENSE_VPN);
    destination(d_PFSENSE_VPN);
};
destination d_PFSENSE_OPENVPN {
     program("/usr/bin/php /home/user/pfsense_vpn.php" );
};
filter f_PFSENSE_OPENVPN {
    host("192.168.#.#");
    program("openvpn");
};
log {
    source(s_udp);
    filter(f_PFSENSE_OPENVPN);
    destination(d_PFSENSE_OPENVPN);
};

где 192.168.#.# — ip-адрес pfsense

перенаправим логи с pfsense на наш маленький сервер, здесь мы их будем парсить и обрабатывать как нам нужно

в моём примере, мы создаем два фильтра f_PFSENSE_VPN и f_PFSENSE_OPENVPN для того чтобы скриптом обрабатывать только события связанные с подключением и отключением по протоколам l2tp и OpenVPN (актуально для формата логов pfsense версии 2.5.1

есть два destination, но по сути они ссылаются на один и тот же скрипт d_PFSENSE_VPN и d_PFSENSE_OPENVPN

со стороны pfsense настраиваем пересылку логов на наш сервер

Status -> System Logs -> Settings

указываем ip-адрес и порт нашего сервера и ставим галочку «VPN Events (IPsec, OpenVPN, L2TP, PPPoE Server)», т. к. нам нужны только события удаленных подключений

с парсером, я думаю, вы справитесь, приведу пример логов для OpenVPN:
подключение

Jun 25 18:29:57 192.168.#.# openvpn: user ’user_name’ authenticated

отключение

Jun 25 18:57:34 192.168.#.# openvpn[16766]: user_name/132.252.198.166:6182 Connection reset, restarting [-1]

С l2tp еще проще:
подключение

Jun 25 18:29:57 192.168.#.# root: login,l2tp,192.168.111.#,user_name

отключение

Jun 25 18:57:34 192.168.#.# root: logout,l2tp,192.168.111.#,user_name

Поделиться
Отправить
Запинить
 1780   2021   l2tp   logging   openvpn   pfsense   syslog-ng   ubuntu   vpn   Логирование