ServerAdmin.ru
28.8K subscribers
292 photos
34 videos
13 files
2.62K links
Авторская информация о системном администрировании.

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

Второй канал: @srv_admin_live
Сайт: serveradmin.ru
Download Telegram
Любопытный трюк подсмотрел, когда изучал документы от CIS. Если вы хотите гарантированно защититься от создания конкретного файла, то просто сделайте вместо него символьную ссылку в /dev/null.

Например, если вы хотите себя подстраховать и гарантированно запретить сохранение истории mysql команд при работе в консоли, сделайте символьную ссылку на дефолтное расположение файла с историей команд:

# ln -s /dev/null $HOME/.mysql_history

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

Мне бы сходу пришла другая идея — создать пустой файл с таким же именем и назначить ему такие права, чтобы никто не смог его изменять. Но какие-то сервисы могут вести себя не так, как ты ожидаешь. Например, не будут стартовать, либо рядом запишут копию файла с другим именем. Вариант с символьной ссылкой в /dev/null более прост и надёжен.

#bash #terminal
​​Настраивал на днях мониторинг Zabbix с помощью HTTP агента. Мне нужно было довольно часто делать проверки, чем чаще, тем лучше. Взял для начала интервал в 20 секунд. И тут же получил затык. Реально проверки выполнялись гораздо дольше с разбросом между 1-2 минутами.

Начал разбираться. Первым делом заподозрил нехватку HTTP Pollers. Прибавил сразу с запасом:
StartHTTPPollers=20
Это вообще никак не помогло. Оно и понятно. Это была первая и единственная HTTP проверка на тот момент.

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

💡И тут меня осенило. Зашёл и проверил очередь запросов в Zabbix — Администрирование ⇨ Очередь ⇨ Обзор очереди. А тут сотни запросов в ожидании от 30 секунд до 1 минуты. На сервере очень много simple check и icmp запросов. Нагрузку на сервер они особо не создают, поэтому не заметно, что их много и они тупят. Для этих проверок не критичны задержки, поэтому никто и не заметил, что они иногда не соблюдают заданный интервал.

Далее открыл стандартный дашборд Zabbix под названием Zabbix server health. На нём есть 2 нужных виджета: Utilization of data collectors и Queue size. На первом видно, каких именно обработчиков не хватает, чтобы не росла очередь. В моём случае это были poller data collector и icmp pinger data collector. Увеличил их количество в конфиге сервера:
StartPollers=25
StartPingers=10
и всё поехало как надо. Очередь рассосалась, HTTP агент стал работать точно в заданных интервал в 20 секунд.

#zabbix
​​Обработал несколько материалов на тему Nginx и подготовил универсальный конфиг с общими параметрами и некоторыми примерами настроек для виртуального хоста. Перед применением конфиг обязательно правится под ваш сервер. Нужно сделать некоторые подготовительные действия, чтобы на нём завестись. Как минимум, получить сертификаты, создать нужные директории, сгенерировать dhparam.pem, какие-то пути подправить и т.д.

https://pastebin.com/dHscS0Vi

Это компиляция из моих же настроек в постах про Nginx (1, 2). Настройки TLS частично подсмотрел в генераторе от Mozilla:
https://ssl-config.mozilla.org/

Также кое что посмотрел в генераторе конфигов от Digital Ocean:
https://www.digitalocean.com/community/tools/nginx

Проверил всё это дело на nginx playground:
https://nginx-playground.wizardzines.com

А также с помощью анализатора конфигов Nginx от Яндекса gixy:
https://github.com/yandex/gixy

Настройки TLS проверил тут:
https://www.ssllabs.com/ssltest

Параметры моего конфига поддерживают работу TLS 1.0 и 1.1. За это дают большой штраф. Можете отключить эти протоколы и соответствующие шифры, но тогда, к примеру, отвалятся все старые андроиды версии 4 и ниже. Смотрите сами, нужна ли вам поддержка максимального числа оборудования, или важнее соответствие современным протоколам безопасности.

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

📌 В завершении несколько полезных ссылок на мои материалы по теме Nginx:
Подробная установка и настройка Nginx с примерами
Автоматическое тестирование конфигурации Nginx
Правильный redirect 301 для SEO в Nginx
Nginx в качестве балансировщика нагрузки
Проксирование запросов в nginx с помощью proxy_pass
Сборка rpm пакета nginx с дополнительными модулями

#nginx #webserver
​​Занимался вчера перенастройкой 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