ServerAdmin.ru
31.3K subscribers
671 photos
55 videos
22 files
2.87K links
Авторская информация о системном администрировании.

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

Второй канал: @srv_admin_live
Сайт: serveradmin.ru

Регистрация в РКН: https://vk.cc/cG1Urj
Download Telegram
Где вы оставляете следы, когда подключаетесь по SSH к серверу на базе Linux? Собрал краткую подборку основных ваших артефактов в Debian. Будет актуальна во всех дистрибутивах на её основе. Для других могут отличаться только частности в виде имён и путей к логам, но общий смысл будет тот же.

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

1️⃣ Подключение по SSH фиксируется в /var/log/auth.log. С ним всё просто - это текстовый лог. Сразу посмотреть удачные подключения можно так:
# grep 'Accepted' /var/log/auth.log
Лога может не быть, либо логи могут параллельно храниться в journald. Смотреть так:
# journalctl -u ssh -r

2️⃣ Информация о подключении будет записана в бинарный лог /var/log/wtmp. Смотреть в консоли командой last. Увидите информацию о дате логина, пользователе, его IP адресе. Там же дополнительно хранится информация о загрузках и выключениях сервера, в том числе кем они были инициированы. Могу сразу для расширенной информации посоветовать ключи: last -Faiwx.

3️⃣ Информация о последнем логине пользователя хранится в бинарном файле /var/log/lastlog. Смотреть одноимённой консольной командой lastlog. Увидите список всех системных пользователей и дату их последнего подключения вместе с IP адресом.

4️⃣ Пока вы не отключились, информация о вашей активной сессии вместе с остальными сессиями хранится в бинарном файле /var/run/utmp. Смотреть информацию оттуда можно командой who.

5️⃣ Если во время подключения были неудачные попытки с неправильным логином и паролем, то эта информация будет сохранена в бинарном файле /var/log/btmp. Смотреть командой lastb.

6️⃣ Если что-то делали в консоли, то информация об этом сохранится в текстовом файле ~/.bash_history. Если не хотите, чтобы это происходило, после логина измените место хранения истории через переопределение переменной. Выполните в консоли:
# export HISTFILE=/dev/null
В рамках сессии история будет сохраняться и отображаться по команде history, но в файл записана не будет.

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

Просто взять и удалить информацию о себе из бинарных файлов не очень просто. Как один из вариантов - взять готовый скрипт, который на основе IP адреса вычистит информацию в том числе из бинарных логов. У меня на Debian 12 он не завёлся. Всё время ругался на UTMP block size. Мучал уже родной ChatGPT с chatgpt.com на эту тему, не смог помочь. Много всего предложил, но ничего не помогло. В конце предложил по-другому очистить файл: удалить и заново создать. Забил.

Для того, чтобы от подобных очисток защититься, достаточно на любом Linux сервере запустить syslog сервер или systemd-journal-remote. И вы всегда будете знать, кто и когда к вам подключается. Для логов службы sshd не нужно ни много ресурсов, ни места на диске. Нет нужды разворачивать какое-то специальное хранилище для логов, если у вас в нём нет нужды. Я отдельно для syslog сервера поднимал виртуалку 1CPU/512M/10G.

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#terminal #security
526👍290👎2
This media is not supported in your browser
VIEW IN TELEGRAM
Забавная и очень знакомая ситуация. Я часто работал из дома. Иногда жаба душит платить за аренду места в коворкинге. Начинаешь мыкаться по разным местам. Если работы немного и успеешь всё сделать, пока дети из школы не пришли, можно остаться дома. Иногда на дачу уезжал, иногда к родителям, если они у себя на даче и квартира свободна, иногда в кафе, в офисе, либо где-то ещё. Одно время регулярно ходил в центр "Мои документы", где были удобные индивидуальные кабинки с розеткой. Можно было спокойно сидеть и работать весь день.

Последнее время утомила эта суета, особенно с рождением 4-го ребёнка. Стал постоянно арендовать место в коворкинге и ездить туда по стандартному расписанию среднестатистического офиса: с 10 до 19. На самом деле так проще работать. Лично мне рваный график для работы не нравится с точки зрения продуктивности. Иногда работаю по нему вынужденно из-за множества личных дел. На долгосрочном периоде привыкаешь к режиму дня и нарушать его не хочется. Падает продуктивность.

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

Видео отсюда:
▶️ https://www.youtube.com/watch?v=oYrx0V1jNq0
Понравились на канале некоторые ролики.

#юмор #разное
Please open Telegram to view this post
VIEW IN TELEGRAM
👍117👎8
Media is too big
VIEW IN TELEGRAM
▶️ Посмотрел на неделе интересное видео:

Опытный сисадмин захотел в DevOps? / Техсобес на позицию Junior DevOps Engineer / Mock interview

Прослушал целиком без перемотки от и до. Реально понравилось. Необычный контент. Я раньше такой не смотрел. Максимально приближённое к реальности подробное собеседование сисадмина на позицию DevOps Junior.

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

В конце ведущие высоко оценили навыки кандидата с точки зрения системного администрирования. Определили его как уверенный middle сисадмин, который подходит на позицию junior devops. Хотя мне показалось, что он многое очень поверхностно отвечал по теме администрирования.

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

📌 Содержание беседы:

 - про DNS и MX запись
 - про ping и проверку доступности хоста в локальной сети
 - как проверять доступность хостов, которые не в локальной сети
 - про обеспечение доступа извне в локальную сеть по ssh
 - про защиту марщрутизатора от внешнего взлома и DoS
 - про проброс RDP в локальную сеть
 - про DMZ
 - про проброс RDP через ssh-туннели
 - про Docker и Podman
 - что такое контейнереризация
 - стоит ли запускать высоконагруженное приложение в контейнере?
 - про мониторинг и алертинг
 - как защитить компанию от фишинга
 - про GNU/Linux
 - как запустить на Linux программу, полученную в виде исходного кода, демонизировать и потраблшутить
 - про работу под пользователем root
 - про инфраструктуру как код (IaC)
 - уточнение про флаг setuid
 - про CI/CD/CD пайплайны

#обучение
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍132👎3
Недавно была заметка про знание СУБД. Видел комментарии, мол пусть DBA разбираются в нюансах СУБД, а админам это ни к чему. Расскажу про один случай, который со мной на днях случился. Сразу скажу, что это не будет рекомендацией к действиям, так как сам я ситуацию хоть и разрешил, но не лучшим образом. Плюс, понервничал немного.

Приходит уведомление в мониторинг, что дамп базы выполнен с ошибкой. База MySQL, размер дампа ~10ГБ. Так как размер позволяет, я бэкаплю её дампом несколько раз в день. Он проходит быстро, проблем не вызывает. Как настроен мониторинг, рассказывал отдельно.

Смотрю ошибку в логе дампа:

mysqldump: Error 1034: Index for table 'b_stat_session_data' is corrupt; try to repair it when dumping table `b_stat_session_data` at row: 329011

В таблицу постоянно что-то пишется. Движок сайта по кронам сам её чистит. Судя по всему, что-то пошло не так. Сделал дамп без этой таблицы, добавив ключ --ignore-table=dbname.b_stat_session_data. Потом сразу проверил более старые дампы и бэкап виртуалки. Всё на месте, можно разбираться.

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

Захожу в консоль mysql и смотрю:

> CHECK TABLE b_stat_session_data;
Warning | InnoDB: The B-tree of index PRIMARY is corrupted. |
Warning | InnoDB: Index IX_GUEST_MD5 is marked as corrupted |
error  | Corrupt

Ничего хорошего. Пробую починить автоматически:

> OPTIMIZE TABLE b_stat_session_data;
note | Table does not support optimize, doing recreate + analyze instead
error | Got error 106 "Transport endpoint is already connected" from storage engine InnoDB
status | Operation failed

В логе mariadb куча ошибок:

[ERROR] mariadbd: Index for table 'b_stat_session_data' is corrupt; try to repair it

Для надёжности зажмурился и перезапустил службу mariadb. Перезапуск прошёл штатно, база поднялась, но таблица не ожила. Всё те же ошибки. Причём данные в неё, судя по всему, записывались.

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

Нашёл следующие варианты решения проблемы:

1️⃣ Удалить и пересоздать все индексы.
2️⃣ Создать пустую таблицу с аналогичной структурой, скопировать туда данные, исходную удалить, новую таблицу переименовать.
3️⃣ Запустить сервер с активным параметром innodb_force_recovery.
4️⃣ Пересобрать таблицу командой:
alter table b_stat_session_data engine = innodb

Судя по отзывам, последняя команда будет выполняться очень долго. Третья может привести к долгому старту службы или ещё каким-то проблемам. Не хотелось запускать их на работающем сервере. Решил пересоздать индексы. Их там всего два, но один PRIMARY. Его нельзя просто взять и удалить. Вычитал на stackoverflow один совет. Зайти через phpmyadmin, убрать чекбокс Auto Increment на столбце с этим индексом, сохранить, потом зайти, вернуть AI. Возможно на живой таблице это и сработало бы, но у меня вылетела ошибка, ничего не сохранилось, таблица вообще умерла.

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

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

#mysql
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍86👎2
Продолжу начатую недавно тему про заметание следов своей деятельности в системе на базе Linux. Пишу не для того, чтобы вы заметали за собой следы, а чтобы понимали, как от этого защищаться. Сегодня речь пойдёт про управление датами создания и изменения файлов.

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

Напомню, что у файла есть несколько меток времени:

▪️Birth (crtime) - время создания айноды файла, то есть самого файла.
▪️Access (atime) - время последнего доступа к файлу.
▪️Modify (mtime) - время последнего изменения содержимого файла.
▪️Change (ctime) - время последнего изменения метаданных файла в файловой системе.

Посмотреть указанные метки можно командой stat:

# stat testfile

Поменять значения atime и mtime крайне просто. Можно взять банальную утилиту touch:

# touch -m -a -t 202501010000 testfile
# stat testfile
Access: 2025-01-01 00:00:00.000000000 +0300
Modify: 2025-01-01 00:00:00.000000000 +0300

То же самое можно сделать напрямую в файловой системе через debugfs:

# debugfs -w -R 'set_inode_field /var/www/testfile crtime 202501010000' /dev/sda1
# debugfs -w -R 'set_inode_field /var/www/testfile atime 202501010000' /dev/sda1
# debugfs -w -R 'set_inode_field /var/www/testfile mtime 202501010000' /dev/sda1
# debugfs -w -R 'set_inode_field /var/www/testfile ctime 202501010000' /dev/sda1
# echo 2 > /proc/sys/vm/drop_caches
# stat /var/www/testfile
Access: 2025-01-01 03:00:00.881765992 +0300
Modify: 2025-01-01 03:00:00.881765992 +0300
Change: 2025-01-01 03:00:00.881765992 +0300
Birth: 2025-01-01 03:00:00.881765992 +0300

В конце для проверки надо обязательно сбросить кэш, иначе изменений не увидите. Важно понимать, что для изменения atime и mtime достаточно обычных прав доступа к файлу. То есть любой червь, который залез через исходники сайта, может у него менять эти параметры. А вот для изменения crtime уже нужны права root, так как надо лезть в файловую систему.

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

# apt install auditd
# auditctl -w /var/www/testfile -p rwa -k testfile_rule

◽️rwa - чтение (r), запись (w), изменение атрибута (a)
◽️testfile_rule - название правила аудита

Смотрим список правил:

# auditctl -l
-w /var/www/testfile -p rwa -k testfile_rule

После изменения файла смотрим записи аудита:

# aureport -f -i | grep /var/www/testfile
# ausearch -i -k testfile_rule

Лог аудита хранится в директории /var/log/audit. Поддерживается работа через syslog, так что при желании этот лог выносится на внешний сервер, как я уже рассказывал в предыдущих заметках. Подобный аудит больше актуален для конфигурационных файлов служб, в том числе системных, а не исходников сайтов. Я просто показал пример.

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#linux #terminal
2👍152👎5
Вчера познакомился с необычной темой, связанной с кластером серверов точного времени pool.ntp.org, который я часто использую сам. Сразу приведу ссылку а потом своими словами расскажу, о чём там речь:

Катастрофа в российской зоне проекта NTPPool.org

Суть тут вот в чём. NTPPool.org - некоммерческая организация, которая объединяет в себе сервера времени со всего мира. Когда вы устанавливаете себе в качестве сервера времени pool.ntp.org, вы на самом деле получаете время не от него, а от подключенных к этому кластеру серверов.

Подключить такой сервер может каждый желающий. Для этого надо зарегистрироваться. Добавить через панель управления свой сервер, где работает публичная служба NTP и подтвердить права на этот сервер. На основе IP адреса этот сервер будет добавлен в свой сегмент, например в ru.pool.ntp.org. Все запросы пользователей из России будут направляться в сегмент серверов из ru.pool.ntp.org.

Проблема в том, что в октябре внезапно сильно вырос NTP трафик в сегменте RU. Из-за этого почти все сервера этой зоны отвалились. Кто-то из-за перегрузки перестал нормально отвечать и его выкинули из пула, а кто-то сам отключил свои сервера, так как не вывозил огромный трафик. У автора статьи он составлял 500 Мбит/с.

Автор предложил всем неравнодушным поднять свои сервера времени, чтобы оживить сегмент, размазать трафик по всем серверам и таким образом стабилизировать ситуацию. У меня есть такая возможность. Поднял пару небольших VPS. Для этого взял Debian 12. Поставил туда Chrony:

# apt install chrony

Нарисовал конфиг /etc/chrony/conf.d/settings.conf:

pool ntp.msk-ix.ru iburst 
pool ntp4.vniiftri.ru iburst 
pool ntp5.vniiftri.ru iburst  
allow all 
ratelimit interval 3 burst 8 leak 4

Перезапустил сулжбу:

# systemctl restart chrony

Убедился, что файрвол открыт и запросы на 123 порт к службе NTP проходят.

После этого зарегистрировался в ntppool.org и добавил свои сервера в панель управления. После добавление нужно подтвердить права на этот сервер. Надо нажать на кнопку Unverified и пройти подтверждение. Я через curl это сделал, было предложено на сайте:

# curl --interface 74.137.192.103 https://validate4.ntppool.dev/p/

В ответ получил url. Прошёл по нему и сервер в панели управления получил ✓, что означает подтверждение. После этого примерно 4 часа я получал только тестовые запросы к серверу, чтобы получить рейтинг. Так как он корректно работал, то быстро набрал рейтинг 10 и на него посыпались реальные запросы.

Какого-то шторма и огромного трафика я не получил. VPS имеют характеристики 1CPU/2GB, трафик в настройках сервера в веб панели ntppool указал 12 Mbit. В итоге на сервере имею трафик NTP запросов в районе 5 Mbit. Если есть желающие, можете присоединиться к активности.

❗️Только не запускайте NTP на домашних или рабочих серверах. Кто знает, может опять трафик сильно возрастёт. Положите входной канал. Используйте внешние, независимые VPS.

За трафиком можете следить с помощью bmon или nethogs:

# apt install bmon nethogs

А проверить, реально ли там NTP трафик можно через tcpdump:

# tcpdump -nn -i ens3 port not ssh

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

#ntp
4👍197👎2
Если у вас используется несколько систем мониторинга, сразу возникает задача по централизованному управлению оповещениями. А в мониторинге это самое главное. Я развернул и потестировал open source платформу keephq для объединения и обработки оповещений из различных систем, которые их генерируют. Например, это могут быть такие популярные системы, как:

- Zabbix
- Prometheus/VictoriaMetrics
- Netdata
- UptimeKuma
- Checkmk
- Elastic/Graylog

И многие другие известные системы. Сразу по шагам покажу, как keephq настраивается, чтобы было понятно, что она из себя представляет. Я потестировал её в связке с Zabbix.

1️⃣ Установка очень простая:

# git clone https://github.com/keephq/keep.git && cd keep
# mkdir -p state && chown -R 999:999 state

В docker-compose.common.yml поменял переменные NEXTAUTH_URL и NEXT_PUBLIC_API_URL на свои IP и запустил:

# docker compose up -d

Так мы запустили службу с сохранением состояния в базе sqlite3 в директории state.

2️⃣ Зашёл в веб интерфейс по IP адресу на порт 3000. Сразу добавил провайдера Zabbix. Для этого нужен его URL, и API токен для доступа к мониторингу. Предварительно создал его.

3️⃣ Keephq подгрузил активные триггеры из Zabbix. Сразу же можно сделать и сохранить отдельное представление, для отображения триггеров только с этого провайдера. Для триггеров можно настроить какие-то действия, которые можно выбирать для ручного запуска. Например, создать тикет в Jira, Redmine, Gitlab и т.д.

4️⃣ В разделе Correlations создал новое правило, в котором при появлении нового триггера создаётся инцидент. Он, когда сработает, будет виден в разделе Incidents. В инциденты могут быть объединены триггеры с различными признаками.

5️⃣ На основе инцидента в ручном или автоматическом режиме могут выполняться различные действия. Они описываются в разделе Workflows. Самый простой пример действия - добавление в качестве провайдера какой-то сервер с доступом к нему по SSH. И в качестве реакции на инцидент на этом сервере можно запускать какую-то команду или скрипт.

Описал кратко принцип работы keephq. В общем случае эта система умеет аккумулировать в себе множество событий и выдавать на них какие-то реакции со своими действиями или оповещениями.

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

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

Надеюсь, понятно объяснил. По сути это аналог Grafana OnCall. А сооснователь keephq - Матвей Кукуй, в прошлом — Engineering Director в Grafana Labs, который OnCall и создавал. А до этого он же ex-CEO Amixr.IO, который купила Grafana. Вот интервью с ним.

Keephq монетизируется и развивается за счёт облачной версии. Open Source версия для собственной установки бесплатна. Каких-то ограничений не нашёл.

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

#devops #мониторинг
3👍113👎4
Максимально простой способ запустить ОС Android на обычном PC на базе ОС Linux. Я уже не раз касался этой темы на канале, но все способы были значительно сложнее того, о чём расскажу сейчас.

Есть проект redroid (Remote anDroid), который запускает Android в Docker контейнере на базе Ubuntu. Поддерживаются версии Android 8.1 - 15.

# apt install linux-modules-extra-`uname -r`
# modprobe binder_linux devices="binder,hwbinder,vndbinder"
# modprobe ashmem_linux
# docker run -itd --privileged \
  -v ~/data:/data \
  -p 5555:5555 \
  redroid/redroid:15.0.0-latest

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

> scrcpy.exe --tcpip=10.20.1.4

Где 10.20.1.4 - IP системы, на которой запущен контейнер. Scrcpy очень простая и удобная штука. Я её использую в винде и для подключения к реальным смартфонам в пределах локальной сети. Работает отлично, можно спокойно в игры играть. Отклик хороший. У неё есть дополнение - QtScrcpy, в ней есть GUI.

🌐 Исходники

Другие способы запуска системы Android на PC:

▪️Bliss-OS - операционная система на базе Android, которую можно установить на компьютер или ноутбук, а также в виртуальную машину.
▪️Android-x86 - порт системы на x86 архитектуру. Проект мёртв, больше не развивается, но старые версии андроида работают.
▪️Memuplay - эмулятор Android под Windows. Можно спокойно в игры играть.

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#android
👍143👎5
В комментариях один подписчик поделился open source проектом в виде сервера для управления и использования скриптов - script-server. Штука вроде интересная. Я развернул и начал тестировать. Но всё как-то неинтуитивно и неудобно. В процессе я понял, что уже видел на эту тему готовые продукты, но более функциональные и проработанные. В итоге бросил script-server, вспомнил аналог, которым я когда-то давно пользовался - Rundeck. Решил написать про него.

Кратко скажу, что такое Rundeck. Это веб интерфейс для управления своими костылями в виде различных скриптов. Их можно запускать как вручную, так и по расписанию, заменяя локальные cron на отдельных узлах. Вы добавляете в систему свои сервера, пишите скрипты и связываете эти скрипты с серверами. Это альтернатива крупным CI/CD системам для тех, кому они не нужны, но хочется как-то упорядочить управление своими костылями в небольшой инфраструктуре.

📌 Основные возможности Rundeck:

🔹Запуск составных заданий, которые могут состоять из локальных команд и скриптов, скриптов из централизованного хранилища, HTTP запросов, Ansible плейбуков, задач на копирование файлов.
🔹Задания могут запускаться вручную через веб интерфейс или по расписанию.
🔹Выполнение заданий логируется, после выполнения могут отправляться уведомления.
🔹Функциональность системы расширяется плагинами и интеграциями. Например, можно запускать задачи Rundeck после билдов в Jenkins, или добавлять результат работы команды в комментарии в задачам в Jira. Список плагинов большой.
🔹Различные планы исполнения массовых заданий: последовательные, параллельные сразу на всех хостах, остановка или продолжение исполнения в случае неудач и т.д.
🔹Управление правами доступа в проектах на основе групп и ролей.
🔹На Linux сервера ходит по SSH, на виндовые через WinRM.

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

# docker run --name rundeck -e RUNDECK_GRAILS_URL=https://10.20.1.36:4440 -p 4440:4440 -v data:/home/rundeck/server/data rundeck/rundeck:5.7.0

Можно идти по IP адресу на порт 4440, учётка по умолчанию - admin / admin. Интерфейс и логика работы интуитивно понятны. Создаём job с различными параметрами, добавляем хосты (делается в настройках проекта), настраиваем запуск заданий на хостах. Есть несколько механизмов по автоматическому добавлению хостов. Rundesk их может брать из:

◽️Ansible inventory
◽️Директории, где лежат подготовленные файлы с описанием хостов
◽️Единого конфига, где описаны все хосты

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

В качестве примеров можете посмотреть готовые задания из репозитория. Они в формате yml. Можете скачать и импортировать к себе.

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

1️⃣ Добавляем проект.
2️⃣ В свойствах проекта в разделе Default Node Executor указываем SSH Authentication privateKey.
3️⃣ Идём в Key Storage, добавляем ключ. Сохраняем его Storage path.
4️⃣ Готовим файл с нодами resources.yml. Описываем там ноды, в параметре ssh-key-storage-path указываем Storage path из предыдущего пункта.
5️⃣ Копируем этот файл в контейнер:
# docker cp ~/resources.yml rundeck:/home/rundeck/resources.yml
6️⃣ В разделе Edit Nodes добавляем Node Source в виде File. Путь указываем /home/rundeck/resources.yml. Сохраняем настройку.

Всё, теперь можно создавать задания и выполнять их на нодах.

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

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#script #devops
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍103👎6
В сентябре делал подборку бесплатных программ для инвентаризации и учета оборудования и программного обеспечения. В комментариях читатель посоветовал программу Open-AudIT, про которую я ранее не слышал. Решил развернуть её у себя и посмотреть, чтобы дополнить список.

Программа в целом понравилась. Сразу назову основные особенности:

🔹Написана на PHP, использует MySQL. Работает на стандартном стеке веб сервера. Есть единый установщик под Linux и под Windows. Устанавливается полностью автоматически.
🔹Принцип работы очень простой. Сразу после установки указываете учётные данные для подключения к Linux и Windows хостам. Система сама сканирует выбранный диапазон сети, находит хосты, подключается к ним и собирает информацию.
🔹Сбор информации происходит через запуск bash или vbs скриптов, сетевые устройства опрашивает по snmp. Скрипты можно самому запускать любым доступным способом. Например, через GPO для Windows.
🔹У системы есть несколько лицензий. Community - бесплатная, самая простая, есть существенные ограничения по функциональности, но не по хостам. Работает сразу, ничего получать не надо. Есть лицензия Free, которая сразу даётся на год на 100 хостов. Тоже без каких-то особых телодвижений. Надо только свою почту указать, лицензия автоматом применяется.

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

1️⃣ Скачал установщик под Linux.
2️⃣ Сделал его исполняемым и запустил. Автоматом установились необходимые пакеты для Debian - apache2, mysql, php и т.д. Все конфиги с исходниками тоже. Ничего самому настраивать не пришлось. Под винду установщик такой же.
3️⃣ Зашёл в веб интерфейс. Учётка - admin / password. Сразу предложили указать учётки хостов и диапазон IP для сканирования.
4️⃣ Запустил правило обнаружения. Процесс нашёл доступные хосты, зашёл на них и забрал информацию о ПО, железе, службах и т.д.
5️⃣ Открыл список хостов и посмотрел собранную информацию.

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

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

◽️Всё железо
◽️Информация об ОС
◽️Службы и приложения
◽️Системные логи
◽️Сетевые настройки, открытые порты, IP адреса, маршруты
◽️Пользователи и группы
◽️Даже список сертификатов из /etc/ssl/certs есть.
◽️На Proxmox собрал в том числе информацию о виртуалках. Сама поняла, что это гипервизор.

Программа явно старая. Внешний вид выдаёт. Так делали интерфейс лет 15 назад. Его освежили, как смогли, но всё равно заметно. Тем не менее, это не брошенный проект. Постоянно дорабатывается, выходят новые версии. Последний релиз был 2024-11-04. Ещё сразу привлекло внимание, что проект упаковали в run файл, а не Docker контейнер. Это выглядит непривычно.

🌐 Сайт / ▶️ Установка и обзор

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#управление #ITSM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍130👎3
▶️ Очередная подборка авторских IT роликов, которые я лично посмотрел и посчитал интересными/полезными. Как обычно, ниже те видео из моих подписок за последнее время (обычно беру период в 2 недели), что мне показались интересными и полезными.

Proxmox helper scripts. Важные изменения в скриптах помощниках проксмокс
Печальные новости об известном продукте Proxmox Helper-Scripts. Уже слышал об этом ранее. К сожалению, автор умер от рака. Неизвестно, будет ли кто-то теперь развивать и обновлять проект.

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

АРМИЯ Telegram БОТОВ с ИИ на Python
Думаю, все замечают комментарии ботов к публикациям. Они обычно самые первые. Автор показал, как просто можно это всё реализовать, даже толком не умея программировать. Всё, что надо, запрограммирует ChatGPT.

ClamAV + Wazuh, powerful Anti-Virus protection for Linux
Подробный материал на тему связки антивируса для Linux ClamAV с платформой Wazuh - полноценная бесплатная open source SIEM-система.

Установка Nextcloud в Docker Traefik Cron Memories HW Transcoding
Настройка связки Nextcloud с локальной галереей для хранения своих фоток и видео Memories. Плюс, там идёт речь ещё о некоторых дополнительных программах, которые дополняют эту связку. Эта связка будет распознавать лица, обнаруживать объекты и т.д. То есть это попытка сделать условный аналог google photos, только у себя дома и бесплатно.

Never Lose Another Thought: Self-Host Blinko with Docker
Обзор очередного open source проекта Blinko для ведения заметок. Их сейчас очень много, так что лично я уже ничего не выбираю. Интересно будет только тем, кто сейчас занимается подбором какого-то решения себе. Из особенностей, тут идёт некий ИИ из коробки, который будет помогать искать заметки на основе ваших вопросов, а не привычного поиска по фразам. Выглядит в целом ничего. Можно сразу в раздел Demonstration перейти и посмотреть.

Monitoring Retail Stores With ZABBIX
Dmitry Lambert, сотрудник Zabbix, рассказал необычное применение мониторинга, которое сам от кого-то услышал. С помощью Zabbix можно следить за количеством посетителей в магазине, показывать графики и делать триггеры, если есть большие отклонения от средних значений. Технически это можно сделать с помощью системы видеонаблюдения, если она умеет считать проходящих людей. Другой вариант - простые ИК датчики и какой-то одноплатник, на котором накостылен скрипт для отправки данных.

Best Windows Monitoring: Netdata 2.0 Native Windows Agent
Обзор известного мониторинга Netdata, где в версии 2.0 появился агент для Windows. Я, кстати, раньше об этом не слышал и данный агент не видел. Для одиночных хостов агенты бесплатны. Попробую сам и сделаю отдельную заметку об этом агенте.

Dozzle мониторинг логов для нормальных людей
Обзор небольшой программы для просмотра логов докера Dozzle.

#видео
4👍57👎3
🎓 Если у вас есть желание развиваться в сторону машинного обучения, то могу предложить 2 хороших бесплатных курса (точнее только лекции от них):

▶️ Введение в машинное обучение
▶️ Прикладное машинное обучение

Это очень качественные в плане подаваемой информации материалы на основе лекций ФПМИ (Физтех-школа прикладной математики и информатики на базе МФТИ). Это один из лучших технических вузов нашей страны. Возможно, лучший.

Отмечу, что из системного администрирования очень выгодно развиваться в сторону ML (Machine Learning). Обычно таким специалистам необходимо не только понимать принцип работы моделей, обучать их и подбирать под разные задачи, но и банально обслуживать всю инфраструктуру вокруг них. А это те же контейнеры, различные скрипты и базы данных. Нужно настроить систему, а сейчас это Linux, подобрать под неё железо, зачастую специфическое. Всё это настроить, запустить в контейнерах разные модели, проверить их, замерить производительность, выгрузить результаты и т.д.

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

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

#обучение #ml
Please open Telegram to view this post
VIEW IN TELEGRAM
👍60👎1
🔝 ТОП постов за прошедший месяц. Все самые популярные публикации по месяцам можно почитать со соответствующему хэштэгу #топ. Отдельно можно посмотреть ТОП за прошлый год.

Пользуясь случаем, хочу попросить проголосовать за мой канал, так как это открывает некоторые дополнительные возможности по настройке: https://t.iss.one/boost/srv_admin.

📌 Больше всего пересылок:
◽️Следы на сервере после подключения по SSH (590)
◽️Техсобес на позицию Junior DevOps Engineer (572)
◽️Просмотр логов в браузере через logdy (445)

📌 Больше всего комментариев:
◽️Скрипт с датами и пример работы с ChatGPT (185)
◽️Проблемы со спиной от сидячей работы (178)
◽️История с шифровальщиком от подписчика (115)

📌 Больше всего реакций:
◽️Следы на сервере после подключения по SSH (756)
◽️Каталог IT блогов (226)
◽️Копирование файла из Docker образа (201)

📌 Больше всего просмотров:
◽️Лекции по SRE на Youtube (10774)
◽️Шутки про сисадминов от ChatGPT (10380)
◽️Утилита с GUI XCA для локального CA (10307)

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

▪️https://r4ven.me/
▪️https://wiki-it.ru/
▪️https://www.gurin.ru/
▪️https://sysadminhub.ru/
▪️https://it-skills.online/
▪️https://devopslife.ru/
▪️https://bite-byte.ru/
▪️https://sysadminium.ru/
▪️https://desoft.ru/
▪️https://www.pc360.ru/
▪️https://bafista.ru/
▪️https://it-experience.ru/
▪️https://blogadminday.ru/

#топ
3👍86👎2
Существует очень простой и функциональный мониторинг в режиме реального времени - Netdata. Я уже писал о нём ранее. Кратко поясню, как он работает. Netdata состоит из трёх основных компонентов:

1️⃣ Netdata Agents, которые устанавливаются на конечные сервера. Это полностью open source продукты, которые можно скачать из репозитория на github. Они есть под все популярные системы. Установленный на хост он представляет из себя саму службу, базу данных и веб интерфейс. То есть полностью самостоятельный продукт для одиночного сервера. Можно заходить в веб интерфейс по IP адресу сервера и смотреть все метрики.
2️⃣ Netdata Cloud - публичный облачный сервис, к которому можно подключать свои хосты и хранить там метрики. Это закрытый платный продукт с бесплатным тарифным планом на 5 хостов.
3️⃣ Netdata UI - веб интерфейс, в котором можно управлять и смотреть за хостами, которые подключены к облаку. Open source версии общего для всех хостов интерфейса нет. Это полностью закрытый платный продукт, неотъемлемая часть облака.

Таким образом, для одиночных серверов это очень удобный мониторинг. Ставится в пару действий, имеет много модулей и расширений для мониторинга за различными службами: nginx, docker, postgresql и т.д. Там в маркетплейсе почти 1000 интеграций для всех известных служб. Есть и для Proxmox. Можно прям на хост поставить и мониторить его.

В Linux ставится так:

# wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh
# sh /tmp/netdata-kickstart.sh --no-updates --stable-channel --disable-telemetry

Он подключает свои репозитории, оттуда ставит софт и все необходимые зависимости. После установки можно идти на https://IP:19999, пропускать аутентификацию в облаке и смотреть всё локально.

Написать эту заметку меня побудило то, что недавно у него вышел нативный агент под Windows. До этого он метрики с винды собирал через Prometheus exporter. И вот появился свой бесплатный агент. Я его развернул, запустил и был очень разочарован. Пишут заметку, чтобы вы не тратили время.

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

Возможно локальные дашборды под Windows ещё не допилили, так как агент был анонсирован недавно. Ещё даже описание на github не успели поправить. Там он всё ещё в статусе coming soon. А может так всегда и будет. В таком виде от него толку в бесплатном использовании 0.

Для объединения нескольких бесплатных агентов в единый интерфейс есть некоторый официальный костыль. Любой агент может принимать метрики с других агентов. Для этого в том агенте, кто отправляет, настраивается так называемый parent, куда будут отправлять метрики. Этот parent может их собирать с разных агентов и отображать в своём веб интерфейсе, где можно будет выбирать каждую ноду в отдельности. Управлять такой структурой не очень удобно, но для 5-10 хостов нормальный вариант.

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

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

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#мониторинг #netdata
👍69👎4
Решил дома обновить свой старенький Mikrotik RB951G-2HnD на более производительную и современную модель hAP ax³. Купил его на Озоне почти по номиналу согласно текущему курсу. Он стоит $139.00, я взял за 17000₽. Вроде и дороговато для роутера, так как нужды в нём большой не было. У меня несколько RB951G работают уже более 10 лет и полностью устраивают.

Решил взять hAP ax³ по нескольким причинам:

1️⃣ Надо уже потихоньку переходить на ROS7 и знакомиться с ней. Я старые устройства для избежания лишних проблем обновлять на 7-ю версию не планирую, пока будет поддерживаться 6-я.

2️⃣ Может показаться странным, но мне очень хотелось иметь возможность отключать мигание светодиодов на роутере. На старых моделях заклеивал их картонкой и скотчем. Напрягает ночью в жилых помещениях это мигание. У меня из коридора мигание было видно в спальне через матовое стекло на двери.

3️⃣ Взял именно hAP ax³, так как этот роутер наиболее мощный за эти деньги: 4 ARM ядра, 1G оперативной памяти, USB порт для внешнего хранилища. Хочу на нём пару контейнеров запустить с pi-hole и каким-нибудь reverse proxy.

4️⃣ Если будут какие-то проблемы с обходом блокировок и замедлений, опять же, контейнеры дадут более широкое поле для манёвров.

А в целом по настройкам там всё то же самое, что и на старых моделях. Кое-что изменилось, но не кардинально. Хотя WiFi без помощи интернета настроить не смог 😄

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

Роутер понравился. Внешне он довольно крупный, не ожидал. Думал, он по размеру что-то вроде RB951G, только с антеннами. Но на деле он почти в 2 раза больше. У него удобное крепление к стене через специальную площадку. Прошлые модели были без площадки, крепились напрямую через заднюю стенку. Ну и выглядит он стильно.

По долговечности Mikrotik могу сравнить только с Keenetic. Те тоже, все, что покупал, до сих пор работают уже 10+ лет. Все другие домашние роутеры типа D-Link или TP-Link выходили из строя раньше. Но они и стоили заметно меньше.

#mikrotik
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍193👎6