ServerAdmin.ru
28.9K subscribers
303 photos
35 videos
13 files
2.63K links
Авторская информация о системном администрировании.

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

Второй канал: @srv_admin_live
Сайт: serveradmin.ru
Download Telegram
​​Примерно 3 года назад я рассказывал про хороший инструмент для бэкапа - Kopia. Это бесплатная кросс-платформенная система для бэкапов с управлением через веб интерфейс. С тех пор вышло много обновлений, продукт активно развивается и обрастает возможностями. Решил написать о нём ещё раз, чтобы напомнить и рассказать тем, кто не знаком с ним.

📌 Кратко перечислю основные возможности Kopia:

▪️ Кросс-платформенная система как на уровне агентов, так и сервера. Вы можете развернуть сервер с веб интерфейсом как на Linux, так и Windows или macOS. И бэкапить туда все поддерживаемые системы.
▪️ Поддержка различных бэкендов для организации архива с бэкапами. Даже если чего-то не хватает, то в качестве транспорта может выступать rclone, который поддерживает вообще всё, что только можно.
▪️ Есть в том числе поддержка CLI (консольного интерфейса), что позволяет очень гибко с помощью ключей задавать преднастройки для процесса архивирования.
▪️ Очень гибкая система хранения и управления бэкапами с помощью политик.
▪️ Веб интерфейс для настройки бэкапов и доступа к данным. При желании, можно всё делать через него. В консоль ходить не обязательно. Но при этом все настройки, сделанные в веб интерфейсе можно экспортировать в json конфиги и консольные ключи.
🔥 Поддержка инкрементных бэкапов, дедупликации, сжатия.
▪️ Есть возможность проводить регулярные проверки бэкапов на целостность.
▪️ В последний релиз завезли поддержку Volume Shadow Copy Service (VSS) под Windows.
▪️ Всё это написано на GO и работает быстро.

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

У Kopia немного необычная архитектура и принцип работы. Сейчас кратко расскажу, как там всё устроено. Клиент и сервер по сути одно и то же. Это всё один бинарник. Поставить в Debian можно так:

# curl -s https://kopia.io/signing-key \
| gpg --dearmor -o /etc/apt/keyrings/kopia-keyring.gpg
# echo "deb [signed-by=/etc/apt/keyrings/kopia-keyring.gpg] \ http://packages.kopia.io/apt/ stable main" \
| tee /etc/apt/sources.list.d/kopia.list
# apt update
# apt install kopia

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

# kopia server start --insecure --address="http://10.20.1.36:51515" \
--server-username="kopia" --server-password=kopia

Запустили kopia в режиме веб интерфейса. Идём на http://10.20.1.36:51515 и логинимся под указанной учёткой. Сразу добавляем репозиторий для хранения бэкапов. Например, локальную директорию /mnt/backup. После этого в разделе Snapshots мы можем добавить любой локальный каталог в качестве источника бэкапа. И там же через веб интерфейс настроить параметры бэкапа и политики хранения. Они сохранятся в репозитории.

После того, как мы настроили репозиторий и параметры бэкапа, его конфиг сохранился в /root/.config/kopia/repository.config. Теперь мы можем просто запускать команду для бэкапа в консоли. Примерно так для директории /var/log:

# kopia snapshot create /var/log

Будет создан очередной снэпшот директории. Посмотреть его можно будет в том числе через веб интерфейс.

Теперь мы можем установить kopia на любую другую машину. Если мы захотим складывать её бэкапы на тот же сервер, где мы ранее настроили репозиторий, то на него они будут попадать уже по sftp. Для этого можно так же запустить на новой машине веб интерфейс и добавить репозиторий уже не локальный, а sftp и указать параметры подключения по ssh. И далее так же делать снепшоты либо через веб интерфейс, либо локальной командой, которую можно запускать через cron или systemd.

При описанной схеме, все клиенты имеют полный доступ к репозиторию с бэкапами. Это самая простая настройка. Чтобы доступ ограничивать через acl, можно поднять Repository Server и подключаться через него.

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

#backup
​​Озадачился вопросом GUI клиента для S3 под Windows. Обычно у всех сервисов есть веб интерфейс, так что для разовых задач можно и им воспользоваться. Но локальным клиентом всё равно удобнее.

Быстро посмотрел в поиске и практически сразу же увидел, что WinSCP оказывается поддерживает S3. Я этой программой пользуюсь с незапамятных времён для подключений по SFTP, другие протоколы даже не смотрел. Для FTP привык к Total Commander, так что у меня эта связка очень давно. Посмотрел на свою портированную версию WinSCP, она от 2020 года. Обновил до свежей и попробовал.

WinSCP реально поддерживает S3 совместимые хранилища, хоть в настройках и указано, что протокол Amazon S3. Я подключился к хранилищу Selectel, просто указав s3.ru-1.storage.selcloud.ru и access key, secret key от сервисного пользователя с соответствующим доступом. Единственный нюанс был - надо включить Virtual-Hosted адресацию в конфигурации контейнера. Без этого хоть и подключался, но не мог в контейнеры заходить.

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

#s3
​​На базе Wireguard есть очень крутая, частично бесплатная, open source платформа для построения VPN сетей - netbird.io. Это платный SaaS сервис, который имеет бесплатный тарифный план, а так же бесплатную self-hosted версию. Расскажу кратко своими словами, что она из себя представляет и как работает.

Вы разворачиваете у себя серверную часть из пакетов или готового docker compose файла. Далее на любую популярную десктопную или мобильную систему устанавливаете агента. Причём установка максимально простая. Достаточно при установке указать url сервера и специальный ключ. Установленный агент появляется в панели управления сервером.

Теперь все настройки выполняются через веб интерфейс на сервере. Вы можете пользователей и подключенные сервера объединять в различные группы и настраивать политики доступа на уровне файрвола и маршрутов. Можно, к примеру, создать группу пользователей и группу тестовых серверов. И разрешить этим пользователям пинговать, подключаться по SSH и HTTP к этим серверам. И больше ничего. Настройки очень гибкие.

Если есть какое-то оборудование, куда нельзя установить агент netbird, но хочется управлять доступом к нему, можно для существующих клиентов VPN сети указать какой-то узел сети в качестве шлюза, через который они будут подключаться к целевой машине. А уже на ней настроить в файрволе конкретные разрешения для указанного шлюза. Для разных пользователей могут использоваться разные шлюзы и, соответственно, правила на файрволе.

Таким образом, с помощью netbird можно покрыть всю существующую инфраструктуру и централизованно управлять доступом. Причём политики доступа могут быть очень гибкие. Например, можно запретить подключаться клиентам с какой-то определённой версией системы. Например, Windows 7 или iOS, если у ваших сотрудников их нет вообще. То же самое можно делать по географическому признаку - запретить подключаться из каких-то стран.

Подключения между агентами устанавливаются напрямую, если это возможно. Если нет - используется технология STUN и TURN. Пиры VPN сети связаны между собой на базе Wireguard. Для тех, кто будет писать, что WG блокируют, сразу скажу, что это не инструмент для обхода блокировок. Не надо его пытаться использовать в этом ключе. Это система для построения mesh сети разнородных узлов с централизованным управлением доступа.

У Netbird нет собственной системы хранения учётных записей. Используется внешний IdP (identity provider). Это может быть Authentik, Keycloak или Zitadel. Для self-hosted установки есть готовый docker compose, где автоматически разворачивается Netbird в связке с Zitadel. Есть готовый bash скрипт для установки этой связки. Необходимо подготовить VPS с внешним IP и настроенной DNS записью. Далее просто запускаем:

# export NETBIRD_DOMAIN=netbird.example.com; curl -fsSL https://github.com/netbirdio/netbird/releases/latest/download/getting-started-with-zitadel.sh | bash

Подробно подобная установка и управление этой связкой описано в соответствующем разделе документации.

По возможностям Netbird очень сильно похож на Tailscale, только у последнего нет официального self-hosted сервера с подобной функциональностью. Тут мне что-то подсказывает, что со временем тоже не будет. Слишком хорош он в подобной редакции. Скорее всего по мере роста популярности, возможности self-hosted версии будут уменьшаться. Так же его можно сравнить с Netmaker или Nebula, но по возможностям и удобству он их превосходит.

Подробный обзор установки и использования Netbird можно посмотреть в свежем видео:

▶️ Install a self-hosted VPN platform // Netbird

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

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

#vpn #wireguard
▶️ Очень ностальгическая и откликающаяся песня, хоть и написана программистом для программистов из 90-х. Я только чуть-чуть захватил это время ещё школьником. У меня даже компа тогда не было, но были у друзей, у мамы на работе. Играл там в Wolfenstein под MS-DOS. Друг к ФИДО был подключен, иногда слушал его рассказы оттуда, не особо понимая, что это и зачем.

В школе информатика была на 286-х. Писали программы под Basic. До сих пор помню задания в духе дышащий летающий шарик. А чтобы он быстрее пролетел по экрану, нужно было жать кнопку Turbo на системнике.

В универе изучал и даже что-то писал на Ассемблере. Вообще, я по образованию математик-программист. И много всякого программирования изучал (С++ под Windows и Linux, Java, UML, что-то ещё). Диплом на php писал. Но что-то не зашло. Заинтересовал курс системного администрирования в университете, в итоге стал администратором.

Гимн программистов
https://www.youtube.com/watch?v=76wzB8-GB98

#юмор #музыка
🎮 Решил разобрать игры с этого канала по категориям. Не ожидал, что игр окажется так много. Мне кажется, получился самый большой сборник тематических игр, который я где-либо видел по теме IT.

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

📌 Игры Zachtronics:
SHENZHEN I/O – головоломка-симулятор программирования микроконтроллеров.
Opus Magnum – игра, где в качестве инженера-алхимика предстоит конструировать трансмутации.
SpaceChem – симулятор программиста на тему химии. Вам предстоит разрабатывать химический синтезатор для защиты колонии.
TIS-100 – условный симулятор программирования на ассемблере.
EXAPUNKS – в игре нужно будет учиться программировать, писать вирусы, взламывать системы.
Last Call BBS – игра эпохи начала 90-х, когда владельцы ПК звонили на BBS и таким образом обменивались контентом.

📌 Хакерская тематика:
Uplink – одна из лучших атмосферных игрушек из 2000-х на тему хакеров.
Hacknet – ещё один старенький симулятор хакера с реальным Unix терминалом.
Orwell: Keeping an Eye On You – в роли исследователя-безопасника нужно будет собирать информацию и разбираться в инцидентах.
ThreatGEN: Red vs. Blue – игра про хакинг в стиле пошаговой стратегии, есть онлайн режим с другими игроками.
Hack_me – игра про жизнь обычного хакера.
Grey Hack – многопользовательский симулятор хакера, игра в открытом мире с другими игроками.
Hack 'n' Slash – приключенческая пазл-игра о хакерстве, перепрограммировании свойств объектов, взломе глобальных переменных, настройке поведения существ.
Fate – очень реалистичный симулятор хакера с настоящим терминалом Unix.
Hack RUN – очередной симулятор хакера в духе Fate и Uplink.
Midnight Protocol – современный симулятор хакера в стиле пошаговой стратегии.
Mu Complex – игра в виде головоломки с реальной консолью Linux, надо взламывать системы, искать подсказки.
Hacktag – необычная игрушка на шпионскую и хакерскую тематику, которую надо проходить вдвоём.
Hackmud – многопользовательская игра, в которой сервера защищают различными логическими замками.
Hacker Simulator – современная 3D игра на тему хакера и его деятельности.

📌 Игры Luden.io:
while True: learn() – головоломка-симулятор на тему машинного обучения.
Learning Factory – выстраивание автоматизированной системы процессов на фабрике с применением машинного обучения, чтобы понять, чего хотят котики.
Craftomation 101 – программирование роботов на решение прикладных задач по колонизации планеты.

📌 Игры Wargames на основе взлома реальных систем:
Bandit – игра на тему взлома реальных сервисов в Linux.
Natas – взлом реального веб сайта и системы, на которой он работает.
Leviathan – простая и короткая игра в реальной консоли Linux.

📌 Обучающие:
Oh My Git! – open source игра для изучения GIT.
Vim Adventures – обучающая игра для работы в Vim.

📌 Программирование:
Else Heart.Break() – относительно современная атмосферная игра про программирование. Для игры не обязательно быть программистом.
Elevator Saga – программирование работы лифтов на JavaScript.
JOY OF PROGRAMMING – 3D симулятор на тему разработки программного обеспечения, где для игры нужно писать код на Python.
MHRD – игра про программирование железок в роли инженера.
Human Resource Machine – игра про программирование офисных сотрудников на решение различных задач. 
7 Billion Humans – продолжение программирования офисных сотрудников.
Screeps: World – многопользовательская real-time стратегия про программирование искусственного интеллекта юнитов на JavaScript.
Robocode – интеллектуальная игра для программистов, в которой нужно писать на Java или .NET.
Colobot – игра, где нужно создавать программы, в соответствии с которыми действуют роботы.

📌 Разное:
Factorio – симулятор автоматизации и построения конвейеров.
Startup Panic – симулятор IT бизнесмена-стартапера, который начинает путь с программирования в спальне своего нового продукта.
Подборка консольных игр в Linux

#игра #подборка
​​Если вам нужно измерять температуру в помещении, где есть компьютер и передавать на него данные, то могу порекомендовать самый простой и дешёвый вариант. В продаже есть usb термометры. Искать по ключевым словам "TEMPer USB" или "Temper2 thermometer usb".

Есть как в магазинах в РФ, так и на Aliexpress. Самые дешёвые варианты - обычные USB устройства без выносных датчиков и без железного корпуса с креплением. Можно подключать их через небольшие USB удлинители до 5-ти метров для измерения температуры воздуха. Есть варианты с выносными датчиками, которые в том числе можно помещать в жидкость. Либо крепить к трубам отопления, чтобы снимать температуру теплоносителя. Бюджетный вариант, если у вас нет никакой внешней автоматики на котле.

Каких-то особых настроек делать надо. Если использовать систему Windows, то достаточно воткнуть такой термометр в USB и запустить программу для снятия метрики. Например, бесплатную ThermoHID. Даже драйвера ставить не надо. Она сразу определяет термометр.

С Linux история сложнее, не намного Можно либо собрать вот эту прогу - TEMPered. Как всё это настроить и скрестить с Zabbix есть статья на хабре. Либо воспользоваться вот этим скриптом на Python. Для Prometheus есть temper-exporter.

Если знаете и использовали какие-то другие варианты, поделитесь в комментариях. Я первый раз такие термометры увидел в небольшой серверной. Потом себе купил один из них и использовал (на картинке сверху). Вчера перебирал свой ящик с различными девайсами и увидел его. Решил написать.

#железо
​​Один подписчик поделился со мной информацией о необычном и полезном программном продукте. Изначально он обратился ко мне с просьбой подсказать, какой веб сервер под Windows можно использовать для быстрого запуска локально с флешки размещённого там небольшого проекта. Первое, что мне пришло в голову - Caddy. Это максимально простой веб сервер, состоящий из одного бинарника на Go, который всю конфигурацию хранит в едином конфиге. Версия под Windows тоже есть.

Он в итоге нашёл для себя вариант ещё проще и лучше - Small HTTP server. Пошёл, посмотрел, что это такое. Очень заинтересовала программа. Раньше про неё не слышал. Она из далёкого прошлого. Написана изначально была под Windows 95 и NT, но развивается до сих пор. Свежий релиз от 24.03.24. Код, как я понял, написан на С++ и очень хорошо оптимизирован. Установщик занимает примерно 1 мегабайт (❗️). При этом программа имеет следующие возможности:

HTTP сервер. Поддерживает CGI и FastCGI интерфейсы для скриптов (запуск исполняемых файлов; Perl, PHP, и других внешних интерпретаторов), ISAPI (Internet Server API — API для веб-сервера IIS) интерфейс, виртуальные хосты и каталоги.

Почтовый сервер POP3 и SMTP. Анти-спам фильтры. Белый, чёрный, и серый списки общие для всех и персональные для каждого пользователя. Переотправка и возможности запускать скрипты для входящих сообщений. Запуск внешнего антивируса.

FTP сервер с виртуальными каталогами.

HTTP proxy сервер. Поддерживаются HTTP, FTP, HTTPS запросы
Сохранение большого объема трафика, быстрый доступ. Внутренняя докачка при разрывах соединения. Сервер может запрашивать сжатый контент и распаковывать ответ на лету (с использованием внешней Zlib библиотеке).

DNS сервер. 🔥Опция динамической проверки сервиса на удаленном хосту и если сервис не работает, автоматическая замена одного IP адреса на другой во всех запросах. Рекурсивный поиск имен от корневых DNS серверов или от DNS серверов провайдера. Кеширование. Опция автоматического ответа на запросы IPv6 адреса. (для сетей, не использующих Internet по IPv6). DNSBL сервер (работает совместно с SMTP). DNS через HTTP(S) известный как DoH (RFC8484).

DHCP сервер.

HTTP TLS VPN сервер и клиент! Используется OpenVPN Windows TAP драйвер. Описание, как это работает и для чего.

Всё это собрано под Windows и Linux, в том числе ARM. Для Debian есть готовый пакет. Хорошее решение для маломощных одноплатников.

По работе всех служб есть статистика в веб интерфейсе. Я попробовал работу на Windows. Всё работает чётко, запустил без каких-либо проблем. Конфигурация хранится в текстовом файле. Управлять можно как в нём, так и через интерфейс программы. Для запуска достаточно запустить экзешник. По умолчанию веб сервер работает в режиме листинга файлов директории, которая указана, как корень веб сервера. Можно настроить работу как служба.

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

Предлагаю автору накидать звёздочек в github и подписаться на Telegram канал. Думаю, ему будет приятно. Программа реально интересная и необычная. Не знаю, что за мотивация у человека столько лет её развивать и поддерживать.

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

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

#webserver #dns #dhcp #ftp
​​Запуская СУБД PostgreSQL в работу, необходимо в обязательном порядке выполнить хотя бы базовую начальную настройку, которая будет соответствовать количеству ядер и оперативной памяти сервера, а также профилю нагрузки. Это нетривиальная задача, так как там очень много нюансов, а тюнингом баз данных обычно занимаются отдельные специалисты - DBA (Database administrator).

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

https://pgconfigurator.cybertec.at
https://www.pgconfig.org

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

Отдельно отмечу, что если вы устанавливаете сборку СУБД PostgreSQL для 1C от компании PostgresPro, то там базовые оптимизации уже выполнены. Вы можете увидеть их в самом конце файла postgresql.conf. Там более 30-ти изменённых параметров. В этом случае использовать какие-то сторонние конфигураторы не стоит, так как настройки могут отличаться принципиально.

Например, для 1С в сборках PostgresPro неизменно установлен параметр:

max_parallel_workers_per_gather = 0

Я это проверил и на старом сервере 13-й версии и на более свежем 15-й. В общем случае в 0 его ставить не рекомендуется. Он и дефолтный не 0, и все оптимизаторы его не ставят в 0. Но для 1С рекомендуется именно 0. Я не знаю, в чём тут нюанс, а параметр это важный. Так что для 1С надо быть аккуратным при настройке PostgreSQL. Я из-за этого всегда использую сборки от PostgresPro. Там умные люди уже подумали над оптимизацией.

#postgresql
​​Существует известный сервис для поиска уязвимостей vulners.com. Он платный и относительно дорогой, но при этом есть как бесплатные закрытые сервисы, так и open source продукты, которые вы можете использовать у себя. Покажу несколько примеров бесплатного использования.

1️⃣ Допустим, вы хотите выполнить разовый аудит системы, чтобы быстро понять, какие есть уязвимости в установленных пакетах. Для этого идёте на страницу https://vulners.com/scanner/audit, выбираете слева в меню Manual Audit. Указываете свою версию системы и получаете команду для выгрузки информации о пакетах. Для Debian она будет такая:

# dpkg-query -W -f='${Status} ${Package} ${Version} ${Architecture}\n'|awk '($1 == "install") && ($2 == "ok") {print $4" "$5" "$6}'

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

Я удивился 10-ти бальной уязвимости по CVSS у tar от 2005 года (CVE-2005-2541). Суть её в том, что tar не информирует пользователя о том, что при извлечении файла у него могут стоять такие setuid и setgid, что сделает возможным запуск файлов с правами суперпользователя, если извлечение было выполнено из под него. На что в security-tracker дебиана разработчики дистрибутива ответили, что это его штатная возможность, в конце концов он же архиватор и поступает так, как ему указывают, ведь надо явно указать ключ -p.

2️⃣ Есть вариант проверять систему на уязвимости автоматически с помощью Agent Scanner. Для этого надо зарегистрироваться в системе и получить API для агента. Бесплатный тарифный план позволяет использовать до 10-ти агентов. Не знаю, насколько сейчас это актуально в рамках всевозможных санкций и блокировок. Я бы ставить не стал.

3️⃣ У vulners.com есть open source скрипт для nmap, который автоматически показывает уязвимости у обнаруженных служб. Вот это реально полезная штука, которая бесплатна, и её удобно использовать. Делается это так. Ставим nmap и клонируем себе репозиторий:

# apt install nmap
# git clone https://github.com/vulnersCom/nmap-vulners

В директорию ~/.nmap/scripts (если нет, создайте) скопируйте файл из репозитория vulners.nse. Теперь обновите базу данных:

# nmap --script-updatedb

Можно сканировать хосты с использованием базы данных vulners:

# nmap -sV --script vulners 192.168.13.15/32

Результат работы на картинке снизу.

4️⃣ У этого сервиса есть интеграция с Zabbix. Описание и все скрипты есть в отдельном репозитории. Эта штука когда-то работала. Я её пробовал. Некоторый лимит запросов есть через бесплатную учётку. Но работает всё так себе. Поддержки почти нет, с новыми версиями Zabbix сервера, где поменялся API, уже не работает. Когда обновят и будут ли - неизвестно. Так что не тратьте своё время, если вдруг надумаете посмотреть. Идея в целом неплохая, но поддерживать всё это хлопотно в том виде, как оно сделано.

#security #nmap
​​Вчера рассказал про сервис vulnersCom и кратко упомянул про его интеграцию с nmap. Сегодня хочу немного расширить эту тему. У компании cloudflare в их github репозитории есть небольшой продукт на основе nmap и скрипта vulners.nse - Flan. Он ничего особенного не делает, кроме небольшой автоматизации по передачи списка ip адресов для сканирования. Плюс, поддерживает разные форматы вывода результатов: html, json, xml, markdown. Также он умеет складывать результаты тестов в GCS Bucket или AWS S3 Bucket.

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

Клонируем к себе репозиторий:

# git clone https://github.com/cloudflare/flan

Для того, чтобы понять, что тут будет происходить, достаточно посмотреть файлы Dockerfile и Makefile. Первый содержит простую инструкцию по сборке своего контейнера с nmap и скриптом nmap-vulners на борту. Дополнительно он копирует в контейнер python скрипты для поддержи различных форматов вывода.

Так что запуск сканирования выглядит следующим образом. Готовим список IP адресов в файле shared/ips.txt. Одиночные IP адреса нужно указывать без маски /32. Потом собираем контейнер. Все команды уже прописаны в Makefile, поэтому запускаем через него:

# make build

Чтобы всё получилось, Docker и make у вас должны стоять в системе. Если нет, то поставьте:

# curl -o - https://get.docker.com | bash -
# apt install make

Когда соберётся образ, можно запускать сканирование:

# make start

Результат будет выведен в консоль. Чтобы вывести его в html файл для удобного просмотра, запускаем так:

# make html

Результат будет в директории shared/reports. Можно запустить веб сервер, чтобы быстро посмотреть html файлы:

# cd ~/flan/shared/reports
# python3 -m http.server 80

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

Если не уважаете Docker, можете запускать без него. В Dockerfile всё показано, что надо сделать, для локального запуска. Надо поставить несколько пакетов, python модулей, забрать скрипты pthon и запускать run.sh.

Отдельно в репозитории рассказано, как всё это сканирование запускать в Kubernetes для проверки контейнеров.

#security #nmap
​​🎓 Не так давно известная обучающая платформа KodeKloud выпустила обновление своей бесплатной геймифицированной платформы для обучения системных администраторов и devops инженеров - engineer.kodekloud.com. Для тех, кто не знает, что это такое, поясню. Ранее я уже рассказывал об этой платформе, но было это несколько лет назад. С тех пор она прилично изменилась.

В KodeKloud Engineer вы регистрируетесь и начинаете работу в условной компании xFusionCorp, которая ведёт веб проект Nautilus. Регистрация бесплатная. Не нужны никакие подтверждения телефона и кредитки. Каждый день вы будете получать по одному новому заданию для решения какой-то задачи.

После регистрации зайдите сразу в раздел Project Details и посмотрите обзорное видео, где вам на индусском английском расскажут, как тут всё устроено. Можно послушать с переводом в Яндекс.Браузере. Будет всё понятно. Там же посмотрите схему всего проекта. В разделе Wiki откроется страница с текстовым описанием инфраструктуры, где в том числе будут перечислены все сервера, их ip адреса и учётные записи для подключения. Все подключения осуществляются через jumphost.

Когда всё посмотрите, можно выбирать один из проектов для прохождения. Отмечу, что обучения внутри платформы нет. Подразумевается, что вы сами будете искать решения задач. На начальном этапе задачи простые. Решать их нужно в реальной консоли Linux, которая будет открываться для каждой отдельной задачи.

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

Помимо проекта Linux, там присутствуют задачи на тему Ansible, Docker, Kubernetes, Git, Jenkins. В бесплатном тарифном плане одновременно могут быть активны 2 проекта с заданиями.

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

Вообще, KodeKloud в основном платформа для продажи курсов. Всё остальное это маркетинг вокруг них. Курсы есть в том числе и бесплатные, с площадками для прохождения на реальных системах. Так называемые Playgrounds. Посмотрите, там много всего интересного.

Вот примеры бесплатных курсов:
Linux Challenges
Shell Scripts for Beginners
Advanced Bash Scripting
Linux Professional Institute LPIC-1 Exam 101
Terraform Challenges
Docker Training Course for the Absolute Beginner
И т.д. Курсов много, с теорией, видео, лабораториями.

#обучение
​​Западные блокировки в интернете добавляют лишнюю суету в повседневную работу. Я вам покажу очень простой и быстрый способ, как их обходить на примере загрузки и запуска продуктов elastic. Как известно, с территории РФ их скачать невозможно, как и воспользоваться репозиторием docker образов.

Для этого нам понадобится любая VPS и доступ к ней по SSH. Главное, чтобы с неё ничего не блокировалось. Ставим туда локальную прокси privoxy:

# apt install privoxy

Больше можно ничего не настраивать. Нам подойдут настройки по умолчанию. Прокси сама запустится на локальном интерфейсе 127.0.0.1:8118. Можно тут её оставить на постоянную работу.

Теперь идём на сервер, куда мы хотим установить elasticsearch. Если мы просто попытаемся скачать пакет, у нас ничего не выйдет:

# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.13.2-amd64.deb
HTTP request sent, awaiting response... 403 Forbidden

Доступ заблокирован. Подключимся по SSH к серверу с privoxy и пробросим её порт 8118 локально на машину на порт 3128:

# ssh -L 3128:localhost:8118 root@1.2.3.4

Проверяем, что порт проброшен:

# ss -tulnp | grep 3128
tcp  LISTEN 0   128    127.0.0.1:3128    0.0.0.0:*  users:(("ssh",pid=1350,fd=5))

Теперь сделаем так, чтобы wget работал через прокси. Для этого рисуем конфиг ~/.wgetrc:

use_proxy=yes
http_proxy=127.0.0.1:3128
https_proxy=127.0.0.1:3128

И снова скачиваем пакет. Теперь он успешно загрузится, можно устанавливать.

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

# mkdir -p /etc/systemd/system/docker.service.d
# mcedit /etc/systemd/system/docker.service.d/http-proxy.conf

[Service]
Environment="HTTP_PROXY=http://127.0.0.1:3128"
Environment="HTTPS_PROXY=http://127.0.0.1:3128"

 # systemctl daemon-reload
 # systemctl restart docker

Обращаю внимание, что в качестве HTTPS_PROXY я передаю http подключение. Это важно. Privoxy не настроен на работу по https, а Docker хочет именно по https забирать образы. Проверим, что переменные объявлены:

# systemctl show --property=Environment docker
Environment=HTTP_PROXY=http://127.0.0.1:3128 HTTPS_PROXY=http://127.0.0.1:3128

Теперь можно забрать образ последней версии и запустить его:

# docker pull docker.elastic.co/elasticsearch/elasticsearch:8.13.2
# docker run -d -e "discovery.type=single-node" \
  -p 9200:9200 \
  -p 9300:9300 \
   docker.elastic.co/elasticsearch/elasticsearch:8.13.2

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

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

#elk #ssh #docker
​​📱Для централизованного управления устройствами под Android существует бесплатная система с открытым исходным кодом Headwind MDM. В целом это облачная система с различными тарифными планами. Но если у вас есть желание установить систему управления на своё железо, то такая возможность тоже есть. Её функциональность будет ниже (возможности бесплатной версии), чем в платных тарифах облака, но в целом там много возможностей, которых многим может быть достаточно.

Когда я впервые посмотрел на Headwind MDM, инструкцию по установке и видео процесса, подумал, что тут придётся пуд соли съесть, чтобы настроить. Там в составе и tomcat, и postresql, и доменное имя нужно с сертификатом. Но на деле всё оказалось очень просто. Установил сходу с первого раза.

Для установки воспользовался инструкцией с сайта и повторил копипастом. Взял виртуалку с Ubuntu 22, настроил доменное имя, обновил DNS. Скрипт-установщик всё сделал сам. Все параметры я выбрал по умолчанию. Предварительные настройки сделал по инструкции. Веб панель заработала.

А вот дальше у меня получился затык. Идея этой системы такая. Вы сбрасываете смартфон к заводским настройками. Начиная с 7-й версии Android есть возможность после сброса настроек вызвать специальное меню для установки приложения администратора, которое сможет управлять устройством. Для этого надо на первом экране приветствия после сброса настроек нажать 7 раз на экран. Откроется сканер QR кода. Нужно отсканировать код, который можно получить в панели управления Headwind MDM.

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

У меня был свободен смартфон, который я хотел подключить к Headwind MDM, чтобы попробовать управление. К сожалению, этим смартфоном оказался Xiaomi Redmi с родным лаунчером MIUI, который блокирует установку приложения управления после сброса настроек. Другого смартфона не оказалось, который я смог бы сбросить. Так что возможность управления я не проверил. Но почему-то кажется, что там всё будет работать. Вот несколько видео, как всё это выглядит на практике:

▶️ Installing Headwind MDM on Google Pixel 5A (Android 13)
▶️ Управление корпоративными Android-приложениями в оболочке Headwind MDM
▶️ Headwind MDM Web Console: full UI overview

Для того, чтобы всё это попробовать, не обязательно разворачивать сервер у себя. Можно зарегистрироваться в облаке и потестировать на бесплатном тарифном плане. Главное, чтобы был смартфон, который можно обнулить, чтобы установить управляющее приложение. Можно и без него, воспользовавшись обычным apk приложением, установленным в системе. Но его возможности будут ограничены. Например, нельзя будет установить или удалить приложение без подтверждения пользователя.

На работе мне никогда не приходилось заниматься подобными задачами. А вот в семье уже назрел вопрос. Фактически, под моим управлением сейчас находится куча смартфонов следующих людей: папа, мама, жена, сын, дочь. И ещё пару сыновей на подходе, не доросли ещё до владения смартфоном. Остро стоит вопрос, как мне всем этим централизованно управлять. Желательно с возможностью подключиться к экрану. А детям настраивать ограничения на некоторые вещи.

Пока вообще не прорабатывал этот вопрос. Если кто-то может что-то посоветовать, особенно основанное на личном опыте, было бы здорово. Продукт может быть платным, это не принципиально. Лишь бы вопрос закрывал. Видело что-то похожее у Касперского, но пока не изучал.

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

#android
​​Подбиваю старые полезные публикации, которых накопилось очень много за несколько лет. В этот раз решил сделать подборку на тему Docker. Сначала список наиболее часто используемых команд на основе личного опыта. А в конце ссылки на другие публикации по этой теме.

🟡 Установка Docker:

curl -o - https://get.docker.com | bash -

🟡 Запуск контейнера в режиме службы на конкретном порту с автоматическим запуском при загрузке сервера:

docker run -d -p 80:80 --restart always --name nginx-proxy nginx

🟡 Просмотр списка запущенных и всех контейнеров:

docker ps
docker ps -a

🟡 Удаление остановленного или работающего контейнера:

docker rm nginx-proxy
docker rm -f nginx-proxy

🟡 Остановить и удалить все контейнеры:

docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)

🟡 Просмотр образов, удаление одного или сразу всех:

docker images
docker rmi nginx
docker rmi $(docker images -a -q)

🟡 Вход в консоль контейнера:

docker exec -it nginx-proxy bash

🟡 Просмотр всех логов контейнера, 100 последних строк или следить за ними:

docker logs nginx-proxy
docker logs -n 100 nginx-proxy
docker logs -f nginx-proxy

🟡 Статистика потребляемых ресурсов контейнера или группы контейнеров:

docker stats nginx-proxy
docker stats prometheus exporter
docker stats prometheus --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"

🟡 Просмотр запущенных процессов в контейнере:

docker top nginx-proxy

🟡 Информация о контейнере и пример выборки из неё разными способами:

docker inspect nginx-proxy
docker inspect -f '{{ .NetworkSettings.Networks.bridge.IPAddress }}' nginx-proxy
docker inspect --format '{{json .Mounts}}' grafana | jq .

🟡 Проверить занимаемое место докером:

docker system df

🟡 Очистить неиспользуемые данные:

docker system prune

🟡 Скопировать файл с контейнера на хост и наоборот:

docker cp nginx-proxy:/etc/nginx/nginx.conf ~/nginx
docker cp ~/nginx/nginx.conf nginx-proxy:/etc/nginx

🟡 Экспорт файловой системы контейнера:

docker export nginx-proxy -o ~/nginx-proxy.tar.gz

📌 Заметки по теме:

🔥 Portainer - веб панель для Docker
▪️ Локальный репозиторий docker образов - Nexus
▪️ Работа Docker daemon через http proxy
▪️ Дебаг контейнеров с помощью Network-Multitool
▪️ Диагностика работы контейнеров с помощью cdebug
▪️ Доступ к Docker daemon socket извне
▪️ Посмотреть, с какими параметрами был запущен контейнер
▪️ Линтер для Dockerfile - Hadolint
▪️ Sinker - синхронизации образов Docker из одного репозитория в другой
▪️ Дамп mysql базы из докер контейнера

📊 Мониторинг одиночного хоста с Docker
📊 Сtop - top для контейнеров
📊 Мониторинг Docker с помощью Zabbix

🛡 Рекомендации CIS по настройке Docker
🛡 Автоматическое исправление уязвимостей с помощью Copacetic
🛡 Проверка образов на уязвимости с помощью Trivy
🛡 Проверка образов с помощью Dockle
🛡 Заблокировать на файрволе доступ к контейнерам извне

🎓 Основы Docker. Большой практический выпуск для новичков
🎓 Бесплатный тренажёр для изучения Docker
🎓 Отличия Docker от LXC

🗃️ Бэкап вольюмов с помощью Docker-volume-backup
🤔 Docker Desktop for Windows

#docker #подборка
Понравилась картинка. Сам много раз с подобным сталкивался. Особенно любит унижать админов винда. Не припомню, чтобы где-то ещё подобное встречал. А в винде нередко приходится видеть предложение позвать системного администратора для решения проблемы.

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

А окончательно тебя добивает средство устранения неполадок, которое никогда ничего не исправляет. Или база знаний по ошибкам обновления Windows, которая по полученной ошибке никогда ничего не находит.

Складывается такое ощущение, что там сидит отдельный отдел по бесполезным штукам и внедряет их.

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

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

Процедуры ОЧЕНЬ болезненные. Мышцы, поражённые триггерной болезнью, сильно реагируют на надавливание или проколы триггеров. Я такую боль никогда в жизни не испытывал. Иногда можно было терпеть, иногда не мог сдержать крик, особенно когда работали с поясницей. Приходил с самодельным кляпом. Примерно представить, как это выглядит, можно по этому фрагменту ролика. И так примерно 30-40 минут. В самые болючие дни подо мной лужа пота после процедуры оставалась.

Полностью посещение выглядит так. Тебе 30-40 минут очень интенсивно проминают мышцы, работая с проблемными зонами. Потом 10-15 минут прогревание проработанной зоны. Потом очень жёсткое растягивание. Задача - вернуть растяжку в физиологическую норму.

У меня примерно средняя тяжесть заболевания, уже давно хроническая. Полностью вылечиться скорее всего уже не получится. Очень много мышц поражены миофиброзом, про который я раньше и не знал. Сейчас после лечения, его очень хорошо видно и слышно, так как то, что можно было вылечить, вылечили, а он остался. Что такое миофиброз, можно посмотреть тут, тут и тут.

Лечение очень эффективное. Пожалуй, впервые за много лет я реально прошёл лечение, которое не сняло симптомы, не принесло временное облегчение, а реально помогло. Я как минимум избавился от всех болей. Очень сильно улучшилась растяжка. Самые большие проблемы у меня с шеей. Тут не удалось на 100% добиться желаемого результата, но он всё равно очень хороший. Почти полностью вернулся нормальный объём движений головой. Я спокойно поворачиваю головой в обе стороны без ограничений, могу заглянуть за спину. Почти достаю подбородком до груди. До лечения был сильно ограничен в движении. Часто подворачивал корпус, чтобы посмотреть в сторону.

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

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

Закачивать больные мышцы нельзя, станет только хуже. Больше половины всех больных идут по этому неверному пути из-за советов врачей и тренеров, которые просто не понимают специфику заболевания МФС. Алексей рассказал забавный случай, как у него был на лечении профессиональный пловец. Невролог, к которому он пришёл с болями в спине, посоветовал ему плавать в бассейне. На что тот ответил, что он практически живёт там. Пауэрлифтерам, не зная кто они, советуют укреплять спину и закачивать мышцы. В общем, это полный бред.

Это всё равно, что при гастрите или язве желудка советовать качать его жирной и жареной пищей. Или больную печень тренировать регулярной пол-литрой водки. Если у вас где-то болят мышцы, самое лучшее, что можно для них сделать - убрать нагрузку и начинать лечить. А большая часть болей в спине и шее это как раз мышцы.

Продолжение 👇👇👇

#разное #здоровье #спина
Продолжение. Начало 👆👆👆

Материала много в голове, но всё описывать довольно трудно. Надо много времени. К тому же всё уже описано и рассказано в интернете. Сейчас сделаю список ссылок на материалы по МФС или триггерной болезни мышц, которые смотрел сам и посчитал полезными.

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

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

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

Истории болезни:
Конкин Эдуард
Тарасенко Алексей (он сам бывший больной, я лечился у него)
Бобырина Наталья
Ожегов Дмитрий
Дания Доллинг (у неё показан хороший комплекс растяжек для дома)
Мельник Ирина
Мамедов Таир (тот, что из Камеди клаба)
Мурат Ушанов (сделал операцию по удалению грыжи, но вообще не помогло)
Максим, 2 видео: как лечился по Епифанову и Шишонину и что в итоге помогло
Козлов Евгений, 2 видео: как лечился официальной медициной (перечислил все диагнозы, медицинские заведения и врачей, список огромный 😮) и как вылечился (лечился в том числе у Алексея Тарасенко, как и я)
Котов Денис

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

▪️ Лукьянов Андрей Петрович - тут структурированно и обоснованно дана вся база по триггерной болезни мышц. Изучение стоит начать отсюда, со старых видео. Я заказал и прочитал две его книги: Позвоночник. Величайшее заблуждение в медицине, Новый взгляд на идиопатический сколиоз. Практически все практикующие миопрессурщики пытаются работать по его методике с разной степенью успешности. Реальных учеников у него было немного. Тарасенко Алексей один из них. Они вместе работали в клинике около года.
▪️ Яковенко Владимир
▪️ Прошкин Евгений - тут очень много теории и практической информации по самостоятельному лечению. Он ещё любит всяких шарлатанов разоблачать. Вот его видео, где он ловит на противоречиях Епифанова. Я Епифанова немного смотрел, но потом понял, что он просто балаболит ни о чём. Прошкину врачи сделали 3 (❗️) операции по удалению грыжи, ни одна не помогла.
▪️ Александр, Барнаул
▪️ Эдуард, Елабуга

Думаю, этого достаточно. По этим ссылкам есть всё, что только можно узнать о МФС или триггерной болезни мышц и лечении.

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

❗️Если вам предлагают операцию по удалению грыжи, не соглашайтесь, пока не изучите представленные материалы. Хотя бы канал и книги Лукьянова прочитайте. Чаще всего операция по удалению грыжи не помогает решить проблему, но не всегда! (пример, где помогла и была обязательна)

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

У меня сайт чётко ориентирован на IT тематику. Нет никаких других тем. Случайный человек туда вряд ли зайдёт. Так что почти все посетители это айтишники. Это подтверждает и ТОП страниц по посещаемости. Там строго Linux и Mikrotik. Посмотрим, какие системы и браузеры они используют. Период возьму последний квартал.

📌 Операционные системы:
Windows - 64,6%
Android - 16,7%
Linux - 8,59%
MacOS - 5,01%
iOS - 5,08%

Так что большинство обычных айтишников сидят на винде. Но стоит отдать должное. Процент Linux немал. Среди обычных пользователей он будет значительно меньше.

📌 Браузеры:
Chrome - 38%
Яндекс.Браузер - 19,5%
Firefox - 9,73%
Chrome Mobile - 12,2%
Edge - 5,76%
Opera - 4,15%

Большой % пользователей Яндекс.Браузера. У меня это тоже основной браузер. Среди всех современных форков Chromium лично я считаю его самым самобытным (насколько может быть им форк) и функциональным. В нём много интересных решений, которых нет у других.

📌 Разрешение дисплея:
1920 - 43,4%
1536 - 8,35%
2560 - 6,32%
набор мобильных разрешений - 10,56%
1280 - 3,97%
.....................
3440 - 1,11%
.....................
3840 - 0,18%

К недавнему обсуждению мониторов. 4К разрешения почти не встречаются. Подавляющее большинство сидит либо на FullHD, либо на разных ноутах с ещё меньшим разрешением.

📌 Смартфоны (21,4% всех посещений):
Xiaomi - 6,17%
Apple - 4,93%
Samsung - 3,4%
Realme - 1,16%

Больше ничего интересного там не увидел. Выборка получилась довольно обширная, так как за квартал на сайт зашли ~255 000 уникальных пользователей.

#разное
​​Давно не писал ничего про Zabbix. Всё жду, когда выйдет обещанная 7-я версия, а её всё нет. Решил навести справки, почитать имеющуюся информацию. От Zabbix последнее время мало новостей, так что я и следить перестал.

🔹Основная новость в том, что Zabbix, как и многие другие open source проекты в последнее время, изменил свою лицензию. Об этом была заметка в блоге от владельца компании. Расскажу, в чём суть замены лицензии GPL на AGPL и что это означает на практике.

Сразу отмечу, что для обычных пользователей Zabbix изменения не будут заметны. Для них ничего не меняется. Изменения, как и в случае с другими продуктами, коснутся тех, кто продаёт услуги на основе Zabbix другим людям. То есть компании таким образом защищают свои коммерческие интересы. С GPL вы обязаны выкладывать свои исходники только если продаёте готовый продукт на основе другого продукта с лицензией GPL. Если я правильно понял, то можно взять продукт под лицензией GPL, реализовать на его основе какой-то сервис и продавать этот сервис пользователям. Лицензия GPL позволяет вам его использовать таким образом и не выкладывать исходники своего сервиса.

AGPL убирает такую возможность. Если вы продаёте какой-то сервис, к примеру, по модели saas, где используется продукт с лицензией AGPL, вы обязаны опубликовать исходники своего сервиса. В целом, выглядит вполне логично для авторов продукта. По такой же схеме в своё время меняли лицензию MongoDB, Elastic, HashiCorp, Redis. Там хоть и другие лицензии используются, но общий смысл такой же и по своей сути лицензии похожи друг на друга, но со своими нюансами. Основной посыл - запретить облачным сервисам предоставлять услуги на основе open source продуктов без покупки коммерческой версии или открытия своего кода.

🔹К другим новостям. Недавно вышла версия 7.0.0beta3. В целом, релиз движется к публикации. Думаю, к лету он состоится. Изначально стояла дата Q4 2023, потом перенесли на Q1 2024, сейчас уже на Q2 2024. В целом, ничего необычного. У Zabbix релизы всегда откладываются. Кто-то уже сейчас пользуется 7-й версией. Видел такие комментарии не раз. Я так понимаю, что она вполне стабильна. Если делать новую установку, то можно уже 7-ю версию ставить.

🔹Zabbix периодически проводит вебинары на русском языке. Ближайший назначен на 2 мая, тема - Расширение возможностей Zabbix. Речь там пойдёт про userparametres и плагины агента 2. Тема полезная, если с ней не знакомы.

🔹Из последних статей в блоге была одна реально полезная. Там рассказано, как сгенерировать самоподписанный сертификат, чтобы по HTTPS ходить на веб интерфейс по DNS имени или IP адресу и не получать предупреждения браузера. Там ничего особенного, просто все команды и конфиги собраны в одно место, что удобно. Надо будет оформить в небольшую заметку. Обычно лень с этим возиться и получаешь сертификаты от Let's Encrypt. Но зачастую проще и удобнее выпустить свои с условно бесконечным сроком действия и забыть про этот вопрос.

#zabbix
​​Небольшая информационная заметка для тех, кто так же как и я не знает о маленьком нюансе в настройках экрана ноутбука.

Я обычно работаю за ноутбуком либо с постоянным подключением к сети, либо только от батарей. Если рядом есть розетка, я всегда подключаюсь к ней, чтобы иметь максимальное быстродействие. У меня редко случается, что работаю от батарей, а потом включаюсь в сеть. Но иногда бывает.

Заметил, что при смене типа питания у ноутбука моргает экран и перезапускается Explorer. Последнее время глючил блок питания (оказалось, что в разъём попала небольшая соринка, теперь у меня 2 БП), пока я его не заменил, так что наблюдал это часто. В какой-то момент мне это надоело. Решил разобраться, почему так происходит. По идее, переход на питание от батарей и обратно должен проходить плавно без видимых изменений.

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

В системе Windows эти настройки живут в Параметрах в разделе Система ⇨ Дисплей ⇨ Расширенные параметры дисплея. Отключил сеть, зашёл в этот раздел, там стояла частота 48 Гц. Поменял на 60 Гц, как стоит при питании от сети, и экран перестал моргать при смене режима электропитания. По какой причине параметры стояли разные, как я уже сказал, не знаю. Специально так не настраивал.

#железо
​​Сейчас без HTTPS не хотят работать многие сервисы. А даже если и работают, то браузеры не дадут спокойно пользоваться. Поэтому приходится получать и настраивать сертификаты, даже если большой нужды в этом нет. Особенно если ты работаешь с ним один в локальной сети, либо вообще поднимаешь временно. Я обычно получаю сертификаты let's encrypt и копирую на нужный сервер, если к нему не проброшен доступ из интернета.

Решил подготовить пошаговую инструкцию, чтобы быстро выпустить свой сертификат через свой CA, добавив его к себе в доверенные, чтобы браузеры не ругались. Во многих ситуациях это будет удобнее, чем постоянно обновлять доверенные сертификаты через интернет. Свой можно выпустить вечным. Покажу на примере настройки сертификата в Nginx.

Будем выпускать сертификат для доменного имени zabbix.internal и IP адреса 172.30.245.222. Будет работать и так, и эдак.

Выпускаем ключ и сертификат для своего CA:

# mkdir ~/tls && cd ~/tls
# openssl ecparam -out myCA.key -name prime256v1 -genkey
# openssl req -x509 -new -nodes -key myCA.key -sha256 -days 9999 -out myCA.crt

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

# openssl genrsa -out zabbix.internal.key 2048
# openssl req -new -key zabbix.internal.key -out zabbix.internal.csr

Тут тоже зададут похожие вопросы. Отвечать можно всё, что угодно. Готовим конфигурационный файл:

# mcedit zabbix.internal.ext

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
IP.1 = 172.30.245.222
DNS.1 = zabbix.internal

Генерируем сертификат на его основе:

# openssl x509 -req -in zabbix.internal.csr -CA myCA.crt -CAkey myCA.key \
-CAcreateserial -out zabbix.internal.crt -days 9999 -sha256 -extfile zabbix.internal.ext

Копируем сертификат и ключ в директорию веб сервера:

# mkdir /etc/nginx/certs
# cp zabbix.internal.crt /etc/nginx/certs/.
# cp zabbix.internal.key /etc/nginx/certs/.

Создаём файл dhparam, который понадобится для конфигурации Nginx:

# openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Добавляем в конфиг Nginx в целевом виртуальном хосте:

listen     443 http2 ssl;
server_name   zabbix.internal 172.30.245.222;
ssl_certificate /etc/nginx/certs/zabbix.internal.crt;
ssl_certificate_key /etc/nginx/certs/zabbix.internal.key;
ssl_dhparam /etc/ssl/certs/dhparam.pem;

Перезапускаем Nginx:

# nginx -t
# nginx -s reload

Передаём на свой компьютер файл myCA.crt и добавляем его в хранилище корневых доверенных центров сертификации. Настройка будет зависеть от операционной системы. Если нужно тут же, локально на сервере с Debian 12 настроить доверие этому CA, то делаем так:

# cp myCA.crt /usr/local/share/ca-certificates/.
# update-ca-certificates

Теперь можно браузером заходить по доменному имени или IP адресу, будет работать самоподписанный сертификат на 9999 дней без каких-либо предупреждений.

Получилась готовая инструкция для копипаста, которую можно сохранить и пользоваться.

#webserver