{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "IT science: заметки с тегом pfsense",
    "_rss_description": "IT science — статьи и инструкции из мира IT",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/itscience.pro\/tags\/pfsense\/",
    "feed_url": "https:\/\/itscience.pro\/tags\/pfsense\/json\/",
    "icon": "https:\/\/itscience.pro\/pictures\/userpic\/userpic@2x.jpg?1658757154",
    "authors": [
        {
            "name": "IT science",
            "url": "https:\/\/itscience.pro\/",
            "avatar": "https:\/\/itscience.pro\/pictures\/userpic\/userpic@2x.jpg?1658757154"
        }
    ],
    "items": [
        {
            "id": "33",
            "url": "https:\/\/itscience.pro\/all\/otslezhivaem-podklyucheniya-po-vpn-na-pfsense\/",
            "title": "отслеживаем подключения по vpn на pfsense",
            "content_html": "<p>Пандемия 2020 дала свои плоды: удаленная работа, массовое использование VPN. Конечно, любое руководство захочет контролировать удаленное подключение\/отключение сотрудников. У себя в компании мы интегрировали VPN в пропускную систему создав виртуальный контроллер. Теперь отдел кадров видит кто посещал рабочее место зайдя в офис или подключался удаленно. Полностью расписывать весь механизм я не стану, лишь опубликую как можно организовать получение событий со шлюза на pfsense.<\/p>\n<p>Для начала создаём сервер на ubuntu, например, виртуальный. Требования минимальны: 1 CPU, 256Мб памяти, 10Гб диск. Я щедро выделил 1Гб памяти и 100 Гб диска, вот что реально потребляет система:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/itscience.pro\/pictures\/izobrazhenie_2021-04-21_112612.png\" width=\"644\" height=\"90\" alt=\"\" \/>\n<\/div>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/itscience.pro\/pictures\/izobrazhenie_2021-04-21_120015.png\" width=\"569\" height=\"164\" alt=\"\" \/>\n<\/div>\n<p>Качаем минимальный дистрибутив в 74Мб <a href=\"http:\/\/archive.ubuntu.com\/ubuntu\/dists\/focal\/main\/installer-amd64\/current\/legacy-images\/netboot\/mini.iso\">http:\/\/archive.ubuntu.com\/ubuntu\/dists\/focal\/main\/installer-amd64\/current\/legacy-images\/netboot\/mini.iso<\/a><\/p>\n<p>устанавливаем syslog-ng<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo apt update\nsudo apt install syslog-ng<\/code><\/pre><p>создаем конфиг \/etc\/syslog-ng\/conf.d\/external_log.conf<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">source s_udp {\n    udp(port(514));\n};\ndestination d_PFSENSE_VPN {\n     program(&quot;\/usr\/bin\/php \/home\/user\/pfsense_vpn.php&quot; );\n};\nfilter f_PFSENSE_VPN {\n    host(&quot;192.168.#.#&quot;);\n    match(&quot;,l2tp,&quot; value (&quot;MESSAGE&quot;));\n};\nlog {\n    source(s_udp);\n    filter(f_PFSENSE_VPN);\n    destination(d_PFSENSE_VPN);\n};\ndestination d_PFSENSE_OPENVPN {\n     program(&quot;\/usr\/bin\/php \/home\/user\/pfsense_vpn.php&quot; );\n};\nfilter f_PFSENSE_OPENVPN {\n    host(&quot;192.168.#.#&quot;);\n    program(&quot;openvpn&quot;);\n};\nlog {\n    source(s_udp);\n    filter(f_PFSENSE_OPENVPN);\n    destination(d_PFSENSE_OPENVPN);\n};<\/code><\/pre><p>где 192.168.#.# — ip-адрес pfsense<\/p>\n<p>перенаправим логи с pfsense на наш маленький сервер, здесь мы их будем парсить и обрабатывать как нам нужно<\/p>\n<p>в моём примере, мы создаем два фильтра <b>f_PFSENSE_VPN<\/b> и <b>f_PFSENSE_OPENVPN<\/b> для того чтобы скриптом обрабатывать только события связанные с подключением и отключением по протоколам l2tp и OpenVPN (актуально для формата логов pfsense версии 2.5.1<\/p>\n<p>есть два destination, но по сути они ссылаются на один и тот же скрипт <b>d_PFSENSE_VPN<\/b> и <b>d_PFSENSE_OPENVPN<\/b><\/p>\n<p>со стороны pfsense настраиваем пересылку логов на наш сервер<\/p>\n<p>Status -> System Logs -> Settings<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/itscience.pro\/pictures\/izobrazhenie_2021-04-21_114737.png\" width=\"800\" height=\"504.92957746479\" alt=\"\" \/>\n<\/div>\n<p>указываем ip-адрес и порт нашего сервера и ставим галочку «VPN Events (IPsec, OpenVPN, L2TP, PPPoE Server)», т. к. нам нужны только события удаленных подключений<\/p>\n<p>с парсером, я думаю, вы справитесь, приведу пример логов для OpenVPN:<br \/>\nподключение<\/p>\n<\/code><p>Jun 25 18:29:57 192.168.#.# openvpn: user ’user_name’ authenticated<\/p>\n<\/code><p>отключение<\/p>\n<\/code><p>Jun 25 18:57:34 192.168.#.# openvpn[16766]: user_name\/132.252.198.166:6182 Connection reset, restarting [-1]<\/p>\n<\/code><p>С l2tp еще проще:<br \/>\nподключение<\/p>\n<\/code><p>Jun 25 18:29:57 192.168.#.# root: login,l2tp,192.168.111.#,user_name<\/p>\n<\/code><p>отключение<\/p>\n<\/code><p>Jun 25 18:57:34 192.168.#.# root: logout,l2tp,192.168.111.#,user_name<\/p>\n<\/code>",
            "date_published": "2021-04-21T12:01:04+03:00",
            "date_modified": "2021-04-21T12:00:30+03:00",
            "tags": [
                "l2tp",
                "logging",
                "openvpn",
                "pfsense",
                "syslog-ng",
                "ubuntu",
                "vpn",
                "Логирование"
            ],
            "image": "https:\/\/itscience.pro\/pictures\/izobrazhenie_2021-04-21_112612.png",
            "_date_published_rfc2822": "Wed, 21 Apr 2021 12:01:04 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "33",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": [
                    "https:\/\/itscience.pro\/pictures\/izobrazhenie_2021-04-21_112612.png",
                    "https:\/\/itscience.pro\/pictures\/izobrazhenie_2021-04-21_120015.png",
                    "https:\/\/itscience.pro\/pictures\/izobrazhenie_2021-04-21_114737.png"
                ]
            }
        }
    ],
    "_e2_version": 4171,
    "_e2_ua_string": "Aegea 11.4 (v4171)"
}