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

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

Второй канал: @srv_admin_live
Сайт: serveradmin.ru
Download Telegram
⚡️Одним из ключевых инструментов в DevOps является Kubernetes — платформа для управления контейнерами ❗️

👉🏻 Если вы хотите начать с ней работать, присоединяйтесь к бесплатному вебинару, который состоится 18 мая в 20:00 по московскому времени.

🔥 Тема вебинара: «Kubernetes: pods, контроллеры репликации и службы».

📕По итогам вебинара вы:
- Поймете, как работать с базовыми сущностями в K8s
- Разберетесь как связаны между собой контроллер репликации, под и служба.
- Научитесь предоставлять единую точку входа к pods и поддержание их в необходимом количестве для стабильной работы

➡️ Регистрация на вебинар

Вебинар приурочен к старту онлайн-курса «DevOps практики и инструменты» в OTUS. Не упустите возможность протестировать формат обучения!

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
​​Послушал недавно очень любопытное выступление про взлом Confluence у не самой маленькой компании. Иногда думаешь, что сам работаешь не идеально и где-то косячишь. Но когда смотришь такие выступления, понимаешь, что у тебя ещё всё нормально.

▶️ Как нам стерли всю базу в Confluence и как мы героически ее восстанавливали

Там классическая история произошла. У ребят была on-premise установка лицензионной Confluence. В какой-то момент обновить лицензию стало невозможно, но так как купленная была бессрочная, то решили дальше ей пользоваться, но без обновлений. А смотрела эта система веб интерфейсом в интернет на дедике в Hetzner. На Confluence и Jira была плотно завязана ежедневная деятельность компании.

Ну и в какой-то момент появилась RCE (Remote Code Execution) уязвимость. Через неё им грохнули всю базу данных. А там было много всего. Стали искать бэкапы. Оказалось, что на своей СХД давно уже закончилось место и бэкапы не делались, а на AWS S3 архивы не копировались, потому что протух токен. И случились обе неприятности более года назад ❗️

В итоге случайно нашли дамп базы данных на самом сервере, от времени, когда делали миграцию 8 месяцев назад с одной СУБД на другую. Этот бэкап развернули, а более свежие данные восстанавливали из писем в ящиках пользователей. Привлекли для этого дела Java программиста из штата. Многие пользователи были подписаны на свои темы и получали уведомления на почту, когда на страницах происходили изменения. Из этого можно было вытянуть какой-то недостающий контент.

Восстановили, конечно не всё. Но каким-то образом всё же пережили инцидент и после этого настроили Prometheus для мониторинга с уведомлениями в Telegram. Главное, чтобы туда токен не протух, а то можно также год без мониторинга жить. Сказали, что планируют ещё и бэкапы проверять, а не только за местом следить. Также спрятали веб интерфейс Confluence за VPN.

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

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

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

#security
​​На днях случилась необычная ситуация, с которой раньше не сталкивался. На ноутбук прилетели обновления. Среди них было:

▪️ Intel Software Guard Extensions Device and Software
▪️ Intel Management Engine Firmware
▪️ BIOS Update

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

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

"Не было печали, апдейтов накачали".

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

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

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

Любопытно, на что браузеры так отреагировали. На обновление биоса или каких-то интеловских примочек?

#разное
Открытый практикум Linux by Rebrain: Введение в bash скрипты

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

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

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


26 Июня (Среда) в 20:00 по МСК

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

🔹Коды возврата
🔹Логические условия для выполнения команд
🔹Потоки ввода/вывода
🔹Скрипты
🔹Однострочные скрипты

Кто ведёт?

Андрей Буранов – Системный администратор в департаменте VK Play. 10+ лет опыта работы с ОС Linux. 8+ лет опыта преподавания. Входит в топ 3 лучших преподавателей образовательных порталов.

Бесплатные практикумы по DevOps, Linux, Networks и Golang от REBRAIN каждую неделю. Подключайтесь!

Реклама. ООО "РЕБРЕИН". ИНН 7727409582 erid: 2Vtzqw5YV4X
​​Иногда бывают ситуации, когда надо перекинуть файлы с одного сервера на другой, но при этом прямого доступа по ssh между этими серверами нет, не настроена аутентификация. Но вы при этом можете подключиться по ssh к каждому из этих серверов. Вариантов решения задачи как минимум два:

1️⃣ Скопировать файлы с одного сервера сначала к себе, а потом от себя на второй сервер. Я летом часто работаю по 4G, мне такой вариант не подходит. Как подвариант этого же варианта, копировать файлы на какой-то промежуточный сервер со скоростным интернетом.

2️⃣ Настроить аутентификацию между двумя серверами. Иногда это не хочется делать, а когда-то и невозможно. Для этого понадобится либо лишние сертификаты создавать, которые могут быть запаролены, либо включать аутентификацию по паролю. Я лично не против последнего, но часто её отключают.

Выйти из этой ситуации можно относительно просто без лишних телодвижений на серверах. На помощь придёт ssh-agent, который входит в состав ssh-client. Отдельно ставить не надо. Если его просто запустить, то он выведет свои переменные в терминал:

# ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-XXXXXXm7P5A8/agent.259; export SSH_AUTH_SOCK;
SSH_AGENT_PID=260; export SSH_AGENT_PID;
echo Agent pid 260;

Нам нужно их загрузить в оболочку для последующего использования. Сделаем это так:

# eval `ssh-agent`
Agent pid 266

Проверяем переменные:

# env | grep SSH_
SSH_AUTH_SOCK=/tmp/ssh-XXXXXXrrbmpN/agent.265
SSH_AGENT_PID=266

Теперь добавим свои ключи из ~/.ssh в ssh-agent:

# ssh-add

Посмотреть все добавленные ключи можно командой:

# ssh-add -l

Почти всё готово. Осталось разрешить проброс агента при ssh соединении. Для этого добавляем в конфигурационный файл ~/.ssh/config параметр для каждого сервера, к которому будем подключаться. Сервер можно указать как по ip адресу, так и по имени, в зависимости от того, как вы будете подключаться:

Host 1.2.3.4
ForwardAgent yes

Host srv-01
ForwardAgent yes

Всё, теперь можно подключаться:

# ssh root@1.2.3.4

Вы должны подключиться к серверу с пробросом агента. Проверьте это, зайдя в /tmp подключенного сервера. Там должен быть сокет агента:

root@1.2.3.4# ls /tmp | grep ssh-
ssh-vSnzLCX7LW

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

root@1.2.3.4# rsync -av /var/www/ root@5.6.7.8:/var/www/

Данные с сервера 1.2.3.4 будут скопированы на сервер 5.6.7.8 с использованием сертификата с вашей рабочей машины. Прямой аутентификации с 1.2.3.4 на 5.6.7.8 настроено не будет.

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

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

#ssh
Возникла небольшая прикладная задача. Нужно было периодически с одного mysql сервера перекидывать дамп одной таблицы из базы на другой сервер в такую же базу. Решений этой задачи может быть много. Я взял и решил в лоб набором простых команд на bash. Делюсь с вами итоговым скриптом. Даже если он вам не нужен в рамках этой задачи, то можете взять какие-то моменты для использования в другой.

#!/bin/bash

# Дамп базы с заменой общего комплексного параметра --opt, где используется ключ --lock-tables на набор отдельных ключей, где вместо lock-tables используется --single-transaction
/usr/bin/mysqldump --add-drop-database --add-locks --create-options --disable-keys --extended-insert --single-transaction --quick --set-charset --routines --events --triggers --comments --quote-names --order-by-primary --hex-blob --databases database01 -u'userdb' -p'password' > /mnt/backup/sql/"$(date +%Y-%m-%d)"-database01.sql

# Из общего дампа вырезаю дамп только данных таблицы table01. Общий дамп тоже оставляю, потому что он нужен для других задач
/usr/bin/cat /mnt/backup/sql/"$(date +%Y-%m-%d)"-database01.sql | /usr/bin/awk '/LOCK TABLES `table01`/,/UNLOCK TABLES/' > /mnt/backup/sql/"$(date +%Y-%m-%d)"-table01.sql

# Сжимаю оба дампа
/usr/bin/gzip /mnt/backup/sql/"$(date +%Y-%m-%d)"-database01.sql
/usr/bin/gzip /mnt/backup/sql/"$(date +%Y-%m-%d)"-table01.sql

# Копирую дамп таблицы на второй сервер, аутентификация по ключам
/usr/bin/scp /mnt/backup/sql/"$(date +%Y-%m-%d)"-table01.sql.gz sshuser@10.20.30.45:/tmp

# Выполняю на втором сервере ряд заданий в рамках ssh сессии: распаковываю дамп таблицы, очищаю таблицу на этом сервере, заливаю туда данные из дампа
/usr/bin/ssh sshuser@10.20.30.45 '/usr/bin/gunzip /tmp/"$(date +%Y-%m-%d)"-table01.sql.gz && /usr/bin/mysql -e "delete from database01.table01; use database01; source /tmp/"$(date +%Y-%m-%d)"-table01.sql;"'

# Удаляю дамп
/usr/bin/ssh sshuser@10.20.30.45 'rm /tmp/"$(date +%Y-%m-%d)"-table01.sql'


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

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

#mysql #bash #script
💛💛💚❤️💛❤️💛⤵️
Тема: «Стандартные потоки ввода/вывода».

На вебинаре мы разберем:
- Философию UNIX
- Что на самом деле происходит, когда мы видим текст утилит на экране
- Какие бывают стандартные потоки ввода/вывода
- Как работать с потоками

🏆 Спикер Андрей Буранов — системный администратор в VK, входит в топ-3 лучших преподавателей образовательных порталов.

🔑 Специальная цена на курс «Administrator Linux.Basic» для участников.

8️⃣9️⃣🔟Регистрируйтесь сейчас https://otus.pw/i5fG/

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
​​Несмотря на то, что существует много инструментов для сканирования узлов в сети, лично я всегда использую Nmap. И при этом никогда не помню точно, какие ключи применить для скана (как и в tcpdump). Использую либо свои заметки, либо Zenmap GUI, который установлен на винде.

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

Nmap Cheat Sheet 2024: All the Commands & Flags

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

Простое и быстрое сканирование только открытых портов до 1024 без подробностей:

nmap 192.168.1.1
nmap 192.168.1.1 192.168.2.1
nmap 192.168.1.1-254
nmap 192.168.1.0/24

Полное сканирование всех открытых портов:

nmap 192.168.1.1 -p- 

Ключ -p позволяет задавать диапазон портов в различных форматах. Например -p 21 или -p 21-100, -p http,https В примере выше сканируются абсолютно все порты. Проверка получается значительно дольше предыдущего примера без указания полного диапазона.

Скан хоста, не отвечающего на пинг. Без этого ключа не отвечающий на пинг хост игнорируется в сканировании, как находящийся вне сети.

nmap 192.168.1.1 -Pn

Основные техники сканирования:

nmap 192.168.1.1 -sS - TCP SYN, значение по умолчанию
nmap 192.168.1.1 -sT - TCP connect
nmap 192.168.1.1 -sU - UDP сканирование

Обычно полное сканирование TCP и UDP портов запускают так (будет очень долго длиться):

nmap 192.168.1.1 -sS -sU -p-

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

nmap 192.168.1.1/24 -sn

Если используете сложные списки хостов, или просто хотите быстро получить текстовый список какого-то набора IP адресов, то можно воспользоваться nmap:

nmap 192.168.1.1-15 -sL

Выведет список всех IP адресов в текстовом виде.

Поиск хостов ARP запросами в локальной сети:

nmap 192.168.1.1/24 -PR

В локальной сети поиск хостов ARP запросами проходит в разы быстрее обычных. Подробно об этом и других техниках поиска хостов рассказано на сайте nmap. ❗️Данный метод используется принудительно в локальных сетях, даже если указать другой.

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

nmap 192.168.1.1 -sV

Комбинированный ключ, который вызывает проверки ОС, версий сервисов, сканирование скриптами и использование traceroute. Более подробная и долгая проверка по сравнению с той, что выше. Вывод не очень нагляден для беглого просмотра:

nmap 192.168.13.1 -A

Команда выше универсальная и подойдёт для комплексного анализа хоста по портам до 1024. Это позволяет ей отрабатывать относительно быстро. Если запускать её по всем портам, то будет долго выполняться. Но можно сделать небольшой трюк, который я применяю на практике. Сначала ищем открытые порты, а потом на них выполняем полную проверку с ключом -A. Это значительно быстрее полной проверки по всем портам.

#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)
nmap -p$ports -A $1

Использовать:

./nmap.sh 192.168.1.1

Различные скорости и интенсивности проверок:

-T0 - paranoid (паранойдный)
-T1 - sneaky (хитрый)
-T2 - polite (вежливый)
-T3 - normal (обычный)
-T4 - aggressive (агрессивный)
-T5 - insane (безумный)

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

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

Полная шпаргалка по nmap в формате PDF.

#nmap
Словил вчера необычный глюк, когда подключал новый сервер в стойке. Купили бушный Dell PowerEdge R730. Я, кстати, люблю эти сервера. Если нужен обычный сервер общего назначения, то всегда сначала эти смотрю подходящих конфигураций. Туда и памяти, и дисков можно много поставить. И стоит всё это дёшево по сравнению с новым железом. А для каких-нибудь файловых серверов, бэкапов, почтовых, мониторингов и логов его за глаза хватает. Плюс, удалённое управление через iDRAC удобное. Есть хороший шаблон под Zabbix для мониторинга по SNMP. Настраивается за 5 минут.

Возвращаюсь к глюку. В стойке для серверов стоит старенький управляемый гигабитный свитч D-link DGS-1500-20. В этой компании вообще все свитчи этой фирмы. И на удивление, они нормально работают. На моей памяти ни один не сломался. Хотя я если подбираю свитчи, то стараюсь что-то подороже брать, например HPE. Не знаю, можно ли их сейчас купить. Давно не брал.

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

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

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

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

Что это было, даже не знаю. Идей нет. Только на глюки конкретного порта могу списать. Обычно если встречаешься с такими странностями, то либо в сети видишь спам пакетами от кого-нибудь, либо в статистике портов видно ошибки, либо тот же спам пакетами. Тут ничего подозрительного не увидел. У кого-то есть идеи, что это может быть?

#железо
🚀 Zabbix 7.0 уже вышел, получил много обновлений, а это означает запуск официальных тренингов на русском языке.

@zabbix_ru — наш телеграм-канал, посвященный Zabbix и ничему кроме Zabbix.

Посещение сертифицированных тренингов Zabbix — лучшая инвестиция, которую вы можете сделать для себя или своих коллег. Мы опросили участников предыдущих потоков и сформулировали основные преимущества от прохождения тренингов:

📖 устранить пробелы. Часто знания Zabbix ограничиваются эпизодическим изучением документации и фрагментарны. Курс поможет систематизировать знания и откроет для вас новые возможности уже знакомой системы мониторинга.

📖 делать своими силами. Участие подрядчиков в проектах внедрения подразумевает предоставление доступа в ваше окружение. Прохождение официальных курсов Zabbix на русском языке позволит вам выполнять работы своими силами.

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

📖 получить сертификат. Это официальный вендорский курс Zabbix, переведенный на русский язык. После прохождения курса у вас будет возможность сдать экзамен и получить сертификат. Сертификат подтверждает знания и дает дивиденды компании и мотивацию сотрудникам.

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

📅 Zabbix сертифицированный специалист 7.0 (ZCS 7.0) 5-9 августа

📅 Zabbix сертифицированный профессионал 7.0 (ZCP 7.0) 9-11 сентября

Программа курсов по ссылкам выше. Подробную информацию вы можете запросить, написав @galssoftware или через почту welcome@gals.software.

Реклама, ООО ГАЛС СОФТВЭР, ИНН 5047195298, erid: 2SDnjd13tzW
​​Если вам приходится регулярно вручную создавать новые виртуальные машины в Proxmox для различных целей, то могу посоветовать простой и быстрый способ это автоматизировать. Для этого понадобится технология Cloud-Init, которую Proxmox поддерживает по умолчанию.

С помощью Cloud-Init в Proxmox можно автоматически добавить в виртуальную машину:

- пользователей, пароли, ключи для SSH
- настройки DNS
- сетевые настройки
- выполнить принудительное обновление пакетов

Технически это выглядит следующим образом.

1️⃣ Вы настраиваете виртуальную машину так, как вам нужно. Ставите нужные пакеты, настраиваете ПО, если надо. Отдельно устанавливаете пакет с cloud-init:
# apt install cloud-init
Можно использовать готовые образы уже с cloud-init внутри:
https://cloud.debian.org/images/cloud/
https://cloud-images.ubuntu.com/
https://dl.astralinux.ru/ui/native/mg-generic/alse/cloud/
Proxmox поддерживает готовые образы, сформированные для OpenStack.

2️⃣ Из этой виртуальной машины делаете эталонный шаблон средствами Proxmox (пункт меню convert to template).

3️⃣ Создаёте из этого шаблона виртуальную машину. Добавляете к ней отдельное устройство Cloudinit Drive.

4️⃣ В настройках виртуальной машины есть отдельный раздел Cloud-init, где можно индивидуально для конкретной машины задать перечисленные выше настройки.

Без Cloud-Init пришлось бы руками лезть в новую виртуалку и менять эти параметры. А так они аккуратно задаются через интерфейс управления и потом применяются. Работает просто и удобно. Настраивается тоже без проблем.

Описанная выше инструкция с техническими подробностями есть в Wiki Proxmox. Там же FAQ по этой теме:

- Cloud-Init Support
- Cloud-Init FAQ

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

#proxmox
Я давно знаю и работаю с программой для бэкапа виртуальных сред Veeam Backup & Replication. Как всем известно, этот бренд ушёл из России, заблокировал доступ к своим ресурсам, не осуществляет продажи и не оказывает тех. поддержку. Полноценных аналогов с такой же функциональностью не так много. Я даже затрудняюсь назвать их, хотя наверняка есть, но мне не знакомы. То есть не работал с ними. Отечественные решения, насколько я знаю, по возможностям пока не дотягивают до Veeam.

Есть китайский аналог Vinchin Backup & Recovery. Я года два назад про него узнал, когда начались всевозможные санкции. Были пару обзоров от наших интеграторов КРОК и ГК ЛАНИТ. Причём отзывы вполне нормальные. В то же время на меня выходили сами разработчики и хотели какой-то кооперации: статьи, заметок в telegram, анонсов вебинаров и т.д. Был необычный опыт, так как общаться приходилось явно с не русскоязычным человеком, но мы понимали друг друга. Но всё как-то не срасталось по срокам и форматам.

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

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

📌 Vinchin Backup & Recovery умеет бэкапить:

Виртуальные машины на различных гипервизорах и системах виртуализации. Список там очень внушительный, перечислю наиболее популярные и актуальные: zVirt, ROSA Virtualization, RED Virtualization, Hyper-V, Proxmox, VMware, Citrix, XCP-ng, oVirt, OpenStack
Базы данных популярных СУБД: MS SQL, MySQL, Oracle, PostgreSQL, MariaDB
Файлы в операционных системах Windows и Linux с помощью установленных агентов. Есть поддержка Astra Linux и RED OS.
Целиком операционные системы Windows и Linux, либо отдельные диски в них.
Сетевые диски, подключаемые по протоколам CIFS и NFS.
Microsoft Exchange как локальной установки, так и облачной.
Виртуальные машины облачного провайдера AWS EC2

Получается, он покрывает все варианты информации. Тут и виртуальные машины, и сервера через агентов, и сетевые диски, и СУБД.

Я развернул у себя эту систему. Ставится автоматически из готового ISO образа. Всё управление через веб интерфейс. Попробовал забэкапить и восстановить виртуальные машины на Hyper-V и Proxmox, а также сетевой диск.

Всё получилось практически сходу. Система простая, функциональная и удобная. Мне прям она вообще понравилась. Оформил всё в простой обзор с картинками, чтобы наглядно показать, как всё это выглядит на практике:

⇨ Обзор Vinchin Backup & Recovery

Если выбираете себе подобный продукт, то посмотрите Vinchin. Честно говоря, я с некоторым скепсисом её разворачивал, ожидая увидеть какие-то нелогичности, мелкие баги как интерфейса, так и самой работы, возможно ещё какие-то проблемы. Но на удивление, всё прошло гладко и ровно. Никаких ошибок я не заметил.

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

#backup
Linux как секс!

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

В канале BashDays ты найдешь лучшие Linux и Bash практики. Действующий девопс-инженер, самобытно и с долей юмора, травит темы:

- Рекавери файлов через grep
- Почему коты гадят в макбуки
- Как отключить логирование
- Неочевидные трюки на Bash
- Сниффер SSH на strace

И это только цветочки. А если заскучал, поиграй с друзьями в piu-piu и надери им бэкенд. Рекомендую!

В BashDays даже джуны становятся сеньорами.

Подписывайся, это самый простой способ прокачать свои хард-скиллы: @bashdays
Видео про весёленький денёк у сисадмина - лучший юмористический ролик, что я знаю про сисадминские будни. Столько времени прошло, но ничего веселее и оригинальнее я не видел. Для тех, кто не знает (завидую таким), речь идёт вот об этом:

▶️ https://www.youtube.com/watch?v=uRGljemfwUE - оригинал
▶️ https://www.youtube.com/watch?v=W4uGoFBL-GM - субтитры на русском

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

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

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

The Website is Down #2: Excel Hell
https://www.youtube.com/watch?v=1SNxaJlicEU

🔥The Website is Down #3: Remain Calm
https://www.youtube.com/watch?v=1XjKnxOcaO0

The Website is Down Episode #4: Sales Demolition (NSFW)
https://www.youtube.com/watch?v=v0mwT3DkG4w

Episode #4.5: Chipadmin
https://www.youtube.com/watch?v=s8QjArjcjbQ

#юмор
​​Давненько ничего не было на тему игр. Попалась одна, которая неплохо выглядит, и про которую я ещё не писал. Если что, полная подборка всех игр, про которые я писал на канале, есть в отдельной публикации.

Речь пойдёт про Cyber Attack. Это относительно свежая игра от 2020 года. Выглядит как стратегия, где вы играете за лидера хакерской группировки. Вам надо будет добывать различную информацию, взламывать сервера, вмешиваться в работу правительства, защищаться от внешних атак от других групп.

Игра, если что, есть на торрентах. Не знаю, можно ли сейчас в стиме что-то покупать. Стоит, как чашка кофе.

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

▶️ ВОТ ТАК РАБОТАЮТ НАСТОЯЩИЕ ПРОФИ ( Cyber Attack )

У него ещё пара роликов с этой игрой есть. Игра, как я понял, чисто почилить пару часиков в бутафории. Покачать немного навыки в стиле игр на развитие 90-х, 2000-х годов, где вы копите деньги, качаете скилы, покупаете новое оборудование и т.д.

#игра
Я много раз упоминал в заметках, что надо стараться максимально скрывать сервисы от доступа из интернета. И проверять это, потому что часто они туда попадают случайно из-за того, что что-то забыли или неверно настроили. Решил через shodan глянуть открытые Node Exporter от Prometheus. Они часто болтаются в открытом виде, потому что по умолчанию никаких ограничений доступа в них нет. Заходи, кто хочешь, и смотри, что там есть.

И первым же IP адресом с открытым Node Exporter, на который я зашёл, оказалась чья-то нода Kubernetes. Причём для меня она сразу стала не чей-то, а я конкретно нашёл, кому она принадлежит. Мало того, что сам Node Exporter вываливает просто кучу информации в открытый доступ. Например, по volumes от контейнеров стало понятно, какие сервисы там крутятся. Видны названия lvm томов, точки монтирования, информация о разделах и дисках, биос, материнка, версия ОС, система виртуализации и т.д.

На этом же IP висел Kubernetes API. Доступа к нему не было, он отдавал 401 Unauthorized. Но по сертификату, который доступен, в Alternative Name можно найти кучу доменов и сервисов, которые засветились на этом кластере. Я не знаю, по какому принципу они туда попадают, но я их увидел. Там я нашёл сервисы n8n, vaultwarden, freshrss. Не знаю, должны ли в данном случае их веб интерфейсы быть в открытом доступе или нет, но я в окна аутентификации от этих сервисов попал.

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

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

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

https://crt.sh

Можете себя проверить.

#devops #security
🔆 Приглашаем вас на вебинар "Знакомство с MySQL InnoDB Cluster"! 🚀

🧠 Мы разберём все отличия кластерного решения InnoDB Cluster от обычной репликации. Вы узнаете, как настроить и запустить рабочий кластер, получите полное представление о возможностях и ограничениях этого решения.

👍 Наш вебинар станет находкой для системных администраторов Linux, администраторов баз данных (DBA) и всех, кто хочет познакомиться с InnoDB Cluster. Вебинар откроет новые горизонты в администрировании баз данных, позволив понять основные различия архитектуры кластера и традиционной репликации.

🏆 Спикер Николай Лавлинский — технический директор в Метод Лаб, PhD Economic Science, опытный руководитель разработки и преподаватель.

Занятие пройдёт 04 июля 2024 года в 19:00 по мск в рамках курса «Инфраструктура высоконагруженных систем». Доступна рассрочка на обучение!

👉 Зарегистрируйтесь для участия https://otus.pw/0vF7/

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
​​Для тех, кто пользуется Proxmox Backup Server (PBS) важное предостережение. Я им пользуюсь практически с момента релиза, но только недавно столкнулся с проблемой. Не допускайте исчерпания свободного места на сервере с бэкапами.

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

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

То ли место не успело освободиться, то ли дедупликация в реальности сработала не так, как я ожидал, но в итоге было занято 100% доступного объёма хранилища и все процессы в нём встали. Он даже сам себя очистить не мог. Процесс Garbage Collect не запускался из-за недостатка свободного места. Я решил вопрос просто - очистил логи systemd:

# journalctl --vacuum-size=256M

Они занимали несколько гигабайт, так что мне хватило для того, чтобы отработал процесс Garbage Collect. Но он не удаляет данные, а только помечает их к удалению. Реально данные будут удалены через 24 часа и 5 минут после того, как сборщик мусора пометит их на удаление. И никакого способа вручную запустить реальную очистку хранилища нет. По крайней мере я не нашёл.

Очень внимательно прочитал несколько тем на официальном форуме по этой проблеме и везде совет один - освобождайте место или расширяйте хранилище, если у вас zfs, запускайте сборщик мусора и ждите сутки. Других вариантов нет, кроме полного удаления Datastore со всеми бэкапами. Тогда место освободится сразу.

Это особенность реализации дедупликации в PBS. Помеченные на удаления chunks реально удаляются через 24 часа. Форсировать этот процесс не получится.

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

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

Сразу покажу на практике, в чём заключается удобство Traefik и в каких случаях имеет смысл им воспользоваться. Для примера запущу через Traefik 2 проекта test1 и test2, состоящих из nginx и apache и тестовой страницы, где будет указано имя проекта. В этом примере будет наглядно виден принцип работы Traefik.

Запускаем Traefik через docker-compose.yaml:

# mkdir traefik && cd traefik
# mcedit docker-compose.yaml


services:
reverse-proxy:
image: traefik:v3.0
command: --api.insecure=true --providers.docker
ports:
- "80:80"
- "8080:8080"
networks:
- traefik_default
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
traefik_default:
external: true


# docker compose up


Можно сходить в веб интерфейс по ip адресу сервера на порт 8080. Пока там пусто, так как нет проектов. Создаём первый тестовый проект. Готовим для него файлы:

# mkdir test1 && cd test1
# mcedit docker-compose.yaml


services:
nginx:
image: nginx:latest
volumes:
- ./app/index.html:/app/index.html
- ./default.conf:/etc/nginx/conf.d/default.conf
labels:
- "traefik.enable=true"
- "traefik.http.routers.nginx-test1.rule=Host(`test1.server.local`)"
- "traefik.http.services.nginx-test1.loadbalancer.server.port=8080"
- "traefik.docker.network=traefik_default"
networks:
- traefik_default
- test1

httpd:
image: httpd:latest
volumes:
- ./app/index.html:/usr/local/apache2/htdocs/index.html
networks:
- test1

networks:
traefik_default:
external: true
test1:
internal: true


# mcedit default.conf 

server {
listen 8080;
server_name _;

root /app;
index index.php index.html;

location / {
proxy_pass http://httpd:80;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}


# mcedit app/index.html


It's Container for project test1


Запускаем этот проект:

# docker compose up


В веб интерфейсе Traefik, в разделе HTTP появится запись:

Host(`test1.server.local`) http nginx-test1@docker  nginx-test1

Он по меткам в docker-compose проекта test1 автоматом подхватил настройки и включил проксирование всех запросов к домену test1.server.local в контейнер nginx-test1. При этом сам проект test1 внутри себя взаимодействует по своей внутренней сети test1, а с Traefik по сети traefik_default, которая является внешней для приёма запросов извне.

Теперь можно скопировать проект test1, изменить в нём имя домена и имя внутренней сети на test2 и запустить. Traefik автоматом подцепит этот проект и будет проксировать запросы к test2.server.local в nginx-test2. Работу этой схемы легко проверить, зайдя откуда-то извне браузером на test1.server.local и test2.server.local. Вы получите соответствующую страницу index.html от запрошенного проекта.

К Traefik легко добавить автоматическое получение TLS сертификатов от Let's Encrypt. Примеров в сети и документации много, настроить не составляет проблемы. Не стал показывать этот пример, так как не уместил бы его в формат заметки. Мне важно было показать суть - запустив один раз Traefik, можно его больше не трогать. По меткам в контейнерах он будет автоматом настраивать проксирование. В некоторых ситуациях это очень удобно.

#webserver #traefik #devops
Освойте популярные подходы к мониторингу СУБД PostgreSQL в Zabbix!

Приглашаем 27 июня в 20:00 мск на бесплатный вебинар «Мониторинг PostgreSQL в Zabbix»

Вебинар является частью полноценного онлайн-курса "Observability: мониторинг, логирование, трейсинг от Отус".

➡️ Записаться на вебинар

На вебинаре мы разберем:

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

🎙 Спикер Иван Федоров — опытный технический директор и капитан команды IBI Solutions.

Записывайтесь сейчас, а мы потом напомним. Участие бесплатно.

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
Файловая система ext4 при создании резервирует 5% всего объёма создаваемого раздела. Иногда это очень сильно выручает, когда система встаёт колом и нет возможности освободить место. А без этого она не может нормально работать (привет zfs и lvm-thin). Тогда можно выполнить простую операцию:

# tune2fs -m 3 /dev/mapper/root
или
# tune2fs -m 3 /dev/sda3

Вместо 5% в резерв оставляем 3%, а высвободившееся место остаётся доступным для использования. На больших разделах 5% может быть существенным объёмом. Очень хочется этот резерв сразу поставить в 0 и использовать весь доступный объём. Сделать это можно так:

# tune2fs -m 0 /dev/sda3

Сам так не делаю никогда и вам не рекомендую. Хотя бы 1% я всегда оставляю. Но чаще всего именно 3%, если уж совсем место поджимает. Меня не раз и не два выручал этот резерв.

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

Создаём swap размером в гигабайт и подключаем:

# dd if=/dev/zero of=/swap bs=1024 count=1000000
# mkswap /swap
# chmod 0600 /swap
# swapon /swap

Если вдруг решите, что своп вам больше не нужен, отключить его так же просто, как и подключить:

# swapoff -a
# rm /swap

Третьим вариантом страховки в случае отсутствия свободного места на разделе является заранее создание пустого файла большого объёма.

# fallocate -l 10G /big_file

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

Может показаться, что это какие-то умозрительные примеры. Но на деле я много раз сталкивался с тем, что кончается место на сервере по той или иной причине, и службы на нём встают. А надо, чтобы работали. Пока разберёшься, что там случилось, уходит время. Я сначала добавляю свободное место из имеющихся возможностей (swap или резерв ext4), а потом начинаю разбираться. Это даёт возможность сразу вернуть работоспособность упавшим службам, а тебе несколько минут, чтобы разобраться, в чём тут проблема. Обычно это стремительно растущие логи каких-то служб.

#linux