ServerAdmin.ru
31.6K subscribers
855 photos
57 videos
23 files
3K links
Авторская информация о системном администрировании.

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

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

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

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

Я использовал шаблон для быстрой установки Proxmox VE. Как оказалось, в этом шаблоне был жёстко зашит кластерный SSH-ключ. А он должен генерироваться уникальный во время установки. Этот ключ использует сам Proxmox для межкластерного взаимодействия. И этот ключ по умолчанию прописан в ~/authorized_keys (😱) даже если вы не настраиваете кластер. И этот ключ одинаковый у всех, кто успел сделать установку из этой версии шаблона 🤦 Это фиаско, братан.

Для тех, кто не понимает, что это значит, сразу поясню. Используя этот ключ, можно подключаться к серверу по SSH под правами root.

Хорошо, что я всегда по умолчанию закрываю на файрволе доступ по SSH белыми списками IP адресов. И вам того же советую. Такую подставу я вижу первый раз. Тут, я так понимаю, злую шутку сыграла особенность именно Proxmox. Мало где ещё по умолчанию создаются ключи и добавляются в authorized_keys. Обычно это надо самому делать. Но не в Proxmox.

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

Какие из этого можно сделать выводы?

1️⃣ Доступ по SSH надо закрывать, даже если используете аутентификацию по ключам.
2️⃣ Если есть возможность, систему лучше установить из своего образа.
3️⃣ Если установили из образа хостера, то хотя бы бегло проверьте, что там установлено и запущено. И обязательно проверьте ключи в ~/authorized_keys.
4️⃣ Я лично ещё и аутентификацию по паролю включаю. Пароль, разумеется, сложный.

#хостинг
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍150👎2
Я не так давно рассказывал про очень простую и наглядную интерпретацию метрики LA (Load Average). Данную тему будет уместно дополнить более современными метриками – PSI (Pressure Stall Information). Это подсистема ядра Linux, которая отслеживает три наиболее важных ресурса:

▪️CPU
▪️Memory
▪️I/O

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

PSI имеет 3 периода измерений: avg10, avg60, avg300. Это время в секундах, то есть 10 секунд, 1 минута и 5 минут. К периодам прилагаются два типа метрик:

🔹some - процент времени, когда хотя бы один процесс ждёт освобождение ресурсов (line indicates the share of time in which at least some tasks are stalled on a given resource)
🔹full - процент времени, когда все активные процессы находятся в ожидании освобождения ресурсов (line indicates the share of time in which all non-idle tasks are stalled on a given resource simultaneously)

Эти метрики можно и нужно использовать в повседневной работе, наравне с привычными LA, disk r/w, iops. В версии htop, начиная с 3.0.0, можно включить их отображение. По умолчанию они не отображаются. Включаются так:

Открываем htop ⇨ F2 ⇨ Meters ⇨ Aviable Meters ⇨ Выбираем нужные метрики, нажатием Enter ⇨ F10 выйти с сохранением.

В недавнем обновлении Proxmox эти метрики появились на стандартном дашборде.

PSI активно используется в systemd-oomd – современной замене OOM Killer. А точнее помощнике. На основе метрик PSI он более избирательно останавливает процессы, а не ждёт, как OOM Killer, когда закончится память, чтобы прибить самого жирного потребителя при прочих равных условиях.

На практике метрики PSI могут быстро помочь определить узкое место в системе. Например, у вас начала тормозить СУБД. Заходите на сервер и видите высокий LA. Но сама по себе эта метрика не даёт никакой конкретики. Может быть чрезмерно нагружен как процессор, так и диск. Рядом метрики cpu some и io some сразу ответят на вопрос, где у вас узкое место. Если оно реально в CPU, то не придётся лезть в дисковую подсистему и смотреть, что там происходит.

Изменение метрик в режиме реального времени позволяют сразу же оценить какие-то свои изменения и посмотреть, как они повлияли на нагрузку. В общем, это полезные метрики, которые имеет смысл по умолчанию выводить в htop. Не знаю, есть ли они в обычном top. Я на все свои сервера без исключения ставлю htop. Очень к нему привык. Там и PSI, и вкладка I/O с активностью диска, и lsof для просмотра открытых файлов, и strace. В общем, очень удобно.

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

#linux #perfomance
4👍144👎2
Последнее время редко захожу в блог Zabbix, так как не вижу интересных для меня статей. Там в основном какие-то общие слова и рекомендации публикуют, либо отчёты с мероприятий. Но одна запись привлекла моё внимание:

When Generative AI Meets Zabbix

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

В три утра вы получаете критическое уведомление на свой телефон. Но вместо просмотра дашбордов и метрик, вы пишите вопрос: "Что случилось с продакшеном?"

- Сервер web-prod-01 съел всю память, а конкретно 94%. Начался дикий жор 15 минут назад вместе с всплеском трафика. Я рекомендую проверить пул подключений к базе данных и рассмотреть возможность перезапуска службы Apache. Хотите, я покажу вам соответствующие логи?

Как вам такая затравочка? Выглядит неплохо. В данном примере используется локальный сервер с бесплатным Gemini AI, который кушает триггеры Заббикса и логи с помощью Winston. Данные в Germini отправляет небольшой скрипт на Python, который использует формат MCP (Model Context Protocol).

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

- Доброе утро, что у нас с инфраструктурой?

- Доброе утро! Все спокойно. 14 активных хостов, 0 критических проблем. На выходных была запланирована перезагрузка сервера proxmox-desarrollo, которая завершилась успешно. Средняя загрузка процессора составляет 23%. Вам нужна подробная информация о какой-либо конкретной системе?

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

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

Я сейчас как раз тестирую систему мониторинга, где есть встроенный ИИ-помощник. Надеюсь получится в какой-то более-менее реальной форме его потестировать. Будет скоро полноценная статья про эту систему мониторинга и не только.

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

#zabbix #AI
4👍99👎3
Я одно время очень много работал с устройствами Mikrotik. Практически постоянно. Сейчас они тоже остались, но в основном на поддержке старые конфигурации, чего-то нового и необычного, о чём ещё не писал, давно не настраивал. Эти устройства, как и их система, хороша своим консерватизмом. Каких-то глобальных изменений в ней случается редко. И все старые наработки актуальны много лет.

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

Больше всего нюансов в казалось бы простом инструменте для отката настроек в случае ошибки - Safe Mode.

1️⃣ Если у вас где-то открыта сессия Winbox, а вы подключились новой и нажали Safe Mode, то режим не сработает. Это может оказаться неприятным сюрпризом. А если вы решите завершить эту сессию, а там окажется включённый Safe Mode, то откатите те настройки, что изменили в той сессии. Смотреть активные сессии в System ⇨ Users ⇨ Active Users.

2️⃣ Safe Mode хранит ограниченное количество изменений. Так что лучшим вариантом использования этой функциональности является подключение, включение опции, изменение настроек, проверка, что всё прошло удачно. И сразу после этого отключение режима.

3️⃣ Иногда на автомате включаешь Safe Mode, что-то настраиваешь. Ошибаешься, тебя отключает. Ты ждёшь, когда откатит настройки, но не откатывает. Доступ не восстанавливается. И тут понимаешь, что подключен по AnyDesk или RDP, а сессия Winbox открыта в локальной сети. Тебя отключило от интернета, но сессия на Микротике не оборвалась.

Сталкивался, когда на потоке настраивал на точках по 2 провайдера. Там обычно был компьютер, телефон, принтер и Микротик. Прямого доступа не было, пока не настроишь VPN. Все точки объединял в VPN сети для удобного мониторинга и управления.

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

/system backup save password="secret" name=disconnect
delay 180
/system backup load name=disconnect.backup password="secret"

Запускаете скрипт, делаете настройки, если всё ОК, то останавливаете выполнение скрипта. Он будет висеть в списке 3 минуты и ничего не делать из-за delay 180.

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

5️⃣ Иногда надо перезапустить интерфейс. Если через него же вы и подключены, то сделать disable и обратно enable не получится. Вас отключит. Вместо этого можно нажать галочку с enable на интерфейсе в Winbox. Это актуально и для PPP соединений. VPN соединение переподключится.

6️⃣ Я очень долго не замечал, что в Winbox есть настройка Settings ⇨  Hide Passwords, которая по умолчанию активна. Она все сохранённые пароли на устройстве отображает звёздочками. Если её отключить, то их можно увидеть. Узнал случайно от одного админа. Например, так можно посмотреть пароли от PPP соединений непосредственно через Winbox в свойствах соединения, а не только в экспорте.

7️⃣ В разделе Tools ⇨ Packet Sniffer ⇨ Streaming можно указать IP адрес и порт машины, где запущена Wireshark с настройкой на прослушивание указанного порта. Можно смотреть весь трафик или отфильтрованный. Очень просто, быстро и удобно для отладки. Если постоянно нужно смотреть трафик, то удобнее настроить отправку через NetFlow (IP ⇨ Traffic Flow).

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

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

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

Лучший будильник на алерты
Шуточка для любителей ночных дежурств.

Build your own HomeLab Firewall! // OPNSense Tutorial
Обзор программного шлюза OPNSense, который я недавно рекомендовал к установке, как замену pfSense.

Zulip - Open Source, Self Hosted, team and organization communication platform
Подробный обзор неплохого чат-сервера, который можно бесплатно развернуть у себя. Я знаю этот продукт, внедрял его, писал про него статью, делал заметки. Посмотрел видео, с тех пор Zulip не сильно изменился. Этот чат интересный и необычный, не похож на условные клоны Slack, типа Mattermost или Rocket.Chat, которые первое время старались его скопировать.

How to structure your HomeLab network?
Пример того, как можно организовать локальную сеть с изоляцией сегментов.

SDN в Proxmox — мощный инструмент для управления сетями. Как работают виртуальные сети и зоны.
Хорошее подробное видео на тему работы SDN в Proxmox. Описание, схемы, примеры, настройки. Всё присутствует.

RTX 5090 laptop - ЛУЧШАЯ видеокарта для ноутбука? LLM в ноутбуке.
Тесты топовой видеокарты для ноутбука. Конечно, всё это очень дорого, неудобно и заметно слабее десктопа. Но для ноутов ничего быстрее нет.

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

Управляемый свитч Sodola — обзор, настройка VLAN и возможностей Managed Switch
Обзор необычного 9-ти портового свитча, где 8 портов 2.5G и один 10G. Мне было интересно посмотреть обзор, хотя у меня нет ни одного устройства, которое бы поддерживало такие скорости. Удивился, что подобные свитчи такие дешёвые (6-10 т.р.). Я думал, это что-то на богатом, а оказывается, что уже давно нет.

Балансировка в nginx proxy manager (npm). Как и зачем?
Обзор неплохой веб панели для настройки Nginx в качестве обратного прокси. Я давно знаю этот продукт, писал про него. Он простой и удобный.

rwMarkable - Simple Self-Hosted Notes & Checklists (No Database Required!)
Обзор очень простого сервиса для хранения личных заметок. Их существуют десятки. В этом ничего примечательного не увидел, но посмотрите, может вам понравится. Мне кажется, в таких инструментах самое главное, чтобы вам лично понравился и показался удобным интерфейс. Всё остальное вторично, так как в реальности какой-то большой функциональности не надо, хотя кажется, что чем больше программа умеет, тем лучше. Тут хорошо то, что все заметки хранятся в текстовых файлах, без использования СУБД.

#видео
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍51👎3
Меня постоянно в комментариях спрашивают, как я всё успеваю - настраивать системы, писать публикации, отвечать в чате и всё это в дополнение к большой семье. У меня 4-ро детей от 1 года до 11 лет. По сути малыши ещё. В последнее время я закончил стройку дома и переехал жить в Подмосковье. Устроил тут детей в сады, школы. Обустраиваю новую жизнь.

Давно не пишу о личном, чтобы не размывать тематику канала. Он и так по какой-то причине выпал из рекомендаций Telegram, хотя ничего не менял в основной тематике за последние 5 лет.

Не открою никому никакого секрета, потому что его нет. Я много успеваю, потому что много всего делаю и веду параллельно несколько проектов. Просто скрупулёзно и аккуратно день за днём тружусь, по шагам двигаясь к целям. Отмечу основные моменты:

1️⃣ Всегда и всё записываю, планирую. Для этого использую Singularity. Веду календари, списки дел. Без этого никуда. Текстовые заметки веду в Joplin. Туда тоже всё подряд пишу, чтобы ничего не забыть - и личное, и по работе.

2️⃣ Не отдыхаю с пожирателями времени. То есть не играю в компьютерные игры, не смотрю сериалы, не смотрю развлекательные ролики на ютубе. Да и кино не смотрю. Если только вместе с семьёй что-то вечером в выходные.

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

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

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

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

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

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

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

📌 Заметки по теме:
- Как у меня организован рабочий процесс
- Про детей
- Как я подхожу к любому делу
- Мужчины, будьте мужчинами
- Как не задалбываться на работе
- Как я развивался и искал себя
- Плюсы и минусы фриланса
- Не переезжайте в мегаполисы
- Из чего состоит успех в делах
- Всегда ищите то, что нравится
- Просто делай маленькие шаги каждый день
- Интервью со мной

#мысли
Please open Telegram to view this post
VIEW IN TELEGRAM
18👍338👎4
Давно запланировал актуализировать подборку self-hosted серверов для установки чат-сервера. Недавно пробовал и писал про Mattermost. Плюс, у меня было много заметок про Rocket.Chat.

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

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

Отмечу некоторые особенности Zulip:
▪️Голосовые и видео звонки возможны только через стороннюю интеграцию, например Jitsi.
▪️Есть удобная встроенная утилита для бэкапа, восстановления, переноса сервера.
▪️Нормальный перевод на русский язык. Не идеальный, но и не кровь из глаз.
▪️Ограничение free версии - пуш уведомления только для 10-ти пользователей.
▪️Есть возможность интеграции с AD.
▪️Поддержка ботов. Их много, они бесплатные, список тут.
▪️Есть утилита для миграции со Slack, Mattermost, Rocket.Chat.
▪️Код полностью открыт, self-hosted версия замкнута на себя.

Установить Zulip можно как напрямую, так и в Docker. Сами разработчики рекомендуют ставить напрямую, если у вас нет единого стандарта запуска приложений в докере. С их слов управлять не в докере будет проще: "Deploying with Docker moderately increases the effort required to install, maintain, and upgrade a Zulip installation".

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

# mkdir zulip && cd zulip
# curl -fLO https://download.zulip.com/server/zulip-server-latest.tar.gz
# tar -xf zulip-server-latest.tar.gz
# ./zulip-server-*/scripts/setup/install --push-notifications --certbot \
--email=zeroxzed@gmail.com --hostname=340751.simplecloud.ru

Установщик ругнулся на отсутствие swap. Создал его. После этого установка прошла нормально. Если у вас нет настроенного доменного имени и для теста вы хотите использовать самоподписанный сертификат, то добавьте ключ --self-signed-cert.

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

Для клиентов есть как онлайн установщик, так и полностью автономный. Клиент, как обычно, написан на чём-то тяжёлом и модном, а конкретно на JavaScript. Скорее всего используется Electron, но я не уточнял. Нативный легковесный клиент есть только у Telegram, так что тут выбирать не приходится. У всех современных чатов тормозные клиенты.

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

Я немного потестировал чат, установил клиента. Лично мне он понравился больше Rocket.Chat и Mattermost. Лёгкий, лаконичный дизайн. Настроек и возможностей больше, чем у Mattermost и меньше, чем у Rocket, но мне этим Рокет и не нравится. Там такое меню управления переполненное, что заходить лишний раз не хочется. У Zulip всего немного и по делу. Логично и удобно распределено, переведено. Много полезных ботов с интеграциями.

Если бы сейчас надо было внедрять новый чат, думаю, что остановился бы на Zulip.

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

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

#chat
2👍77👎5
Относительно недавно (2018 год) по меркам Linux в составе базовых системных утилит популярных дистрибутивов появилась утилита choom. Узнал о ней случайно. В Debian и Ubuntu она есть по умолчанию, отдельно ставить не надо. В других не проверял.

Забегая вперёд скажу, что лично я для неё применения не увидел, но решил всё равно написать для общего образования. Кому-то может пригодится. Не просто же так её написали и добавили в дистрибутивы. С помощью choom можно управлять таким параметром, как OOM score adjustment (oom_score_adj). На его основе OOM-killer принимает решение о том, какой процесс завершить при нехватке оперативной памяти в системе.

Choom работает с запущенными процессами на лету, используя их pid. Примерно так:

# choom -p 1994
pid 1994's current OOM score: 684
pid 1994's current OOM score adjust value: 0

Посмотрели текущее значения oom_score и oom_score_adj. Для того, чтобы максимально уменьшить шанс для процесса быть убитыми, ему нужно присвоить параметр oom_score_adj -1000. Соответственно, параметр 1000 будет означать максимальный шанс. То есть там разбег от -1000 до 1000. И чем меньше значение, тем меньше шанса быть завершённым.

# choom -p 1994 -n -1000

Проверяем:

# choom -p 1994
pid 1994's current OOM score: 0
pid 1994's current OOM score adjust value: -1000

Oom_score стал 0, а oom_score_adj, как и указали -1000. В данном примере pid 1994 - это процесс mariadbd. Удобней было бы сделать сразу вот так:

# choom -p $(pidof mariadbd) -n 1000

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

Вручную всё это менять имеет смысл только в каких-то отладочных целях. Для постоянной работы этими параметрами удобнее управлять через systemd. Просто указываем в unit файле сервиса нужные значения:

[Service]
............
OOMScoreAdjust=-800
............

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

# systemctl edit mariadb

Добавляем в конфигурацию:

[Service]
OOMScoreAdjust=-800

Перечитываем параметры юнита и перезапускаем его.

# systemctl daemon-reload
# systemctl restart mariadb

Проверяем значение:

# choom -p $(pidof mariadbd)
pid 2274's current OOM score: 152
pid 2274's current OOM score adjust value: -800

По сути choom удобен именно для просмотра. Смотреть значения с помощью утилиты быстрее и проще, чем напрямую:

# cat /proc/2274/oom_score
# cat /proc/2274/oom_score_adj

Она по сути именно это и делает. И меняет значение тоже переопределяя именно эти параметры.

На практике я никогда не занимался настройкой OOMScoreAdjust. Если на сервере кончается память и приходит OOM-killer - это аварийная ситуация. Надо идти и разбираться, куда утекает память и почему её не хватает. Обычно после этого её должно хватать.

Исключение, наверное, для каких-то специфических случаев, когда целенаправленно нужно использовать всю память сервера, но при этом гарантированно иметь работающим какое-то приложение. Я не могу придумать таких примеров, но думаю, что они есть. Если кто-то знает такие истории, поделитесь в комментариях. Когда вам приходилось целенаправленно настраивать OOMScoreAdjust? В голову приходят агенты мониторинга. Желательно, чтобы они всегда работали, но на практике я не видел, чтобы их первым отключал OOM-killer.

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

#linux #terminal #systemd
3👍84👎1
Собрал подборку из заметок на канале на тему инструментов для ведения документации. Ни разу этого не делал, а материала накопилось прилично. В списке явно прослеживаются 2 категории продуктов:

🔹классические в формате wiki;
🔹статические генераторы.

Так что список будет состоять из двух этих категорий, и в конце всё остальное, что останется, в третьей.

Wiki:

◽️DocuWIKI, MediaWiki - по ним не было отдельных заметок, но не мог пропустить эти очень старые и известные продукты. Я сам не раз составлял документацию в DocuWIKI. Это очень простая wiki-подобная панель управления документами, которая работает на php, не требует СУБД, а все заметки хранит в текстовых md файлах. Очень легко бэкапить и синхронизировать документацию.
◽️Wiki.js - современная реализация технологии wiki. Очень хорошая функциональность. Среди всех современных wiki, это самая навороченная и красивая. Там и API, и аутентификаций куча всяких, продвинутый поиск, синхронизация с git и многое другое.
◽️BookStack - ещё один движок на базе wiki, но не только. Больше похож на классическую CMS на PHP, которая в том числе поддерживает wiki. Это для любителей олдскула, хотя проект не брошен. Развивается и поддерживается. Есть аутентификация через AD.

Статические генераторы:

◽️MkDocs - как мне кажется, наиболее популярный генератор именно для документации. С его помощью написана документация для многих известных проектов. Например - Rocky Linux. Принцип там такой - пишите документация в формате md, хранить можно в git. Отдельно пишите инструкцию по генерации сайта в формате yaml. И после каждого обновления контента запускаете генерацию новых страничек или всего сайта.
◽️Hugo - это в целом самый популярный генератор статических сайтов, который в том числе используют для документации, но вообще он для сайтов общего назначения. Многие техноблогеры используют этот движок для своих блогов.
◽️Antora - продвинутый инструмент для ведения документации профессиональными техническими писателями. Там есть деление на продукты, вертки, версии. Управление документацией ведётся по принципу docs as code.
◽️Grav - универсальная CMS, которая в том числе подходит для хранения документации. У неё есть отдельная тема для синхронизации контента с git репозиторием. Сама CMS вместе с markdown редактором работает на PHP. Это может быть удобно, если хочется писать текст во встроенном редакторе, а не где-то на стороне.
◽️Docusaurus - ещё один статический генератор, который изначально был заточен под ведение документации и написан в Facebook. У него простой, лаконичный дизайн, интеграция с git, документы хранит в формате md. Написан на Go, расширяется плагинами. Нормальное современное решение для простой документации.

Разное:

◽️Onlyoffice - это целый портал для совместной работы, который включает в том числе отдельный раздел для wiki. Но лично мне нравится в нём вести текстовую документацию в формате обычных документов docx и xlsx с общим доступом к файлам. Это в целом удобно, так как хранится наглядная история версий, можно скачать файл локально, куда-то переслать, поработать с ним на компе в десктопном редакторе.

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

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

#wiki #docs #подборка
2👍105👎2
Mikrotik меня на днях удивил. Увидел мельком в одном из видео на ютубе упоминание функции Kid Control. Думаю, такой, что это за контроль, впервые слышу. Открываю RouterOS 7 и и вижу там IP ⇨ Kid Control. Очень удивился. Я вообще впервые увидел этот раздел.

Думаю, наверное это в 7-й версии появилось, поэтому я не видел. Я все старые устройства оставил на родной для них 6-й версии. Специально не обновлял. А с 7-й мало работал, только с новыми устройствами.

Захожу в RouterOS 6, а там этот контроль тоже есть. Тут я ещё сильнее удивился. Пошёл в поиск, оказалось, что эта функциональность появилась в 2017 году. Как я умудрился не то, что её ни разу не заметить лично, но даже не слышать никогда о ней. Проходил обучение MTCNA, не помню, чтобы там об этом шла речь. Либо у меня из памяти всё это вылетело.

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

Дело в том, что я настраиваю детям ограничения, но делаю это примерно так:

/ip firewall address-list
add address=192.168.137.110 list=Ivan
add address=192.168.137.111 list=Olga
/ip firewall filter
add action=reject chain=forward reject-with=icmp-network-unreachable src-address-list=Ivan time=\
  22h-7h,sun,mon,tue,wed,thu,fri,sat
add action=reject chain=forward reject-with=icmp-network-unreachable src-address-list=Olga time=\
  21h-7h,sun,mon,tue,wed,thu,fri,sat


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

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

В разделе IP ⇨ Kid Control есть 2 вкладки: Kids и Devices. В раздел Kids добавляем ребёнка и назначаем ему часы, когда интернет будет работать. Там же можно настроить ограничение скорости. В целом это тоже может быть полезно. Для того, чтобы делать уроки, смотреть расписание и искать какую-то текстовую информацию большая скорость не нужна. Можно ограничить, чтобы не работали видео и не было соблазна быстренько что-то посмотреть. А вечером, когда уроки закончены, ограничение убрать.

В Devices добавляем по MAC адресу устройства ребёнка и привязываем их к нему.

Такой вот нехитрый контроль, который по факту делает примерно то же самое, что и я вручную. Для ограничения интернета добавляет и убирает блокирующие правила в файрвол для IP адресов устройств детей. А для ограничения скорости добавляет правила в Queues ⇨ Simple Queues.

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

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

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

#mikrotik #дети
👍129👎8
📊 Пришло время очередного опроса. Давно хотел его организовать, да всё забывал. На другое отвлекался. Тема очень дискуссионная. На канале не раз поднимались споры на этот счёт, но никогда не было опроса.

Интересно посмотреть на распределение по вопросу, кто каким текстовым редактором пользуется в консоли Linux. Скажу за себя. Я использую mcedit. Не считаю его очень удобным, но привык. Мои потребности закрывает, так как я особо много в консоли не редактирую. Если что-то большое, масштабное, то делаю на компьютере в VSCode.

Если стоит nano, то буду работать в нём. Vi или vim не люблю, закрою, если случайно откроется 😆 Но приходится мириться, так как по visudo открывается. Я обычно не переназначаю. Хотя это было раньше, на rpm дистрибутивах, с которыми я всё реже взаимодействую. В deb visudo открывает nano. И это здорово. Про vi теперь не вспоминаю.

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

#опрос
👍70👎3
Какой текстовый редактор вы предпочитаете для работы в консоли ОС на базе Linux?
Anonymous Poll
20%
mcedit
19%
vim
51%
nano
5%
vi
0%
emacs
2%
neovim
1%
Другой (напишу в комментариях)
3%
Не работаю в консоли Linux (посмотреть результаты)
👍94👎3
На днях на хабре прочитал полезную статью, поэтому решил акцентировать ваше внимание на ней. Я в принципе не знал, что так можно сделать. Не приходилось сталкиваться.

Защита от эксплойтов rdp, smb c помощью IPSec и сертификатов

Думаю у многих всё ещё трудятся устаревшие операционные системы Windows. По моим наблюдениям, чаще всего это Windows Server 2012 R2. Не помню уже чем они в то время так привлекали внимание, но мне кажется, их наустанавливали значительно больше, чем последующих 2016-х и 2019-х. Таковые имеются и у меня.

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

Автор предлагает следующий простой и эффективный способ защиты удалённых подключений.

1️⃣ Разворачиваем роль центра сертификации.
2️⃣ Выпускаем сертификаты для пользователей.
3️⃣ На целевых серверах, куда пользователи будут подключаться по SMB или RDP, на штатном файрволе настраиваем правила входящих соединений, где включаем параметр Разрешить только безопасное подключение. Дополнительно можно ограничить список компьютеров, с которых разрешено подключаться. Если это не терминальный сервер, а обычный, куда по RDP подключаются только админы, можно ограничить список компьютеров.
4️⃣ Отдельно создаём правило для безопасных соединений, где включаем проверку подлинности компьютера, если настраивали ограничения по ним, и проверку подлинности пользователя, которая выполняется с помощью ранее выпущенного сертификата с нашего CA.

Теперь если у пользователя нет сертификата, в подключении будет отказано. Это не даёт стопроцентной защиты, но заметно сужает вектор атак, так как без сертификата по RDP или SMB уже не подключиться. А именно в этих сервисах обычно находят фатальные уязвимости.

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

#windows #security
Please open Telegram to view this post
VIEW IN TELEGRAM
👍121👎2
Как понять, что системе на базе Linux требуется перезагрузка? Самый простой способ - использовать программу needrestart (deb дистрибутивы) или needs-restarting (rpm дистрибутивы). Я про неё подробно рассказывал. Её можно использовать для собственного мониторинга. Также другой софт может на неё опираться. Например, Lynis.

Needrestart установлен не всегда и не везде. Например, в базовых образах LXC контейнеров в Proxmox его нет. Если система не ваша, то самостоятельно лучше ничего не ставить.

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

# lsof -nP +L1 | grep '(deleted)'
systemd-l 488 root txt  REG  8,1  281096   0 270929 /usr/lib/systemd/systemd-logind (deleted)
dockerd  526 root txt  REG  8,1 75181152   0 265728 /usr/sbin/dockerd (deleted)
sshd   532 root txt  REG  8,1 1265432   0 262298 /usr/sbin/sshd (deleted)
systemd  582 root txt  REG  8,1  92544   0 270899 /usr/lib/systemd/systemd (deleted)
(sd-pam) 584 root txt  REG  8,1  92544   0 270899 /usr/lib/systemd/systemd (deleted)
bash   647 root txt  REG  8,1 1265648   0 263309 /usr/bin/bash (deleted)


Тут видно удалённые файлы системных сервисов, таких как systemd, sshd, ну и bash заодно. То есть было обновление, приехали новые версии этих файлов, заменили старые. Но так как службы не перезапускались, они до сих пор используют удалённые файлы.

Для systemd существует специальная команда для полного перезапуска службы в том числе после обновления:

# systemctl daemon-reexec


Её, кстати, часто ошибочно предлагают ИИ, когда изменяются настройки юнитов. Использовать её в этом случае не стоит. К сожалению, эта команда не всегда помогает запустить systemd с обновлённым бинарём. В таком случае поможет только перезагрузка.

С другими службами проще. Для обновления sshd и bash достаточно переподключиться по SSH. В новой сессии загрузятся уже новые бинарники.

А вот если изменился systemd, glibc или ядро, то тут без reboot уже не обойтись. Ядро, кстати, можно так посмотреть:

# uname -r
6.1.0-35-amd64


Это текущая версия, а вот список установленных ядер:

# dpkg -l | grep linux-image
.................................
ii linux-image-6.1.0-39-amd64   6.1.148-1           amd64    Linux 6.1 for 64-bit PCs (signed)


Установлен пакет с более свежим ядром. Надо перезагружаться.

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

#linux
1👍150👎1
Поделюсь с вами необычным сервисом. Необычен он тем, что полностью бесплатно даёт интересные возможности, правда нужны они далеко не всем.

https://tastewp.com

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

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

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

#бесплатно #wordpress
👍46👎1