Admin Future
239 subscribers
50 photos
1 video
4 files
87 links
Превращаем эникейщиков в System Architects.
🚀 Твой навигатор в мире IT-инфраструктуры:

▪️ Hard Skills: Linux, Windows, Network, Security
▪️ Tools: Лучший софт и скрытые фишки
▪️ Mindset: Как думать, чтобы платили много


Админ - @maksimshap
Download Telegram
🕵️‍♂️ Linux: Что случилось, пока я спал?

Утро понедельника начинается не с кофе, а с вопроса: «Почему этот сервис лежит?». Читать весь лог за выходные — долго. Используем фильтры времени в journalctl.

Задача: Показать все ошибки, случившиеся с момента ухода с работы в пятницу (например, с 18:00).

Команда:


# --since принимает дату и время
# -p err (priority error) покажет только ошибки и хуже
# -x добавит пояснения к ошибкам (если есть в каталоге)

journalctl --since "2025-11-28 18:00:00" -p err -xb

Если нужно посмотреть конкретный сервис:


journalctl -u nginx --since "2 days ago"

Одной командой вы отсекаете 99% информационного шума и видите только проблемы выходных.

#linux #systemd #logs #troubleshooting #команды
🐢 Сервер тормозит: Метод USE

«Всё тормозит» — худшая заявка от пользователя. С чего начать диагностику? Не тыкайте наугад в top. Используйте методологию USE, разработанную Бренданом Греггом (гуру производительности).

Shutterstock

Для каждого ресурса (CPU, Memory, Disk, Network) проверяем три параметра:

U — Utilization (Утилизация): Сколько времени ресурс был занят работой? (Например, диск загружен на 90%).

S — Saturation (Насыщение): Есть ли очередь задач, которые не могут обработаться? (Высокий Load Average при низкой утилизации CPU).

E — Errors (Ошибки): Есть ли явные ошибки оборудования или драйвера? (Dropped packets, I/O errors).

Шпаргалка команд для Linux:

CPU: vmstat 1, top (Utilization), uptime (Saturation).

Memory: free -m (Utilization), vmstat 1 (si/so - Saturation/Swapping).

Disk: iostat -xz 1 (%util, await).

Network: sar -n DEV 1, ip -s link (Errors/Drops).

Сначала ищем узкое место, потом лечим.

#performance #linux #troubleshooting #architecture #brendangregg
🔥2
📋 PowerShell: Утренний репорт сервисов

В понедельник важно убедиться, что критические службы Active Directory и Exchange (или ваши бизнес-приложения) живы. Вместо того чтобы кликать по оснасткам services.msc, запускаем скрипт.

Скрипт проверяет статус и аптайм служб:


$Services = "DNS", "ADWS", "LanmanServer", "Spooler" # Добавьте свои

Get-Service -Name $Services | Select-Object Name, Status, @{
Name="Uptime";
Expression={
if ($_.Status -eq 'Running') {
# Получаем PID и время старта процесса
$proc = Get-CimInstance Win32_Process -Filter "ProcessId = $((Get-CimInstance Win32_Service -Filter "Name='$($_.Name)'").ProcessId)"
if ($proc) {
$span = New-TimeSpan -Start $proc.CreationDate -End (Get-Date)
"{0}d {1}h" -f $span.Days, $span.Hours
} else { "N/A" }
} else { "STOPPED" }
}
} | Format-Table -AutoSize

Если видите STOPPED или Uptime 0d 0h (значит, перезапускался утром) — это повод копнуть глубже.

#windows #powershell #monitoring #scripting #automation
☠️ Windows Hardening: Убиваем LLMNR и NBT-NS

Если вы проведете аудит безопасности (или пригласите пентестеров), первое, за что они скажут «спасибо» — это включенные протоколы LLMNR и NBT-NS.

В чем суть: Когда Windows не может найти компьютер через DNS, она кричит на всю локальную сеть: «Эй, кто-нибудь знает этот адрес?». Злоумышленник (или утилита Responder) отвечает: «Да, это я, давай свои хеши паролей». И Windows их отдает. Это классическая атака LLMNR Poisoning.

Как закрыть дыру (GPO): Вам не нужны эти протоколы в современной сети с настроенным DNS.

1. LLMNR: Computer Configuration -> Administrative Templates -> Network -> DNS Client 👉 Turn off multicast name resolution = Enabled

2. NBT-NS (NetBIOS): Раздавайте через DHCP опцию: 👉 001 Microsoft Disable Netbios Option = 0x2

Или в свойствах TCP/IP v4 вручную: Disable NetBIOS over TCP/IP.

Результат: Сеть становится тише, а вектор атаки Man-in-the-Middle внутри периметра закрывается.

#windows #security #gpo #hardening #activedirectory
👍1
🏗 Docker: Multistage Build — худеем в 10 раз

Типичная ошибка новичка: в Docker-образе лежат исходники, компиляторы (GCC, Go), кэши и сам бинарник. Образ весит 800 МБ. Архитектор использует Multistage Build.

Суть: в одном Dockerfile мы сначала собираем приложение, а потом копируем только результат в чистый, крошечный образ.

Пример (Go/C++/Rust):


# Этап 1: Сборка (Builder)
FROM golang:1.21 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp main.go

# Этап 2: Финал (Production)
# Берем Alpine (5 МБ) или Distroless
FROM alpine:latest
WORKDIR /root/
# Копируем ТОЛЬКО бинарник из первого этапа
COPY --from=builder /app/myapp .

CMD ["./myapp"]

Профит:

1. Размер: Было 800 МБ → Стало 20 МБ.

2. Безопасность: В проде нет компиляторов и исходного кода — хакеру сложнее развернуться.

3. Скорость: Быстрее пушится в Registry и скачивается на сервер.

Если ваши образы весят гигабайты — сегодня самое время их переписать.

#docker #devops #optimization #bestpractice #architecture
👍1
🚀 Linux: ss вместо netstat

Если вы все еще набираете netstat -tulpn, чтобы посмотреть открытые порты — вы живете в прошлом. Утилита netstat считается deprecated (устаревшей) уже много лет.

Король умер, да здравствует ss (Socket Statistics).

Почему ss круче:

Она берет данные напрямую из ядра (через Netlink), а не парсит /proc.

На высоконагруженных серверах (тысячи соединений) netstat может тормозить, ss работает мгновенно.

Шпаргалка:

Все слушающие порты (TCP/UDP) + процессы:

ss -tulpn

(t - tcp, u - udp, l - listening, p - processes, n - numeric ports)

Показать только установленные соединения с IP 192.168.1.10:

ss -dst 192.168.1.10

Статистика по сокетам (сколько в TIME-WAIT и т.д.):

ss -s

Привыкайте к хорошему. Два символа сэкономят вам секунды каждый день.

#linux #networking #cli #tools #deprecated
👮‍♂️ PowerShell: Кто в админах?

Банальная, но критичная задача. Часто техподдержка дает права локального админа пользователю "на 5 минут, чтобы поставить программу", и забывает убрать. Через полгода у вас половина офиса — админы.

Скрипт для инвентаризации группы Administrators на удаленных ПК.

Код:


$Computers = Get-Content "C:\servers.txt" # Или список из AD

foreach ($PC in $Computers) {
Try {
$Admins = Invoke-Command -ComputerName $PC -ScriptBlock {
Get-LocalGroupMember -Group "Administrators" |
Select-Object -ExpandProperty Name
} -ErrorAction Stop

[PSCustomObject]@{
Server = $PC
LocalAdmins = ($Admins -join ", ")
}
} Catch {
Write-Warning "Не удалось подключиться к $PC"
}
}

Что искать в отчете:

Доменных пользователей (кроме админов домена и техподдержки).

Левые локальные учетки.

Чистота прав доступа — залог спокойного сна.

#powershell #security #audit #windows #scripting
🔥2
🔐 Windows LAPS: Хватит ставить один пароль на всех

Если у вас на 100 компьютерах одинаковый пароль локального администратора — поздравляю, один взломанный ноутбук компрометирует всю сеть. Это называется Lateral Movement (горизонтальное перемещение).

Решение — Windows LAPS (Local Administrator Password Solution). В 2025 году это уже не отдельный MSI-пакет, а встроенная функция Windows 10/11 и Server 2022/2025.

Как это работает:

Компьютер сам генерирует сложный пароль для локального админа.

Отправляет его в Active Directory (в защищенный атрибут) или в Azure AD.

Меняет его по расписанию (например, каждые 30 дней) или после использования.

Как включить (Modern Way): Вам не нужно качать софт. Просто настройте GPO или Intune: Computer Configuration > Administrative Templates > System > LAPS

Полезный командлет (PowerShell): Чтобы узнать текущий пароль конкретного компа (если у вас есть права):

Get-LapsADPassword -Identity "PC-ACCOUNTING-01" -AsPlainText

Итог: Админу удобно (пароли в AD), хакеру больно (пароль от одного ПК не подходит к другому).

#windows #security #laps #activedirectory #bestpractice
🔥1
🦈 Linux + Wireshark: Анализ трафика как PRO

tcpdump — лучший друг админа, когда на уровне логов ничего не понятно. Но смотреть «сырой» вывод в консоли — глаза сломаешь. Архитектор делает иначе: он снимает дамп на сервере, а анализирует его в Wireshark на своем ноутбуке.

Сценарий: Нужно поймать трафик веб-сервера (порт 80 или 443), кроме нашего SSH (чтобы не замусорить дамп).

Команда:


# -i any : слушать все интерфейсы
# -w capture.pcap : писать в файл, а не на экран
# port not 22 : исключить наш SSH
# host 192.168.1.50 : фильтр по конкретному клиенту (опционально)

tcpdump -i any -w /tmp/capture.pcap port 80 or port 443 and port not 22

Что дальше?

Ждем воспроизведения проблемы.

Жмем Ctrl+C.

Забираем файл через scp:


scp user@server:/tmp/capture.pcap ./Desktop/

Открываем в Wireshark и видим красивые графики, ошибки TCP Retransmission и содержимое пакетов.

Это единственный способ доказать сетевикам, что пакеты теряются на их файерволе.

#linux #network #tcpdump #wireshark #troubleshooting
🔥2
🗑 Linux: Удаляем файлы навсегда (shred)

Команда rm не удаляет файл. Она просто стирает ссылку на него в файловой системе. Сами данные лежат на диске, пока их не перезапишут чем-то другим. Для конфигов с паролями или ключей SSH это опасно.

Используем утилиту shred. Она перезаписывает файл случайным мусором несколько раз перед удалением.

Команда:


# -u : удалить файл после перезаписи
# -z : в конце перезаписать нулями (чтобы скрыть сам факт шреддинга)
# -n 3 : перезаписать мусором 3 раза

shred -u -z -n 3 private_key.pem

Для параноиков: Добавьте это в алиасы для удаления чувствительных данных. alias rmsecure='shred -u -z -n 3'

⚠️ Важно: На SSD с функцией Wear Leveling и в облаках это не дает 100% гарантии, но это намного лучше, чем просто rm.

#linux #security #privacy #commands #cli
🔄 Идемпотентность: Главное слово в словаре архитектора

Если вы пишете скрипты или Ansible-плейбуки, вы обязаны понимать концепцию Идемпотентности. Без этого автоматизация превращается в хаос.

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

Пример на Bash:
Не идемпотентно:

# Если запустить 2 раза, в файле будет две записи
echo "127.0.0.1 myapp.local" >> /etc/hosts

Идемпотентно:

# Проверяем, есть ли запись, и добавляем только если нет
grep -q "myapp.local" /etc/hosts || echo "127.0.0.1 myapp.local" >> /etc/hosts

Почему это важно: В современном мире (Ansible, Terraform, Kubernetes) агент запускается каждые 15-30 минут. Если ваш скрипт не идемпотентен, он каждый раз будет ломать конфиги, дублировать строки или перезапускать сервисы без причины.

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

#devops #architecture #coding #bestpractice #theory #automation
🌳 Linux: lsblk — ваша карта дисков

Многие по старинке используют fdisk -l, чтобы посмотреть диски. Но вывод этой команды громоздкий и не показывает связи. Инструмент современного админа — lsblk.

Почему он круче: Он строит дерево. Вы сразу видите: Физический диск → Раздел → LVM слой → Точка монтирования.

Полезные ключи:
Показать файловые системы и UUID (для fstab):

lsblk -f

Вывод в JSON (для скриптов и парсинга):

lsblk -J

Показать топологию (кто чей "раб"):

lsblk -t

Перестаньте гадать, какой раздел смонтирован в /var. Просто наберите lsblk.

#linux #storage #cli #tools #sysadmin
share PowerShell: Найди "забытые" сетевые папки

Сетевые шары (Shares) — любимый путь вирусов-шифровальщиков. Часто бывает так: админ расшарил папку "temp" для передачи дистрибутива и забыл. Спустя год там лежит архив с базой 1С, доступный всем (Everyone: Full Control).

Давайте найдем все не-системные шары одной командой.

Скрипт:

# Получаем все шары
Get-SmbShare |
# Исключаем дефолтные (C$, IPC$, ADMIN$ и т.д.)
Where-Object { $_.Special -eq $false } |
# Смотрим путь и описание
Select-Object Name, Path, Description |
Format-Table -AutoSize

Задача: Запустите на файловом сервере. Если увидите шару с именем Distrib, Scan или Obmen — проверьте права доступа немедленно (Get-SmbShareAccess -Name "Obmen").

#windows #powershell #security #audit #network
🧠 AI-Лайфхак: Regex больше не проблема

Давайте честно: никто не любит писать регулярные выражения с нуля. Это долго и больно. В 2025 году стыдно тратить на это час времени. Делегируйте это AI, но делайте это правильно.

Плохой промпт:

"Напиши регекс для email".

Хороший промпт (для админа):

"Напиши регулярное выражение (PCRE) для поиска IP-адресов в логах Nginx, которые пытались получить доступ к admin.php. Формат лога: $remote_addr - $remote_user [$time_local] "$request". Дай команду grep, которая использует этот регекс и выводит только уникальные IP".

Результат, который выдаст бот:

grep -P '(?<=^)\d{1,3}(\.\d{1,3}){3}(?=.*GET /admin\.php)' access.log | sort | uniq

Используйте нейронки как генератор синтаксиса sed, awk и regex. Это освобождает мозг для архитектурных задач.

#ai4admin #regex #productivity #chatgpt #troubleshooting
🧊 Read-Only Friday: Ловушка «на 5 минут»

Коллеги, напоминаем: пятница — день для чтения, обучения и документации. Самая страшная фраза, которую можно услышать в 16:00 пятницы:

«Да там делов на 5 минут, просто конфиг поправить».

Почему это ловушка:

Закон Мерфи: Если что-то может пойти не так, оно пойдет не так именно после перезагрузки сервиса в пятницу вечером.

Усталость: К концу недели концентрация падает. Вы можете не заметить лишний пробел в YAML или запятую в JSON.

Поддержка:
Если всё упадет в субботу утром, вендоры и коллеги будут недоступны.

Что можно делать сегодня:
Писать документацию в Confluence/Wiki.
Наводить порядок в стойке (кабель-менеджмент).
Чистить старые тикеты в Jira.
Изучать новые инструменты в песочнице (не на проде!).

Берегите свои выходные.

#readonlyfriday #adminlife #devops #culture #safety
🔥3
🤔 Network: В чем разница между 127.0.0.1 и 0.0.0.0?

Классический вопрос на собеседовании и частая ошибка в конфигах Nginx/Docker. Оба адреса относятся к "этому компьютеру", но работают они принципиально по-разному.

1. 127.0.0.1 (Localhost)

Суть: Loopback-интерфейс.

Как работает: Трафик никогда не покидает хост. Он даже не доходит до сетевой карты.

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

Конфиг: bind-address = 127.0.0.1

2. 0.0.0.0 (Wildcard)

Суть: "Все доступные интерфейсы".

Как работает:
Сервис начинает слушать на всех IP-адресах, которые есть у сервера (и на локальном 127.0.0.1, и на внешнем Ethernet/Wi-Fi).

Кейс: Вы запускаете веб-сервер, который должен быть доступен из интернета.

Конфиг: listen 0.0.0.0:80

☠️ Где ошибаются: Если вы в Docker или базе данных напишете 0.0.0.0 вместо 127.0.0.1, вы можете случайно открыть порт для всего интернета (если фаервол не настроен). Правило архитектора: Всегда биндите сервисы на 127.0.0.1, если нет явной причины пускать мир внутрь.

#network #security #theory #bestpractice #interview
🛡 Linux: Липкий бит (Sticky Bit). Магия папки /tmp

Все знают chmod 777 (разрешить всем всё). Но почему тогда в папке /tmp (у которой права 777) я не могу удалить файлы другого пользователя?

Ответ:
Sticky Bit.

Это специальный флаг прав доступа (обозначается буквой t в конце: drwxrwxrwt). Правило Sticky Bit: В этой директории создавать файлы могут все, но удалить файл может только его владелец (или root).

Как установить:
# Старый способ (через цифры, бит 1 в начале)
chmod 1777 /my/shared/folder

# Понятный способ
chmod +t /my/shared/folder

Кейс для админа: У вас есть общая папка для обмена документами в отделе (/srv/share). Чтобы сотрудники случайно не удаляли отчеты коллег, но могли заливать свои — включите Sticky Bit.

#linux #security #permissions #basics #cli
👀 Uptime Kuma: Мониторинг для людей

Zabbix слишком сложен для домашнего сервера или быстрого проекта? Prometheus требует Grafana? Попробуйте Uptime Kuma.

Это современный Self-Hosted инструмент мониторинга с красивым UI.

Что умеет:

Пинговать хосты (HTTP/s, TCP, DNS, Ping).
Проверять SSL-сертификаты (и орать, когда истекают).
Красивые Status Pages (как у облачных провайдеров).
Уведомления в Telegram, Discord, Slack.

Установка за 30 секунд (Docker):
docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1

Перейдите на http://localhost:3001 и наслаждайтесь.

Идеально, чтобы следить за своим сайтом, домашним роутером или VPN-сервером.

#homelab #monitoring #docker #opensource #tools
🔥3
📆 Воскресный чек: Готовимся к понедельнику

Чтобы завтра утром не было сюрпризов, потратьте 5 минут сейчас.

1. SSL-чек: Вспомните, не истекает ли какой-то важный сертификат на этой неделе? (Лучше проверить сейчас, чем в панике в 9:00 пн).

2. Место на диске: Если у вас крутятся тяжелые логи, посмотрите df -h. Выходные могли забить диск.

3. Заметки: Набросайте в Saved Messages 3 главные задачи на неделю.

Например: Обновить Nginx, разобраться с бэкапами БД, настроить VPN для нового сотрудника.

Спокойного вечера и легкого старта недели! 🚀

#productivity #checklist #planning #adminlife
🔥2
📉 Linux: ncdu — когда диск забился, а du бесит

Утро понедельника часто начинается с алерта Zabbix: Disk space is low on /var. Обычный админ пишет du -h --max-depth=1 | sort -hr и страдает, пытаясь понять, где именно "распухло".

Архитектор запускает ncdu (NCurses Disk Usage).

Почему это маст-хэв:

1. Интерактивность: Это как Total Commander, но для анализа места. Вы ходите стрелками по папкам и сразу видите, кто жрет место.

2. Скорость: Сканирует мгновенно.

3. Удаление: Можно нажать d и удалить файл/папку прямо из интерфейса (будьте осторожны!).

Установка:

sudo apt install ncdu # Debian/Ubuntu
sudo yum install ncdu # RHEL/CentOS

Лайфхак: Если нужно просканировать корень, но исключить примонтированные сетевые шары (чтобы не сканировать полмира):

ncdu -x /

Сэкономьте себе 20 минут времени на поиске логов, которые забыл удалить ротейт.

#linux #tools #cli #diskusage #ncdu #troubleshooting
👍2