ServerAdmin.ru
28.1K subscribers
233 photos
26 videos
10 files
2.56K links
Авторская информация о системном администрировании.

Информация о рекламе: @srv_admin_reklama_bot
Автор: @zeroxzed

Второй канал: @srv_admin_live
Сайт: serveradmin.ru
Download Telegram
​​Существует не так много бесплатных продуктов по анализу трафика. Это в основном коммерческая ниша - NTA (network traffic analysis) с серьезными и дорогими решениями, интегрированными с системами информационной безопасности.

У меня на канале было пару заметок про бесплатные варианты:

Elastiflow
Ntopng

У этих бесплатных программ довольно скудный функционал. В этом плане приятно удивляет другой Open Source проект - Arkime, про который пойдёт речь далее. Это целостное функциональное решение с управлением через веб интерфейс.

Arkime умеет парсить трафик и складывать его в Elasticsearch. Там его удобно анализировать через веб-интерфейс. Плюс, он имеет интеграцию с Suricata, что позволяет связать из неё события с сессиями из статистики. И нетипичный для бесплатного продукта функционал - возможность работать с различными выборками и сигнатурами. Последнее как раз и делает подобные продукты востребованными в среде безопасников.

Установить Arkime очень просто. Есть готовые rpm/deb пакеты под популярные системы, так что даже с докером связываться не придётся. Достаточно скачать пакет и установить. Проверить, что все службы запущены и отправиться в веб интерфейс для настройки и работы с системой. Единственная проблема, для работы Arkime нужен пакет elasticsearch-7, а доступ к репозиторию с адресов РФ заблокирован. Так что нужно будет вручную это сделать, например, используя mirror.yandex.ru. Я так и поступил.

Ниже полная инструкция без пояснений для установки последней версии Arkime на Ubuntu 22.04.
# echo "deb [trusted=yes] https://mirror.yandex.ru/mirrors/elastic/7/ stable main" \
| sudo tee /etc/apt/sources.list.d/elastic-7.x.list
# apt update && apt install elasticsearch
# systemctl start elasticsearch.service
# wget https://s3.amazonaws.com/files.molo.ch/builds/ubuntu-22.04/arkime_4.0.2-1_amd64.deb
# dpkg -i arkime_4.0.2-1_amd64.deb
# /opt/arkime/bin/Configure
Указываем имена сетевых интерфейсов, которые будем парсить, от установки elasticsearch отказываемся.
# /opt/arkime/db/db.pl http://localhost:9200 init
# /opt/arkime/bin/arkime_add_user.sh admin "Admin User" THEPASSWORD --admin
# systemctl start arkimecapture.service
# systemctl start arkimeviewer.service

Идём в веб интерфейс http://212.193.52.150:8005 и логинимся под учёткой admin, THEPASSWORD. Если что-то не работает, то смотрите логи в /opt/arkime/logs. У меня всё получилось почти сразу. Немного с зависимостями разобрался, установил elasticsearch. Сначала не заработало, так как забыл инициализировать elasticsearch и добавить туда пользователя. Потом ещё раз внимательно почитал инструкцию и всё получилось.

Не забывайте, что для подобного рода программ нужно производительное железо, которое будет зависеть от объёмов трафика и глубины хранения.

🔥 Программа реально крутая. Мне неизвестно что-то подобное забесплатно. Поставил, развернул очень быстро. Отлично работает, трафик парсится, анализируется. Всё доступно через веб интерфейс. Меня часто спрашивали в комментариях рекомендацию на что-то подобное. Вот она и есть. Весь трафик сервера как на ладони.

Сайт / Исходники / Инструкция / Загрузка

#gateway #netflow
​​Расскажу про технологию, которую возможно не все знают. Речь пойдёт про port knocking, который я иногда использую. Это очень простой способ защитить подключение к какому-то сервису через интернет.

Суть метода в том, что разрешающее правило на firewall создаётся после поступления определённой последовательности пакетов. Чаще всего в качестве такой последовательности выбирают icmp пакеты определённой длины. Но совсем не обязательно ограничиваться только этим. Тут можно придумать любую последовательность и использовать различные порты, протоколы, tcp флаги и т.д.

Вот простейший пример реализации port knocking на Mikrotik.

add action=add-src-to-address-list \
address-list=winbox_remote \
address-list-timeout=30m \
chain=input comment="icmp port knocking" \
in-interface=ether1-wan packet-size=144 protocol=icmp

Создаём правило в firewall, которое будет на 30 минут добавлять в список winbox_remote все ip, откуда придёт пакет размером 144 байта по протоколу icmp.

Теперь разрешим всем ip адресам из этого списка подключаться по winbox:

add action=accept chain=input \
comment="accept winbox_remote" \
dst-port=8291 in-interface=ether1-wan \
protocol=tcp src-address-list=winbox_remote

Важно поставить эти два правила выше блокирующего правила для input. Теперь достаточно выполнить с любого устройства ping:

ping 1.2.3.4 -l 116 -n 1
(размер пакета ставим 116, потому что 28 байт добавит заголовок)

И роутер откроет доступ к tcp порту 8291, чтобы можно было подключиться по winbox. Через 30 минут адрес будет удалён из списка и новое подключение будет сделать невозможно. По такому же принципу, можно сделать и закрывающее правило. Поработали, отправили определённую последовательность и очистили список winbox_remote.

Таким простым и нехитрым способом можно очень надёжно прикрыть какой-то сервис. Например, тот же rdp. Достаточно настроить port knocking на шлюзе, а пользователю дать батник, который будет сначала пинговать, а потом подключаться. Причём можно использовать более сложную последовательность действий из нескольких шагов. Подобный пример описан в статье. Я его реально применяю очень давно.

В Linux реализацию port knocking тоже настроить не сложно. Есть готовый софт для этого. Например, knockd. При желании, можно и вручную написать правила для iptables, если хорошо разбираетесь в них. Реализаций может быть тоже великое множество, в том числе с использованием списков ipset или более современных nftables. Тема легко гуглится и решается.

#mikrotik #security #gateway
После публикации на тему port knocking один читатель поделился шикарной утилитой, с помощью которой можно похожим образом открывать доступ на основе HTTP запроса, что во многих случаях удобнее отправки пакетов. Программа называется labean. Автор русскоязычный, поэтому подобное название не случайно (кто не понял, читайте наоборот).

Идея подобного функционала у меня давно сидела в голове, но до реализации дело не дошло. А готовых инструментов я раньше не встречал и даже не слышал о них. Labean работает очень просто и эффективно. С его помощью можно выполнить любое действие при определённом http запросе. Например, обращаемся на url http://10.20.1.56/labean/tuktuk/ssh/on, а labean выполняет проброс порта на нужный сервер. То есть выполняет конкретное действие:

iptables -t nat -A PREROUTING -p tcp --dport 31004 -i ens18 \
-s 10.20.1.1 -j DNAT --to 10.30.51.4:22

Я проверил работу labean, очень понравился результат. Настраивается быстро и легко. Рассказываю по шагам.

Сначала собираем утилиту из исходников. Написана на GO.
# apt install golang git nginx
# git clone https://github.com/uprt/labean.git
# cd labean
# go build

Копируем бинарник, конфиг и systemd unit.
# cp labean /usr/sbin
# cp examples/labean.conf.ex /etc/labean.conf
# cp examples/labean.service.ex /etc/systemd/system/labean.service

Рисуем примерно такой конфиг:

{
 "listen": "127.0.0.1:8080",
 "url_prefix": "tuktuk",
 "external_ip": "10.20.1.56",
 "real_ip_header": "X-Real-IP",
 "allow_explicit_ips": true,
 "tasks": [
  {
   "name": "ssh",
   "timeout": 30,
   "on_command": "iptables -t nat -A PREROUTING -p tcp --dport 31004 -i ens18 -s {clientIP} -j DNAT --to 10.30.51.4:22",
   "off_command": "iptables -t nat -D PREROUTING -p tcp --dport 31004 -i ens18 -s {clientIP} -j DNAT --to 10.30.51.4:22"
  },
  {
   "name": "postfix",
   "timeout": 0,
   "on_command": "systemctl start postfix",
   "off_command": "systemctl stop postfix"
  }
  ]
}

Не буду все настройки описывать, можно в репозитории посмотреть. Я для теста сделал 2 сервиса и 2 разных действия для них. Первое действие добавляет правило в iptables, второе - запускает службу. Проверил оба примера, всё работает. Привожу для наглядности, чтобы вы понимали функционал. Labean может делать всё, что угодно, а не только правила firewall изменять.

Теперь для любого хоста, к которому мы будем обращаться, добавляем в конфиг nginx ещё один location. Я добавил прямо в default, чтобы по ip обращаться.

location ~ ^/labean/(.*) {
  proxy_set_header X-Real-IP $remote_addr;
  proxy_pass http://127.0.0.1:8080/$1;
}

При желании можно добавить basic auth и закрыть паролем.

Перечитываем службы systemd и запускаем:
# systemctl daemon-reload
# systemctl start nginx labean

Идём по урлу http://10.20.1.56/labean/tuktuk/ssh/on и смотрим результат:
{
 "commandLine": "iptables -t nat -A PREROUTING -p tcp --dport 31004 -i ens18 -s 10.20.1.1 -j DNAT --to 10.30.51.4:22",
 "returnCode": 0,
 "timeoutInSeconds": 30,
 "clientIp": "10.20.1.1"
}

Зайдём в консоль сервера и посмотрим правила iptables:
# iptables -L -v -n -t nat | grep 31004
  0   0 DNAT    tcp -- ens18 *    10.20.1.1      0.0.0.0/0      tcp dpt:31004 to:10.30.51.4:22

Через 30 секунд правило исчезнет. За это отвечает параметр timeout. Если поставить 0, то само удаляться не будет, и нужно будет вручную зайти на закрывающий урл - http://10.20.1.56/labean/tuktuk/ssh/off.

Как вы уже поняли, обращение к url http://10.20.1.56/labean/tuktuk/postfix/on и http://10.20.1.56/labean/tuktuk/postfix/off будет запускать и останавливать службу postfix. Дергать эти адреса можно как в браузере, так и через curl.

В документации заявлена ещё одна возможность через дополнительный аргумент ?ip=123.56.78.9 указывать для обработки различные ip адреса, но у меня почему-то сходу не заработало. Пока не разбирался.

Вот такая простая и удобная программа. Рекомендую обратить внимание. Я точно буду пользоваться, так как это очень удобно. Заметка получилось полной инструкцией.

#security #gateway
​​Думаю, многие знают про программный шлюза на базе Freebsd — pfSense. Он, мне кажется, безусловный лидер в этой нише с очень большой историей. У него есть клон, который отпочковался в 2015 году и получил название OPNsense. У этих продуктов первое время была какая-то война с дискредитацией друг друга, но в итоге закончилась.

У OPNSense более современный и функциональный веб интерфейс. Он и выглядит приятнее, и по факту более удобен в том числе компоновкой разделов. Особенно что касается обновления пакетов. Там всё очень подробно расписано по новым пакетам. Также удобен функционал поиска, который помогает быстрее найти нужные настройки. Да и банально, первый раз зайдя в интерфейс pfSense, вы вряд ли быстро найдёте раздел меню, перезагружающий или выключающий сервер. Он почему-то находится в Diagnostics.

Оба продукта на базе ОС Freebsd. Базовый функционал у них примерно одинаковый:
DNS Server;
DHCP Server, Relay;
NAT;
Zone based Firewall;
WAN Failover и load balancing, VLAN, WLAN;
VPN (OpenVPN, Ipsec и другие);
Web Proxy (squid), Netflow Exporter;
QoS;
HA кластер;
Логирование всех изменений и настроек. Возможность откатить их обратно.

OPNSense в целом более активно внедряет что-то новое, какие-то изменения. У него нет большого шлейфа поддержки старых версий и пакетов. PfSense в этом плане более консервативен, но и как следствие, более стабилен. В PfSense меньше плагинов, но в целом их качество выше, по сравнению с OPNSense, где их больше, но многие из них могут глючить или работать не так, как ожидается. Но каких-то критических проблем, которые бы вынуждали отказаться от OPNSense нет.

В мониторинге Zabbix есть шаблон для сбора метрик с обоих систем по SNMP.

Если присматриваете себе программный шлюз, то посмотрите обоих. Базовый функционал у них примерно одинаков, а различия не критичные, хоть и в некоторых случаях существенные. Например, OPNSense умеет автоматически складывать свои шифрованные бэкапы в Nextcloud. Поддержка этого реализована в веб интерфейсе и настраивается просто и быстро. Мелочь, но весьма приятная. В pfSense этого просто нет. Можно только вручную сохранить xml файл с настройками. Ну а про веб интерфейс я в начале уже сказал. У OPNsense он приятнее, логичнее и современнее.

Сайт / Исходники

#gateway
Вчерашняя заметка про OPNsense вызвала повышенную активность в комментариях. Решил немного подбить информацию по этой теме, чтобы было всё в одном месте.

Существует несколько условных категорий программных шлюзов, которые можно установить на своё железо.

🟢 Начнём со шлюзов на базе FreeBSD с веб интерфейсом.

PfSense — безусловный лидер всей этой отрасли шлюзов с веб интерфейсом. Несмотря на то, что ОС FreeBSD переживает не лучшие времена в плане развития и популярности, никаких проблем в самой pfSense с этим нет, если вы не используете какое-то специфическое железо. В виртуальных машинах популярных гипервизоров всё заводится без проблем.

OPNsense — форк pfSense с более интенсивным развитием и современным веб интерфейсом. У него есть некоторые замечания к работе, но в целом некритичные. Можно смело использовать, если понравится. Функционал примерно как у pfSense.

ИКС — отечественная разработка на базе FreeBSD. Это платный продукт. Включил его в эту подборку, потому что есть бесплатная версия для 9-ти устройств в сети. Мне нравится этот программный шлюз. Неплохо его знаю. Одно время использовал дома, но не захотелось держать железку постоянно включённой для него, удалил.

🟢 Шлюзы на базе Linux с веб интерфейсом. Основной их плюс в том, что там внутри более популярный и понятный линуксоидам (но не всем остальным людям) iptables.

IPFire — мне кажется, он наиболее известный и функциональный из линуксовых шлюзов. Я сам им немного пользовался. В настройке он проще, в функционале беднее, чем тот же pfSense. Но для простых случаев это может оказаться плюсом. В основе не популярный, как это обычно бывает в таких случаях, дистрибутив, а собственная сборка на базе ядра Linux.

ClearOS — ещё одна коммерческая система, но есть Community версия с ограниченным базовым функционалом, которого во многих случаях хватает за глаза. Эту систему я одно время активно использовал, потому что она была на базе CentOS. Когда у меня везде стояли CentOS, мне это было удобно. В своё время написал статью про неё, которая была популярной.

Endian — ещё один шлюз на базе CentOS с большой историей. Первый релиз был в 2009 году. Мне трудно про него сказать что-то конкретное, потому что сам его не разворачивал и никогда не видел. В РФ он как-то не снискал популярности и малоизвестен. По описанию с сайта плюс-минус всё то же самое, что у остальных. Есть как коммерческая, так и Community версия.

Zentyal — это не совсем шлюз, скорее сборка всё в одном для малого бизнеса. Позиционируют себя как замена AD и Exchange для небольших компаний. Базовый функционал шлюза тоже представлен (dns, dhcp, nat, firewall, vpn и т.д.). Есть платная и Community версия. Построен на базе Ubuntu.

Шлюзы без веб интерфейса, только CLI.

VyOS — безусловный лидер и вообще единственный известный мне шлюз с настройкой через CLI. Построен на базе Debian, синтаксис максимально приближён к JunOS. VyOS заточен исключительно под сетевые функции, которых у него максимальное количество из всех программных шлюзов. Это не только уровень шлюза для офиса или виртуальной инфраструктуры. Он подойдёт и для провайдеров. VyOS больше инструмент сетевых инженеров.

❗️Все шлюзы, которыми я управлял лично, настраивал сам на базе стандартных дистрибутивов. Благодаря этому очень быстро прокачал свои навыки в этой сфере и без проблем могу заходить в консоль всех описанных шлюзов, разбираться с проблемами, что-то править. Я понимаю как работу фаерволов, в том числе в FreeBSD, так и отдельных пакетов. Рекомендую начинать с этого. А потом уже выбирать какие-то готовые сборки для упрощения и экономии времени. Мои статьи по шлюзам на freebsd, centos, debian.

#подборка #gateway
​​Думаю, многие из вас знают такую компанию, как Sophos и её популярный продукт Sophos Firewall. Они продаются как отдельные устройства для монтажа в стойку, и как программные продукты для виртуальных машин. Я сам никогда не покупал и не настраивал их, но видел в одной компании подобный шлюз. Очень понравился своим функционалом.

Есть бесплатная версия Sophos Firewall Home Edition для домашних пользователей. Единственное ограничение — возможность использовать не более 4 процессорных ядер и 6 гигабайт оперативной памяти. Для очень многих ситуаций этого будет за глаза. Функционал сопоставим с коммерческой версией!

Основные возможности:
приоритизация трафика, двойной WAN
веб-фильтрация с контролем посещаемых сайтов по спискам, в том числе с использованием mitm.
графики использования, ограничения и квоты для различных пользователей
встроенный vpn сервер (разные реализации, в том числе openvpn)
антивирус для веб и почтового трафика

Я одно время не мог найти бесплатную версию на сайте. Думал, её убрали. Недавно решил ещё раз проверить и сразу нашёл. Скачать можно вот с этой страницы: https://www.sophos.com/en-us/free-tools/sophos-xg-firewall-home-edition Там нет проверки вводимых в форму данных. Можно написать всё, что угодно и сразу получить ссылку на скачивание. Но на почту придёт серийный номер, который нужен для активации продукта. Без него можно только триал на 30 дней запустить. Загрузка с IP адресов РФ заблокирована, я скачал через VPN. Это ограничение было и в 2020 году, не в 2022 появилось.

Я не буду подробно рассказывать про возможности этого файрвола, так как в интернете по нему очень много информации. Из бесплатных решений ничего лучше нет. Расплатиться придётся вероятностью того, что ваши данные будут куда-то сливаться. Продукт коммерческий и закрытый. Что он делает на самом деле, никак не узнать. Там встроенный антивирус, который не только сканирует весь трафик, но и регулярно обновляется.

Для тех, кто будет пробовать, подскажу несколько моментов. Первый сетевой интерфейс по умолчанию используется как LAN, второй как WAN. После установки через LAN интерфейс зайдите на https://172.16.16.16:4444, учётка admin / admin, в консоли она же используется.

#gateway
​​Среди бесплатных анализаторов трафика (NTA — network traffic analysis) наиболее известные и функциональные (Elastiflow и Arkime) используют в качестве базы для хранения информации тяжёлый elasticsearch, к репозиторию которого ещё и доступ для РФ закрыт, что создаёт дополнительные трудности.

Есть ещё один бесплатный аналог — Akvorado, который хранит данные в более легковесном хранилище clickhouse.

📌 Он умеет:
принимать данные через Netflow, IPFIX, sFlow;
насыщать данные по ip адресам geo информацией от сервиса MaxMind;
показывать статистику через веб интерфейс.

Посмотреть, как всё это работает, можно в публичном demo. Поиграйтесь там с фильтрами, чтобы понять, какую информацию сможете получить. В принципе, она типовая, так как во всех подобных продуктах используются стандартные потоки, типа Netflow. Развернуть продукт у себя тоже никаких проблем, так как есть готовый docker-compose. Можно сразу оценить, что там под капотом.

Автор — француз Vincent Bernat. По сути, это его личный проект, так что по идее, он не должен стать платным, как это происходит с подобными продуктами. Например, с Ntopng или с тем же Elastiflow. Последний вроде бы полностью бесплатным был, а сейчас уже с кучей ограничений.

Сайт / Исходники / Demo

#gateway #netflow
​​Могу посоветовать необычную связку для доступа извне к внутренним ресурсам без необходимости настройки VPN или программных клиентов. Всё будет работать через браузер. Подход нестандартный, но вполне рабочий. Я реализовывал лично на одиночном сервере для безопасного и простого доступа к виртуалкам.

Задача стояла настроить на Proxmox несколько виртуальных машин: Windows Server для работы с 1С, Debian для PostgreSQL + 1С сервер, Debian для локальных изолированных бэкапов. Плюс я добавил сюда одну служебную виртуалку для шлюза с iptables. Задача была максимально упростить доступ клиентов к 1С без дополнительных настроек, но при этом обезопасить его.

В итоге что я сделал. На служебной виртуалке, которая являлась шлюзом в интернет для остальных виртуальных машин, настроил связку:

1️⃣ Labean — простой сервис, который при обнаружении открытия определённого url на установленном рядом веб сервере, добавляет временное или постоянное правило в iptables. Для настройки надо уметь работать с iptables.

2️⃣ Apache Guacamole — шлюз удалённых подключений, через который с помощью браузера можно по RDP или SSH попасть на сервер.

Работает всё это очень просто. Пользователю отправляются две ссылки. При переходе по первой ссылке labean создаёт правило в iptables для ip адреса клиента, разрешающее ему подключиться к Apache Guacamole. А вторая ссылка ведёт к веб интерфейсу Apache Guacamole, куда пользователю открылся доступ. В Apache Guacamole настраивается учётка для каждого пользователя, где добавлены сервера, к которым ему можно подключаться.

Ссылки для labean настраиваются вручную с не словарными путями, которые невозможно подобрать. Нужно точно знать URL. В данном случае Apache Guacamole выступает для удобства подключения пользователей. Если они готовы настраивать себе клиенты RDP, то можно в labean настраивать сразу проброс по RDP. А можно и то и другое. И каждый сам решает, как он хочется зайти: через RDP клиент или через браузер. Работа в браузере накладывает свои ограничения и не всем подходит.

Вместо labean можно использовать port knocking или настроить HTTP доступ через nginx proxy, закрыв его basic auth. Лично мне реализация через url для labean кажется наиболее простой и удобной для конечного пользователя.

Разумеется, помимо labean, должен быть ещё какой-то путь попасть на эти сервера для управления. Белые списки IP или тот же VPN. Администратору, думаю, будет не трудно настроить себе VPN. Я, кстати, на данном сервере в том числе настроил и OpenVPN для тех, кто готов им пользоваться в обход описанной выше схемы.

#security #gateway #network
Существует отдельный класс файрволов - NGFW (Next Generation Firewall). Они либо работают в связке с IDPS (Intrusion Detection and Prevention System), либо включает её в себе. Если говорить простыми словами, то это файрвол, интегрированный с системой обнаружения и предотвращения вторжения.

Наиболее известный бесплатный представитель этого класса - Suricata. Она интегрирована в софтовые файрволы Pfsense, OPNsense, IPFire и некоторые российские продукты. Если не ошибаюсь, то в IDECO и ИКС тоже она. Но ниже речь пойдёт не о ней, а о Zenarmor. Это коммерческий продукт, у которого есть функциональная бесплатная версия.

Обратил на него внимание, потому что он интегрирован в OPNsense, легко и быстро устанавливается и настраивается. Я сделал это, проверил работу, всё получилось с первого раза. Сразу скажу, какие задачи умеет решать бесплатная версия Zenarmor:

▪️ Просмотр текущей сетевой активности в режиме реального времени. Видно, какой хост куда обращается. Во время просмотра можно настроить различные блокировки на уровне хоста, адреса или домена назначения, tcp портов.
▪️ Сбор сводной статистики по сетевой активности с возможностью экспорта.
▪️ Блокировка доступа по сформированным спискам сайтов или типам трафика. Можно заблокировать весь трафик voip или https. Можем заблокировать конкретный сайт vk.com или применить сразу готовый список с сайтами, относящимся к социальным сетям или другим категориям.
▪️ Zenarmor регулярно обновляет сигнатуры угроз со своих серверов и теоретически может их предотвращать. На практике я это не проверял, потому что не знаю как. По идее, он должен автоматически блокировать вредоносную активность вирусов.

Всю основную функциональность я проверил. Развернул по небольшому руководству из этого видео:

▶️ Установка Next Generation FireWall Zenarmor в OPNsense

Собственно, оно и было отправной точкой в этой теме. Установил OPNsense, далее плагин Zenarmor. Подключил тестовую машину с виндой к шлюзу и погонял трафик с неё. Настройка очень простая. В приведённом видео всё есть. Там же примеры возможностей, дашбордов, отчётов. Если вам нужны красивые картинки со статистикой для руководства, то это будет неплохим решением.

Все возможности бесплатной версии Zenarmor перечислены на странице со сравнением тарифных планов. Для использования у себя не нужны никакие регистрации. Просто ставим OPNsense и соответствующий плагин из интерфейса шлюза. На выходе получается более удобный и эффективный продукт, нежели существующая в pfsense связка на базе snort+suricata.

Сайт

#gateway #security