Sysadminium
322 subscribers
148 photos
1 video
1 file
398 links
Я делюсь своими знаниями системного администратора. Всё проверено на себе — иногда даже дважды.
Download Telegram
📝Установка двух экземпляров WordPress на Nginx

👉В предыдущей статье я описал установку двух экземпляров WordPress на Apache2. В этой всё тоже самое, установка на Debian 13, но вместо Apache 2 будем использовать Nginx.
👍5
📝Недавно писал статью про Cloud-Init в Proxmox VE - https://sysadminium.ru/pve-template-and-cloud-init/

👉При работе с шаблонами Debian 13 столкнулся с проблемой: cloud image использует Netplan и systemd-networkd, а DHCP-клиент там по умолчанию идентифицируется не по MAC, а по DUID, который генерируется на основе /etc/machine-id.

👉При клонировании виртуальной машины Proxmox VE меняет MAC, но machine-id у клонов остаётся одинаковым. В результате DHCP-сервер выдаёт всем клонам один и тот же IP-адрес.

👉Сначала я попробовал удалять: /etc/machine-id и /var/lib/dbus/machine-id. Но сеть стартовала раньше, чем systemd успевал создать новый machine-id, и VM вообще не получала IP.

💡Решение — заставить DHCP-клиент использовать MAC вместо DUID. Для этого в /etc/netplan/50-cloud-init.yaml нужно добавить - dhcp-identifier: mac.

network:
version: 2
ethernets:
eth0:
match:
macaddress: "bc:24:11:df:93:17"
dhcp4: true
dhcp-identifier: mac
set-name: "eth0"


Перед превращением VM в шаблон выполнил:
cloud-init clean --logs
truncate -s 0 /etc/machine-id
shutdown -h now


После этого каждый клон начал получать свой IP.
👍10
📝Fwknop - современный port knocking для Linux

👉fwknop реализует схему авторизации, известную как Single Packet Authorization (SPA), для надежной защиты сервисов. Для авторизации SPA требуется всего один зашифрованный пакет, который невозможно воспроизвести повторно и который проходит аутентификацию с помощью HMAC.
👍5
👉Любая информационная система, будь то домашний NAS, корпоративный Active Directory или облачная инфраструктура, ежедневно отвечает на два простых вопроса: «Кто вы?» и «Что вам разрешено делать?». За этими вопросами стоит - контроль доступа.

👉Можно выделить 3 слоя в безопасности систем:
- Разграничение сети - подсети, VLAN и файрволлы создают периметры безопасности.
- Шифрование - позволяет защитить данные от кражи.
- Контроль доступа - это механизмы аутентификации, авторизации и аудита действий пользователей.

👉Контроль доступа важен не только для безопасности, но и для бизнеса. Правильно настроенные права напрямую влияют на работу компании, ускоряя доступ к нужным сервисам и снижая риск выполнения запрещённых действий обычными пользователями или злоумышленниками.
👍5
🐧 Не редактируй системные юниты (systemd) напрямую!

Файлы в /usr/lib/systemd/system/ (поставляемые пакетами) перезаписываются при apt upgrade, а ручное копирование в /etc/systemd/system/ ломает прозрачность обновлений.

✅ Правильный подход:
sudo systemctl edit <сервис>


Команда создаст drop-in файл override.conf в /etc/systemd/system/<имя>.d/. Пишите только те директивы, которые нужно изменить.

🔧 Важный нюанс:
При переопределении ExecStart, ExecReload или ExecStop сначала сбросьте значение пустой строкой, иначе новые команды добавятся к старым:

ExecStart=
ExecStart=<новая команда>


🛡 Полезные команды:
- systemctl cat <сервис> — увидеть итоговый конфиг
- sudo systemctl revert <сервис> — мгновенно откатить все правки
- sudo systemctl daemon-reload && sudo systemctl restart <сервис> — применить

💡 Метод официален, безопасен при обновлениях и работает в Debian 13 из коробки. Сохраняйте в закладки.
👍7
⚡️ Как быстро проверить реальные права доступа в Windows

Знакомая ситуация? 👤
Пользователь в нужной группе, права вроде выданы, а доступа всё равно нет.

Обычно проблема в том, что Windows проверяет сразу 2 уровня прав:

🔹 Share permissions — права SMB-шары
🔹 NTFS permissions — права файловой системы

👉 Итоговый доступ = пересечение обоих наборов прав.
Если где-то есть ограничение — пользователь его получит.

👇Продолжение
👍3
☝️Начало

🔍 Как проверить Effective Access

🖱 Через GUI:

Свойства папки → Безопасность → Дополнительно → Действующие права доступа → Выбрать пользователя

✅ Windows покажет итоговые права с учётом:
• групп
• наследования
• явных Deny

💻 Через PowerShell

📌 Список SMB-шар:
Get-SmbShare


📌 Права на SMB-шару:
Invoke-Command -ComputerName <имя сервера> {
Get-SmbShareAccess -Name "<имя шары>"
}


📌 NTFS-права:
icacls "U:\example\Ivanov"


💡 Многие админы делают так:

🔹 Share permissions → всем дают Full Control
🔹 Всё разграничение — только через NTFS

Это спорная практика, но у неё есть плюсы:

✅ меньше путаницы
✅ проще аудит
✅ удобнее автоматизация

🚨 Если доступ не работает — проверьте:

✔️ Пользователь точно в нужной группе?
✔️ Нет ли явного Deny? (Deny всегда приоритетнее Allow)
✔️ Пользователь перелогинился после изменения групп?
✔️ Доступен ли SMB-сервер?
Test-NetConnection server -Port 445

✔️ Нет ли старых SMB-сессий?
net use * /delete


🔖 Сохраните — пригодится во время инцидента.
👍7
Продолжаю переносить статьи со старого сайта на новый. Эта статья за апрель 2022.

Если вам нужен локальный репозиторий для внутренних пакетов — DevPI спасет ситуацию, ускоряя CI/CD.

Как это работает:
1️⃣ Вы поднимаете локальный сервер DevPI (кэширующее зеркало PyPI).
2️⃣ Настраиваете pip так, чтобы он тянул модули не напрямую из интернета, а с вашего локального сервера.
3️⃣ Если нужного пакета нет в локальном кэше, DevPI сам скачает его с PyPI, сохранит у себя и отдаст вам.

Итог: Все последующие установки проходят мгновенно с локального сервера, а вы меньше зависите от доступности внешнего PyPI.
👍3
👋 Продолжаю переносить статьи со старого сайта на новый! На очереди материал за июнь 2022 года.

В этот раз разбираем настройку OSPF на четырёх роутерах. Чтобы охватить разные ситуации, я подготовил сразу два примера:
1️⃣ Через один свитч. Отличный вариант, если нужно быстро развернуть тестовый стенд и отработать базу.
2️⃣ Поверх VPN. А вот это уже более жизненный и практичный кейс, приближенный к реалиям.
👍3
Продолжаю переносить материалы на новый сайт и хочу поделиться с вами статьей о Load Average в Linux, изначально опубликованной в октябре 2022 года.

Материал получился действительно практичным. В статье подробно объясняется природа метрики, рассматриваются инструменты мониторинга и даются рекомендации по её анализу.
👍9
Переделал одну из своих самых популярных статей — «Linux и оперативная память».

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

Теперь в статье разобраны:

✅что такое RSS и VSZ;
✅как устроены Page Cache, Dirty Pages и HugePages;
✅как Linux использует Swap;
✅что происходит при нехватке памяти;
✅как работают стратегии overcommit_memory;
✅что такое CommitLimit и Committed_AS;
✅как OOM Killer выбирает процесс для завершения и как можно повлиять на его решение.

Постарался объяснить всё простыми словами, но без упрощений, чтобы статья была полезна как начинающим, так и опытным Linux-администраторам.
👍8
🔧 Почему возникает ошибка "Too many open files"? Чем отличается fs.file-max от nofile? Где задаются лимиты для пользователей, а где — для служб SystemD?

Подготовил большую статью о лимитах в Linux. Разобрал три уровня ограничений:

• системные (sysctl);
• пользовательские (limits.conf);
• для служб (SystemD).

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

В статье также есть готовый Bash-скрипт, который помогает определить количество открытых файлов у процессов. Не раз выручал меня при диагностике серверов.
👍5
👀Я продолжаю переносить статьи со старого на новый сайт, уже перенёс 57% материала.

👉Эта статья за апрель 2023 года.
Иногда требуется выяснить причину перезагрузки Windows сервера, который не должен был перезагружаться, но всё же сделал это.
👍6
📝Выбор диска для GRUB при обновлении Debian на VPS/VDS

После приобретения виртуального сервера VPS/VDS с Linux, например с Debian 13, вам нужно провести некоторые стандартные действия:

👉Обновить сервер (apt update && apt upgrade).
👉Настроить файрвол (например, UFW).
👉Настроить доступ по SSH-ключу (и отключить вход по паролю).
👉А затем уже устанавливать и настраивать необходимое приложение.

⚠️ Частая проблема при обновлении.

Во время первого обновления система (пакет grub-pc) спрашивает: установить загрузчик GRUB на /dev/sda или на /dev/sda1?

✅Выбирайте /dev/sda (весь диск целиком, без номера раздела).

💡 Почему так?

В классической схеме загрузки (BIOS/MBR) GRUB записывается в MBR (Master Boot Record) — это первые 512 байт всего диска.

/dev/sda1 — это уже первый раздел. Установка GRUB на раздел нужна только в редких специфичных случаях (например, при chain-loading), которые на стандартном VPS не встречаются.
👍7
💬У меня в обслуживании много Proxmox VE серверов. Чаще всего сеть настроена в виде бонда:
👉active-backup - резервируем подключение дополнительным кабелем;
👉LACP (802.3ad) - резервируем и балансируем нагрузку между кабелями.

На одном из серверов стояла задача: поменять тип бонда с active-backup на LACP. И дополнительно поменять сетевые интерфейсы:
👉active-backup - был 10G + 1G;
👉LACP - нужно 10G + 10G.

Я выбрал нужные интерфейсы и режим бонда в web-интерфейсе, нажал Apply. Переподключил кабели в подготовленный LACP-лаг на коммутаторе. Сеть не заработала. 🤔

Проверил конфиг: /etc/network/interfaces - всё верно✅.
Проверил бонд: /proc/net/bonding/bond0 - остался active-backup. ⚠️

Помогла команда ifreload -a. Она по сути и вызывается кнопкой Apply. Видимо, при смене типа бонда UI сработал не до конца: конфиг заменил, но ядро не пересоздало интерфейс.😊
1👍8
🐧 Аналог Windows tracert в Linux

Если вы переезжаете с Windows или просто забыли, чем трассировать маршрут в Linux, вот 3 главных инструмента.👇

1️⃣ Прямой аналог - traceroute.

Установка : sudo apt install traceroute
Пример работы: traceroute example.com

❗️По умолчанию шлёт UDP. Для ICMP (как в Windows) добавьте ключ -I и используйте sudo.

2️⃣ Более простой - tracepath

Обычно предустановлен и не требует root.

Пример работы: tracepath example.com

3️⃣ Более продвинутый - mtr

Установка: sudo apt install mtr
Использование: mtr example.com

Можно выполнить mtr -c 10 example.com - для 10 циклов и автоматического выхода. Объединяет возможности ping и traceroute в реальном времени. Сразу видно, на каком именно хопе начинаются задержки или потери пакетов.
👍5
📝Когда вы и коллеги подключаетесь к разным Linux-серверам, используя SSH-ключи, вы можете выбрать разные стратегии работы с ними:

✅ Один сотрудник — многие серверы. У каждого сотрудника один свой ключ для всех серверов. На серверах в authorized_keys прописаны публичные ключи каждого сотрудника. Самый распространённый подход в индустрии. Удобно и безопасно: не нужно плодить кучу ключей, а при увольнении достаточно удалить ключ сотрудника со всех серверов.

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

⚠️ Каждой паре «сотрудник–сервер» — свой ключ. Самый безопасный вариант, но адский менеджмент. На практике применяется не для людей, а для автоматизации: CI/CD-пайплайны, Ansible, скрипты.
👍5
🧵 В продолжение темы SSH и подключений по ключам (Windows Powershell).

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

ssh-keygen -t ed25519 -f C:\Users\user\.ssh\id_ed25519


💡 Имя ключа (id_ed25519) можно изменить на своё.
💡 У меня пользователь user, у вас путь может отличаться.

Смотрим открытый ключ:

Get-Content C:\Users\user\.ssh\id_ed25519.pub


Его передаём на сервер: ~/.ssh/authorized_keys.

Теперь при подключении к серверу вы вводите пароль от ключа. Он не передаётся по сети, что повышает безопасность.

🤖 Чтобы не вводить пароль при каждом подключении, используем ssh-agent. На Windows его нужно один раз запустить с правами администратора:
Set-Service ssh-agent -StartupType Automatic
Start-Service ssh-agent


Добавим ключ в агент:

ssh-add C:\Users\user\.ssh\id_ed25519


Пароль хранится в памяти компьютера и очищается при перезагрузке.

Полезные команды:
🔹 Посмотреть добавленные ключи: ssh-add -l
🔹 Очистить все добавленные ключи: ssh-add -D
👍9
🗓Статься от 27.09.2023 про утилиту psping.

Эта утилита позволяет:
🔹Выполнять ping по определённому tcp порту.
🔹Сделать анализ и построить гистограмму.
🔹Протестировать латентность и скорость соединения между двумя серверами.

Она входит в состав пакета PsTools от Марка Руссиновича.

💡Пример использования:

psping.exe yandex.ru:443
🚀 Bash-скрипты без создания файлов: метод Heredoc

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

Этот способ называется Here-document (или Heredoc). Конструкция bash <<'EOF' ... EOF позволяет передать многострочный текст напрямую в bash.

Кавычки вокруг 'EOF' важны: они говорят оболочке не раскрыть переменные внутри блока до его передачи в bash. Это защищает от неожиданных ошибок при копировании.

В таком скрипте часто используют:
⭐️set -e - скрипт остановиться, если любая из команд завершится с ошибкой.
⭐️export DEBIAN_FRONTEND=noninteractive - переменная окружения для пакетного менеджера apt/dpkg. Она отключает интерактивные диалоги, всё становится молча и автоматически.

Пример:

bash <<'EOF'
set -e
export DEBIAN_FRONTEND=noninteractive

apt-get update && apt-get dist-upgrade -y
apt-get install -y locales wget tzdata lbzip2 bash-completion

EOF
👍8
✅В продолжении темы heredoc я написал небольшую статью.

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

💡В статье разбирается:
- Подстановка переменных или запрет подстановки
- Создание файлов (с помощью перенаправления или утилиты tee)
- Использование heredoc в bash скриптах для форматирования вывода
- Использование для автоматизации (bash, sql-запросы, sftp-команды)

❓Также в статье есть вопросы для самопроверки.

Буду рад вашим лайкам👍
👍5