ServerAdmin.ru
26.6K subscribers
197 photos
24 videos
8 files
2.47K links
Авторская информация о системном администрировании.

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

Второй канал: @srv_admin_live
Сайт: serveradmin.ru
Download Telegram
​​Занимался вчера перенастройкой OpenVPN сервера. Потратил немало времени из-за маленького нюанса, про который забыл. Поделюсь информацией для тех, кто тоже использует OpenVPN. Всем остальным читать большого смысла нет.

Люблю OpenVPN Server за гибкость в настройках. У меня обычное дело, когда на небольшой виртуалке под VPN поднято несколько туннелей. Пример разделения.

1️⃣ В этот туннель заводим все устройства Mikrotik. Так как у них своеобразная реализация OpenVPN, для них приходится поднимать отдельный туннель со своими настройками.

2️⃣ Стандартный туннель на UDP для удалённых пользователей. Типовые настройки.

3️⃣ Тот же туннель, что и выше, только на 443 TCP порту для обхода некоторых ограничений.

4️⃣ Ещё один туннель для удалённых филиалов, только уже не на базе Mikrotik. Тут тоже свои настройки, маршруты и т.д.

Я обычно не боюсь сильно дробить абонентов по разным туннелям, так ими удобнее управлять. Главное сильно не переусложнить, иначе можно запутаться.

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

Начинаю всё проверять. Для начала проверил на всех сторонах firewall. Вроде всё правильно. Для надёжности включил логирование всех заблокированных пакетов, там моих пакетов нет. Из чего делаю вывод, что проблема в маршрутизации.

Смотрю внимательно на маршруты. Иногда это непростая задача, когда путь пакета длинный, особенно если проходит через несколько VPN, как было у меня. Хоть садись и схему пути рисуй, сопоставляя с маршрутами на каждом устройстве. Какое-то время не могу понять в чём проблема, но в итоге заметил.

Оказалось, что я ошибся в настройках туннелей и не полностью перенёс подсети, за которые отвечают абоненты из настроек одного туннеля в другой. Заметил это в маршрутах на сервере. Банально, подсеть 192.168.13.0/24 уехала на интерфейс tun4, а я её оставил в старом конфиге с tun2. В итоге OpenVPN все запросы отправлял в tun2 и они там пропадали.

Во время диагностики просто не обратил внимание на разные имена туннелей. Проверяю, что маршрут завёрнут в tun и на этом успокаиваюсь, ожидая, что OpenVPN сама разберётся в какой туннель отправить запрос. Но на самом деле нет. Надо аккуратно самому расписать, какой туннель за какую подсеть отвечает в конфигах сервера. В итоге всё перепроверил и аккуратно расписал все подсетки по своим туннелям. И трафик поехал как надо.

Я мало работал с другими реализациями VPN. Немного pptp делал, и на микротиках l2tp. На Linux всегда использую OpenVPN. Мне он нравится за простоту и удобство реализации. У каждого туннеля свой отдельный конфиг, где описаны все настройки и маршрутизация, относящаяся к этому туннелю. Удобно быстро оценить настройки, сделать копию туннеля, поменяв пару параметров. Можно по отдельности перезапускать туннели, не трогая остальные. При этом база пользователей со своими персональными сертификатами и настройками может быть общей для всех туннелей. Их можно спокойно перемещать между ними. Где-то ещё есть подобная реализация?

#openvpn
​​📱Прошлая публикация про софт на смартфоне собрала много комментариев. Решил их обработать и составить отдельный список наиболее полезных и популярных программ под android на основе ваших комментариев и своего списка.

Ссылки не стал вставлять, так как не все программы есть в магазине, и не все бесплатны. Но через поиск всё отлично находится (в основном на 4PDA,  F-Droid).

Termius — популярный SSH клиент. Программа платная, но есть бесплатная версия, достаточная для единоличного пользования. Поддерживает в том числе SFTP.
RD Client — RDP клиент от Microsoft. 
ProxMon — клиент для управления гипервизором Proxmox.
vSphere Mobile Client — мобильный клиент для vSphere.
MikroTik — приложение для управления Микротиками.
Tabbix — клиент для Zabbix Server. Маленькое, простое приложение, но кое-что посмотреть можно. Альтернатив для Zabbix не так много. Официального приложения нет, а веб интерфейс сервера не адаптирован под смартфоны.
VNC Viewer — vnc клиент.
OpenVPN Connect — openvpn клиент.

Wifiman — анализ Wifi сетей. Программа от Ubiquiti.
Network Analyzer — умеет анализировать wifi сети, пинговать, трассировать, сканировать порты, в том числе по ipv6. Помимо этого делает DNS и WHOIS проверки.
LanDroid — "швейцарский нож" сетевых утилит: отображение внешнего IP, DNS и IP lookup, Ping, TraceRoute, NetStat, PortScan, проверка IP по DNSBL (чёрные списки), инфа по MAC о вендоре, калькулятор IP, WakeOnLan, проверка SSL, поддержка IPv6.

Total Commander — популярный файловый менеджер.
X-plore File Manager — файловый менеджер с поддержкой SMB1/2, SSH, DLNA, облачных хранилищ (российских нет), FTP, WEBDAV.
Wi-Fi FTP-сервер — поднимает полноценный FTP на смартфоне.

KPass — просмотр паролей в файлах формата keepass.
Получи раскладку — клавиатура для ввода паролей из русских слов на английской раскладке.

Magicplan — используя датчики вашего аппарата и камеру для "захвата габаритов" помещения, вычисляет размеры и составляет план. Вообще не знал, что такие программы существуют.
Cams — простое приложение для воспроизведения RTSP потоков с IP камер.

Acrobits Softphone (Groundwire) — SIP клиент с поддержкой push.
Grandstream Wave (Lite) — SIP софтфон, нормально работает с Asterisk.
Aqua Mail — почтовый клиент. Хоть и не имеет отношения непосредственно к IT, но я сам тоже использую этот клиент для почты.

UptimeRobot — приложение от одноимённого сервиса мониторинга.
Linux Command Library — огромная база данных по командам, утилитам, однострочникам в Linux.
Tasker — выполнение действий по событиям или изменению состояния. Например, включить в 8 утра wifi и если обнаружилась домашняя сеть, выполнить синхронизацию данных.

Спасибо всем, кто поделился информацией.

#android
Открытый практикум DevOps by Rebrain: Ansible 101

Успевайте зарегистрироваться. Количество мест строго ограничено! Запись практикума “DevOps by Rebrain” в подарок за регистрацию!

👉 Регистрация

Время проведения:

21 Февраля (Вторник) в 20:00 по МСК

Программа практикума:

🔹Установка окружения
🔹Ad-hoc магия ansible
🔹Композиция playbook

Кто ведет?

Павел Фискович - Инженер с 2009 года. Мечтатель. Отец. He/him

Бесплатные практикумы по DevOps, Linux, Networks и Golang от REBRAIN каждую неделю. Подключайтесь!
Это не совсем мем, но довольно забавная ситуация, с которой столкнулся лично. Был в музее, посвящённому вооруженным силам России. Это стенд на тему войны в Афганистане и тематическому музыкальному сопровождению в рядах вооружённых сил того времени.

В деревянном ящике установлен планшет с некоторой информацией по данной теме, но он не работал. На экране информация об активации Windows. Я нажал на кнопку "Перейти к параметрам", открылись параметры и их сразу же перекрыл интерфейс программы с информацией, которая там должна быть всегда.

Таким вот нехитрым способом восстановил работу музейного инвентаря.

Дело, кстати, было в Туле, в одном из музеев Кремля. Отдельно хочу порекомендовать Тульский государственный музей оружия. Очень классный, современный музей. Рекомендую посетить тем, кто там не был. Тула — интересный город, его центр подвергся масштабной реконструкции совсем недавно. В том числе городской Кремль, набережная. Там интересно и красиво.

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

◽️snoopy — небольшая библиотека под Linux, которая может логировать не только команды пользователей, но многое другое. Например, команды системных процессов.
◽️log-user-session — программа, которая запускается вместо оболочки пользователя и пропускает через себя все его команды, записывая их в текстовый файл.
◽️PROMPT_COMMAND — логирование в текстовый файл с помощью встроенных возможностей оболочки bash.

Сейчас хочу рассказать о более серьезной программе, которая написана RedHat и интегрирована в их экосистему. Речь пойдёт про Tlog. Под остальные линуксы нужно будет самостоятельно собирать из исходников. Хотя я посмотрел в момент написания статьи, как дела обстоят в Debian, и заметил, что этот пакет в 12-й версии уже в ветке Testing. Так что со временем и для Debian должен появиться пакет.

Tlog умеет хранить сессии пользователей в текстовых файлах через rsyslog, в журнале systemd или в elasticsearch. Формат хранения — json, так что вручную такие логи смотреть не удобно. В комплекте с tlog есть утилита для воспроизведения сохранённой сессии. Причём можно как запись смотреть, так и в режиме реального времени. Если сессии хранятся локально, то за сеансом можно следить в соседней консоли, если в elasticsearch, то подключившись к нему. Посмотреть, как это выглядит на практике можно в демонстрационном ролике.

Tlog в RHEL или Centos, а также всех форках, интегрирован с SSSD и Cockpit. У redhat есть статья с описанием, как это реализовано. Если коротко, то ставим cockpit и tlog. Настраиваем в sssd запись сессии, назначаем группу, для которой она будет работать. Потом пользователей добавляем в эту группу и смотрим записи их сессий через веб интерфейс cockpit. Там это реализовано в виде плеера.

Поддержка elasticsearch реализована с помощью модуля omelasticsearch для rsyslog. То есть логи надо будет сначала в rsyslog положить, а потом он отправит их в elasticsearch. А встроенная поддержка этого дела заключается в том, что потом можно будет просматривать сессии, подключаясь напрямую в elasticsearch. Пример настройки и просмотра показан в репозитории.

В общем, если вам нужно централизованное решение для логирования пользовательских сессий, то Tlog будет лучшим вариантом. С настройкой придётся повозиться, но получится полноценное решение, основанное на пользователях и группах с помощью интеграции с FreeIPA через SSSD. Забыл сразу упомянуть об этом.

Сайт / Исходники / Настройка / Демонстрация

#security #ssh #linux
​​У мониторинга Zabbix до сих пор нет никакого официального решения по работе с мониторингом на смартфоне. И это странно для нашего времени, когда все стараются максимально адаптировать работу своих систем на смартфонах.

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

Рассказываю, что в принципе есть по этой теме.

📌 Приложение Tabbix от Tirgil. Есть бесплатная и платная версия. Я проверял только бесплатную. Тут более менее функциональный интерфейс. Можно посмотреть список хостов, активные триггеры конкретного хоста, его историю по событиям и содержимое метрик в текстовом и графическом виде. Это всё, что там есть. Можно добавить несколько серверов в программу. Сделано удобно, можно пользоваться.

📌 Приложение OneZabbix от Mahhaus. Бесплатное приложение. У него очень мало скачиваний и совсем нет отзывов, хотя приложение рабочее и довольно функциональное. При подключении к серверу сразу открывается список групп. При входе в группу отображаются основные метрики каждого хоста в виде небольших виджетов. В группе можно выбрать любой хост. При открытии хоста отображается импровизированный дашборд с графиками загрузки памяти, cpu, диска. В хосте можно посмотреть только графики самого хоста, не значения всех метрик из latest data. Весь остальной функционал при нажатии показывает сообщение, что будет реализовано в будущем. В настоящий момент приложение пригодно только для просмотра графиков и статуса хостов. Если бы всё нарисованное было реализовано, то приложение было бы лучшим.

📌 Приложение ZabbixITK от Илим-Телеком. По картинкам из описания и самого описания функционала выглядит неплохо. Последнее обновление 4 марта 2020 года. То есть приложение относительно свежее. Но у меня почему-то не заработало. Пишет, что не подходят учётные данные, либо неверный url. Проверял всё много раз, но так и не заработало. Жаль.

📌 Приложение Moobix 2.0 от BeOnUp. У него 5+ тыс. скачиваний на google play. Говорю сразу, не тратьте своё время на него. Приложение никакущее. Оно не умеет практически ничего. Через него можно посмотреть список хостов и их состояние (активен или нет), количество активных триггеров (только число, даже без названий и списка). Такое ощущение, что это вообще какой-то скам для сбора учёток от серверов. Не понимаю, какой смысл было делать подобное приложение.

📌 Есть ещё приложение IntelliMon Mobile for Zabbix, которое может работать в двух режимах. Либо бесплатный режим, но подключение к Zabbix серверу возможно через их собственный IntelliMon-Server, либо прямое подключению к Zabbix Server, но нужно купить платную версию. По описанию и картинкам видно, что это максимально функциональное приложение под android. Его написал премиум партнёр компании Zabbix. Так что если вам реально нужен хороший мобильный клиент, то это наиболее подходящий вариант. Стоит 1500 р. в год.

💡 Ну и в завершение расскажу про Unofficial Zabbix Agent. Это тоже приложение под Android, которое выполняет функцию агента. Можно поставить на смартфон и добавить на сервер. Список метрик будет сильно зависеть от того, рутирован аппарат или нет. Помимо традиционных системных метрик, можно снимать данные о положении аппарата по координатам gps, о заряде смартфона и многих других специфичных вещах. Полный список айтемов есть в описании в google play.

#zabbix #android
​​Расскажу вам про относительно старую, но не очень популярную в широких кругах систему мониторинга SAYMON. Сам я о ней краем уха слышал, так как периодически получал рекомендацию от читателей на эту систему, но не смотрел, потому что на сайте не было открытой ссылки на скачивание дистрибутива и не было цен. Меня это всегда останавливало.

SAYMON — российская разработка, которая включена в список отечественного ПО. Скачать её на самом деле не сложно. Достаточно в форму ввести свой email и на почту сразу же приходит прямая ссылка для скачивания без каких-либо проверок или доп. условий. По ссылке загружается ISO образ на базе Ubuntu, который автоматически разворачивается в готовую систему. В консоль севера вообще не надо заходить. Сразу после установки можно идти в веб интерфейс.

Систему я развернул у себя и немного изучил. В целом, она похожа на классические мониторинги типа Zabbix, Nagios и т.д. Ставится сервер с веб интерфейсом, метрики собираются от агентов, по snmp, делаются прямые проверки портов, icmp запросы, прямые запросы в базы данных и многое другое. Список источников для метрик там большой.

Я добавил Windows систему, установив на неё агент. После установки достаточно в конфиге указать адрес сервера и запустить службу. Больше ничего делать не надо. Агент сам идёт на сервер и регистрирует там себя. То есть разворачивать эту систему в автоматическом режиме максимально просто.

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

У вас есть хост, на нём какие-то проверки и метрики с данными. Зайдя в любую метрику вы сразу же можете указать, что превышение какого-то значения переводит хост в другое состояние (например, перегружен, остановлен, выключен и т.д.). Так же для конкретной метрики можно указать, какое действие будет выполнено при превышении порога. Это может быть оповещение в различные каналы связи, какое-то действие или скрипт, задача в Jira и т.д. То есть всё это можно гибко настроить для каждой конкретной метрики в настройках хоста. Это очень удобно.

Далее понравилась визуализация. Для каждого хоста можно настроить свой дашборд, на который можно вывести значения любых метрик в нескольких предложенных форматах, примерно как у Grafana. Каждый хост может иметь свой дашборд, при этом они все иерархически присутствуют в едином интерфейсе сервера. Очень удобно. Настраивать быстрее, проще и интуитивнее, чем у Zabbix или Grafana.

Все базовые настройки и проверки я сделал вообще не заглядывая в документацию. Основной функционал выглядит просто и интуитивно. Можно поставить и сразу что-то настроить.

Система SAYMON у меня оставила очень приятное впечатление. Под капотом большой стек современных технологий. Ядро системы на Java, хранение в MongoDB и OpenTSDB, кэш в Redis, очереди на Kafka, сервер данных на NodeJS. Цен на сайте нет, так что ничего не могу сказать. Есть возможность скачать бесплатную версию без ограничения срока действия по времени, но с лимитом в 400 объектов и 3 пользователей. В целом, это не мало. Добавив 2 агента с типовыми проверками и мониторинг доступности шлюза через icmp я получил 15 проверок. Где-то 50-60 агентов можно подключить, а если отключить какие-то ненужные проверки, то и больше.

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

Если кто-то использовал или использует у себя эту систему мониторинга, дайте обратную связь по ней.

Сайт / Реестр ПО

#мониторинг #отечественное
​​Существует популярный маркетплейс готовых приложений на базе Docker или образов виртуальных машин Bitnami. Это довольно известный сервис для тех, кто пользуется западными облачными провайдерами. Bitnami их партнёр и продаёт по подписке возможность работы со своими образами напрямую через сервисы провайдеров.

А все остальные могут совершенно бесплатно и свободно использовать их в своей работе, разворачивая в ручном режиме. Сразу возникает вопрос, а зачем это нужно? Всё просто. Bitnami берёт популярные наборы софта, пакует их в образы и поддерживает. То есть максимально быстро выпускает обновлённые версии образов.

Docker контейнеры Bitnami собраны на базе Debian. То есть это не кастратики по типу distroless, а более ли менее типовые контейнеры. Также они партнёры Docker, контейнеры подписаны доверенными цифровыми подписями. Докерфайлы всех контейнеров есть на github. То есть это контейнеры, которым можно доверять и использовать в продакшене.

Помимо контейнеров, есть готовые образы виртуальных машин в формате .ova для VirtualBox. Без проблем конвертируется в qcow2 или lvm с помощью qemu-img для запуска в Proxmox.

В каталоге много популярного софта. Так что если надо что-то посмотреть или потестировать, то можно смело брать и смотреть. В прод уже на своё усмотрение.

Сайт / Контейнеры / Виртуальные машины

#docker #devops
​​На днях рассказывал про Zabbix Agent для Android. Меня заинтересовала эта тема, поэтому решил разобраться, как он работает и попробовать самому.

Речь идёт про Unofficial Zabbix Agent:
https://play.google.com/store/apps/details?id=fr.damongeot.zabbixagent

Одного агента для мониторинга недостаточно. Нужен ещё шаблон. Нашёл его на github:
https://github.com/muutech/zabbix-templates/tree/master/ANDROID

Для мониторинга смартфонов более уместно использовать формат работы агента ACTIVE. Это когда он сам отправляет данные на Zabbix Server. Так что я взял шаблон UNOFFICIAL_ZABBIX_AGENT_ACTIVE.xml и попытался его загрузить на сервер. Это не получилось, потому что в шаблоне есть привязка к стандартному шаблону Template App Zabbix Active Agent. В версии 6.0 этот шаблон называется Template App Zabbix Agent Active. Я открыл шаблон текстовым редактором и просто изменил это имя. После этого шаблон успешно импортировался на сервер.

После этого взял старый нерутированный смартфон Xiaomi Redmi 4X, поставил на него из магазина Unofficial Zabbix Agent, и указал настройки — адрес и порт Zabbix Server. В итоге всё заработало. На скрине список айтемов, которые он поддерживает. По умолчанию никаких смартфоновских триггеров нет, кроме стандартных от шаблона zabbix agent, так что если они вам нужны, то нужно будет сделать отдельно.

Мне понравилась идея мониторинга смартфонов. Сразу придумал, что сделаю я. Смартфон, который я взял, используется дома для включения детям сказок. Очень часто бывает так, что он полностью разряжен и замечают это вечером, когда уже надо включать сказки. Сделаю триггер на заряд смартфона, чтобы не забывать его заряжать.

Надо только не забыть настроить работу агента в фоновом режиме, если вам нужно постоянно получать с него метрики. Не знаю, насколько сильно это будет высаживать батарею. Также нормально работает отправка GPS координат смартфона. То есть можно наколхозить свою карту с расположением смартфонов. Это может быть актуально для какого-то бизнеса.

Подобные мониторинги под ключ стоят немалых денег. Тут можно всё сделать бесплатно и довольно быстро. Не вижу особых проблем. Берём скрипт, забираем данные айтемов с координатами и через api загружаем их в инвентарь хоста-смартфона. Далее эти хосты наносим на карту и наблюдаем перемещение. Если кому-то это реально надо, обращайтесь. Думаю, я смогу это реализовать.

#zabbix
Расскажу про ситуацию, в которой я немного облажался. Случилась буквально на днях на одном из серверов мониторинга Zabbix.

Я всегда закрываю доступ ко всему, что не требуется выставлять в интернет. В данном случае с помощью веб сервера Nginx настраивается разрешение на доступ к веб интерфейсу только с разрешённых ip адресов. Для этого достаточно в секции server конфига Nginx добавить:

allow 1.1.1.1/32;
allow 2.2.2.2/32;
allow 3.3.3.3/32;
allow 127.0.0.1/32;
deny all;

И всё. Самый простой и быстрый способ. Но в какой-то момент мне нужно было настроить работу по https. Для этого надо было открыть доступ к виртуальному хосту, чтобы серверы let's encrypt смогли подтвердить доменное имя.

Для этого пришлось убрать запрет из секции server, добавить location для /.well-known, а запрет я повесил на корневой location /. И посчитал, что всё нормально. По идее всё и должно быть нормально. При обращении на адрес веб интерфейса zabbix получишь 404 ошибку.

На днях захожу в Zabbix и вижу сообщение, что недавно были неудачные попытки залогиниться. Как-то напрягся. Да ещё и IP адреса какие-то странные, вообще с другого конца света. Начал всё проверять. Ну нет доступа к веб интерфейсу. Проверил несколько раз, запрет настроен, по адресу сайта выдаёт 404.

Начал внимательно смотреть логи веб сервера. И реально вижу, на некоторые запросы с левых ip адресов ответ веб сервера 200. Присмотрелся на запросы и всё понял. Какой-то бот занимался перебором и периодически слал POST запросы на index.php. А для php в конфиге nginx выделен отдельный location. И для него я просто забыл поставить запрет на доступ. Я закрыл только location /, а location ~ \.php$ остался открытым. В итоге все прямые запросы на php скрипты проходили.

Исправил я это дело. Впредь буду внимательнее. Так часто бывает. Сначала настроишь, всё нормально. Потом надо быстренько что-то добавить или исправить. Делаешь исправление и что-то забываешь. С firewall так часто бывает. Первичная настройка обычно внимательно делается и проверяется, а потом уже быстро что-то добавляется, или временно, и забывается, или недостаточно проверяется. В итоге остаются дырки. В данном случае некритично, а сам Zabbix помог сразу закрыть дырку.

Вот сам конфиг виртуального хоста, если кому-то интересно:
https://pastebin.com/1pPz01m0

#zabbix
​​Опять сегодня тема про мониторинг Zabbix. Последнее время много им занимался. Сегодня речь пойдёт про софтовый рейд Mdadm. Я абсолютно всегда настраиваю его мониторинг, если он используется.

Давно уже наколхозил простенькую проверку статуса mdamd:
egrep -c "\[.*_.*\]" /proc/mdstat
И много лет использую её в Zabbix. Вопрос по мониторингу статуса массива mdamd она полностью решает.

Решил посмотреть что-то более удобное и функциональное. Нашёл репозиторий на github:

https://github.com/linuxsquad/zabbix_mdraid

Он хоть и старый, но полностью рабочий. Шаблон без проблем и каких-либо правок импортировал в Zabbix Server 6.0. Потестировал скрипт на сервере. Всё полностью рабочее. Главное, не забыть выдать пользователю zabbix через sudo разрешение на запуск скрипта, который обращается к /sbin/mdadm.

Шаблон удобен, с автообнаружением. Имеет 10 метрик, посмотреть их можно на картинке. Триггер один — на статус массива. Если он в состоянии degraded|resyncing|recovering|Not Started, будет оповещение.

В общем, решение рабочее, можно смело пользоваться.

#zabbix
​​Одна из самых популярных рубрик на канале это тема с консольными командами и однострочными bash скриптами. При этом всё самое интересное и полезное, чем сам пользуюсь, я уже публиковал, а повторяться не очень люблю. Тем не менее, аудитория постоянно растёт и меняется, и по вопросам в комментариях я вижу, что есть много людей, которые не читали мои старые публикации.

Решил сделать подборку наиболее популярных по сохранениям постов на тему консольных команд.

Обработка строк с помощью awk, sed, grep, cat
Анализ сетевых метрик сервера через консоль
Общий анализ нагрузки на систему по cpu и памяти
Анализ нагрузки на дисковую подсистему
Информация о железе через консоль
Работа с файлами (поиск дубликатов, рекурсивный листинг и т.д.)
Работа с файлами (правка конфигов, сравнение директорий и т.д.)
Анализ логов веб сервера
Конструктор для консольной команды find
Мои примеры поиска с помощью find
Примеры с утилитой grep
Работа с дисками и разделами
Примеры использования ps (processes status)
Анализ дисковой активности в Linux
Низкоуровневое профилирование нагрузки (perf и ftrace)
Использование date в скриптах

#bash #подборка
▶️ Посмотрел на днях интересное видео, которым хочу поделиться с вами.

Новое лицо OSINT. 20 полезных приемов поиска в цифровом мире
https://www.youtube.com/watch?v=Al_pCdEz7UA

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

Например, как раздать десятку людей один и тот же секретный документ без видимых различий, но при этом чтобы можно было легко понять, чей именно документ всплыл в публичном доступе? Ставим в каждой версии документа где-то один раз два пробела вместо одного, но у каждого в разных местах. Заметить обычному человеку такое трудно. А вот если ты знаешь, куда смотреть, то сразу поймешь, чей документ уплыл в сеть.

Там много таких необычных примеров, которые лежат на поверхности, но до них трудно догадаться. Он рассказал, как ловят наркоторговцев, как в 90-е на рынке чувак узнавал самые популярные товары по выброшенным коробкам на мусорке, как через boxberry можно было отслеживать посылки почти любого юр. лица и т.д.

В общем, мне было интересно и кое-где полезно. Информация для общего образования и расширения кругозора.

#разное
Прикольная картинка, которую я первый раз увидел в ролике на песню:

Научно-технический рэп - Надо было ставить линукс
https://www.youtube.com/watch?v=W87wOCSPA08

Вспомнил про неё, когда делал заметку про старый ноут для детей, куда я поставил Windows. Что тут, что в комментах в ВК, нашлись люди, которые стали говорить, что лучше поставить Linux и приучить детей к нему с детства.

Я с этой позицией не согласен. Считаю, что базу надо давать наиболее популярную и функциональную. А дальше уже смотреть по обстоятельствам. Я сам на Windows работаю, хотя были идеи перейти на Linux, но взвесив все за и против, отказался. Мне сейчас однозначно удобнее на Windows, где Linux тоже есть.

Да и какому линуксу учить детей? Они все разные. У меня у старшего в школе информатика. Там компьютерный класс и стоит Linux. Я спросил у админов, что за ОС. Они мне назвали какую-то сборку, про которую я вообще ни разу не слышал. Сразу забыл. Чисто для попила куплена в школы. И что мне дома ставить? Будут две разные системы? Придёт ребёнок в гости к кому-то и не поймет, как с компом обращаться, потому что там с вероятностью близкой к 100% будет Windows.

У меня сейчас все дети умеют взаимодействовать с компьютером (4,6,8 лет). Младшие могут обращаться с мышкой и клавиатурой, что-то делать в программе, типа paint, или играть в Minecraft. Старший почти полностью владеет компьютером. Сам открывает МЭШ, смотрит домашку, задания выполняет, ищет в поисковике что-то, использует переводчик, смотрит ютуб. Возможно он вообще с IT не будет связан, пока не вижу в нём стремлений к технике, в отличие от младшего.

Если появится какой-то популярный лидер среди Linux, с удовольствием его буду предлагать в том числе и детям. Но пока это не так. Сейчас Linux это зоопарк разных систем и графических оболочек. Это не подходит для массового использования домашних пользователей.

#мем
​​Одной из существенных проблем гипервизора HyperV является невозможность пробросить USB устройство в виртуальную машину.

Есть решение этой проблемы — open source проект usbipd-win. С его помощью можно пробросить USB устройство, подключенное к машине под управлением Windows в любую другую по сети, либо в локальный Linux, работающий по WSL2 (инструкция от microsoft).

На базе проекта usbip существует много различных продуктов. Конкретно usbipd-win это только сервер под Windows. Я начал с него, потому что он максимально просто устанавливается и настраивается. Можно через winget поставить:
> winget install usbipd
Либо скачать msi пакет из репы. Далее смотрим список подключенных устройств и публикуем одно из них:
> usbipd list
> usbipd bind --busid=4-3

Опубликованный с помощью этого сервера ключ можно подключить к Linux или Windows машине. Под Linux достаточно установить соответствующие пакеты с утилитой и модулем ядра. Для Debian вот эти:
# apt install usbip hwdata usbutils

После этого можно смотреть список опубликованных ключей и подключать один из них:
# usbip list --remote=10.20.1.56
# usbip attach -remote=10.20.1.56 --busid=4-3

Для подключения этих ключей в Windows, нужно установить Windows Agent. Взять его можно из другого репозитория usbip-win. Там есть инструкция по установке агента. Она немного замороченная, по сравнению с установкой сервера, но ничего особо сложного нет. Вопрос решаемый.

Точно так же можно публиковать USB устройства с Linux по сети на другие машины. Есть пакет сервера и под OpenWRT. Таким простым и бесплатным способом можно решить вопрос проброса USB ключей. Для HASP работает отлично. Заметку имеет смысл сохранить.

#windows #hyperv
​​▶️ На днях Zabbix выложили на канале некоторые записи с прошедшего митапа на английском языке. Я бегло посмотрел их все с субтитрами на 1,5 скорости. Наиболее полезным показалось выступление на тему оповещений и триггеров, поэтому решил сделать для вас небольшую выжимку по теме.

Alerting and escalation best practices
https://www.youtube.com/watch?v=7pBZj21N5Lo

Для того, чтобы эффективно работать с оповещениями стоит придерживаться некоторых простых и не всегда очевидных рекомендаций:

1️⃣ Всегда давайте осмысленные названия для триггеров. Лично я почти всегда в названии триггера где-то в начале использую макрос {HOST.NAME}, чтобы в заголовке оповещения сразу было указано имя хоста. Даже в стандартных шаблонах часто в заголовке триггера нет этой информации.

2️⃣ Используйте зависимости триггеров, чтобы избежать спама оповещений. Например, у вас филиал подключен по VPN и там много объектов мониторинга. Сделайте для этого филиала отдельные шаблоны, в которых пропишите зависимость всех триггеров от проверки статуса VPN соединения или просто наличия связи с этим филиалом простым пингом. Если VPN отвалился и связи с филиалом нет, то не должны сработать все остальные триггеры, что настроены для хостов филиалов. Если этого не сделать, то при обрыве связи вы получите спам оповещений, в которых сразу не понять, что именно случилось. Сразу дам тут совет. Интервал проверки связи должен быть существенно ниже, чем остальные метрики в этом филиале, чтобы обрыв связи был замечен раньше именно на том айтеме, к которому привязана зависимость.

3️⃣ Используйте отложенные уведомления. Я постоянно этим пользуюсь. К примеру, у вас постоянно срабатывает и отключается какой-то триггер. Например, на загрузку полосы в интернет, или на нагрузку по CPU. Она может на минуту вырасти, потом упасть. У вас будет оповещение о проблеме, и потом об её отмене. Есть два пути решения этой проблемы. Можно настроить оповещения так, что они будут приходить только через 5 минут, если проблема не решится сама собой. То есть загрузили весь канал в интернет на 2 минуты, сработал триггер, а потом отменился. Вы не получите оповещения, но в списке проблем отразится это событие. Иногда это бывает нужно. Второй способ — изменить триггер. Настроить его на сработку только если проблема длится не менее 5 минут. Тогда за 2 минуты загрузки канала вы не увидите оповещения, и не сработает триггер. Какой способ выбирать — решать по месту. Я и так, и так делаю. Чаще придерживаюсь подхода, что пусть оповещение не придёт, но в списке проблем она отразится. Это помогает потом разбор полётов делать.

4️⃣ Используйте не только оповещения, но и какие-то действия. Например, если упал веб сервер и за 30 минут никто из поддержки ничего не сделал, то хотя бы запустите скрипт, который сделает рестарт или запустит упавший сервис.

5️⃣ Делайте повторяющиеся уведомления для каких-то важных событий, пока они не будут решены. По умолчанию в Zabbix отправляется только одно оповещение в момент появления проблемы, в отличие от Nagios. Там меня помню всегда раздражали эти назойливые уведомления, которые не прекращались, пока проблема не будет решена.

6️⃣ Настройте отдельные оповещения для unsupported items. Какая-то проверка может тупо сломаться по той или иной причине. Например, формат данных изменился из-за ошибки, которую возвращает сервис вместо json строки. Айтем выключается, триггер соответственно тоже. В итоге проверка тупо не работает, а ты об этом не знаешь.

В видео ещё много советов и примеров было. Я прокомментировал те, что сам использую. Заметка подошла к лимиту по длине, поэтому завершаю. Если активно используете Zabbix, рекомендую следить за их каналом. Там много интересного выходит. Хоть большинство из того, что там вижу, лично я уже знаю, но всё равно что-то новое узнаю.

#zabbix #видео
​​Я настроил и потестировал любопытный сервис по отправке пушей с Android смартфона на Linux. В итоге, не понял, как это может пригодиться в том виде, в котором всё получилось. Но так как потратил время, всё настроил и разобрался, решил оформить в заметку, чтобы потом можно было воспользоваться, если понадобиться.

Мне в первую очередь хотелось настроить логирование пушей, но как оказалось, проект a2ln-server, который я использовал, не умеет это делать. Либо я не понял, как это настроить. Так и не нашёл самих логов, ни возможности их хранить.

Идея чтения пушей на компе простая. Ставится сервер на Linux и приложение на Android. Приложение подключается по TCP к серверу и отправляет пуши. То есть нужна сетевая связность между смартфоном и сервером. Для отображения пушей на Linux должна быть установлена какая-то графическая оболочка. Я пробовал на xfce под Debian 11.

Устанавливаем зависимости и сам сервер. С зависимостями долго разбирался сам, так как они явно не указаны, а при установке через pip автоматически не подтянулись. Пришлось самому по логам ошибок разбирать.
# apt install libgirepository1.0-dev libcairo2-dev \
gir1.2-notify-0.7 task-xfce-desktop
# python3 -m pip install a2ln
Запускаем сервер:
# a2ln

В консоли увидите адрес и порт, на котором запустился сервер. Теперь ставим на Android приложение Android 2 Linux Notifications. Запускаем его, выдаём соответствующие права. Делаем сопряжение с сервером по указанному адресу и порту. На этом всё. Можно отправить тестовое оповещение. Увидите его на компьютере.

Подобная шутка может быть удобна для тех, у кого рабочая машина на Linux. Можно не отвлекаться в течении дня на пуши смартфона, читая их за компьютером. Но нужно понимать, что хоть сервер и приложение это open source проекты и исходники все выложены, потенциально доступ к пушам небезопасен. Через него можно смски читать.

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

#linux #android
​​Заберите в закладки полезный репозиторий, в котором собраны всевозможные дефолтные учётные записи от оборудования.

Default Credentials Cheat Sheet
https://github.com/ihebski/DefaultCreds-cheat-sheet

Авторы написали целый сервис на python по поиску и экспорту данных, который можно поставить через pip. Но я не вижу во всём этом смысла. Есть табличка, где собраны в одном месте все учётные данные. Можно её открыть и поискать напрямую через браузер.

Я посмотрел некоторые учётки, с которыми недавно сталкивался. Все на месте. Например:

Mikrotik: admin / <пусто>
Supermicro IPMI: ADMIN / ADMIN
Dell iDRAC: root / calvin
Zabbix (web): Admin / zabbix

В общем, удобная штука. Вместо поисковика и запроса, типа zabbix default password, можно сразу эту табличку открывать.

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

На днях подготовил очередную подборку по бесплатным HelpDesk системам. Я давно на них делал обзоры, а тема актуальная. Ко мне часто обращаются и просят что-то посоветовать по этой теме.

Топ 10 бесплатных helpdesk систем

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

Топ 20 бесплатных систем мониторинга
Топ 12 бесплатных программ для бэкапа
Топ 10 программ для инвентаризации оборудования
Топ 10 бесплатных программ для удалённого доступа

В этих статьях перечислены наиболее известные и популярные программы. Так что если подбираете себе что-то, воспользуйтесь материалами. Сэкономите много времени. К каждой программе есть ссылка на обсуждение в группе. В комментариях много полезной информации, в том числе от тех, кто эти программы использует.

#подборка
​​Для тех, кто подбирает сервис для хранения заметок, который можно будет развернуть у себя, советую обратить внимание на проект Notea. Это попытка сделать open source копию Notion. Причём выглядит всё это весьма прилично и функционально.

Запускается Notea в Docker, так что никаких проблем с установкой и настройкой нет. Достаточно запустить и пользоваться. Данные она хранит в S3 хранилищах. Поддерживает бесплатный сервер Minio, который можно запустить тут же, локально, в пару команд.

Запуск Notea в Docker будет выглядеть примерно так:

# docker run -d \
 --name notea \
 -p 3000:3000 \
 -e STORE_ACCESS_KEY=minioadmin\
 -e STORE_SECRET_KEY=minioadmin \
 -e STORE_BUCKET=notea \
 -e STORE_END_POINT=http://localhost:9000 \
 -e STORE_FORCE_PATH_STYLE=true \
 -e PASSWORD=notea \
-e COOKIE_SECURE=false \
cinwell/notea

Minio можете тоже в Docker запустить:
# docker run -p 9000:9000 minio/minio server /data
После этого зайти в веб интерфейс и создать bucket для notea.

Я немного повозился, пока запустил всё это у себя. Предлагаю свой вариант docker-compose.yaml для быстрого запуска чтобы посмотреть на программу. Это именно тестовый запуск, потому что используется сеть host. Для запуска в прод замените её на отдельную сеть и отцепите от host, чтобы не было доступа к minio отовсюду. Забиндите его на localhost, если он только для notea будет.

version: '2'
services:
 notea:
  container_name: notea
  image: cinwell/notea
  ports:
   - '3000:3000'
  depends_on:
   - minio
  environment:
   - STORE_ACCESS_KEY=minio
   - STORE_SECRET_KEY=minio123
   - STORE_BUCKET=notea
   - PASSWORD=notea
   - STORE_END_POINT=http://10.20.1.16:9000
   - STORE_FORCE_PATH_STYLE= true
  restart: unless-stopped
  network_mode: "host"
 minio:
  image: minio/minio
  container_name: notea_minio
  ports:
   - '9000:9000'
   - '9001:9001'
  environment:
   - MINIO_ROOT_USER=minio
   - MINIO_ROOT_PASSWORD=minio123
  command: server /data
  volumes:
   - /mnt/minio:/data
  network_mode: "host"

Запускаем:
# docker-compose up

Идём в веб интерфейс minio http://10.20.1.16:9000 под учёткой minio / minio123, создаём бакет notea. Больше ничего делать не надо. Теперь идём в веб интерфейс notea - http://10.20.1.16:3000, используем указанный пароль notea. Можно тестировать.

В Notea редактор поддерживает разметку Markdown, есть удобные чек листы. Интерфейс выглядит минималистично и аккуратно, поддерживает смартфоны. Есть светлая и тёмная темы.

Мне в целом всё понравилось. Интерфейс приятный и отзывчивый. Работает шустро, выглядит аккуратно: списки, таблицы, картинки, цитаты и т.д. В общем, если подыскиваете себе self-hosted сервис для заметок, обратите на него внимание. Если сравнивать с Trillium Notes, то он более простой, лёгкий, быстрый, минималистичный. И не просит донаты на Ukrainian Army, что сами понимаете, в наше время немаловажный фактор.

Я сам так и остался на Joplin. Мне тупо лень на что-то другое переезжать и тратить своё время. Работает да и ладно. Обновление ноутбука отодвинуло тормоза программы от критического порога моего восприятия. Сейчас бы его не выбрал, если бы подбирал. Хотя стоит отдать ему должное, функционал у него нормальный, но мне не нравятся таблицы в нём и тормозная работа: запускается долго, иногда чуть подвисает, когда его из фона разворачиваешь. Ничего критичного, жить можно, но немного раздражает.

Исходники

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

Была задача мониторить состояние платёжных терминалов в распределённой торговой сети. Данные о них можно получать из API сервиса iikko. Основная сложность была в том, что токен для доступа к API выдаётся временный, его нужно постоянно обновлять. Я решил это следующим образом.

Взял обычный bash скрипт в котором получал токен к API iiko, а потом его с помощью API Zabbix сервера записывал в макрос соответствующего шаблона. Выглядит это примерно так:

#!/bin/sh

# Zabbix API token
ZTOKEN=204279d9d06bb9c7df0527107bef8e5d75b0f7e823a8dc6

# Get iiko token
ITOKEN=`curl -sk --location -X POST 'https://api-ru.iiko.services/api/1/access_token' \
-H 'Content-Type: application/json' \
--data-raw '{"apiLogin": "n8457fd4"}' | jq -r '.token'`

# Update macros
curl --location -X POST 'https://zb.server.ru/api_jsonrpc.php' \
-H 'Content-Type: application/json' \
--data-raw '{
  "jsonrpc": "2.0",
  "method": "template.update",
  "params": {
    "templateid": "10630",
    "macros": [
      {"macro": "{$TOKEN}","value": "'$ITOKEN'"},
      {"macro": "{$ID_ORG}","value": ""},
      {"macro": "{$ID_TERM}","value": ""}
    ]
  },
  "id": 1,
  "auth": "'$ZTOKEN'"
}'

Скрипт положил на Zabbix Server и запускал по CRON. Эту же задачу можно было бы решить более красиво через JavaScript сразу в шаблоне Zabbix. Он поддерживает такую обработку в айтеме. Но я не захотел тратить на это время. Если на bash я сразу понимаю, как сделать, то с JavaScript надо разбираться и отлаживать. Свободно программировать на нём я не умею.

Далее сделал шаблон с айтемами типа HTTP Agent, настроил заголовки аутентификации с макросом, куда записывается токен, и POST запросы на извлечение нужных данных. С помощью предобработки айтемов вычленил нужные мне данные. Использовал несколько шагов:
1. JsonPath для того, чтобы выбрать нужную строку с данными.
2. Обрезал квадратные скобки [ ], которые остаются от json строк.
3. Сделал преобразование значений true и false, которые приходят в ответ на запрос, в 1 и 0 соответственно, чтобы хранить в базе не строковые значения, а числовые.
Затем сделал простые триггеры на основе значения айтема.

Шаблон достаточно прикрепить к хосту, указать макросы {$ID_ORG} и {$ID_TERM}, которые соответствуют ID организации и терминала в системе iikko и мониторинг заработает.

Такая вот нетривиальная задача решается относительно просто с помощью Zabbix. Изначально думал, что придётся привлечь программистов, чтобы реализовать всю эту логику перед передачей данных в Zabbix. Была такая возможность. Но потом чуть повнимательнее посмотрел и понял, что можно всё это через Zabbix сделать практически штатным функционалом.

#zabbix