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

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

Второй канал: @srv_admin_live
Сайт: serveradmin.ru
Download Telegram
​​Одна из особенностей Unix систем, которая меня сразу привлекла по сравнению с Windows, это наличие там CRON. По мне так это очень крутой, простой, удобный инструмент для управления периодическими задачами.

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

Сейчас на смену cron пришли systemd timers. Мне не особо нравится формат работы с ними, но приходится мириться и использовать, потому что всё больше софта по умолчанию свои задачи хранит там. Timers предлагают более широкий функционал по сравнению с cron и более гибкие настройки. Так что надо привыкать и пользоваться. Для этого решил сделать для себя шпаргалку и сразу поделиться с вами.

Сначала поясню, что умеют таймеры из того, что не умеет cron. Например, запустить какую-то задачу через заданное время после какого-то события. Для cron такое событие, насколько мне известно, может быть только — @reboot. Таймер же может запуститься, например, через некоторое время после завершения работы какого-то сервиса, возможно тоже вызванного по таймеру.

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

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

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

Посмотреть список всех таймеров:
# systemctl list-timers --all
Только активных:
# systemctl list-timers
Более подробная информация:
# systemctl status *timer

Пример создания таймера, который выполняет команду df -h. Сначала создаём конфигурацию сервиса в файле /etc/systemd/system/mydf.service:

[Unit]
Description=Start df and log result in systemd journal
Wants=mydf.service

[Service]
Type=oneshot
ExecStart=/usr/bin/df -h

[Install]
WantedBy=multi-user.target

Запустим и проверим результат. По умолчанию, вывод пишется в журнал systemd.
# systemctl start mydf.service
# systemctl status mydf.service

После нескольких запусков журнал можно посмотреть вот так:
# journalctl -u mydf.service

Добавим задачу в планировщик, создав для неё минутный таймер в файле /etc/systemd/system/mydf.timer

[Unit]
Description=Log df results every minute
Requires=mydf.service

[Timer]
Unit=mydf.service
OnCalendar=*-*-* *:*:00

[Install]
WantedBy=timers.target

Запускаем таймер:
# systemctl start mydf.timer
Через несколько минут проверяем:
# journalctl -u mydf.service
Если лог очень большой, его имеет смысл ограничить:
# journalctl -S "5min ago" -u mydf.service
Формат systemd.time, в том числе и для таймеров, можно посмотреть в документации (сразу приведу шаблон DOW YYYY-MM-DD HH:MM:SS). Чаще всего при просмотре логов используется сокращение today или yesterday. То, что таймер пишет вывод в лог, удобно, но имейте ввиду, что за этим выводом стоит следить, если он большой.

Добавляем таймер в автозагрузку:
# systemctl enable mydf.timer

Удаляем из автозагрузки и останавливаем:
# systemctl disable mydf.timer
# systemctl stop mydf.timer

Примеры служб и таймеров удобно посмотреть в уже готовых системных, в директории /lib/systemd/system. Показательны примеры для apt-daily и apt-daily-upgrade. Там и зависимости, и запуск одного после другого. Ну и про документацию не забываем.

#systemd #terminal #linux
​​Ребята, я вам сейчас расскажу реальную тему. Знаю, как вы все любите Proxmox и заметки о нём. Как только выходит обновление, мне обязательно об этом пишут в личку или в чате.

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

Запросы (1, 2) на официальном форуме этой возможности висят от 2020 года с комментариями разработчиков о том, что когда-нибудь это будет сделано. Я поискал по этой теме информацию и там же на форуме видел, что работа над этим функционалом ведётся. Уже кое-что реализовано в виде cli команд для переезда виртуалок между разнородными серверами. Это будет часть нового функционала. Но окончательно обещают единое управление не раньше 2024 года.

Там же на форуме я нашёл ссылку на шикарный проект — https://cluster-manager.fr. Это менеджер кластеров и одиночных серверов. Сделано в виде приложения под Windows. Скачиваете, запускаете и добавляете все свои сервера и кластеры. Выглядит всё очень удобно и функционально.

Добавил пару серверов и потестил. Весь основной функционал работает. Само приложение шустрое. Управлять виртуалками даже одного сервера удобно. Это быстрее, чем заходить в веб интерфейс. Настройки все хранятся в json файле. Пароль не в открытом виде. Как зашифрован — не знаю. Пока добавил только свои тестовые сервера. Надо будет навести справки про эту панельку и немного погонять.

Сам автор пишет, что никакие данные не собирает. Предлагает в этом убедиться всем желающим, запустив Wireshark. Кто не умеет с ним работать, может научиться тут, как я 😁.

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

#proxmox
Мне регулярно приходится писать различные метрики и разные иностранные слова, которые трудно запомнить, как писать правильно. Решил сделать для себя шпаргалку, распечатать её и повесить на стену, чтобы раз и навсегда решить этот вопрос. Запомнить я всё это никак не могу. Постоянно приходится проверять правильное написание.

Скорости передачи данных:
килобиты в секунду — кбит/с (kbps, kbit/s или kb/s)
мегабиты в секунду — Мбит/с (Mbps, Mbit/s или Mb/s)
гигабиты в секунду — Гбит/с (Gbps, Gbit/s или Gb/s)
❗️Сокращение килобит всегда пишется с маленькой буквы

Размеры данных:
Килобайт — КБ, Кбайт (KB)
Мегабайт — МБ, Мбайт (MB)
Гигабайт — ГБ, Гбайт (GB)
❗️Сокращение килобайт пишется с большой буквы, а килобайт в секунду — кБ/с

Грамматика:
- Трафик, хотя traffic
- Приоритет, но приоритизация
- Файрвол, брандмауэр
- Децибел
- Кеш, хеш

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

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

#разное
​​Когда настраиваете сервер или кластер PostgreSQL, перед тем, как нагрузить его рабочей нагрузкой, хочется как-то протестировать его и посмотреть, как он себя поведёт под нагрузкой или в случае каких-то ошибок. Особенно это актуально, если у вас ещё и мониторинг настроен. Хочется на деле посмотреть, как он отработает.

Сделать подобное тестирование с имитацией рабочей нагрузки и ошибок можно с помощью утилиты Noisia. Она написала на Gо, есть в виде бинарника или rpm, deb пакета. Забрать можно из репозитория. Либо запустить через Docker.

Автор утилиты подробно рассказывает про принцип работы и функциональность на онлайн вебинаре — Noisia - генератор аварийных и нештатных ситуаций в PostgreSQL (текстовая расшифровка). Там описаны основные возможности и параметры для использования.

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

# docker run --rm -ti lesovsky/noisia:latest noisia \
--conninfo="postgres://postgres:pass@10.20.1.56:5432/dbname" \
--failconns

Не забудьте настроить удалённые подключения к базе, либо запускайте нагрузку локально, не через docker.

Запуск транзакций, которые завершаются откатом (ROLLBACK), то есть заканчиваются с ошибкой. За ними обычно тоже следят (pg_stat_database.xact_rollback).

# docker run --rm -ti lesovsky/noisia:latest noisia \
--conninfo="postgres://postgres:pass@10.20.1.56:5432/dbname" \
--rollbacks \
--rollbacks.min-rate=10 \
--jobs=3 \
--duration=20

Ну и так далее. Все параметры можно посмотреть в help:

# docker run --rm -ti lesovsky/noisia:latest noisia --help

#postgresql
Знакома ситуация? У меня, к сожалению, регулярно такое случается. Залипнешь вечером на какой-то проблеме, и пока не решишь, не можешь лечь спать. Буквально вчера, точнее сегодня, лёг спать под утро.

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

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

Самое главное, что большого смысла в этом не было. РКН обычно шлёт абузы на старые ссылки, которые 3-4 недели назад могли сделать. То есть разбираться ночью мне не было большого смысла. Просто любопытно стало решить задачу.

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

📌 Больше всего просмотров:
◽️Серия вебинаров: "Zabbix с нуля до короля" (7918)
◽️Веб клиент для почты Cypht (7476)
◽️Подборка материалов на тему VOIP (7268)

📌 Больше всего комментариев:
◽️OPNsense vs pfSense (167)
◽️Мои мысли на тему подбора работы (122)
◽️Шутка и мои мысли на тему ChatGPT (74)

📌 Больше всего пересылок:
◽️Серия вебинаров: "Zabbix с нуля до короля" (460)
◽️Запрет скана портов с помощью iptables (443)
◽️Описание утилиты netcat (434)
◽️Лекции по курсу "Компьютерные сети", Климанов М.М. (406)

📌 Больше всего реакций:
◽️Мои мысли на тему подбора работы (284)
◽️Где и как я работал (235)
◽️Плюсы и минусы фриланса (193)
◽️Мемчик из комментария на сайте (178)

#топ
🖥️ Приглашаем на вебинар «CommuniGate Systems: российская платформа корпоративных коммуникаций» ‼️

🗓 4 апреля в 10:00 (Мск)

О чем будем говорить:
🔹 Возможности и преимущества платформы CommuniGatePro. Все корпоративные коммуникации в формате одного окна.
🔹 Варианты миграции с зарубежных решений. Необходимые ресурсы и разработанные утилиты миграции.
🔹 Универсальные коммуникационные клиенты Samoware. Экосистема приложений для корпоративных пользователей.
🔹 Ближайшие релизы и планы развития. Чаты 2.0, ВКС в составе платформы.
🔹 Практический опыт. Успешные кейсы внедрения в различных отраслях экономики.
🔹 Демонстрация новых возможностей платформы
 
Спикеры:
Евгений Кривошеев, руководитель направления, Галэкс
Наталья Асташкина, руководитель направления по работе с партнерами CommuniGate Systems
Владимир Бабаев, ведущий инженер CommuniGate Systems
Андрей Шкаруба, руководитель отдела внедрения, Галэкс Сервис

Участие в вебинаре бесплатное.
👉 Регистрация: https://www.galex.ru/lp/migraciya/
​​▶️ Канал DevOpsConf в пятницу загрузил записи выступлений с летних конференций DevOpsConf и TechLead Conf, которые прошли в июне. Посмотрите список, наверняка что-то будет интересно. Я себе в закладки добавил несколько выступлений, которые посмотрю:

Организация сложных алертов
Эксплуатация без k8s
От DevOps к Platform Engineering (впервые сылшу этот термин)
DevOps в Юле: сломить устоявшееся
Проект "Serenity" — единый мониторинг
DevOps спит, Gitlab CI работает
Ansible плох? Нет, просто готовьте его правильно!
IaC на Ansible. Как построить понятную инфраструктуру
Почему ваши DevOps — эникейщики
МК "Grafana as code

Обычно такие вещи слушаю на скорости 1,5, когда куда-то иду или еду. Если что-то покажется интересным, законспектирую тезисы и поделюсь.

#видео #devops
​​Ребята, час ИКС всё ближе. Яндекс повторно сделал рассылку на тему того, что с 17 апреля почта для домена станет платной для всех аккаунтов, где больше 3-х почтовых ящиков. Надо срочно переезжать, кто не хочет платить. Откладывать нельзя, так как предвижу какие-то ограничения на скачивание почты из ящиков из-за того, что переезжающих будет много и скачать быстро свою почту не получится.

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

📌 Могу порекомендовать следующие варианты, от простого к сложному.

1️⃣ Аналогичный сервис от mailru — biz.mail.ru. Пару-тройку месяцев назад я заходил туда и явно видел информацию о том, что есть бесплатный тариф. Сейчас вообще не вижу никакой информации о тарифах и тем более о том, что есть бесплатная версия. Тем не менее видел в отзывах информацию, что почта всё ещё бесплатна. Подтвердите или опровергните те, кто наверняка знают и пользуются этой почтой бесплатно.

2️⃣ Купить любой виртуальный хостинг у крупного хостера. С виртуальным хостингом почти всегда в комплекте идёт возможность создавать и пользоваться почтовыми ящиками. Это самый дешёвый вариант для небольших ящиков, так как оплата на таких тарифах обычно идёт за занимаемое место, а не количество ящиков. Если вы настроите почтовый сервер у себя локально, а этот сервис будете использовать только для пересылки, то вам хватит самого дешёвого тарифа за 100-150 р.

3️⃣ Купить VPS или дедик и развернуть там почтовый сервер из конструктора. Сейчас очень много готовых решений, где вручную нужно будет только DNS записи настроить, а всё остальное будет развёрнуто автоматически. Вот моя публикация с подборкой таких решений. В ней не хватает Mail-in-a-Box, которую обозревал позже. Мне очень интересен сервер Tegu, который хочу развернуть и попробовать. Надеюсь, получится на этой неделе. Напишу статью после тестов.

4️⃣ Настроить свой собственный сервер, например, на базе postfix. Моя свежая и подробная статья. Если внимательно повторите написанное, то всё получится. Получил много подтверждений того, что в статье нет ошибок и по ней получается настроить работающий полнофункциональный почтовый сервер с базовой защитой от спама и веб интерфейсом.

5️⃣ Если вам нужен сервер только для отправки почты с сайта или для рассылок, по советую специализированные решения для этого: Postal и Cuttlefish.

6️⃣ Для админов Windows отдельно порекомендую простой, надёжный и бесплатный сервер hMailServer.

Напомню, что перенести почту можно с помощью программ imapsync и imapcopy. Либо самый простой вариант — в любом imap клиенте подключить 2 почтовых ящика и перенести письма из одного в другой. Рекомендую для этого Thunderbird.

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

#mailserver
​​Расскажу вам немного про то, как работает протокол DHCP. Он на первый взгляд простой. Какой админ не знает, что такое DHCP? Но если его специально не изучал, то многие нюансы могут быть непонятны или неизвестны.

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

🔹Клиент, получающий настройки от сервера DHCP, должен быть с ним в одном широковещательном домене, так как запрос от клиента выполняется широковещательный. Исключение — использование DHCP-relay для пересылки запросов и ответов из одного домена в другой.

🔹По умолчанию сервер использует 67-й, а клиент 68-й порт UDP.

🔹Как я уже сказал, DHCP сервер может выдавать не только базовые настройки IP адреса, маски, шлюза по умолчанию и DNS сервера. С его помощью можно передать большое количество других параметров: маршруты, адрес TFTP сервера для загрузки по сети, MTU, часовой пояс, список NTP серверов и т.д.

🔹После выдачи аренды с сетевыми настройками на определённое время, клиент через половину этого времени начинает пытаться обновить аренду. Если получается — аренда продлевается, если нет, то использует её до окончания времени аренды, а потом снова начинает слать запросы к DHCP серверу.

🔹Сервер может привязывать IP адрес клиента не только по MAC адресу, но и по ClietnID (Machine-id). Причём последний часто имеет приоритет.

🔹Для получения сетевых настроек, клиент сначала отправляет запрос на поиск сервера DHCPDISCOVER, получает ответ от сервера DHCPOFFER с предлагаемыми настройками. После этого клиент отправляет запрос на установку предложенных настроек DHCPREQUEST и получает подтверждение от сервера DHCPACK.

🔹Наличие DHCP сервера не гарантирует отсутствие проблем с дублированием IP адресов. У него есть некоторые возможности по разрешению конфликтов, но на 100% возможностями только DHCP сервера их не разрешить.

🔹Защититься от конфликтов, возникающих из-за посторонних DHCP серверов в сети можно с помощью функционала коммутаторов DHCP Snooping. Коммутатор может отбрасывать трафик DHCP, определенный как неприемлемый. Например, идущий с недоверенного для этого порта.

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

#network #dhcp
​​Продолжу тему переезда и переноса почтовых ящиков. А также их бэкапа из облачных сервисов. Ранее я рассматривал инструменты для переноса писем с одного imap ящика в другой. Сейчас расскажу про imap-backup, с помощью которого можно сохранить локально архив почты из любого imap ящика.

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

Imap-backup умеет скачивать почту по imap и сохранять её локально в формате mbox. Это по сути один большой текстовый файл, где письма идут один за другим. Программа написана на ruby, так что проще всего её поставить через gem. На Debian это выглядит следующим образом:

# apt install rubygems
# gem install imap-backup

Теперь можно запустить программу и выполнить первоначальную настройку через консоль:

# imap-backup setup

Либо сразу нарисовать конфиг в формате json и положить его в ~/.imap-backup/config.json. Вот рабочий пример для Яндекса, проверил лично:

{
 "version": "2.0",
 "accounts": [
  {
   "username": "zabbix@serveradmin.ru",
   "password": "topsecretpassword",
   "local_path": "/root/.imap-backup/zabbix_serveradmin.ru",
   "folders": [

   ],
   "server": "imap.yandex.ru"
  }
 ]
}

Для доступа по imap в ящике нужно создать пароль для приложения. В самих настройках ящика есть инструкция для этого.

Программа выкачивает почту в отдельно созданный каталог для ящика. Каждая папка imap — отдельный файл mbox. Далее эту почту можно подключить к Thunderbird. Для этого надо установить расширение ImportExportTools NG из официального магазина. После установки в разделе Инструменты в самом конце будет раздел ImportExportTools, через который можно выполнить импорт папки mbox.

Я всё проверил лично. Работает хорошо, проблем не возникло. Можно таким образом настроить регулярный бэкап почты из любого почтового ящика, или группы ящиков. Например, того же Gmail. С ним программа тоже работает. Imap-backup — хороший инструмент для массового бэкапа почтовых ящиков облачных сервисов.

#mailserver
​​В релизе Proxmox 7.3 была анонсирована утилита Proxmox Offline Mirror, которая вышла чуть раньше, в сентябре. Нигде не видел акцента на этом инструменте. Сам узнал случайно от одного из подписчиков. Но при этом сами разработчики Proxmox уделили много внимания этому инструменту. Создали отдельный поддомен для него и написали подробную инструкцию по использованию:

Proxmox Offline Mirror released!
https://pom.proxmox.com

По своей сути это репозиторий deb пакетов для продуктов компании: Proxmox VE, Proxmox Backup Server и Proxmox Mail Gateway. Также поддерживается стандартный репозиторий для Debian и в теории для любых deb пакетов. С помощью Proxmox Offline Mirror можно создать локальный репозиторий в сети без доступа к интернету.

Пакет с proxmox-offline-mirror живёт в стандартном репозитории proxmox и ставится через пакетный менеджер:
# apt install proxmox-offline-mirror

Настройку можно выполнить как интерактивно, запустив:
# proxmox-offline-mirror setup
так и сразу указав все параметры в одной команде. Пример для репозитория Debian:
# proxmox-offline-mirror config mirror add \
 --id debian-bullseye-security \
 --architectures amd64 \
 --architectures all \
 --repository 'deb http://deb.debian.org/debian-security bullseye-security main contrib non-free' \
 --key-path /etc/apt/trusted.gpg.d/debian-archive-bullseye-security-automatic.gpg \
 --sync true \
 --verify true \
 --base-dir /mnt/mirror/base-dir

Можно создавать не только репозитории с доступом по HTTP, но и локальные репозитории, которые можно переносить, к примеру, на флешке или монтировать на целевые хосты по NFS, SMB. Всё это подробно описано в документации. Она небольшая, написана кратко и понятно.

Я не до конца понял, почему Proxmox решил выпустить свой продукт по этой теме. Из каких-то удобств заметил только интерактивную настройку репозитория через консоль для подключения родных репозиториев. Всё остальное плюс-минус то же самое, что и у других подобных продуктов, типа aptly или apt-offline.

#proxmox
​​Хочу немного подбить тему с веб панелями для хостинга сайтов. Во всех постах на эту тему идёт упоминание Fastpanel, как наиболее удобной и популярной. В целом, это так, но есть важные нюансы, которые в наше время стоит учитывать.

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

Также весьма популярна панель BrainyCP. В целом она тоже неплоха. Разработчики у неё из Украины. Использовать её или нет с такими вводными в РФ, решать вам.

У меня недавно состоялся небольшой диалог с человеком, который представился Oleksii Pikurov. Это автор чата MyChat, про который у меня есть статья на сайте. В комментариях к статье я предостерёг пользователей от использования этого чата на территории РФ, на что Oleksii Pikurov ответил, что это необоснованно и неправильно, ведь они ни в каких вредных действиях замечены не были. Это так, но я решил сходить на их сайт и почитать блог на украинском языке, который они сами ведут. А там всё как обычно — кацапстан, рашка и т.д. На русском языке всё чинно, благородно, ничего подобного нет.

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

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

Из бесплатных я уже обозревал CloudPanel и aaPanel. Также есть очень неплохая HestiaCP (форк VestaCP), хочу на неё обзор сделать. Выглядит неплохо, на сайте есть демка.

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

#webserver #hosting_panel
​​У меня на канале и на сайте много материалов по теме бэкапов и инструментов для их выполнения, так что найти что-то новое и полезное довольно трудно. Напомню, что материалы по бэкапам удобнее всего посмотреть по тэгу #backup, к нему можно добавить тэг #подборка, либо посмотреть регулярно обновляемую статью на сайте — топ бесплатных программ для бэкапа.

Но сегодня мне есть чем вас порадовать. Да и себя тоже, потому что программу, про которую я напишу дальше, я взял себе на вооружение. Речь пойдёт про бесплатный инструмент ReaR (Relax and Recover). Эта утилита есть в стандартных репозиториях популярных дистрибутивов, в том числе Debian. Ставится с некоторыми зависимостями, которые понадобятся по ходу дела:

# apt install rear genisoimage syslinux nfs-common

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

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

Для хранения архива я выбрал NFS шару. Можно использовать SMB, RSYNC или локальное хранение на внешнем USB устройстве (диск, флешка). Нарисовал простенький конфиг /etc/rear/local.conf:

OUTPUT=ISO
OUTPUT_URL=nfs://192.168.13.50/volume2/NonRaid
BACKUP=NETFS
BACKUP_URL=nfs://192.168.13.50/volume2/NonRaid
BACKUP_PROG_EXCLUDE=("${BACKUP_PROG_EXCLUDE[@]}" '/media' '/var/crash')

Запустил бэкап:
# rear -v -d mkbackup
Дождался его окончания и проверил, что получилось на выходе:
# ls -h
backup.log backup.tar.gz README rear-debian11-vm.iso rear-debian11-vm.log VERSION

Забрал rear-debian11-vm.iso и скопировал на HyperV. Создал там виртулаку, подключил ISO, загрузился с него, выбрал восстановление. Убедился заранее, что на NFS сервер есть доступ с этого гипервизора.

Дождался загрузки временной системы, запустил там:
# rear -v -d recover

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

Когда всё завершилось, перезагрузил систему и загрузился с жёсткого диска. Система загрузилась без ошибок и каких-либо действий с моей стороны. Хотя из-за разности гипервизоров, некоторые вещи были другими. Например, на Proxmox сетевой интерфейс был ens18, а на HyperV — eth0. Во время восстановления это было учтено, сетевые настройки были перенесены.

ReaR очень удобная программа. Раньше для переноса системы я рекомендовал либо Clonezilla, либо Veeam agent for Linux FREE. Но у них есть существенные минусы. Для первого нужно останавливать машину и делать полный клон системы. Если она большая, то это занимает много времени. Для Veeam надо перезагружать ОС после установки. Он там довольно сильно в систему врезается со своим драйвером или модулем ядра. Не помню уже точно, как он работает.

С ReaR ничего этого делать не надо. Можно железный сервер забэкапить и перенести без остановки и установки каких-то дополнительных компонентов. Достаточно поставить сам пакет с rear, nfs клиент, если нужен для бэкапа, и пару пакетов для создания iso образа: genisoimage syslinux, которые часто уже есть в базовой системе. Перезагрузки системы не нужны.

Берите на вооружение, расслабляйтесь (relax) и восстанавливайте (recover) системы. Данный инструмент используют OpenStack и Red Hat OpenStack Platform для встроенного бэкапа и восстановления систем.

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

#backup
​​Несколько месяцев с момента покупки нового ноута и установки на него лицензионной Windows 11 Pro я мучался и страдал (не сильно) от одной досадной ошибки. Я не мог подключиться по RDP с именем учётной записи Администратор, написанной по-русски. При этом на сервере, куда подключался, в журнале появлялась запись о том, что произошла неудачная попытка подключения из-за неверных учётных данных.

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

По косвенным признаком было ясно, что проблема в современной системе защиты Windows и её компонентов: Credential Guard и Virtualization-Based security. Основная проблема в том, что простого способа отключить эти защиты нет. А степень защищённости этих защит зависит от конкретного железа. Где-то есть возможность остановить эти службы через настройки групповой политики, где-то через правку реестра, а где-то через правку раздела UEFI, так как во время загрузки настройки защиты восстанавливаются из него.

Как вы уже могли догадаться, у меня был третий вариант, поэтому никакие другие советы мне не помогли. Мой ноутбук соответствует следующим требованиям:
Поддержка системы безопасности на основе виртуализации
Безопасная загрузка
TPM 1.2 или 2.0
Блокировка UEFI
Расширения виртуализации в CPU
Благодаря этому я был очень сильно защищён и отключить Credential Guard без правки UEFI мне было нельзя.

Рассказываю, как я в итоге отключил эту злополучную защиту. Для начала показываю, как проверить её статус. Открываем консоль powershell и вводим команду: (Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard).SecurityServicesRunning
Ответ 0 — выключена, 1 — включена. У меня она всегда была включена, что бы я ни делал в настройках или реестре. Я часа два возился с ноутом и перепробовал просто всё. Хоть систему сноси. Настолько всё это мне надоело. Причём не сказать, что прям сильно мне досаждало, несколько месяцев обходился. Раздражало то, что я не могу решить проблему.

В итоге что помогло:

1️⃣ Открываем локальные групповые политики и идём в раздел:
Конфигурация компьютера ⇨ Административные шаблоны ⇨ Система ⇨ Device Guard ⇨ Включить средство обеспечения безопасности на основе виртуализации. Ставим состояние Отключена.

2️⃣ Идём в реестр и убеждаемся, что установлены следующие параметры:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\LsaCfgFlags и
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\DeviceGuard\LsaCfgFlags. Значения должны быть 0, тип — REG_DWORD. Если параметров нет, создайте их.

3️⃣ Открываем CMD с правами администратора и правим EFI с помощью bcdedit:
> mountvol X: /s
> copy %WINDIR%\System32\SecConfig.efi X:\EFI\Microsoft\Boot\SecConfig.efi /Y
> bcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d "DebugTool" /application osloader
> bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path "\EFI\Microsoft\Boot\SecConfig.efi"
> bcdedit /set {bootmgr} bootsequence {0cb3b571-2f2e-4343-a879-d86a476d7215}
> bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} loadoptions DISABLE-LSA-ISO
> bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} device partition=X:
> mountvol X: /d

После этого перезагружаем систему. В момент загрузки перед стартом ОС у вас спросят, действительно ли вы хотите отключить Credential Guard. В течении 10-ти секунд надо нажать F3, иначе система загрузится без изменения и придётся заново править EFI.

Вот такие приключения у меня были с Windows 11. Пришлось разбираться самому. Нигде в интернете не видел, чтобы кто-то занимался правкой EFI. Скорее всего проблема именно с русской версией винды и возможностями ноута. Мне тут просто не повезло.

#windows
​​У меня наконец-то дошли руки установить и настроить почтовый сервер Tegu (бесплатную версию). Так что теперь могу поделиться своими впечатлениями и первым опытом работы. Я планирую написать по нему подробную статью, когда немного накопится опыт использования. Когда она выйдет неизвестно, поэтому решил сразу заметку сделать.

Плюсы:

1️⃣ Простая и быстрая установка. Весь сервер это один скомпилированный бинарник, написанный на Go и один конфигурационный файл к нему. Никаких зависимостей от системных библиотек. Весь код реализован самостоятельно. Работает практически на любом линуксе. Скачиваем бинарник, рисуем конфиг, systemd юнит и всё, установка завершена. Обновление — это просто замена бинарника новой версией.

2️⃣ Сервер включает в себя службы smtp, imap и панель управления через веб интерфейс. Это очень удобно по сравнению с традиционными связками, когда надо отдельно ставить smtp, отдельно imap и отдельно какое-то управление. Установка и запуск базового сервера занимает буквально 10 минут, если вы делаете это не первый раз. И уже можно подключаться любым почтовым клиентом. Встроенного веб клиента нет.

3️⃣ В сервере реализована поддержка протокола milter, так что многие привычные службы, которые мы подключали через milter к postfix теоретически можно подключить и здесь. Как на деле это реализовано, надо смотреть и разбираться.

4️⃣ В сервер встроен функционал белых/чёрных спискв IP/email отправителей, технология Greylist, проверка по спискам DNSBL, проверка наличия SPF записи и блокировка в случае отсутствия таковых записей, глобальные правила сортировки и фильтрации, dkim. Также реализована защита от перебора паролей, типа fail2ban.

5️⃣ Сервер поддерживает хранение своего состояния в базе sqlite, а пользователей в json файле (пароли зашифрованы). По мне так это очень удобно для небольших серверов. Нет необходимости поднятия полноценной базы данных. Хранить там всё равно особо нечего и sqlite в этом плане отличное решение.

6️⃣ Для каждого домена можно указывать своё хранилище почты. Удобно для управления многодоменными серверами.

7️⃣ Есть возможность хранить почту в формате Maildir. Это позволяет легко бэкапить или переносить почту между серверами. К примеру, чтобы перенести почту с сервера postfix, достаточно просто скопировать почту из ящиков.

🔴 Минусы:

1️⃣ Малоинформативный лог. По умолчанию пишется в journald, настроек для него практически нет. Я много времени потратил на то, чтобы запустить защищённые соединения. Указал путь к сертификатам let's encrypt, но служба на портах 465 и 993 не запускалась. В логах пусто, ошибок нет. Уже в процессе разбирательства по чисто своей догадке я предположил, что возможно у сервера нет доступа к сертификатам. Tegu запускается от системного пользователя mail. И у него действительно нет доступа к стандартной директории /etc/letsencrypt/live. Когда исправил это, почтовый сервер запустился на указанных портах и шифрованные подключения заработали.

2️⃣ В документации указано, что сервер работает только с доверенными сертификатами, самоподписанные не поддерживаются: "Использование самоподписанных сертификатов вызовет ошибку".

3️⃣ Документация немного сумбурная. Не всё в ней отражено, что-то дублируется в разных статьях (например, установка и ещё одна установка и эксплуатация, где описана настройка кучи веб клиентов, которые к серверу не имеют отношения). Например, у меня не стартовала служба smtp на 25 порту. Оказалось, что надо было создать через веб интерфейс очередь smtp. Для меня это было неочевидно.

💡Впечатление от сервера и его концепции положительные. Мне кажется, разработчики заняли очень удачную нишу. Аналогов просто нет, где можно взять и быстро поднять почтовый сервер с базовым функционалом. Все бесплатные решения — это связки и обвес вокруг postfix + dovecot + БД + dkim + какой-то интерфейс управления. Несмотря на то, что сервер видел в первый раз, я его настроил за пару часов чтения доков. Взял VM: 1 CPU, 1GB памяти 💪🏻.

#mailserver #tegu #отечественное
​​Решил познакомиться с ещё одним документом от CIS по рекомендациям для Debian 11. Там 874 страницы 😱. Делаю очень краткую выжимку основного, что может пригодиться в среднестатистическом сервере. Реализация рекомендаций подробно описана в самом документе.

🔹Отключите поддержку неиспользуемых файловых систем (cramfs, squashfs, udf и т.д.). Достаточно отключить соответствующие модули ядра.

🔹/tmp и /var/tmp лучше вынести в отдельный раздел со своими параметрами. Например, noexec, nosuid, nodev и т.д. В идеале, отдельный раздел и настройки должны быть ещё и у /var/log, /home, /dev/shm.

🔹Отключите автомонтирование устройств через autofs. Проверка:
# systemctl is-enabled autofs

🔹Отслеживайте изменения в системных файлах, например с помощью AIDE (Advanced Intrusion Detection Environment):
# apt install aide aide-common

🔹По возможности включайте, настраивайте (и страдайте 👹) AppArmor.

🔹Настройте синхронизацию времени какой-то одной службой (chrony, ntp или  systemd-timesyncd).

🔹Проверьте все открытые порты и отключите всё ненужное:
# ss -tulnp

🔹Отключите неиспользуемые сетевые протоколы. Например, ipv6.

🔹Настройте Firewall. Запретите все соединения, кроме разрешённых явно (нормально закрытый файрвол). Не забудьте про все используемые протоколы.

🔹Настройте аудит доступа, изменения, удаления системных файлов с помощью auditctl.
# apt install auditctl
Убедитесь, что доступ к логам сервиса ограничен.

🔹Настройте логирование действий, выполняемых через sudo. Запретите использование su, если пользуетесь sudo.

🔹По возможности настройте отправку системных логов куда-то вовне.

🔹Отключите возможность подключаться пользователю root по ssh, если хотите отслеживать активность пользователей под их индивидуальными учётными записями.

Сам документ — CIS Debian Linux 11 Benchmark. Напомню, что у меня есть заметка со списком действий, которые я обычно выполняю при настройке типового сервера под Linux. Надо будет её переработать с учётом этих рекомендаций. Кое-что туда точно можно добавить.

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

#cis #security #linux
Забавный вчера диалог в комментариях ВК вышел. Интересно, кто-то встретил свою судьбу через профессию с помощью настройки дома кому-то компа или роутера?

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

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

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

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

#мем
​​Для тех, кто впервые настраивает веб сервер, бывает странно видеть названия imap папок вида:
.&BB4EQgQ,BEAEMAQyBDsENQQ9BD0ESwQ1-
.&BBoEPgRABDcEOAQ9BDA-
.&BCcENQRABD0EPgQyBDgEOgQ4-
Создаётся впечатление, что с сервером какие-то проблемы.

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

Вы можете воспользоваться любым преобразователем кодировок либо в виде веб сервиса, либо прямо в консоли с помощью iconv -f UTF7 -t UTF8. Ещё проще скопировать на почтовый сервер готовый скрипт. И пользоваться им, когда понадобится. Текст можете проверить, там ничего особенного.

# git clone https://github.com/Yar4e/lsmaildir
# cd lsmaildir
# chmod u+x lsmaildir
# ./lsmaildir /opt/tegu/mail/zeroxzed.ru/vladimir/.maildir
.Отправленные   .&BB4EQgQ,BEAEMAQyBDsENQQ9BD0ESwQ1-
.Архив          .&BBAEQARFBDgEMg-
.Корзина        .&BBoEPgRABDcEOAQ9BDA-
.Черновики      .&BCcENQRABD0EPgQyBDgEOgQ4-
.Спам           .&BCEEPwQwBDw-
cur             cur
new             new
tmp             tmp

#mailserver
​​У Dmitry Lambert, Head Of Customer Support Zabbix, в блоге вышло подробное видео на тему установки Zabbix 6.4:

Zabbix 6.4 Installation Guide: Comprehensive Tutorial for CentOS Stream with MySQL

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

В Zabbix есть параметр AllowUnsupportedDBVersions, который позволяет отключить проверку соответствия версии СУБД, если используется неподдерживаемая версия. В некоторых случаях работа на неподдерживаемой версии возможна, хоть и не рекомендована. Если у вас по какой-то причине нет возможности обновить СУБД, а более новая версия Zabbix Server не поддерживает её, можно воспользоваться этим параметром.

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

Zabbix agent item "agent.ping" on host "servername" failed: \
first network error, wait for 15 seconds
resuming Zabbix agent checks on host "servername": \
connection restored

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

Я проверил всё, что только можно. И на сервере, и на клиенте. Ничего не помогает. Стал вручную UDP пакеты с агента на сервер слать и заметил, что они иногда пропадают. Где-то по пути следования пакеты теряются. С агента улетают, на сервер не приходят. Как решить этот вопрос, я не знал. Пришлось подставить костыль. Сильно уменьшил таймаут ожидания на сервере и время повторной проверки отключившегося хоста:
Timeout=5
UnreachableDelay=5

Так хотя бы после первой сетевой проблемы, повторная проверка производится максимум через 10 секунд и хост снова возвращается на мониторинг. До этого по 15 секунд были значения и хост частенько мог отваливаться на время вплоть до минуты. Из-за этого все графики были рваные.

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

#zabbix
​​Когда просматривал материалы CIS по настройке операционных систем, отметил себе программу AIDE (Advanced Intrusion Detection Environment), про которую раньше не знал. Решил изучить.

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

Установить AIDE не сложно, так как эта программа есть в репозиториях популярных дистрибутивов.
# apt install aide

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

Будем наблюдать за изменением файлов сайта в директории /var/www/html. Отслеживать можно как содержимое файлов, так и атрибуты. Для этого переименовываем изначальный конфиг и делаем свой, где будет только то, что нам надо:

database_in=file:/var/lib/aide/aide.db
database_out=file:/var/lib/aide/aide.db.new
database_new=file:/var/lib/aide/aide.db.new
gzip_dbout=yes
report_summarize_changes=yes
report_grouped=yes
log_level=warning
report_level=changed_attributes
ALL = p+u+g+acl+sha256+ftype
/var/www/html ALL

Создаём базу данных о файлах:
# aideinit

В директории /var/lib/aide появятся два файла aide.db и aide.db.new. Теперь создадим новый файл в директории /var/www/html:
# touch /var/www/html/test.txt

Проверяем изменения с помощью aide:
# aide --check --config /etc/aide/aide.conf

В консоли увидите информацию о добавленном файле:
f+++++++++++++++++: /var/www/html/test.txt

Для дальнейших проверок, нужно текущий файл с базой данных сделать основным, обновив его перед этим:
# aide --update --config /etc/aide/aide.conf
# mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db

Теперь проверьте, как работает контроль за изменением владельца файлов. Измените владельца у файла и ещё раз запустите проверку:
# chown mail /var/www/html/test.txt
# aide --check --config /etc/aide/aide.conf
File: /var/www/html/test.txt
 Uid    : 0                | 8
Владелец файла с root (id 0) изменился на mail (id 8)

Подобные проверки оборачиваются в скрипты и добавляются в планировщик cron или systemd-timers. Базы данных в случае необходимости можно сохранять и оставлять на долгосрочное хранение, а не держать только прошлое и новое состояние.

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

#security #linux