Позднее Ctrl + ↑

отслеживаем подключения по 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

можно ли в synology создать один раздел на 2 устройства?

Собственно вопрос в заголовке, я понимаю, сейчас есть носители очень большой ёмкости и из них можно создать RAID тома запредельного размера, но все же. Мне было интересно возможно ли диски самого сервера и модуля расширения объединить в один том, на котором создать один раздел? ответ — можно.

Дальше делюсь опытом:
есть сервер RS4017xs+ и блок расширения RX1217rp, забитые под завязку дисками по 8Тб (7,3ТиБ);

на основном сервере существует пул хранения RAID5 из 15 дисков, 16 используется как Hot Spare, и том, растянутый на весь пул, радел с данными, как видно из скринов:

Обратите внимание, что пул создавался с поддержкой нескольких томов и было выбрано максимальное количество дисков в RAID массиве — 24, это важно, дальше станет понятно.

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

на изображении я уже добавил дисков и идет процесс расширения

процесс совсем не быстрый, занял около четырех дней

но оно стоило того, теперь доступный объем пула стал 167ТБ
и осталось растянуть том до максимального размера, а это заняло пару минут

Плюсы:

  • данные не пострадали
  • мы перешли границу одного сервера и создали единое пространство хранения
  • это можно сделать на «живой» машине

Минусы:

  • RAID5 может включать в себя максимум 24 диска
  • скорость работы тома ниже из-за ограничений соединения сервера и модуля расширения, но не менее 700 Мб/с, мы использовали для backup сервера, где скорость записи не критична, зато важен объем

В документации synology я не нашел однозначного ответа можно ли такое проворачивать с живыми данными, оказалось можно. Проверено, пользутесь.

отправка e-mail из командной строки

Потребовалось сделать рассылку напоминаний об оплате услуг, раз в месяц. Городить сложные скрипты не хотелось. Воспользовался протоколом SMTP и утилитой curl.

#!/bin/bash

# получаем прошлый месяц и год, название месяца на русском
past_month=$(LC_ALL=ru_RU.UTF-8 date -d "-1 month" +%B\ %Y)

# Отправляем письмо одной строкой через сервис яндекс
curl --url 'smtps://smtp.yandex.ru:465' --ssl-reqd --mail-from 'from@yandex.ru' --mail-rcpt 'to@gmail.com' --user 'from@yandex.ru:password' -T <(echo -e "From: encoded_sender_name <from@yandex.ru>\nTo: encoded_recipient_name <to@gmail.com>\nSubject: encoded_subject\n\nНапоминиание об оплате за $past_month!")

как работает:
в переменную $past_month получаем предыдущий месяц прописью и год, для этого включаем русскую локаль

следом отправляем письмо, авторизовавшись на сервере SMTP, используем подключение ssl, чтобы безопасно =) и построчно скармливаем команды серверу

encoded_sender_name, encoded_recipient_name и encoded_subject кодируйте, если используете не латинские символы https://en.wikipedia.org/wiki/MIME#Encoded-Word

 Нет комментариев    491   2021   bash   curl   SMTP
Ранее Ctrl + ↓