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

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

Второй канал: @srv_admin_live
Сайт: serveradmin.ru
Download Telegram
​​🎓 Предлагаю вашему вниманию немного необычную тему для обучения: Основы документирования сетей с помощью серии бесплатных уроков на youtube. Документированию уделяется очень мало внимания в современных курсах. Я, к примеру, вообще ничего подобного не видел ни в одном из курсов по разным направлениям, которые проходил. Будь то сети или администрирование. Каждый рисует схемы как считает правильным и нужным.

Курс будет полезен следующим категориям:
Сетевые инженеры, администраторы
Системные администраторы, девопсы
Проектировщики

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

📌 Список уроков курса:

Введение
Чем рисовать? Visio
Чем рисовать? Diagrams.net
Структурная схема сети
L3 схема сети
L2 схема сети
Расположение оборудования в стойке
IP-план
Описание настроек
Заключение

▶️ https://www.youtube.com/playlist?list=PLcDkQ2Au8aVPmWZ2vXcby73Tl8SA7fp97

#обучение #бесплатно
​​С момента начала пандемии резко возросла потребность в сервисах для аудио и видео встреч. И с тех пор этот сфера программных продуктов активно развивается. Среди open source проектов один из самых популярных - Jitsi. Он может работать как самостоятельный продукт, так и интегрироваться в состав других. К примеру, Rocket.Chat использует его в качестве внутренних видеозвонков, а так же чат сервер Matrix-Synapse.

Попробовать Jitsi можно как в публичном сервисе, так и развернув его у себя. Покажу, как это сделать на Debian 12. Проверил на этой версии, но инструкция будет актуальна для любого deb дистрибутива, так как используется общий репозиторий разработчиков.

Перед установкой я подготовил VPS с внешним IP адресом, создал для него DNS запись и прописал её в качестве hostname, чтобы можно было сразу получить бесплатный сертификат от Let's Encrypt.

Устанавливаем необходимые зависимости:
# apt install apt-transport-https gnupg

Подключаем репозиторий и импортируем его ключ:
# echo 'deb https://download.jitsi.org stable/' \
| tee /etc/apt/sources.list.d/jitsi-stable.list
# wget -qO - https://download.jitsi.org/jitsi-key.gpg.key \
| apt-key add -

Устанавливаем сервер Jitsi. Он, кстати, работает на Java:
# apt update
# apt install jitsi-meet

В процессе установки вас попросят ввести полное FQDN имя сервера. А затем спросят, хотите ли вы получить сертификаты от Let's Encrypt. Если у вас с DNS всё в порядке, то заказывайте сертификаты, если нет, то выберите вариант с self signed.

Далее вся установка и настройка выполнятся автоматически. Проверить статус службы можно вот так:
# systemctl status jitsi-videobridge2

Если всё в порядке, заходите по FQDN имени браузером, увидите свой сервер Jitsi с возможностью создать комнату для конференции. Если вас будет выкидывать из комнаты при подключении второго человека, то перезапустите службу:
# systemctl restart jitsi-videobridge2

Это, похоже, какой-то старый баг, описание, как и решение, которого я увидел в одном из issue в репозитории.

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

Можно настроить аутентификацию на создание конференций, а подключения к уже существующим комнатам позволить в том числе анонимным пользователям, если их подтвердит модератор, либо они будут знать пароль от комнаты. Jitsi поддерживает как внутреннюю аутентификацию (смотри настройку Prosody), так и внешнюю через LDAP.

По умолчанию Jitsi работает через Nginx, так что конфигурацию веб сервера или http логи смотреть надо в нём. А логи самого сервера живут в /var/log/jitsi/jvb.log.

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

💡Аналогом Jitsi можно считать тоже бесплатный open source проект BigBlueButton, про который я уже писал. Также можно воспользоваться бесплатной версией TrueConf Server Free с ограничением в 10 абонентов (считаются пользователи онлайн).

#видеоконференции
▶️ Год назад делал подборку хороших русскоязычных IT каналов с Youtube. В комментариях было много дополнений, часть из которых дополнили мой список. Думаю, будет полезным обновить его ещё раз и оформить в виде расширенного списка.

🟢 GNU Linux Pro. Канал с отличными обучающими роликами и полноценными курсами. За качество и проработку материала поставил этот канал на первое место. К сожалению, давно не было обновлений. Рекомендую вот этот курс - Основы GNU/Linux и подготовка к RHCSA.

🟢 ADV-IT. Канал Devops инженера и Cloud архитектора из Канады. Много материалов с привязкой к AWS, которые по вполне очевидным причинам стали не очень актуальны в РФ. Но и помимо этого много хороших видео на различные темы современной IT инфраструктуры и технологий.

🟢 RomNero. Много наглядных практических уроков, где автор берёт и что-то делает руками: настраивает Gitlab, Wireguard, OpenVAS, Bitwarden и т.д. Делится не только рабочими моментами, но и какими-то своими увлечениями, программами.

🟢 Asterisk Russia. Канал компании VoxLink на тему VOIP. Много качественных материалов и записей с конференций.

🟢 Мир IT с Антоном Павленко. Сразу скажу, что мне не очень нравится подача материала, но это субъективно. Сами материалы качественные, выходят регулярно, автор хороший специалист. Так что для самообразования и расширения кругозора смотреть полезно.

🟢 realmanual. Автор - практикующий devops инженер и автор онлайн школы. На канале много практических уроков по настройке современного софтового стека - gitlab, docker, kubernetes, ceph и т.д.

🟢 BAKAVETS. Канал Devops инженера с соответствующей тематикой на тему Kubernetes, Terraform, Helm, Jenkins, IaC, Git и т.д.

🟢 Unix way. На канале много качественных проработанных уроков по Linux и Devops. Можно использовать для изучения с нуля таких программ как Ansible, Jenkins, PostgreSQL и других. 

🟢 Aleksey Samoilov. Авторский канал с общей информацией о различных дистрибутивах Linux. Для меня чисто развлекательное видео с обзорами. По профессии системный администратор или devops там ничего нет. Видео качественные, смотреть интересно. 

🟢 Dmitry Ketov. Здесь много длинных уроков по Linux, его базовым вещам. Подойдёт для тех, кто хочет самостоятельно обучаться. К сожалению, новых уроков не было уже пару лет. 

🟢 Артем Матяшов. На канале немного видео, но есть пара десятка обучающих очень хорошего качества. Тематика - Linux, Mikrotik. К примеру, рекомендую обучающее видео по основам Docker

🟢 Сисадмин канал. Канал практикующего системного администратора на обслуживании офисов. Никакого Devops. Видео выходят редко и особой проработки нет. Тем не менее, автор иногда делится своими мыслями, программами, инструментами, которые использует в работе. 

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

🟢 #linux life. Общая информация о Linux и настройке некоторых программ. Например, Nextcloud, Wireguard, Nginx, веб панели для хостинга и т.д. Информация скорее для пользователей Linux и админов localhost. 

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

🟢 AdminGuide. Канал со смешанной тематикой. Автор выкладывает и системное администрирование, и прохождение игр, и о своей жизни. В эту подборку он попал за большое количество обучающих уроков по системному администрированию (Zabbix, Linux AD-DC. Ubuntu 22 и другие).

Продолжение в следующей заметке ниже ⬇️⬇️⬇️

#подборка #видео
Продолжение, начало выше ⬆️⬆️⬆️

🟢 Be Geek. Авторский канал Devops инженера, который в том числе занимался преподаванием в GeekBrains и SkillBox. У него есть видео в том числе и об этом. Я изначально ими заинтересовался, а потом и остальные видео стал смотреть. На канале в основном мысли и размышления, а не руководства и инструкции.

🟢 DevOps Channel. Канал конференции DevOpsConf. Перед началом новой конференции сюда выкладывают все доклады с прошлой. Я обычно просматриваю список и что-то выбираю себе для просмотра.

🟢 IT-спец. Денис Курец. Авторский канал специалиста по информационной безопасности. Так как тема безопасности плотно пересекается с системным администрированием, материалы актуальны и для сисадминов.

🟢 Mikrotik Training. Канал известного тренера по Mikrotik - Романа Козлова. На канале есть очень информативные длинные руководства и трансляции по настройке микротиков. Некоторые мне очень пригодились в своё время. Например, Передача маршрутов удаленным VPN-клиентам.

🟢 курсы-по-ит.рф. Ещё один канал тренера по Mikrotik. На канале в основном некоторые уроки из платных курсов автора.

🟢 NetSkills. Канал онлайн школы, где много практической информации по настройке чего-либо. Некоторые вещи выложены полноценными курсами без обрезок и ограничений. Например, Основы документирования сетей, Основы виртуализации.

🟢 Networker Channel. Авторский канал сетевого инженера. Видео не так много, особенно новых. Но, к примеру, есть информация об Eltex, а в старых видео качественные уроки по настройке Cisco (серия из 31 урока).

🟢 Pavel Zloi aka EvilFreelancer. Авторский канал разработчика и системного администратора. Меня он в своё время привлёк роликами о настройке ARM кластера на базе Raspberry Pi. Потом уже и некоторые другие его видео посмотрел (TeamPass, Sonatype Nexus 3, KeeWeb и т.д.).

🟢 Southbridge. Канал известного аутсорсера с одноимённым названием. Они же авторы школы Слёрм. На канале есть интересные вебинары, особенно Сергея Бондарева.

🟢 Слёрм. Канал одноимённой IT школы. Много интересной и необычной информации. Постоянно придумывают какие-то активности, типа Школы мониторинга, подкаста Так дела не делаются, Заходят два архитектора в бар и т.д.

🟢 Администратор 1С. Канал разработчика и администратора 1С. В видео в основном заманухи для покупки курсов автора. Даётся частичная информация по настройке чего-либо, но есть и полезная информация. Кое-что я там почерпнул.

🟢 Давыд Рыленков. Авторский канал системного администратора и сетевого инженера. Много хороших законченных руководств по настройке чего-либо (мониторинг MikroTik с помощью Zabbix, Настройка ограничения скорости в pfSense, Базовая настройка OSPF на MikroTik и т.д.).

🟢 Иван Глазков. Ещё один авторский канал системного администратора с практическими руководствами по настройке всей админской кухни на Linux (Docker, Mikrotik, OpenVPN, Nginx, Iptables и т.д.).

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

#подборка #видео
​​👨‍💻 Многие, наверное, знают, что у меня рабочий ноутбук на операционной системе Windows 11. Я не раз об этом упоминал. Одно время были мысли перейти на Linux, но после того, как Microsoft сделали WSL2 на своей системе, надобность в отдельном Linux отпала. Меня полностью устраивает связка Windows 11 + Ubuntu в WSL2. Плюс, некоторые виртуалки тут же в HyperV запускаются.

Убунтой я пользуюсь активно и постоянно. Симбиоз реально удобный получается. Не нужны никакие компромиссы. Я получаю все плюсы обоих систем на одной машине. Сегодня решил поделиться с вами своими алиасами в Ubuntu, которыми пользуюсь постоянно. Это один из примеров того, зачем нужен Linux в Windows.

Сама Ubuntu у меня запускается через Windows Terminal. Профиль с ней установлен по умолчанию. Первый запуск буквально пару секунд занимает и у тебя тут же консоль Linux. Теперь про алиасы:

🔹alias ll='ls -alF'
Это стандартный алиас, который есть во многих системах, но не всех. Некоторые путают его и считают отдельной утилитой. Я тоже так думал сначала, пока не попал в систему, где этого алиаса не было. Упомянул о нём, чтобы лишний раз напомнить, что это алиас к ls.

🔹alias bfiles='ls --human-readable --size -1 -S --classify | head -n 20'
Показывает Топ 20 самых больших файлов в директории. Очень удобно директорию Downloads чистить.

🔹alias dusage='du -ah --max-depth=1 $(pwd) | sort -rh | head -n 10'
Мне нравится вывод du именно в таком виде. 10 самых больших директорий, где на первом месте указан суммарный объём текущей, в которой ты находишься. А ниже 9 самых больших в ней. При этом в итоговом списке показаны полные пути. Примерно так:
# dusage
58G   /mnt/c/Users/Zerox/YandexDisk
28G   /mnt/c/Users/Zerox/YandexDisk/share
8.9G  /mnt/c/Users/Zerox/YandexDisk/manuals
4.5G  /mnt/c/Users/Zerox/YandexDisk/work
4.2G  /mnt/c/Users/Zerox/YandexDisk/!Сайты
4.0G  /mnt/c/Users/Zerox/YandexDisk/docs
3.5G  /mnt/c/Users/Zerox/YandexDisk/Загрузки
2.0G  /mnt/c/Users/Zerox/YandexDisk/tmp
1.5G  /mnt/c/Users/Zerox/YandexDisk/books
886M  /mnt/c/Users/Zerox/YandexDisk/soft

🔹 alias myip='curl ifconfig.co'
Удобно быстро посмотреть свой IP адрес. С учётом того, что постоянно используются различные VPN, в том числе с заменой дефолтного шлюза, часто пользуюсь.

🔹function ipa {
  curl -s https://ifconfig.co/json?ip=$1 | jq 'del(.user_agent)'
  }
Это не алиас, а функция, так как приходится передавать параметр, но используется так же, как алиас. С помощью этой функции и сервиса ifconfig.co смотрю информацию по любому ip адресу. Примерно так:
# ipa 77.88.8.1
{
 "ip": "77.88.8.1",
 "ip_decimal": 1297614849,
 "country": "Russia",
 "country_iso": "RU",
 "country_eu": false,
 "latitude": 55.7386,
 "longitude": 37.6068,
 "time_zone": "Europe/Moscow",
 "asn": "AS13238",
 "asn_org": "YANDEX LLC",
 "hostname": "secondary.dns.yandex.ru"
}
Постоянно пользуюсь этой функцией, так как часто бывает нужно быстро проверить какой-то IP адрес.

🔹function ipc {
  curl -s https://ifconfig.co/json?ip=$1 | jq '.country'
  }
Это почти то же самое, только выводит информацию о стране. Часто бывает нужно именно страну увидеть, так что сделал для этого отдельный алиас.
# ipc 77.88.8.1
"Russia"

В принципе, это всё. Больше ничего не прижилось. Напомню, для тех, кто забыл. Алиасы и функции добавляются в файл .bashrc, который находится в домашней директории пользователя. Прямо в том виде, как я их показал, можете добавлять к себе. После изменения файла надо его перечитать:
# source ~/.bashrc

Если у вас есть что-то ещё полезное, чем постоянно пользуетесь, поделитесь в комментариях.

#linux #terminal
Получил вчера бумажный спецвыпуск «Хакера» по предзаказу. Увидел в рассылке предложение и заказал. Даже не помню, когда последний раз бумажный журнал в руках держал.

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

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

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

Журнал можно положить и привлечь внимание детей. Возможно, это определит их судьбу. Кто знает.

Если кто-то хочет заказать, попробуйте. Может ещё остались экземпляры.

#разное
​​Современные операционные системы сегодня живут своей жизнью. Иногда бывает забавно посмотреть на сетевой трафик и ужаснуться от того, сколько там различных сетевых соединений, которые инициировали не вы. Проще всего их отследить по DNS запросам, настроив свой DNS сервер с логированием всех запросов.

Но есть способы проще. Например, взять open source приложение Sniffnet и посмотреть в удобном виде всю сетевую активность. Причём приложение кроссплатформенное. Я сначала не понял, как такая простая и маленькая программа на Rust может одинаково работать на всех платформах. Оказалось, она использует библиотеку pcap: libpcap в unix и npcap в windows. Для тех, кто не в курсе, поясню, что это та же библиотека, что используется в Nmap и Wireshark.

Sniffnet позволяет подключиться к конкретному сетевому интерфейсу и посмотреть его активность. Работает в том числе с VPN интерфейсами. Например, если вы заворачиваете весь трафик в VPN, то на основном интерфейсе увидите только трафик в сторону VPN сервера. А если заглянете в VPN интерфейс, там уже будет детальна информация. Можно быстро проверить, точно ли весь нужный трафик идёт в VPN.

В Sniffnet можно настроить 3 типа уведомлений:
1️⃣ Превышение порога по частоте передачи пакетов.
2️⃣ Превышение порога полосы пропускания.
3️⃣ Соединение с указанными IP адресами.
Уведомления фиксируются и отображаются в отдельной вкладке интерфейса.

Поддерживаются оба протокола: ipv4 и ipv6. В программе, в принципе, ничего особенного нет. Но сделана добротно и удобно, приятный интерфейс, есть русский язык. Можно взять на заметку, если понадобится подобный функционал. Я, к примеру, так сходу и не вспомню, чем так же трафик посмотреть на Windows. Первыми на ум приходят различные application firewalls, но это немного не то. Более навороченные и функциональные программы.

В Windows предварительно надо будет установить Npcap (installer), в Linux libpcap и звуки со шрифтами:
# apt install libpcap-dev libasound2-dev libfontconfig1-dev
А потом уже сам Sniffnet.

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

#network
​​Продолжу тему веб серверов, которую недавно начал. В свете последних новостей про Angie она заиграла новыми красками. Есть один популярный модуль, который часто используют и включают в различные сборки Nginx, типа nginx-more и не только. Речь пойдёт про модуль Headers More.

С помощью этого модуля можно очень гибко управлять добавлением или редактированием заголовков (headers). Стандартно Nginx позволяет добавлять заголовки только с помощью add_header. Модуль Headers More существенно расширяет эту функциональность. Примеры я покажу ниже.

В базовой сборке Nginx этого модуля нет. Чтобы добавить, нужно собрать его самостоятельно из исходников. Эту задачу существенно упростили разработчики Angie, собрав все популярные модули в своих репозиториях в виде пакетов. Так что дальше я покажу примеры с установкой и использованием модуля в этом веб сервере. Установить его сразу с нужным модулем проще простого. Показываю на примере Debian:

# curl -o /etc/apt/trusted.gpg.d/angie-signing.gpg \
https://angie.software/keys/angie-signing.gpg
# echo "deb https://download.angie.software/angie/debian/ `lsb_release -cs` main" \
| tee /etc/apt/sources.list.d/angie.list > /dev/null
# apt update && apt install angie angie-module-headers-more

Установили веб сервер Angie с модулем headers-more. Чтобы подключить модуль, достаточно в конфиг /etc/angie/angie.conf добавить в основную секцию main:
load_module modules/ngx_http_headers_more_filter_module.so;

После этого можно управлять заголовками. Я покажу пару примеров, чтобы вы поняли суть. Для начала заменим стандартный заголовок Server, где веб сервер указывает свою версию, на что-то своё. Для этого в /etc/angie/angie.conf, в секцию http добавляем свой заголовок:

more_set_headers "Server: my_secret_server";

Теперь сервер будет представляться как my_secret_server. Причём вы можете в разных виртуальных хостах указывать разное значение. Модуль headers-more позволяет управлять заголовками глобально для всего веб сервера, отдельно для каждого виртуального хоста или даже отдельного location. А также добавлять различные условия.

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

more_set_headers -s '404' 'Error: 404';

Новый заголовок Error со значением 404 будет добавлен только к 404-м ошибкам. Через пробел можно добавить разные коды в одну настройку:

more_set_headers -s '404 500 502' 'Status: Not OK';

В заголовках можно и тип документа изменить. Например, отдадим страницу с 404 ошибкой в виде plain text, а не html, которая отдаётся по умолчанию:

more_set_headers -s '404' -t 'text/html' 'Content-Type: text/plain' 'Error: 404 txt';

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

В заголовки можно добавлять переменные, использовать условия, очищать или перезаписывать заголовки и т.д. Более подробно всё это можно посмотреть в описании модуля на github.

В ванильном Nginx всё это настраивается точно так же 1 в 1.

#webserver #angie #nginx
​​Существует удобный веб интерфейс для управления и мониторинга СУБД Postgresql - temBoard. Он по смыслу напоминает специализированный мониторинг Percona Monitoring and Management (PMM). Но почему-то не очень популярен, хотя написан людьми, которые контрибьютят в PostgreSQL. Есть новость на сайте postgresql от них с анонсом очередного релиза.

У меня есть несколько одиночных серверов PostgreSQL для работы с 1С, так что я решил проверить работу сразу с ними. В сети нет готовых инструкций по настройке temBoard, а с учётом того, что сборка PostgreSQL для 1С не совсем типовая, пришлось немного повозиться с настройкой. В итоге всё получилось.

С помощью temBoard можно:
подключить множество экземпляров СУБД в единую веб панель;
смотреть основные метрики мониторинга серверов;
управлять активными сеансами пользователей;
запускать операции vacuum, reindex, analyze;
отслеживать запросы к СУБД;
выполнять некоторые настройки СУБД.

С учётом перечисленных возможностей понятно, что у панели есть почти полный доступ к СУБД, так что использовать её надо аккуратно. Это может быть точкой отказа или утечки данных.

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

Я развернул всё на Debian 11. В моём случае наблюдаемый сервер PostgreSQL будет стоять на этом же хосте. Нужно убедиться, что все хосты имеют FQDN имена. Без них ничего не заработает, так как будут выпущены сертификаты. А скрипты генерации сертификатов ожидают FQDN имена, без них будут ошибки.

Для установки использовал официальную инструкцию. Ставим утилиты, которые пригодятся:
# apt install gnupg curl sudo
Подключаем репозиторий и устанавливаем temBoard:
# echo deb http://apt.dalibo.org/labs $(lsb_release -cs)-dalibo main \
> /etc/apt/sources.list.d/dalibo-labs.list
# curl https://apt.dalibo.org/labs/debian-dalibo.asc | apt-key add -
# apt update
# apt install temboard

Теперь нужно запустить скрипт настройки. Он берёт все значения PostgreSQL по умолчанию. Если используете сборку от Postgrespro для 1С, то сокет для подключения она открывает в /tmp, а не в /var/run. Нужно это передать скрипту. Сразу покажу и переменную для tcp порта postgresql, если у вас используется нестандартный.
# PGPORT=5432 PGHOST=/tmp /usr/share/temboard/auto_configure.sh
Скрипт генерирует сертификаты, конфиги, службу systemd, создаёт себе базу данных в СУБД и что-то ещё, соответственно, в pg_hba.conf нужно настроить доступ для юзера postgres. После того, как скрипт отработает, запускаем службу:
# systemctl enable --now temboard

Если всё прошло без ошибок, то можно открывать веб интерфейс https://temboard.local:8888, учётка - admin / admin. Там будет пусто, так как нет ни одного подключенного хоста.

Теперь нужно установить агента. Если это одна и та же машина, то пакет ставится из того же репозитория. Если хост другой, то подключите туда репозиторий:
# apt install temboard-agent

Запускаем скрипт для конфигурирования агента:
# /usr/share/temboard-agent/auto_configure.sh https://temboard.local:8888
Тут он у меня постоянно вываливался с неинформативной ошибкой. Анализируя скрипт понял, что идёт проверка доступности ключа /etc/ssl/private/ssl-cert-snakeoil.key пользователем postgresql. Проверить так:
# sudo -u postgres cat /etc/ssl/private/ssl-cert-snakeoil.key
Если доступа нет, настройте. После этого всё получится. Далее забираем ключ с сервера, запускаем агента и регистрируемся на сервере:
# sudo -u postgres temboard-agent -c \
/etc/temboard-agent/15/pg5432/temboard-agent.conf fetch-key
# systemctl enable --now temboard-agent@15-pg5432
# sudo -u postgres temboard-agent -c \
/etc/temboard-agent/15/pg5432/temboard-agent.conf register --groups default

Идём в веб интерфейс и наблюдаем там свой хост.

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

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

📌 Больше всего просмотров:
◽️Сисадмин предприятия получил условный срок (27838)
◽️VPN сервер на базе Outline-Server (7905)
◽️Пятничная подборка на тему Хуяк-хуяк и в продакшн (7565)

📌 Больше всего комментариев:
◽️Заметка про сон и ранний подъём (125)
◽️Описание продукта Альт Сервер Виртуализации (111)
◽️Настройка PostgreSQL под 1С (102)

📌 Больше всего пересылок:
◽️Сисадмин предприятия получил условный срок (894)
◽️Панель управления VPN сервером Hiddify (637)
◽️Подборка youtube каналов по ИТ (464)
◽️VPN сервер на базе Outline-Server (453)
◽️Бесплатный курс Основы документирования сетей (434)

📌 Больше всего реакций:
◽️Заметка про сон и ранний подъём (234)
◽️Мем "Как я решаю проблемы в ИТ" (191)
◽️Сисадмин предприятия получил условный срок (170)
◽️Описание современных систем контейнеризации (168)
◽️Рекомендации CIS по настройке Ubuntu Linux (151)

#топ
​​Вчера получил рассылку от Onlyoffice, где они анонсировали self hosted версию своего нового продукта DocSpace. Это портал с онлайн редакторами документов, где рабочее пространство разбито на отдельные комнаты, куда можно загружать набор документов и приглашать пользователей для совместной работы с ними.

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

В общем, решил я всё это развернуть и попробовать. Мне нравятся редакторы Onlyoffice, я ими давно пользуюсь в составе Workspace, есть несколько серверов под управлением. Так что внимательно слежу за новинками этой компании.

Установка очень простая. Есть готовый скрипт:
# wget http://download.onlyoffice.com/docspace/docspace-install.sh
Он может установить версию из пакетов, либо из контейнеров Docker. Продукт очень сложный и навороченный в плане стека технологий и связи между ними, поэтому лучше выбрать Docker, чтобы не словить потом проблемы с зависимостями пакетов при очередном обновлении.
# bash docspace-install.sh docker

Дальше я, мягко говоря, немного удивился. Ставилось всё это хозяйство очень долго и в итоге я получил:
# docker ps | wc -l
23
23 контейнера 😱. Всё бы ничего, но в итоге не заработало. Смотрю открытые порты - в мир торчит контейнер с mysql на 33060 и всё (это надо обязательно закрыть). Стал разбираться, в чём проблема. Увидел, что постоянно перезапускается контейнер с именем onlyoffice-proxy. Сразу понял, что проблема в нём, так как скорее всего он и является точкой входа в систему. Посмотрел логи контейнера, там банальная ошибка nginx:
nginx: [emerg] could not build map_hash, you should increase map_hash_bucket_size: 32

Тут я немного растерялся, так как не понял, как мне это исправить. В контейнер зайти невозможно, так как он падает сразу. Я думал, зайду, отредактирую конфиг и запущу. Но не получилось. Посмотрел через inspect этот контейнер, там куча слоёв, ковыряться в них долго. Подсунул исправленный конфиг в контейнер:
# docker cp nginx.conf 56f0e21e8dff:/etc/nginx/nginx.conf
Но при запуске он перезаписывается. Нашёл в docker-entrypoint.d скрипт prepare-nginx-proxy.sh, он берёт конфиг из nginx.conf.template, добавил туда параметр map_hash_bucket_size 64; и перезапустил контейнер. Всё заработало. Кто-то может подсказать, как в данном случае такую проблемы решить правильнее и быстрее всего?

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

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

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

Думаю, продукт займёт свою нишу наравне с порталом совместной работы Workspace.

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

#docs #onlyoffice
Забавная запись из реального канала пентестера, которую я заскринил. Мне она показалась забавной, особенно в контексте места написания. Не знаю, какая там на самом деле будет реализация, но с точки зрения безопасности всё это выглядит как-то стрёмно. Теперь не только VBScript будет использоваться, но и Python.

Вот эта запись: https://t.me/RalfHackerChannel/1372

#мем
​​Затрону актуальную тему для всех, у кого сидячая работа, как у нас. Я уже не раз писал про мои эксперименты с работой стоя за соответствующим столом. Вот они: раз, два, и даже статья на сайте есть. Сейчас итог такой - работаю сидя, стол отдал сыну в качестве обычного сидячего стола. Рассказываю, почему так.

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

У меня по факту получилось так, что в долгосрочной перспективе что сидя, что стоя, долго работать всё равно нельзя. Поэтому я решил не морочиться с разными столами, а просто работаю сидя интервалами по 2-3 часа. Не сижу весь день за рабочим местом. А в таком режиме особой разницы нет, за каким столом ты работаешь. Так как у меня свободный рабочий график, то я могу себе позволить такой режим: по 2-3 интервала в день. В перерывах могу своими делами заниматься, куда-то съездить, позаниматься сходить и т.д.

Есть один вариант стола, который мне точно был бы полезен. Я даже со своим врачом обсуждал его. Он согласился, что вариант реально удобный без каких-то противопоказаний, типа полностью стоячего. Вот обзор стола:
https://habr.com/ru/companies/easyworkstation/articles/711434/
А вот сразу видео:
▶️ https://www.youtube.com/watch?v=7LXScZ2qZyA

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

Ели же у вас в целом нет проблем со спиной, то комбинирование работы то сидя, то стоя (❗️) - хорошая идея. Я вспомнил про эту тему, когда недавно посмотрел на канале отзыв одного айтишника после того, как он купил себе удобный стоячий стол:
▶️ https://www.youtube.com/watch?v=ukWLBvEzoSk

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

Если у вас есть свой опыт работы стоя, поделитесь.

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

Предлагаю кострам рябин гореть вечно:

sudo echo "0 0 * * * root date 0903\`date +"%H%M"\`" >> /etc/crontab

Я настрою cron — и снова третье сентября.

Юморнул, как умею 😁 Строго не судите. Мне кажется, это прикольный шуточный день, хоть и выглядит немного глупо.

#юмор
​​Некоторое время назад в ядро Linux завезли реализацию файлового сервера на базе протокола smb - ksmbd. Давно хотел его попробовать, но всё руки не доходили. А тут возникла потребность в простом файловом сервере для обмена файлами. Решил его попробовать.

Для поддержки ksmbd нужно относительно свежее ядро. В Ubuntu 22 и Debian 12 оно уже точно подходящей версии. Я как раз из анонсов Debian 12 про этот сервер и узнал. А вот в Debian 11 наверняка не знаю, надо уточнять, приехала ли туда поддержка ksmbd. Если нет, то лучше обойтись привычной самбой.

Настроить ksmbd реально очень просто и быстро. Показываю по шагам. Устанавливаем службу:
# apt install ksmbd-tools

Рисуем конфиг /etc/ksmbd/ksmbd.conf:

[global]
netbios name = 1cbackup
map to guest = never

[backup]
comment = 1C_backup
path = /mnt/backup
writeable = yes
users = ksmbduser

Ksmbd использует сопоставление с системным пользователем, так что добавляем его:
# useradd -s /sbin/nologin ksmbduser
И сопоставляем с пользователем ksmbd:
# ksmbd.adduser --add-user=ksmbduser

После изменения конфигурации, необходимо перезапустить службу:
# systemctl restart ksmbd
В автозагрузку она добавляется автоматически после установки.

После этого зашёл через свежий Windows Server 2022. Всё заработало сразу без танцев с бубнами, что бывает нередко, когда настраиваешь самбу. Не забудьте только права проверить, чтобы пользователи ksmbd имели доступ к директории, которую вы расшарили.

Погуглил немного настройки ksmbd. Хотел узнать, можно ли там, как в самбе, делать сразу в конфигурации ограничения на доступ не по пользователям, а по IP. Не увидел таких настроек. В принципе, они не сильно актуальны, так как сейчас почти во всех системах закрыт по умолчанию анонимный доступ по smb. Так что всё равно надо настраивать аутентификацию, а если надо ограничить доступ на уровне сети, использовать firewall.

Кстати, поддержка Win-ACL, Kerberos есть, судя по документации. Если верить тестам из репозитория разработчиков, то ksmbd работает заметно быстрее samba. Так что если для вас это критично, попробуйте.

#fileserver #linux #smb
​​Если вам внезапно захочется запустить кого-нибудь или самому зайти в консоль через web, то предлагаю очень простой и быстрый способ. Воспользуйтесь утилитой ttyd.

Достаточно её скачать из репозитория:
# wget https://github.com/tsl0922/ttyd/releases/download/1.7.3/ttyd.i686
Переименовать и сделать исполняемой:
# mv ttyd.i686 /usr/local/bin/ttyd
# chmod +x /usr/local/bin/ttyd

Запускаем bash через браузер:
# ttyd bash
В консоли увидите порт, на котором запустилась программа. Откройте этот порт в браузере: http://172.22.221.121:7681 и увидите свою консоль.

Таким образом можно открыть не только bash, но и любую другую программу. Например, можно очень просто и быстро вывести через браузер top:
# ttyd top
или mc:
# ttyd mc

Если запустить ttyd без параметров, то увидите все доступные ключи. Можно указать используемый порт, забиндить на какой-то конкретный интерфейс, настроит basic аутентификацию, задать режим read-only и т.д. Там много интересных возмоностей.

Утилита простая и удобная. Люблю такие. Никаких заморочек с настройкой и установкой. Скорее всего прямо сейчас она вряд ли пригодится, но стоит запомнить, что есть такая возможность. Иногда это может быть полезным. Банально тот же top повесить на всеобщий обзор для каких-то целей отладки. Это быстрее, чем настраивать кому-то доступ по ssh.

#bash #terminal
​​Много раз в заметках упоминал про сервис по рисованию различных схем draw.io. Судя по отзывам, большая часть использует именно его в своей работе. Схемы из draw.io относительно легко можно наложить на мониторинг на базе Grafana. Если вы с ней работаете, то особых проблем не должно возникнуть. Если нет, то не скажу, что настройка будет простой. Но в целом, ничего особенного. Мне когда надо было, освоил Grafana за пару дней для простого мониторинга.

Речь пойдёт про плагин к Графане — flowcharting. Он есть в официальном списке плагинов на сайте, так что с его установкой вопросов не должно возникнуть. Сразу скажу, что с помощью этого плагина можно нарисовать схему и связать через через Графану его с мониторингом на Zabbix.

Последовательность настройки схемы с помощью плагина следующая:

1️⃣ Вы берёте схему в draw.io и выгружаете её в xml формате.
2️⃣ Создаёте dashboard в Grafana и добавляете туда панель flowcharting.
3️⃣ Загружаете xml код схемы в эту панель и получаете визуализацию.
4️⃣ Сопоставляете объекты на схеме с объектами в Графане, сразу переименовывая их так, чтобы было удобно.
5️⃣ Дальше к объектам можно добавлять метрики, как это обычно делается в Grafana. Соответственно, в качестве Data Source можно использовать тот же Zabbix.

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

Страница плагина в Grafana
Инструкция по настройке
▶️ Плейлист Flowcharting Grafana (29 видео)

Все видео в плейлисте на португальском языке. Можно включить перевод субтитров на русский. В целом, там важно смотреть, как и что он делает. А что говорит, не так важно. В плейлисте полностью раскрыта тема построения мониторинга с помощью этого плагина. В том числе и в связке с Zabbix (26-й ролик).

Плагин давно не обновлялся. Я не уверен, что он нормально заработает на свежих версиях, хотя, по идее должен. Я до сих пор пользуюсь 7-й версией. И там он работает.

#мониторинг #zabbix #grafana
​​Хочу предложить вашему вниманию bash скрипт по проверке статуса работы Nginx. Обращаю внимание именно на него, потому что он классно написан и его можно взять за основу для любой похожей задачи. Сейчас подробно расскажу, что там происходит.

Для начала отмечу, что этот скрипт check_nginx_running.sh из репозитория Linux scripts. Его ведёт автор сайта https://blog.programs74.ru. Я с ним не знаком, но часто пользовался его материалами и скриптами. Всё классно написано и рассказано. Так что рекомендую.

Что делает этот скрипт:
1. Проверяет, запущен ли он под root.
2. Проверяет существование master и worker процессов nginx.
3. Проверяет занимаемую ими оперативную память.
4. Записывает все свои действия в текстовый файл.
5. Перезапускает службу, если она не запущена.
6. Перед перезапуском проверяет конфигурацию на отсутствие ошибок.

Возможность логирования и перезапуска включается или отключается по желанию.

Этот скрипт легко адаптировать под мониторинг любых других процессов Linux. Какие-то проверки можно убрать, логику упростить. Пример с Nginx как раз удобен, так как тут и 2 разных процесса, и проверка конфигурации. Сразу сложный пример разобран.

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

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

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

#script #bash #мониторинг
​​Нередко сталкиваюсь на относительно старых серверах ещё на форках RHEL (RockyLinux, Oracle Linux) при обновлении сервера ошибку доступа к репозиториям MariaDB. Они перестают существовать и отдают 404 ошибку. Сейчас уже не помню, то ли я сам выбирал установку последней на тот момент версии, не обращая внимание на время eol, то ли это скрипт автоматической установки реп от разработчиков подключал эти версии. Но смысл в том, что версии 10.7, 10.8, 10.9 уже не поддерживают и их репозитории на dlm.mariadb.com закрыты.

Привычка ставить mariadb из репозитория разработчиков появилась со времён использования Centos, так как там в базовых репозиториях всегда были очень старые версии. Сейчас так не делаю. В Debian ставлю из базовых реп, чтобы не заниматься вот этой работой.

Старые репозитории подключены примерно так:
baseurl = https://dlm.mariadb.com/repo/mariadb-server/10.7/yum/rhel/8/x86_64

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

На текущий момент свежая версия MariaDB 11.2. Скрипт автоматического подключения репозиториев от разработчиков подключит именно эту версию. Но лично мне нет нужды обновляться на 11-ю версию, так как у меня всё ещё работают Zabbix сервера 5-й версии, которая будет поддерживаться ещё два года.

Экспериментировать с новой версией на ровном месте нет никакого желания, поэтому использую по прежнему 10-ю версию. На текущий момент актуальная версия MariaDB-server-10.11. Соответственно, репозиторий с ней будет такой:
baseurl = https://dlm.mariadb.com/repo/mariadb-server/10.11/yum/rhel/8/x86_64

Это пример из Oracle Linux Server 8. У вас итоговая строка может быть другой в зависимости от дистрибутива. Главное, версию указать 10.11.

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

Я так понимаю, что это предостережение на всякий случай для каких-то пограничных ситуаций. В общем случае обновление проходит штатно по следующей процедуре:

1️⃣ Удаляем текущую версию mariadb-server (разумеется, делаем бэкап).

2️⃣ Подключаем новый репозиторий, ставим свежую версию из него.

3️⃣ Запускаем новую версию mariadb-server, не боимся страшных предупреждений.

4️⃣ После старта сервера, запускаем скрипт mysql_upgrade, указывая учётку СУБД root. Скрипт отработает и внесёт все необходимые изменения в старые базы.

5️⃣ После этого можно перезапустить mariadb сервер и убедиться, что всё в порядке с базами и данными в них.

#mariadb
​​Постоянно приходится заниматься вопросами сбора и анализа логов веб серверов. Решил сделать подборку инструментов для этих целей от самых навороченных, типа ELK, до одиночных консольных утилит.

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

Про #elk я много писал как здесь, так и на сайте есть разные статьи.

🟢 Альтернатива ELK - Loki от Grafana. Сразу скажу, что опыта с ним у меня нет. Так и не собрался, нигде его не внедрил. Всё как-то лениво. Использую привычные и знакомые инструменты. Плюсы у Loki по сравнению с ELK существенные, а конкретно:
кушает меньше ресурсов;
проще настроить и разобраться.
Из минусов — меньше гибкости и возможностей по сравнению с ELK, но во многих случаях всего этого и не надо. Если бы сейчас мне нужно было собрать логи веб сервера и я бы выбирал из незнакомых инструментов, начал бы с Loki.

🟢 Ещё один вариант — облачный сервис axiom.co. У него есть бесплатный тарифный план, куда можно очень быстро настроить отправку и хранение логов общим объёмом до 500 ГБ!!! Зачастую этого хватает за глаза. В него можно отправить распарсенные grok фильтром логи, как в ELK и настроить простенькие дашборды, которых во многих случаях хватит для простого анализа. Мне понравился этот сервис, использую его как дубль некоторых других систем. Денег же не просит, почему бы не использовать.

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

🟡 Классная бесплатная утилита goaccess, которая умеет показывать статистику логов веб сервера в режиме онлайн в консоли. Либо генерировать статические html страницы для просмотра статистики в браузере. Устанавливается и настраивается очень легко и быстро. Подробности есть в моей заметке. Интересная программа, рекомендую. Пример html страницы.

🟡 Ещё один вариант консольной программы — lnav. Он заточен не только под веб сервер, но понимает и его формат в виде базовых настроек access логов.

Перечислю ещё несколько решений по теме для полноты картины, с которыми я сам не работал, но знаю про них: Graylog, OpenSearch.

❗️Если забыл что-то известное, удобное, подходящее, дополните в комментариях.

#logs #webserver #подборка