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

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

Второй канал: @srv_admin_live
Сайт: serveradmin.ru
Download Telegram
​​Хочу немного подбить тему с веб панелями для хостинга сайтов. Во всех постах на эту тему идёт упоминание 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
​​Я осенью на скорую руку в доме сделал видеонаблюдение на базе камер Hikvision и бесплатного ПО от этой же компании. Сама программа не очень удобная, плюс больше не обновляется, так как более современные версии в бесплатной редакции имеют сильно урезанный функционал. Так что в любом случае со временем заменю это хозяйство на что-то более функциональное.

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

Вот ограничения бесплатной версии:
Максимальное количество IP-камер – 32 канала видео + аудио
Односерверная установка
Отсутствие какой-либо аналитики (это функционал платных редакций), но есть датчик движения

Как вы видите, ограничения очень условные для небольших и средних установок, где до 32-х камер, и где необходимо только видеонаблюдение. Ограничений на хранение архива нет. Для загородного дома идеально подходит. Умеет слать скриншоты с камеры в Telegram при работе программного датчика движения. Интеграция через vbs или node.js скрипты. Через них вообще очень широкие возможности для интеграции и выполнения каких-либо действий.

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

Всё это ставится и настраивается через обычный Windows установщик, так что не требует каких-то особых знаний. Интерфейс плюс-минус как у всех подобных программ. Сильно разбираться с настройкой не придётся, как у того же iVMS-4200 от Hikvision, с которым мне пришлось немного повозиться.

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

Сайт

#видеонаблюдение #отечественное
Расскажу историю про то, как я перенёс почту в отдельно взятой компании с Яндекса. Сразу скажу, что это не описание оптимального варианта, или какая-то рекомендация, как поступать вам. Тут ситуация специфическая. Я просто дам информацию, которая кому-то может оказаться полезной.

В компании есть Windows Server, где установлен Kerio Mailserver. Исторически так сложилось, что через него почта почти никогда не отправлялась напрямую из-за проблем с доставкой, так как компания часто переезжала с места на место в различных промзонах, где нет стабильного интернета и электричества. Иногда это был мобильный интернет.

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

Схема на самом деле удобная и гибкая. Изначально так настроил не я. Когда впервые увидел, подумал, что как-то сложно всё это настраивать в нескольких местах. С учётом того, что я умею настраивать почтовые сервера и имею большой опыт по их обслуживаю, не оценил решение. Но после парочки переездов и смены почтового оператора понял, что на самом деле это удобно. В ящиках много почты. У кого-то по 50 гигов. Люди привыкли работать в локальных программах, а не через веб интерфейс. У некоторых может быть подключено по 5-7 ящиков. Без локальной программы работать с таким количеством ящиков неудобно.

Встала задача переехать с Яндекса. У компании сайты живут на Masterhost. К услуге виртуального хостинга полагается неограниченное количество почтовых ящиков. Ограничение одно — 7 гигабайт места под почту включены в тарифный план. В итоге я просто создал все ящики в Masterhost (там удобная админка для этого), переключил MX записи на этого провайдера. А в локальном почтовом сервере настроил сбор почты по pop3 вместо Яндекса с Masterhost, и отправку через него же.

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

Подобную схему можно реализовать и с помощью Linux сервера, но будет посложнее. В Kerio Mailserver все настройки делаются мышкой через консоль управления. Это штатный функционал. В Linux придётся настраивать отдельные программы, типа Fetchmail для сбора почты и настройки relay для отправки почты через сторонний сервер.

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

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

#mailserver
На Хабре вышел подробный обзор самого популярного в России менеджера паролей Пассворк — habr.com/ru/article/724056

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

#реклама
​​Небольшая шпаргалка по работе с оболочками в Linux. Написать её решил, когда увидел, как один человек использует системную утилиту chsh, про которую я вообще никогда не слышал. С её помощью можно быстро поменять дефолтную оболочку для пользователя.

Как узнать, какая оболочка используется у пользователя? Способов очень много. Если речь идёт о своём пользователе, под которым вы работаете, то примерно так:
# echo $SHELL
# echo $0
# ps
и т.д. Способов много. Все эти команды так или иначе подскажут вам используемую в данный момент оболочку.

Информация об оболочках хранится в системном файле /etc/passwd. Там помимо прочей информации о пользователе в том числе указана и его оболочка. Собственно, правкой этого файла я обычно и менял оболочку. Чаще всего это нужно, если создал технического пользователя для какой-то службы и забыл ему поставить оболочку nologin через отдельный ключ -s. Приходилось править этот файл.

Но можно сделать проще — воспользоваться chsh:
# useradd sysuser
# chsh -s /usr/sbin/nologin sysuser

Утилита делает ровно то же самое, что и я вручную, только быстрее — изменяет файл /etc/passwd. Раз уж упомянул утилиту useradd, читайте чем она отличается от adduser и что лучше использовать.

#linux #terminal
​​В выступлении с DevOpsConf, про которое выйдет заметка вечером, увидел упоминание очень любопытной программы nfpm, с помощью которой можно собирать свои deb или rpm пакеты. Я посмотрел и нашёл её современной, простой и полезной. Сразу же попробовал на реальном примере. Результатом делюсь с вами.

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

Итак, ставим nfpm:
# echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' |
tee /etc/apt/sources.list.d/goreleaser.list
# apt update
# apt install nfpm

Готовим для него конфиг nfpm.yaml:

name: "tegu"
arch: "amd64"
platform: "linux"
version: "v1.27.0"
section: "default"
priority: "optional"
conflicts:
 - exim4
 - postfix
maintainer: "Kalmetov Igor <ik@mbk-lab.ru>"
description: |
 Tegu is the free mailserver.
vendor: "mbk-lab.ru"
homepage: "https://project.mbk-lab.ru"
contents:
- src: ~/tegu/bin/teguctl
 dst: /opt/tegu/bin/
- src: ~/tegu/sbin/tegu
 dst: /opt/tegu/sbin/
- src: ~/tegu/tegu.conf
 dst: /etc/tegu.conf
 type: config
- src: ~/tegu/tegu.service
 dst: /etc/systemd/system/tegu.service
 type: config
overrides:
 deb:
  scripts:
   preinstall: /root/tegu/preinstall.sh
   postinstall: /root/tegu/postinstall.sh

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

Файлы tegu.service и tegu.conf взял из документации. Добавил свои скрипты для выполнения некоторых действий.

preinstall.sh:

#!/bin/bash
mkdir /opt/tegu
mkdir /opt/tegu/{bin,sbin,data,certs}
chown -R mail. /opt/tegu/{data,certs}
chgrp -R mail /opt/tegu/{bin,sbin}
chmod 750 /opt/tegu/{data,certs}
chmod -R 750 /opt/tegu/sbin
chmod -R 750 /opt/tegu/bin

postinstall.sh:

chown root.mail /etc/tegu.conf
chmod 640 /etc/tegu.conf
setcap CAP_NET_BIND_SERVICE=+eip /opt/tegu/sbin/tegu
systemctl enable tegu.service
systemctl start tegu.service

Собираем пакет:
# nfpm pkg --packager deb --target ~/
using deb packager...
created package: ~/tegu_1.27.0_amd64.deb

Пакет собран. Можно установить:
# dpkg -i ~/tegu_1.27.0_amd64.deb

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

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

#linux #debian #apt #tegu
​​▶️ Посмотрел на днях выступление с DevOpsConf и прям кайфанул. Очень понравилось содержимое, которое нетипично для подобного рода мероприятий. Человек рассказал, как они обходятся без Kubernetes и Docker.

Эксплуатация без k8s / Кирилл Шваков (Kinescope)

Кратко расскажу, о чём там. У компании ~50 железных серверов в нескольких ДЦ. Одно время использовали k8s, но отказались, потому что ломался, падал, кушал ресурсы, мучал админов. Перешли на более простую схему на базе deb пакетов, Ansible и Systemd.

Описаны плюсы этого решения:

Нет лишних компонентов и прослоек. Используется штатный функционал современных ОС. Конкретно у них всё работает на Ubuntu, но планируют перейти Debian, потому что там система ещё проще.

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

Весь софт раскатывается с помощью Ansible, запускается через Systemd. Это избавляет от необходимости использовать лишнюю прослойку в виде Docker. В Systemd из коробки есть всё то, что нужно конкретно этой компании — изоляция, ограничение ресурсов, встроенный планировщик, готовые логи средствами journald, контроль за запуском и работой.

Благодаря Systemd все сервисы видны в системе, легко мониторятся с её уровня, нет лишней прослойки, которая снижает производительность, работают надёжно, systemd не падает.

Использование Systemd упрощает логирование. Достаточно весь системный лог отправить в Loki.

Вся инфраструктура поддерживается силами одного админа, одного сетевого инженера и одного инженера хранилищ.

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

#devops #видео
​​Вчера была заметка про эксплуатацию современной ИТ системы без Kubernetes, после которой я вспомнил свой опыт изучения этого инструмента. Решил поделиться своей историей. Думаю, она будет многим интересна и в каком-то роде полезна.

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

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

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

1️⃣ Это сложный продукт, в который нужно погружаться и желательно заниматься только им. Мне показалось, что он переусложнён. Я больше вижу себя специалистом широкого профиля, а не специализирующимся на чём-то одном. Это как сетевой инженер сложных и масштабных сетей. Лучше иметь специализацию по ним и заниматься только сетями.

2️⃣ Кубер активно развивается и часто обновляется. Обновление кластера —зачастую нетривиальная задача, особенно если он большой, если пропущено много релизов, если нет второго такого же кластера. Регулярный стресс гарантирован.

3️⃣ Кубернетис очень живой и динамичный. За ним постоянно нужно присматривать. Часто случаются те или иные инциденты. С удивлением и ужасом слышал в выступлениях специалистов, что случаются ночные оповещения мониторинга, когда надо проснуться и что-то чинить. У меня вообще сложилось впечатление, что в этой отрасли это норма. Люди спокойно обсуждают ночные побудки в тематических конфах на тему мониторинга всего этого куберского и девопсерского хозяйства.

4️⃣ Kubernetes — удел больших корпораций или крупных аутсорсеров. У меня есть какое-то предвзятое отношение к крупному бизнесу, как к бездушной машине. Хоть там и не работал никогда, но почему-то и не хочется. Возможно здесь я ошибаюсь. Как говорится, не читал, но осуждаю.

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

❗️Отдельно подчеркну, что описал свои субъективные впечатления и отношение к продукту и рабочему процессу, связанному с ним. Мне показалось, что это не для меня. Возможно вам понравится и вы найдёте себя. Попробуйте. Как минимум, с деньгами проблем не будет.

#мысли #devops #kuber
​​Я уже рассказывал про покупку ноутбука для работы ThinkPad T480. Пользуюсь им несколько месяцев, меня всё устраивает. Так как про ноут часто спрашивают и в личку иногда пишут, я вижу, что тема актуальна. Хочу рассказать про некоторые особенности конкретно этой модели. Впрочем не только этой.

Как я уже сказал, ноутбук меня полностью устраивает. Я купил полноценную док станцию и работаю чаще всего на рабочем месте с двумя мониторами, клавиатурой и мышкой, ноут сложен. Так что в целом, мне всё равно, что там под капотом. Лишь бы браузер и терминал работали. Иногда Photoshop и Minecraft.

У меня модель с дискретной видеокартой GeForce MX150. Взял с ней на всякий случай. Вдруг, думаю, пригодится. На днях решил посмотреть, а как работает эта видеокарта и работает ли вообще. Как оказалось, она не работает. Погонял Майнкрафт, он отлично работает на встроенной видеокарте Intel UHD 620. Стал разбираться. Оказывается, в Windows 11 система сама выбирает, какую видеокарту использовать (по умолчанию использует интегрированную). Если вам нужна внешняя, то для каждого приложения в Настройках ⇨ Система ⇨ Дисплей ⇨ Графика надо выбирать приложение и явно указать, на какой видеокарте оно будет работать.

Добавил браузер и Minecraft в работу с дискретной видеокартой. Каково же было моё удивление, когда ноут жутко залагал, частота процессора упала, работать стало невозможно. Сначала решил забить и не тратить на это время. Мне в целом эта видюха не нужна. Я купил с ней, потому что охлаждение ноута с ней более качественное. Но всё же стало любопытно. Немного погуглил и понял, что это типичная для многих моделей Thinkpad проблема с охлаждением (читать тут и тут).

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

Единственное решение — с помощью программ Throttlestop и Afterburner чуть придушить мощность процессора и видеокарты, чтобы найти баланс, когда не начинается перегрев и троттлинг. Некоторым это удаётся. Я решил не заморачиваться, так как в тяжёлые игры всё равно не играю. По-быстрому нашёл какое-то проходное решение для простых случаев с включением пары настроек в Throttlestop: FIVR Disable и Lock Turbo Power Limits. Особо даже не вникал в них. У меня троттлить почему-то начинало уже на 70 градусах проца с работающей видюхой. С этими настройками троттлинг пропал. Меня это устроило. Майнкрафт и сёрфинг в браузере поживее пошли на внешней видеокарте. Надо было давно озадачиться этим вопросом.

Проблема с охлаждением у меня была и с прошлыми ноубуками x220, причём с обоими. Я первый поменял, думал, проблема локальная, но на самом деле нет. Приходилось тоже частоту процессора уменьшать. Также эта проблема наблюдается, судя по теме на форуме lenovo, на моделях без дискретной видеокарты. Просто перегревается процессор в максимальной нагрузке. И на моделях T480s, P51, T580, T470P, ещё каких-то, упоминаемых на форуме, проблема тоже присутствует.

В общем, с охлаждением проблема типовая уже много лет для многих моделей Thinkpad. Если будете выбирать себе подобный ноут, обратите внимание. Покупка ноутбука с дискретной видеокартой и её неиспользование — самое надёжное решение 😀 Так что тут я не прогадал. Ну а в целом, сейчас ноуты Thinkpad так себе. Не стоит на них акцентироваться, хотя лично я к ним привык, но в основном из-за док станций.

#железо
​​Мне часто задают вопрос, какую ОС Linux я использую для серверов. Кто-то знает, что я использую Debian и спрашивает, а почему именно её. В принципе, нет разницы, какой дистрибутив с поддержкой пакетов deb или rpm использовать. Я одинаково успешно могу взять любой из них. Более того, я все их так или иначе знаю и в разное время использовал.

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

После того, как Centos прекратила своё существование, а вместо неё появились Centos Stream, Rocky Linux, AlmaLinux, и с ними в компании существовавший ранее Oracle Linux, у разных хостеров появилась поддержка разных дистрибутивов, но не всех их одновременно. Это создаёт неудобства. Где-то есть Rocky, но нет Oracle, или наоборот. Где-то вообще нет ни одного из них, только Centos Stream и т.д.

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

#linux
Ещё один прикол из комментариев. Человек 2 года готовился, прежде чем начать разбираться и настраивать Микротик. До этого опасался за свою нервную систему. Интересно, кто ему эти страхи внушил? Я когда первый раз взаимодействовал с Микротиком, сильно удивился, что не смог его настроить без инструкции. Думал, что это обычный домашний роутер, как все подобные. Ну немного продвинутый. Но не тут то было. Я даже не смог разобраться, как ему IP адрес назначить на интерфейсе.

Кстати, у меня там речь идёт об отключении индикаторов сетевых интерфейсов на моём домашнем роутере RB951G-2HnD. Ему уже лет 10. Висит в коридоре и очень досаждает своими миганиями, как гирлянда. Пришлось вырезать вставки из плотного картона и приклеить их монтажной лентой к Микротику. Без этого мигания видны в комнате через полупрозрачное стекло на двери. Мешает спать. В каких-то моделях индикаторы можно отключить, в каких-то нет.

#мем
​​▶️ Рассказываю про ещё одно выступление с DevOpsConf, которое показалось интересным. В нём речь идёт о трансформации инфраструктуры и подходов к работе от стародавних к современным.

DevOps в Юле: сломить устоявшееся / Александр Светлов (Юла)

Выступление получилось короткое, но ёмкое, где всё по делу. Автор рассказал, как он пришёл в Юлу, где про devops вообще ничего не слышали. Не было централизованного мониторинга и сбора логов, не было полноценной документации. На серваки ходили по SSH и читали логи в консоли. Не было централизованного хранения секретов. Созданные временные виртуалки бросали и забывали (300+ серверов с неизвестным содержимым 😱). Каждая команда разработчиков пользовалась своими инструментами.

Александр рассказал, как он с напарником последовательно меняли эту ситуацию.

1️⃣ Начали с того, что подготовили шаблоны для Ansible. Потихонечку стали инвентаризировать актуальные хосты, параллельно накатывая на них через Ansible мониторинг (Grafana + Prometheus + exporters) и сбор логов (ELK).
2️⃣ Перенесли секреты в Vault, репозитории и артефакты в Nexus.
3️⃣ Настроили бэкап данных с помощью Restic и положили их в локальный Minio.
4️⃣ Подготовили шаблоны для поднятия сервисов и научили разработчиков с ними работать. Это привело к единообразию запуска служб.
5️⃣ Всех пересадили на Gitlab.

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

Получилась небольшая история (не полная) про то, чем занимаются девопсы и чем они отличаются от системных администраторов, которые никуда не делись. Тот же openstack или кластеры баз данных поддерживать нужно, как и прочую железную инфраструктуру.

#видео #devops