Admin Guides | Сисадмин
11.5K subscribers
1.32K photos
20 videos
34 files
579 links
Обучающий канал по ОС Linux & Windows для начинающих и действующих администраторов.

Админ, реклама: @Ak_Mihail
Биржа: https://telega.in/c/admguides

РКН: https://kurl.ru/nQejS
Download Telegram
Часть 2. GitOps для /etc: отслеживаем конфигурации через etckeeper и pre-commit хуки

Чтобы избежать потери конфигов даже при сбое системы — добавим резервное копирование git-репозитория /etc в безопасное место.

1️⃣Настроим удалённый репозиторий

Создаём bare-репозиторий на другом сервере или в GitLab/Gitea:

git init --bare /srv/backup/etc.git


На основном сервере:

cd /etc
git remote add backup ssh://user@backup-host/srv/backup/etc.git
git push backup master


2️⃣Добавим автоматический push после каждого commit

Можно прописать post-commit хук:

echo 'git push backup master' > /etc/.git/hooks/post-commit
chmod +x /etc/.git/hooks/post-commit


Теперь каждый раз, когда etckeeper фиксирует изменения, копия будет уходить на внешний сервер.

Проверка целостности и откат

Если кто-то случайно удалит или испортит конфиг — откат делается одной командой:

cd /etc
git checkout HEAD^ -- ssh/sshd_config


Также можно использовать:

git status       # покажет, что поменялось
git log -p FILE # покажет кто и когда правил конкретный файл
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍5
😁30👍5🔥2
Собственный mirror репозиториев APT или YUM в локальной сети

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

Это позволяет:

• ускорить установку пакетов и обновлений,
• исключить зависимость от внешних зеркал,
• обеспечить стабильность (все пакеты одной версии),
• работать в полностью оффлайн-среде.

Пример APT-репозитория (Ubuntu)

1️⃣Установим apt-mirror:

sudo apt install apt-mirror apache2


2️⃣ Настроим зеркалирование:

sudo nano /etc/apt/mirror.list


Пример:

set base_path    /var/spool/apt-mirror
deb https://archive.ubuntu.com/ubuntu jammy main restricted universe multiverse
clean


3️⃣ Синхронизируем:

sudo apt-mirror


4️⃣ Настроим доступ через apache2:

sudo ln -s /var/spool/apt-mirror/mirror/archive.ubuntu.com/ubuntu
Please open Telegram to view this post
VIEW IN TELEGRAM
14👍6👎1
Собственный time-сервер (NTP) с хардварной синхронизацией

Когда в сети критично точное время (финансовые транзакции, логирование событий, биллинг, Kerberos) — не стоит полагаться только на внешние NTP-сервера.

Лучше настроить локальный time-сервер с аппаратным источником времени.

Как это сделать?

1️⃣Аппаратный источник
• GPS-приёмник с поддержкой PPS (например, u-blox NEO, Garmin GPS 18x LVC)
• Или дешевле — USB RTC-модули с хардварными часами (DS3231 и аналоги)

2️⃣ Система: Linux + chronyd или ntpd

Chrony проще и точнее работает с нестабильными источниками (вроде GPS):

sudo apt install chrony gpsd gpsd-clients


3️⃣ Пример конфигурации chrony.conf:

refclock SHM 0 refid GPS precision 1e-1
refclock SOCK /var/run/chrony.ttyS0.sock refid PPS lock GPS
allow 192.168.0.0/16
local stratum 10


• SHM — данные от gpsd
• PPS — сигнал точной секунды
• local stratum — объявляем себя сервером

4️⃣ Проверка:

chronyc sources -v


Должно появиться что-то вроде:

#* GPS        0   10     377    123     +0.000123  +0.000001  0.000
Please open Telegram to view this post
VIEW IN TELEGRAM
👍96👎1
5🌚4🤷‍♂2
💬 Вопрос на собеседовании для DevOps-инженера

Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.


Вопрос: Как работает механизм fencing в распределённых системах, и почему он критически важен для отказоустойчивости?

Ответ: Fencing (также известный как STONITH — Shoot The Other Node In The Head) — это техника в отказоустойчивых кластерах, гарантирующая, что сбойный узел не будет выполнять никаких операций с общими ресурсами после того, как его сочли “мертвым”. Это необходимо для избежания split-brain-сценариев, при которых два узла считают себя активными и могут повредить общие данные, например, диск или базу.
Please open Telegram to view this post
VIEW IN TELEGRAM
4👎3🔥2
Восстановление root-пароля в Ubuntu

Забыли root-пароль в Ubuntu? Не паникуйте! Сбросить пароль можно за несколько минут. Мы рассмотрим два способа восстановления: через Recovery Mode и альтернативный метод через Grub.

Эти методы работают на обычных системах, а также в виртуальных машинах (VMware, VirtualBox).

Способ 1: Сброс пароля через Recovery Mode

Этот метод удобен, если у вас есть доступ к меню загрузки Grub.

Шаг 1: Вход в режим восстановления
1. Перезагрузите компьютер.
2. Если меню Grub не появляется автоматически, нажимайте Shift во время загрузки.
3. В меню выберите Advanced Options for Ubuntu.
4. Найдите вариант с (recovery mode) и выберите его.

После небольшой загрузки появится меню восстановления.

Шаг 2: Переход в командную строку root
1. В списке выберите Root (Drop to root shell prompt).
2. Нажмите Enter – вы попадете в терминал с root-доступом.

Шаг 3: Разрешение записи в корневой раздел

По умолчанию корневой раздел доступен только для чтения, поэтому перед изменением пароля нужно разрешить запись:

mount -rw -o remount /


Шаг 4: Сброс пароля
1. Посмотрите список пользователей:

ls /home


Здесь будут показаны все пользовательские папки – выберите нужного пользователя.

2. Сбросьте пароль:

passwd username


(вместо username подставьте имя пользователя).

3. Дважды введите новый пароль.

Шаг 5: Перезагрузка системы
1. Введите команду выхода:

exit


2. Вернетесь в меню восстановления – выберите Resume boot для загрузки системы.
3. После перезагрузки можно войти с новым паролем.

Способ 2: Сброс пароля через Grub

Этот метод подходит, если Recovery Mode недоступен или не работает.

Шаг 1: Изменение параметров в Grub
Перезагрузите компьютер и нажимайте Shift, пока не появится меню Grub.
Дальше выберите Ubuntu и нажмите E (редактировать параметры загрузки). И найдите строку, начинающуюся с linux, замените ro на rw и добавьте в конец:

init=/bin/bash


Нажмите Ctrl + X, чтобы загрузиться в систему.

Теперь вы окажетесь в командной строке bash без пароля.

Шаг 2: Смена пароля
Введите команду:

passwd username


Дважды введите новый пароль. И перезагрузите систему командой:

shutdown -r now


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

Возможные ошибки и их решение

Ошибка “Authentication token manipulation error”

Проблема: Файловая система доступна только для чтения.
Решение: Разрешите запись перед изменением пароля:

mount -rw -o remount /


Нет пункта “Recovery Mode” в Grub

Проблема: В меню загрузки отсутствует пункт Recovery Mode.
Решение:
• Выберите Ubuntu в Grub, нажмите E для редактирования параметров.
• В конце строки загрузки добавьте single.
• Нажмите Ctrl + X или F10, чтобы загрузиться в терминал суперпользователя.

Ошибка “end Kernel panic” при загрузке

Проблема: Ошибка загрузки ядра.
Решение: Удалите параметр splash boot при редактировании загрузки в Grub.

Ошибка “Failed to connect to bus” при перезагрузке

Проблема: Некорректное завершение системы после смены пароля.
Решение: Используйте команду:

exec /sbin/init
Please open Telegram to view this post
VIEW IN TELEGRAM
👍167🤪1
Вышел Wireshark 4.4.8

В июле 2025 вышла стабильная версия Wireshark 4.4.8 — популярного open source сетевого анализатора. Обновление включает:

Исправления ошибок и уязвимостей
Улучшения графиков VoIP, TCP и интерфейсов
Обновления в поддержке протоколов: IPsec, DTLS, TETRA, KRB5, UDS и др.
Поддержку формата pcapng и улучшенную работу с UTF-8

Проект развивается с 2008 года и распространяется под GPLv2. Wireshark остаётся ключевым инструментом для специалистов по сетям и безопасности.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍103
IPv6 через туннели: 6to4 и WireGuard

Как получить IPv6 на VPS, где его нет


Если ваш хостинг не даёт IPv6-адреса, это не повод отказываться от поддержки современного протокола.

Есть как минимум два способа получить IPv6-трафик — с помощью 6to4 или через VPN-туннель, например, WireGuard.

6to4 — автоматический туннельный механизм, где IPv6 инкапсулируется в IPv4. Подходит, если у вас есть публичный IP, и позволяет быстро поднять IPv6 без внешних сервисов. Минус — нестабильность и устаревание технологии.

WireGuard + маршрутизация — более современный способ. Настраиваете второй VPS с IPv6 (например, на Hetzner или Vultr), поднимаете между ними WireGuard и прокидываете IPv6-префикс через маршрут. Внутри сети можно даже делить подсети и выдавать адреса локальным контейнерам.

Подойдёт для:
тестирования IPv6-приложений;
обхода ограничений провайдера;
развёртывания публичных IPv6-сервисов.

⚡️Плюс - вы контролируете туннель и сами задаёте маршруты. Минус — нужна ещё одна VPS или доверенный endpoint.
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍2👎1
🤣113👍3👎1💊1
Быстрый аудит безопасности Linux-системы с помощью Lynis

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

Как это сделать?

1️⃣Установка
Для Debian/Ubuntu:

sudo apt install lynis


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

2️⃣ Запуск аудита
Запускаем сканирование с правами root:

sudo lynis audit system


3️⃣ Анализ отчёта
В конце проверки Lynis выведет список предупреждений и рекомендаций.
Логи сохраняются в /var/log/lynis.log.
Особое внимание уделяем секциям warnings и suggestions.

4️⃣ Основные проверки Lynis
• Настройки ядра и безопасности
• Конфигурация SSH, sudo и PAM
• Права доступа к критичным файлам
• Установленные пакеты и их обновления
• Журналы и брандмауэр
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥76👍3
Видели такое?
😁24😍64
Собственный mirror APT/YUM в локальной сети

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

Это экономит трафик, ускоряет обновления и позволяет работать в air-gapped-сетях.

APT (Debian/Ubuntu)

Установим apt-mirror и любой HTTP-сервер (например, Apache):

sudo apt install apt-mirror apache2


Файл /etc/apt/mirror.list указывает, какие репозитории скачивать. После настройки запускаем:

sudo apt-mirror


Зеркало будет лежать в /var/spool/apt-mirror. Отдаём его через Apache по https://mirror.local/ubuntu.

YUM/DNF (RHEL/CentOS/AlmaLinux)

Для RedHat-систем используем reposync и createrepo:

reposync --gpgcheck -l --repoid=base --download_path=/var/www/html/yum
createrepo /var/www/html/yum


Можно автоматизировать через cron и обновлять репо по расписанию.

Проверка

На клиентских машинах указываем новый baseurl в .repo-файлах:

baseurl=https://mirror.local/yum
enabled=1
gpgcheck=0


Для APT — добавляем строчку в sources.list:

deb https://mirror.local/ubuntu focal main restricted
Please open Telegram to view this post
VIEW IN TELEGRAM
8🔥6
Разработчик потратил на Replit $600+, но сервис удалил базу данных несмотря на запреты

Джейсон Лемкин вложил в ИИ-платформу Replit более $600, используя её для вайб-кодинга.

Сервис удалил его базу данных, хотя Лемкин запретил любые изменения без согласия.


Replit признал ошибку и восстановил данные, но ИИ продолжал игнорировать запреты, меняя код без разрешения.

Лемкин считает, что такие ИИ-инструменты пока нестабильны и требуют постоянного контроля.
5👍2
Построение отказоустойчивого DHCP через Kea и HA-режим

Если вы всё ещё используете классический ISC DHCP, самое время обратить внимание на Kea от ISC.

Это DHCP-сервер нового поколения, который поддерживает как IPv4, так и IPv6, имеет полноценный REST API, масштабируется горизонтально и умеет работать в отказоустойчивом режиме.

В отличие от старого ISC DHCP, Kea может синхронизировать lease’ы между двумя серверами почти в реальном времени.

Поддерживаются разные режимы работы:

Load-balancing (Active-Active) – оба сервера обслуживают клиентов
Hot-standby (Active-Standby) – один сервер активен, второй в резерве
Partner-down – сценарий, когда один сервер считается временно недоступным

Вот пример простой конфигурации HA-модуля (kea-ctrl-agent + ha-hooks):

{
"ha-server": {
"mode": "load-balancing",
"this-server-name": "dhcp1",
"peers": [
{
"name": "dhcp1",
"url": "https://192.168.1.10:8000/",
"role": "primary"
},
{
"name": "dhcp2",
"url": "https://192.168.1.11:8000/",
"role": "secondary"
}
],
"auto-failover": true
}
}


В режиме load-balancing оба сервера делят пул между собой и сразу же переключаются в случае отказа одного из них. Всё это можно мониторить и управлять через HTTP-запросы.

Ключевые преимущества Kea:

• JSON-конфигурация, удобная для автоматизации
• Управление через curl или kea-shell
• Интеграция с MySQL/PostgreSQL
• Поддержка хуков, логирование, экспорт метрик в Prometheus

Примеры команд управления через API:

Проверить статус HA-кластера:

curl -X POST -H "Content-Type: application/json" \
-d '{ "command": "ha-heartbeat" }' \
https://127.0.0.1:8000/


Перевести сервер в ручной режим:

curl -X POST -H "Content-Type: application/json" \
-d '{ "command": "ha-maintenance-start" }' \
https://127.0.0.1:8000/


Получить список lease’ов:

curl -X POST -H "Content-Type: application/json" \
-d '{ "command": "lease4-get-all" }' \
https://127.0.0.1:8000/
9👍3
💬 Вопрос на собеседовании для сисадмина

Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.


Вопрос: Что такое Transparent Huge Pages (THP) в Linux и как они влияют на производительность?

Ответ: Transparent Huge Pages (THP) — это механизм Linux, автоматически объединяющий обычные страницы памяти (обычно по 4 KB) в более крупные страницы (обычно по 2 MB), чтобы сократить накладные расходы на управление памятью и ускорить доступ.

Проверить текущее состояние THP можно командой:

cat /sys/kernel/mm/transparent_hugepage/enabled


Отключить, если они мешают:

echo never > /sys/kernel/mm/transparent_hugepage/enabledЯ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍155
Локальный Docker Registry в своей сети

Для ускорения работы CI/CD, уменьшения зависимости от внешних сервисов и повышения контроля над Docker-образами часто поднимают собственный приватный Docker Registry.

Docker Registry — это сервис хранения и распространения контейнерных образов. 


Официальный публичный реестр — Docker Hub, но для внутреннего использования лучше иметь локальный, чтобы экономить трафик, ускорять загрузки и обеспечивать безопасность.

Быстрый старт

Запускаем официальный образ Registry:

docker run -d -p 5000:5000 --restart=always --name registry registry:2


По умолчанию Registry доступен по HTTP на порту 5000.

Работа с локальным реестром

1️⃣Тегируем локальный образ для отправки:

docker tag myimage localhost:5000/myimage


2️⃣Отправляем образ:

docker push localhost:5000/myimage


3️⃣На других хостах забираем образ:

docker pull localhost:5000/myimage
Please open Telegram to view this post
VIEW IN TELEGRAM
8🔥2
Какой командой можно проверить статус SELinux?
Anonymous Quiz
21%
getenforce
63%
selinux --status
6%
checkselinux
9%
secheck
🤷143
Автоматический монт сетевых папок при старте: systemd .mount и .automount

Если сетевые диски нужно подключать при каждом старте системы — не обязательно лезть в /etc/fstab.

Современный способ — использовать systemd-юниты .mount и .automount.


.mount — это юнит для постоянного монтирования. Его имя строится по пути к точке монтирования. Например, для /mnt/share файл будет называться:

mnt-share.mount


Пример содержимого:

[Unit]
Description=Mount network share

[Mount]
What=//192.168.0.10/share
Where=/mnt/share
Type=cifs
Options=credentials=/etc/smb.cred,_netdev,vers=3.0

[Install]
WantedBy=multi-user.target


.automount — позволяет подключать ресурс только при обращении к нему. Это ускоряет загрузку, если сеть ещё не поднята.

mnt-share.automount


Пример:

[Unit]
Description=Automount network share

[Automount]
Where=/mnt/share

[Install]
WantedBy=multi-user.target


При первой попытке зайти в /mnt/share systemd автоматически поднимет mnt-share.mount.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥42