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
🤔 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
👑 PowerShell: Где мои FSMO роли?

Если ваш контроллер домена "приуныл", первое, что нужно знать — держит ли он FSMO (Flexible Single Master Operations) роли. Потеря рядового DC — это ерунда. Потеря PDC Emulator или Schema Master — это проблема.

Забудьте про netdom query fsmo. Делаем красиво через объекты.
Скрипт:

# Получаем роли уровня Домена
$Domain = Get-ADDomain | Select-Object InfrastructureMaster, RIDMaster, PDCEmulator

# Получаем роли уровня Леса
$Forest = Get-ADForest | Select-Object SchemaMaster, DomainNamingMaster

# Выводим красивый отчет
Write-Host "🌲 Forest Roles:" -ForegroundColor Cyan
$Forest | Format-List

Write-Host "🏰 Domain Roles:" -ForegroundColor Cyan
$Domain | Format-List

Pro Tip: Сохраните этот вывод. В случае аварии вы должны знать, какой именно сервер захватывать (Seize) принудительно.

#activedirectory #powershell #windows #fsmo #architecture
🔔 Bash: Уведомление в Telegram при входе по SSH

Хотите знать, если кто-то (или вы сами) зашел на критический сервер? Простой скрипт, который отправляет алерт в Telegram при каждой успешной SSH-сессии.

1. Создаем скрипт /usr/local/bin/ssh-alert.sh:

#!/bin/bash
TOKEN="ВАШ_БОТ_ТОКЕН"
CHAT_ID="ВАШ_ID"
URL="https://api.telegram.org/bot$TOKEN/sendMessage"
MSG="🚨 SSH Login: $USER from $SSH_CLIENT on $(hostname) at $(date)"

curl -s -X POST $URL -d chat_id=$CHAT_ID -d text="$MSG" > /dev/null

Не забудьте: chmod +x /usr/local/bin/ssh-alert.sh

2. Добавляем в глобальный профиль: Открываем /etc/profile (сработает для всех юзеров) и добавляем в конец:

/usr/local/bin/ssh-alert.sh

Теперь, если кто-то подберет пароль или украдет ключ — вы узнаете об этом первым (и успеете дернуть рубильник).

#linux #security #ssh #telegram #scripting #monitoring
👍1
😱 The Scream Test: Когда документации нет

Как узнать, нужен ли этот старый сервер srv-app-legacy-02, если документации нет, а спросить не у кого? Применяем Scream Test (Тест на крик).

Алгоритм:
1. Выключаем сетевой интерфейс или службу.
2. Ждем.
3. Если никто не позвонил и не закричал в течение недели — сервер можно удалять.

* Если закричали — включаем обратно и записываем, кто и зачем его использует.

⚠️ Техника безопасности:
* Никогда не делайте это в пятницу.
* Никогда не удаляйте данные сразу (делайте бэкап/снапшот).
* Делайте это в "рабочие часы", когда вы на месте.

Жестоко? Да. Эффективно? Абсолютно.

#adminlife #humor #methodology #legacy #cleanup
👍2
Мальчик:
Сдается и качает мессенджер МАХ после блокировок всех приложений

Мужчина:
😁5
🔥 React2Shell: Новый кошмар для веб-серверов (CVSS 10.0)

Коллеги, если вы админите веб-инфраструктуру, отложите кофе. В сети разгорается пожар, получивший имя React2Shell (CVE-2025-55182). Это RCE (Remote Code Execution) с максимальным рейтингом 10 из 10.

Суть: Уязвимость в React и Next.js (компоненты React Server Components). Атакующему не нужна авторизация. Он просто отправляет специально сформированный HTTP-запрос к эндпоинту серверной функции, и сервер выполняет произвольный код.

Кто под ударом: Любой публичный сервис, использующий SSR (Server Side Rendering) на свежих версиях Next.js.

Что делать прямо сейчас:
1. Патчинг: Обновите react и next до последних версий, выпущенных вчера.
2. WAF: Если патчить долго (легаси), срочно настраивайте WAF.
3. Cloudflare уже выкатил правила (и даже положил ими часть интернета 5 декабря, см. следующий пост).
4. Nginx/ModSecurity: Блокируйте запросы, содержащие подозрительные сериализованные пейлоады в теле POST.

Маркеры компрометации (IoC): Смотрите логи на предмет странных вызовов к /_next/static/... с аномально большими телами запросов.

#security #cve #react2shell #alert #vulnerability #web
🐧 Linux 6.18 LTS: Ядро, с которым нам жить до 2027

Линус Торвальдс официально объявил релиз Linux Kernel 6.18. Главная новость: эта версия получила статус LTS (Long Term Support). Именно она станет основой для будущих версий Ubuntu 26.04, Debian и RHEL.

Что внутри:

1. Apple Silicon: Наконец-то полноценная поддержка чипов M2 Pro/Max/Ultra в апстриме. Можно ставить Linux на Mac без танцев с бубном (почти).

2. Прощай, Bcachefs: Экспериментальную файловую систему удалили из ветки. Если вы рискнули использовать её в проде — у вас проблемы. Мигрируйте на Btrfs/XFS.

3. Виртуализация: KVM теперь поддерживает Intel CET (Control-flow Enforcement Technology) для гостевых систем. Это защита от ROP-атак внутри виртуалки.

Команда для проверки: Пока рано обновлять прод, но в arch уже прилетело.

uname -r
# Ждем 6.18.x

Готовимся к переезду в следующем году.

#linux #kernel #lts #news #opensource
🎅 Advent of Sysadmin 2025: Челлендж для тех, кто устал от LeetCode

Пока программисты решают Advent of Code, для нас запустили Advent of Sysadmin. Это серия ежедневных задач на живых серверах (в браузере), где нужно что-то починить или взломать.

Примеры задач этой недели:

Dec 05: "La Rinconada" — Вы зашли под юзером без sudo. Найдите способ поднять привилегии, используя криво настроенный скрипт бэкапа.

Dec 08: "Kortenberg" — Nginx выдает 403 Forbidden, права на файл 777, SELinux выключен. В чем причина? (Спойлер: лимиты файловых дескрипторов).

Идеально, чтобы размять мозги за утренним кофе или дать задачу джуну на собеседовании.
🔗 Ссылка
https://sadservers.com/advent

#learning #challenge #sysadmin #linux #fun
metrics: SLA, SLO, SLI — Хватит путать эти аббревиатуры

На собеседовании на позицию Lead/Architect этот вопрос валит 50% кандидатов. Все говорят: «Ну, это про аптайм». Давайте разберем раз и навсегда.

1. SLI (Indicator) — Что мы меряем? Это конкретная метрика в графике.
Пример: Количество 500-х ошибок HTTP или Latency (задержка) ответа.
Факт: «Сейчас 99.5% запросов успешны».

2. SLO (Objective) — Какая у нас цель? Это внутренняя планка качества, к которой стремится команда.
Пример: «Мы хотим, чтобы 99.9% запросов были успешны».
Зачем: Если мы нарушаем SLO, мы останавливаем релизы новых фич и чиним стабильность (Error Budget).

3. SLA (Agreement)
— За что нас накажут? Это внешний контракт с клиентом (юридический документ).
Пример: «Если аптайм упадет ниже 99.0%, мы вернем вам 30% оплаты».
Важно: SLA всегда ниже, чем SLO. У вас должен быть буфер безопасности.

Памятка архитектора: Не обещайте бизнесу 100% SLA. Это технически невозможно и бесконечно дорого. Обещайте «три девятки» (99.9%) и спите спокойно.

#sre #devops #metrics #sla #architecture #learning
🎅 PowerShell: Спасаем пользователей от блокировки в Новый год

Декабрь. Пользователи уходят в отпуск на 2-3 недели. Сценарий фильма ужасов: у сотрудника истекает пароль 3 января. Он пытается подключиться к VPN/почте из дома, получает ошибку «Password Expired» и звонит вам в праздники.

Давайте найдем всех, у кого пароль протухнет в ближайшие 30 дней, и предупредим их.

Скрипт:

$DaysToWarn = 30
$Users = Get-ADUser -Filter {Enabled -eq $True -and PasswordNeverExpires -eq $False} -Properties msDS-UserPasswordExpiryTimeComputed, EmailAddress

foreach ($User in $Users) {
$ExpiryDate = [datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")
$DaysLeft = ($ExpiryDate - (Get-Date)).Days

if ($DaysLeft -ge 0 -and $DaysLeft -lt $DaysToWarn) {
Write-Host "⚠️ $($User.Name): Пароль истекает через $DaysLeft дн. ($ExpiryDate)" -ForegroundColor Yellow

# Тут можно раскомментировать отправку письма
# Send-MailMessage -To $User.EmailAddress -Subject "Смените пароль!" ...
}
}

Запустите сегодня. Это спасет ваши новогодние каникулы.

#powershell #activedirectory #scripting #automation #newyear
🛡 Fail2Ban устарел. Встречайте CrowdSec

Мы годами ставили fail2ban, чтобы банить ботов, брутфорсящих SSH. Он хороший, но он — одиночка. Он знает только то, что происходит на вашем сервере.

В 2025 году тренд — CrowdSec. Это "Waze для кибербезопасности".

В чем киллер-фича: Если IP-адрес атакует моего соседа (тоже пользователя CrowdSec), этот IP попадает в черный список. Через 5 минут мой сервер уже знает об этом IP и блокирует его превентивно.

Почему стоит перейти:

Коллективный разум: База репутации IP обновляется в реальном времени.

Универсальность: Парсит логи не только SSH, но и Nginx, Docker, Kubernetes, AWS CloudTrail.

Bouncers: Умеет банить не только через iptables, но и на уровне Cloudflare, Nginx или даже отправлять Captcha.

Установка:

curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.deb.sh | sudo bash
sudo apt install crowdsec

Один в поле не воин. Объединяйте сервера в защиту.

#security #linux #opensource #crowdsec #fail2ban #tools
👍2
🕵️‍♂️ MTR: Трассировка на стероидах

Когда интернет «лагает», мы привыкли запускать ping или traceroute. Но первый не показывает, на какой ноде теряются пакеты, а второй — это разовый снимок, который часто врет из-за ICMP-фильтров.

Настоящий профи использует MTR (My Traceroute).

В чем магия: MTR объединяет возможности обеих команд, постоянно отправляя пакеты и обновляя статистику в реальном времени.

На что смотреть (Столбцы):
1. Loss%: Показывает потерю пакетов. Если Loss на 3-м прыжке, но на 4-м его нет — это просто провайдер игнорирует ICMP. Если Loss растет от прыжка к прыжку — это реальная проблема.
2. WRST (Worst): Худший отклик. Помогает поймать кратковременные всплески задержки (Jitter).

Команда дня (режим отчета для тикета провайдеру):

mtr -rw google.com

(-r — report, -w — wide. Выдает красивый текст, который можно смело слать в техподдержку)

#linux #network #mtr #troubleshooting #cli
🧹 PowerShell: Чистим старые профили пользователей

Знакомая ситуация: на терминальном сервере или ПК общего пользования за год накопилось 50 профилей уволенных или случайных людей. Диск C: кричит о помощи.

Не удаляйте папки вручную в C:\Users! Это сломает реестр. Делаем через WMI.

Скрипт (удалить профили старше 60 дней):

$Limit = (Get-Date).AddDays(-60)

# Получаем профили, которые не использовались более 60 дней
$Profiles = Get-CimInstance Win32_UserProfile |
Where-Object { $_.LastUseTime -lt $Limit -and $_.Special -eq $false }

foreach ($Profile in $Profiles) {
Write-Host "🗑 Удаляю профиль: $($Profile.LocalPath)" -ForegroundColor Yellow
$Profile | Remove-CimInstance
}

⚠️ Важно: Скрипт не тронет системные профили (Special). Но перед запуском убедитесь, что в списке нет вашего босса, который просто давно не заходил на этот сервер.

#windows #powershell #cleanup #sysadmin #automation
🌈 Linux: Хватит смотреть в серый tail -f

Логи в консоли — это поток боли для глаз. Давайте добавим красок, чтобы ошибки сами бросались в глаза. Используйте lnav (The Log File Navigator).

Почему это круто:
1. Авто-раскраска: Сама подсвечивает IP-адреса, даты, ошибки (красным) и предупреждения (желтым).
2. Слияние: Можно открыть 5 лог-файлов одновременно, и lnav перемешает их по времени в один поток. Идеально для отладки связки Nginx + PHP-FPM.
3. SQL-запросы: Можно писать SELECT * FROM log прямо в консоли.

Установка:

sudo apt install lnav

Просто введите lnav /var/log/nginx/access.log и почувствуйте себя в будущем.

#linux #logs #lnav #cli #productivity
🔥3
🐘 PostgreSQL: Почему база растет, если я удаляю данные?

Классика: вы удалили миллион строк из таблицы, а место на диске не освободилось. Добро пожаловать в мир MVCC (Multi-Version Concurrency Control).

В Postgres при удалении (DELETE) строка не стирается физически. Она помечается как «мертвая» (dead tuple). Но место всё ещё занято.

Ошибка джуна: Запустить VACUUM FULL. Это освободит место, НО заблокирует таблицу намертво (Access Exclusive Lock). Ваш прод встанет.

Путь Архитектора:

Настройте Autovacuum. Он должен работать агрессивнее, чтобы «мертвецы» не накапливались.

Используйте pg_repack (или pg_squeeze). Это расширение позволяет пересобрать таблицу и вернуть место ОС без блокировок чтения/записи.

Шпаргалка по проверке "вздутия" (Bloat): Вам не нужны сложные скрипты, поставьте pg-bloat-check или используйте запрос:

SELECT schemaname, relname, n_dead_tup, n_live_tup,
(n_dead_tup::float / n_live_tup::float) as bloat_ratio
FROM pg_stat_user_tables
WHERE n_dead_tup > 0;

Если bloat_ratio > 0.2 (20%) — пора звать автовакуум.

#postgresql #database #dba #performance #sql