В Linux, как и в классическом Unix, существует особый тип межпроцессного взаимодействия - Unix Domain Sockets (UDS). Многие админы сталкиваются с ними при настройке сервисов вроде php-fpm, MySQL, PostgreSQL, nginx, не всегда понимая, зачем выбирать между TCP и сокетом.
/run/mysqld/mysqld.sock
Основное отличие от TCP: не используется сетевой стек, что делает работу чуть быстрее (в теории), особенно при высоких нагрузках.
📍 Доступ к сервису нужен только локально.📍 Нет необходимости открывать порт и рисковать безопасностью.📍 Можно ограничить доступ к сокету правами на файл.
На обычном сервере с веб-сайтами разницы между 127.0.0.1:3306 и mysqld.sock вы, скорее всего, не заметите. Но с точки зрения безопасности и практики - предпочтительно использовать сокеты.
Через netcat:
nc -U /run/mysqld/mysqld.sock
Аналогичный запрос по TCP:
telnet 127.0.0.1 3306
Результат будет одинаковый, только путь разный.
#linux #unixsocket
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤4
Security-Enhanced Linux (SELinux) - это механизм управления доступом на уровне ядра, разработанный NSA и Red Hat. Он добавляет ещё один уровень защиты поверх традиционной модели прав доступа в Linux и дает системе возможность жестко контролировать, кто и что может делать в ОС, даже если у процесса уже есть root-доступ.
SELinux реализует модель Mandatory Access Control (MAC) - обязательного управления доступом. В отличие от Discretionary Access Control (DAC), где владелец объекта определяет права, MAC применяет централизованные политики, которым обязаны следовать все процессы и пользователи.
Каждому процессу и файлу присваивается контекст безопасности. Контекст включает в себя:
SELinux определяет, может ли процесс с данным контекстом взаимодействовать с файлом по текущей политике. Если нет - доступ будет заблокирован, даже если пользователь - root.
Enforcing - политика активна, запрещенные действия блокируются
Permissive - действия не блокируются, но журналируются
Disabled - SELinux отключен
Проверить режим можно так:
getenforce
Или через:
sestatus
Если безопасность - ваш приоритет, SELinux однозначно стоит включать. Но как и с любым инструментом, важно сначала его понять.
#SELinux #security
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤3
SLAAC (Stateless Address Autoconfiguration) - это механизм в IPv6, который позволяет устройствам самостоятельно получить IP-адрес, без участия DHCP-сервера. Удобно? Безусловно. Но у такого "автомата" есть и свои нюансы, особенно в корпоративных сетях.
Когда устройство подключается к сети, оно:
И готово - устройство уже в сети, без DHCP.
#IPv6 #SLAAC
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10
MSDaRT (Microsoft Diagnostics and Recovery Toolset) - это официальный набор утилит от Microsoft, созданный на основе среды WinPE. Ранее был известен как ERD Commander и входит в состав Microsoft Desktop Optimization Pack (MDOP), доступного по корпоративной подписке. Несмотря на отсутствие активной поддержки, DaRT по-прежнему полезен, особенно при восстановлении современных версий Windows 10 и 11.
Созданный образ включает ряд полезных инструментов для диагностики и восстановления, если система не загружается или доступ к учётке утерян:
📍 Сброс пароля администратора📍 Восстановление удалённых файлов и разделов📍 Удаление проблемных обновлений📍 Проверка образа системы (SFC, chkdsk и др.)📍 Графический Проводник📍 Доступ к командной строке📍 Подключение к сети и удалённое управление (Remote Connection Viewer)
Образ DaRT можно кастомизировать: добавить свои утилиты, драйверы и скрипты. По сути, это полноценный LiveCD, который можно адаптировать под нужды ИТ-отдела. Особенно актуально в средах, где по политике безопасности запрещены сторонние образы восстановления.
Для сборки ISO-образа используется мастер DaRT Recovery Image Wizard, доступный в составе MDOP.
#msdart #winpe
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤4
Systemd timers - это более современный и гибкий способ планирования задач в linux, особенно на серверах с systemd.📍 Логирование по умолчанию - systemd записывает stdout/stderr задачи в journal, не нужно вручную перенаправлять вывод📍 Зависимости и условия запуска - можно привязать таймер к другим сервисам, целям (targets) и условиям📍 Точный контроль времени и интервалов - есть OnCalendar, OnBootSec, OnUnitActiveSec и другие📍 Простой мониторинг - можно посмотреть статус задачи: когда запускалась, сколько длилась, когда запустится снова📍 Юзер-таймеры - можно создавать таймеры без root-доступа для отдельных пользователей
Пример: бэкап в /var/backups каждую ночь в 3:00
vi /etc/systemd/system/backup.service
[Unit]
Denoscription=Nightly backup
[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup.sh
vi /etc/systemd/system/backup.timer
[Unit]
Denoscription=Run backup noscript daily at 3AM
[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true
[Install]
WantedBy=timers.target
Активируем:
sudo systemctl daemon-reexec
sudo systemctl enable --now backup.timer
systemctl list-timers
systemctl status backup.timer
journalctl -u backup.service
[Timer]
OnBootSec=5min
Каждые 15 минут:
[Timer]
OnUnitActiveSec=15min
Каждый понедельник в 6 утра:
[Timer]
OnCalendar=Mon *-*-* 06:00:00
📍 Устанавливайте Persistent=true, чтобы таймер отработал, даже если система была выключена в момент запуска📍 Используйте systemctl cat для просмотра активных юнитов📍 Для задач от пользователя используйте ~/.config/systemd/user/
#systemd #cron
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤2
В копилку полезных админских утилит -
socat. Это инструмент для организации двунаправленной передачи данных между самыми разными источниками: файлами, сокетами (TCP, UDP, Unix), устройствами, stdin/stdout и даже псевдотерминалами.
socat - TCP4:smtp.networkadmin.ru:25
Пробуем:
helo networkadmin.ru
mail from:<admin@networkadmin.ru>
И получаем, к примеру:
503 5.5.4 Error: send AUTH command first.
Так вы можете проверить, требует ли сервер авторизацию - чтобы, например, не стать открытым релеем для спама.
socat TCP4-LISTEN:8080,reuseaddr,fork TCP4:192.168.50.10:80
Теперь можно обращаться к удалённому серверу через localhost:
curl http://localhost:8080 -L -H "Host: networkadmin.ru"
socat TCP-LISTEN:3307,reuseaddr,fork UNIX-CONNECT:/run/mysqld/mysqld.sock
Теперь подключение к localhost:3307 будет работать как к сокету:
telnet 127.0.0.1 3307
socat UNIX-LISTEN:/run/mysqld/mysqld.sock,fork,reuseaddr,unlink-early,user=mysql,group=mysql,mode=777 \
TCP:192.168.50.10:3307
Теперь любой софт может работать с удаленной базой, как с локальной. Без изменений конфигурации сервера.
#socat #linux
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🫡1
В любой продвинутой системе администрирования важнейшая задача - контроль за правами пользователей. Добавление в группу sudo, изменение состава wheel, docker или других критичных групп может дать пользователю слишком много полномочий. И если такие изменения проходят незамеченными - это уже уязвимость. Разберемся, как отслеживать такие события в Linux.
auditctl -w /etc/sudoers -p wa -k sudoers-change
auditctl -w /etc/sudoers.d/ -p wa -k sudoers-include
Потом смотрим:
ausearch -k sudoers-change
ausearch -k sudoers-include
inotifywait -m /etc/sudoers /etc/sudoers.d/ -e modify,create,delete
auditctl -w /etc/group -p wa -k group-change
auditctl -w /etc/gshadow -p wa -k group-shadow
И проверяем, кто добавлен в sudo:
grep sudo /etc/group
auditctl -a always,exit -F arch=b64 -S usermod -S groupadd -S groupdel -S gpasswd -k group-admin
#linux #security
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Большинство современных ноутбуков и ПК с предустановленной Windows содержат вшитый в BIOS/UEFI OEM-ключ, который автоматически активирует систему при установке. Удобно, но не всегда.
Раньше (в эпоху win 7) использовалась SLIC-таблица в BIOS, где хранился сертификат и ключ активации. Сейчас производители используют OEM embedded key, записанный прямо в прошивку UEFI. При установке Windows установщик считывает этот ключ и автоматически выбирает редакцию, например - home.
ei.cfg.Путь:
X:\sources\ei.cfg
Содержимое файла:
[EditionID]
[Channel]
Retail
После этого при запуске установки появится меню выбора редакции, и вы сможете установить нужную версию Windows, независимо от OEM-ключа в BIOS.
#Windows #UEFI
Please open Telegram to view this post
VIEW IN TELEGRAM
👍33
Сегодня не будет познавательных постов, но будет не менее важное - поздравление! Сегодня - день тех, кто всегда остается за кулисами, но без кого не работает ничего. Это вы начинающие или уже опытные - волшебники командной строки, мастера uptime и защитники серверов от хаоса.
Именно Вы держите на плаву сети, базы данных, почту, бэкапы, мониторинг, безопасность и еще тысячу вещей, о которых никто не догадывается... пока все не сломается, ну или им не покажется, что все сломалось..
Буду короток: пусть в логах будет чисто, аптайм радует глаз, а пользователи не беспокоят в пятницу вечером. А еще - стабильных обновлений, бесшумных серверов и свободного времени для себя.
За вас, сисадмины! С праздником!
Please open Telegram to view this post
VIEW IN TELEGRAM
🍾32👍11🔥8❤3😁2
Если вы пишете скрипты и хотите свести количество зависимостей к минимуму - загляните в pure-bash-bible. Это подборка трюков и функций, реализующих полезные операции на чистом bash, без использования sed, awk, grep, perl и других внешних утилит. Все работает прямо внутри интерпретатора.
lower() {
printf '%s\n' "${1,,}"
}
Создаем скрипт lower.sh:
#!/bin/bash
lower() {
printf '%s\n' "${1,,}"
}
lower "$1"
Запускаем:
$ ./lower.sh HELLO
hello
basename() {
local tmp
tmp=${1%"${1##*[!/]}"}
tmp=${tmp##*/}
tmp=${tmp%"${2/"$tmp"}"}
printf '%s\n' "${tmp:-/}"
}
Скрипт basename.sh:
#!/bin/bash
basename() {
local tmp
tmp=${1%"${1##*[!/]}"}
tmp=${tmp##*/}
tmp=${tmp%"${2/"$tmp"}"}
printf '%s\n' "${tmp:-/}"
}
basename "$1"
Запуск:
$ ./basename.sh /var/log/syslog.2.gz
syslog.2.gz
В большинстве систем можно просто вызвать утилиты basename или tr, но в минималистичных окружениях (например, initrd, embedded Linux, Docker) такие функции в bash-стиле особенно ценны.
Библиотека охватывает десятки задач: обработка строк, массивов, файлов, путей, случайные числа, цвета в терминале и т.д.
Сохрани себе
#bash #linux
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍4
Поврежденная структура каталогов или битые иноды могут привести к потере данных или проблемам при загрузке. Для таких случаев есть проверенные временем инструменты:
fsck в linux и chkdsk в windows.
fsck -y /dev/sda1
fsck -n /dev/sda1
fsck -A
chkdsk C: /F
chkdsk D: /F /R
chkntfs /C C:
#fsck #chkdsk
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁34👍6🤡1
Обычные бэкапы - тема, о которой стоит напоминать регулярно. Сегодня расскажу о проверенной связке инструментов: Borg и его обертке Borgmatic. Это отличное решение, если вам нужен надежный и автоматизированный консольный бэкап без внешних агентов.
Установка:
apt install borgbackup
Установка:
pip3 install borgmatic
несколько целевых репозиториев для хранения бэкапов;
автоматические дампы баз данных (PostgreSQL, MySQL, MongoDB, SQLite);
хуки до и после запуска (удобно для остановки сервисов);
отправка уведомлений (в том числе по ошибке);
централизованное хранение параметров и секретов (через переменные среды).
location:
source_directories:
- /etc
- /var/www
repositories:
- user@backupserver:repo.borg
retention:
keep_daily: 7
keep_weekly: 4
keep_monthly: 6
hooks:
before_backup:
- systemctl stop nginx
after_backup:
- systemctl start nginx
Если уже используете borg, переход на borgmatic - это чистое удобство. Упрощенная автоматизация, гибкость и читаемость настроек.
#linux #backup
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
Многие думают, что VLAN - это только для крупных корпоративных сетей, но на практике он может оказаться крайне полезным и в небольшом офисе или даже дома. Виртуальные локальные сети позволяют разделить трафик по логике, повысить безопасность и упростить администрирование.
VLAN (Virtual LAN) - это способ логического разделения одной физической сети на несколько изолированных друг от друга сегментов. Устройства в разных VLAN не видят друг друга, пока не настроен маршрутизатор.
Пример на Cisco:
interface FastEthernet0/1
switchport mode access
switchport access vlan 10
Настройка маршрутизации между VLAN при необходимости.
ip link add link eth0 name eth0.10 type vlan id 10
ip addr add 192.168.10.2/24 dev eth0.10
ip link set up eth0.10
Даже в домашних условиях VLAN дает возможность для наведения порядка, контроля и повышения безопасности в сети.
#vlan #security
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🔥4🤔2❤1🗿1
Если вы когда-нибудь случайно выполнили reboot или shutdown не на том сервере - вы знаете, насколько это больно. Особенно, когда в консоли много сессий, и все на одинаковых хостах типа prod01, prod02, db01... Чтобы подстраховаться от таких ошибок - есть простейшее, но гениальное решение:
molly-guard. После установки утилита подменяет стандартные команды reboot, shutdown, poweroff. При их запуске появляется запрос на подтверждение имени хоста. Ошиблись терминалом - команда не выполнится.
# apt install molly-guard
# reboot
W: molly-guard: SSH session detected!
Please type in hostname of the machine to reboot:
>
Вводим имя хоста вручную. Только после этого произойдёт перезагрузка.
#linux #mollyguard
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15
Когда windows начинает тормозить, а «диспетчер задач» мало что говорит - на помощь приходят sysinternals tools. Это набор от microsoft, разработанный ещё Марком Руссиновичем, и он до сих пор незаменим для администраторов.
Ключевые инструменты, которые реально помогают увидеть и устранить узкие места в системе:
du -q -l 1 C:\Users\admin
Все утилиты можно использовать без установки, просто скачать и запускать по мере надобности. А некоторые - использовать прямо из PowerShell, если положить их в %PATH%.
#windows #sysinternals
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16👎2❤1
Иногда хочется, чтобы о важных событиях (бэкапы, алерты мониторинга, запуск задач) приходило пуш-уведомление прямо на смартфон. Без танцев с ботами и сторонними облаками. Есть отличный инструмент -
ntfy.sh.Заходим в веб-приложение: https://ntfy.sh/app
Разрешаем уведомления, подписываемся на тему и получаем URL вроде: https://ntfy.sh/Stkclnoid6pLCpqU
Теперь отправим уведомление:
curl -d "Test Message" https://ntfy.sh/Stkclnoid6pLCpqU
Уведомление мгновенно прилетит в веб-интерфейс или в мобильное приложение (Android/iOS).
var params = JSON.parse(value),
msg = params.Message,
url = params.URL,
req = new CurlHttpRequest();
req.AddHeader('Content-Type: text/plain');
req.Post(url, msg);
Указываем в URL свой ntfy-адрес, а в сообщении - макрос {ALERT.MESSAGE}.
rsync -a /mnt/data user@10.10.10.10:/backups/srv01 \
&& curl -H prio:low -d "Backup OK" https://ntfy.sh/Stkclnoid \
|| curl -H prio:high -H tags:warning -d "Backup FAILED" https://ntfy.sh/Stkclnoid
Ntfy - полностью open-source. Вы можете установить сервер у себя (есть готовые пакеты и образы в Docker) и использовать его как закрытую систему уведомлений.
Поддержка push-уведомлений на мобильные и десктопы;
Безопасность: можно хостить у себя;
Простая интеграция через curl;
Поддержка приоритетов, тэгов, вложений, подписок;
Бесплатно.
#monitoring #bash
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13