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
Когда устройств в сети становится больше десятка, раздача IP вручную перестает быть удобной. Решение - поднять свой DHCP-сервер, который будет автоматически раздавать адреса, DNS, шлюз и другие параметры клиентам. Но важно не просто «раздавать все подряд», а уметь закрепить конкретные IP-адреса за нужными устройствами (например, серверами, принтерами, VoIP). Это делается через резервации (DHCP reservations).
sudo apt install isc-dhcp-server
/etc/dhcp/dhcpd.conf:
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option routers 192.168.1.1;
option domain-name-servers 8.8.8.8;
option domain-name "home.lan";
}
# Резервация IP по MAC-адресу
host printer01 {
hardware ethernet 00:11:22:33:44:55;
fixed-address 192.168.1.10;
}
Теперь каждый раз принтер с указанным MAC-адресом будет получать именно 192.168.1.10.
Откройте оснастку DHCP → Перейдите к своему пулу IP-адресов → ПКМ → New Reservation
Укажите имя, IP, MAC-адрес и тип клиента
Упрощают администрирование (IP-адреса не меняются)
Удобны для мониторинга и firewall-правил
Избавляют от конфликтов IP
Полезны при интеграции с DNS (обратная зона)
#network #DHCP
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16👎3
Иногда при настройке мониторинга на малонагруженных серверах нужно протестировать графики и дашборды, добавив искусственную нагрузку. Устанавливать отдельные утилиты вроде
stress или stress-ng не всегда хочется. К счастью, это можно сделать встроенными средствами - через dd, sha1sum, yes, /dev/zero, /dev/urandom и другие.
while true; do
dd if=/dev/urandom count=30M bs=1 | bzip2 -9 > /tmp/tempfile
rm -f /tmp/tempfile
done
/dev/urandom → нагрузка на диск
bzip2 -9 → нагрузка на CPU
count=30M - объем данных
-9 - максимальная степень сжатия
Изменяйте параметры, чтобы регулировать силу нагрузки.
sync; dd if=/dev/zero of=/tmp/tempfile bs=1M count=1024; sync
Вывод покажет, с какой скоростью пишутся 1 ГБ данных.
Нагрузка на одно ядро:
dd if=/dev/zero of=/dev/null
Параллельная нагрузка на несколько ядер:
cpuload() {
dd if=/dev/zero of=/dev/null &
dd if=/dev/zero of=/dev/null &
}
cpuload; read; pkill dd
Либо:
sha1sum /dev/zero
Для нескольких ядер:
seq 4 | xargs -P0 -n1 timeout 10 sha1sum /dev/zero
seq 4 | xargs -P0 -n1 timeout 10 yes > /dev/null
Запускается yes, который генерирует бесконечный вывод. Отлично грузит CPU в режиме ядра.
python3 -c 'a="a"*1024**3; input()'
Можно менять объем, изменяя 1024**3.
#linux #monitoring
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11
Когда одного сетевого интерфейса мало - приходит время объединять их в «команду». Это называется агрегация каналов, и один из самых популярных способов реализовать ее - протокол LACP (Link Aggregation Control Protocol).
LACP - часть стандарта IEEE 802.3ad. Он позволяет объединить несколько физических интерфейсов в один логический (LAG - Link Aggregation Group), который операционная система и приложения видят как один.
📍 Повышение пропускной способности;📍 Повышение отказоустойчивости (если один порт отваливается - остальные продолжают работать);📍 Балансировка нагрузки между портами.
📍 LACP автоматически обнаруживает, какие интерфейсы можно объединить📍 Обе стороны (свитч и хост) договариваются, какие порты войдут в LAG📍 Если кабель выпал или порт упал - он просто исключается из группы, ничего не рушится
sudo apt install ifenslave
/etc/network/interfaces или аналогичном конфиге:
auto bond0
iface bond0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
bond-slaves ens33 ens34
bond-mode 802.3ad
bond-miimon 100
bond-lacp-rate fast
bond-xmit-hash-policy layer3+4
📍 LACP работает только при поддержке с обеих сторон (сервер + свитч)📍 LAG не удваивает скорость для одного TCP-соединения, но позволяет нескольким соединениям распределяться по разным каналам📍 Лучше всего работает с хешированием по Layer3+4 (IP + порт)
#network #LACP
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤2
Если вы регулярно работаете с Ansible - важно не только писать рабочие плейбуки, но и контролировать, когда, кем и как они были запущены. Особенно, если в вашей инфраструктуре Ansible используется как часть CI/CD или централизованного управления.
/etc/ansible/ansible.cfg (или в локальной копии ansible.cfg) пропишите:
[defaults]
log_path = /var/log/ansible.log
Ansible начнет писать все свои действия в указанный файл. Убедитесь, что у пользователя, запускающего Ansible, есть права на запись.
- name: Установка nginx
apt:
name: nginx
state: present
tags:
- web
- nginx
Это поможет фильтровать задачи в логах, запускать только нужные части и документировать назначение.
- name: Показываем значение переменной
debug:
var: some_variable
Также можно логировать hostname, пользователя и дату запуска, добавляя кастомную задачу:
- name: Логируем запуск
shell: echo "{{ ansible_date_time.iso8601 }}: {{ inventory_hostname }} - {{ ansible_user }}" >> /var/log/ansible_run.log
Например, json или yaml:
[defaults]
stdout_callback = yaml
А если хотите логировать в файл в формате JSON, можно использовать:
[defaults]
callback_whitelist = json
stdout_callback = json
log_path = /var/log/ansible-json.log
ansible-playbook site.yml | tee -a /var/log/ansible-run-$(date +%F-%T).log
Так у вас будет отдельный лог под каждое выполнение.
#ansible #security
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8