Три базовых, но эффективных подхода, которые стоит внедрить в любом API:
limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r/s;
location /api/ {
limit_req zone=api_limit burst=20 nodelay;
}
const rateLimit = require("express-rate-limit");
const limiter = rateLimit({
windowMs: 15 * 60 * 1000,
max: 100
});
app.use("/api/", limiter);
const cors = require('cors');
app.use(cors({
origin: 'https://yourfrontend.com'
}));
Не забудьте запретить * в production - это дырка в безопасности.
const jwt = require('jsonwebtoken');
function authenticateToken(req, res, next) {
const token = req.headers['authorization']?.split(' ')[1];
if (!token) return res.sendStatus(401);
jwt.verify(token, process.env.ACCESS_TOKEN_SECRET, (err, user) => {
if (err) return res.sendStatus(403);
req.user = user;
next();
});
}
Итого:
Rate Limiting - спасает от злоупотреблений.
CORS - управляет доступом между доменами.
Token-based доступ - дает безопасность и гибкость.
Правильная комбинация этих механизмов - основа для защиты любого публичного API.
#API #security
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1
Инструменты трассировки маршрута и диагностики сети - незаменимая часть работы администратора. Ниже собран краткий обзор утилит для Linux и Windows, которые помогают понять, где тормозит или обрывается соединение.
traceroute -I ya.ru
tracepath ya.ru
mtr ya.ru
tracert ya.ru
pathping ya.ru
tracetcp ya.ru:443
Полезна, когда ICMP или UDP заблокированы, а нужно проверить доступность TCP-сервиса. Показывает, где именно по пути блокируется соединение. Ставится отдельно (ищите на сайте разработчика). Аналога на Linux, увы, нет, но было бы очень кстати.
📍 Используйте mtr и tracetcp, если нужно точечно диагностировать проблемы.📍 tracepath удобен для анализа MTU.📍 На Windows pathping даст больше инфы, чем tracert.
#network #diagnostic
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤3
Начиная с версии Windows 10 1809, Microsoft отключила автоматическое создание бэкапов реестра - якобы ради экономии места (всего 100–200 МБ). Но вместе с этой "оптимизацией" пользователи лишились простого способа восстановить систему, заменив повреждённые файлы реестра на рабочие копии из RegBack.
Хотя используется эта функция нечасто, иметь резервную копию всегда лучше, чем её отсутствие.
Создайте параметр EnablePeriodicBackup в реестре:
reg add "HKLM\System\CurrentControlSet\Control\Session Manager\Configuration Manager" /v EnablePeriodicBackup /t REG_DWORD /d 1 /f
Теперь задание планировщика RegIdleBackup будет выполняться в рамках автоматического обслуживания системы (раз в сутки), и сохранять резервные копии реестра в папку:
%windir%\System32\config\RegBack
Start-ScheduledTask -TaskName "RegIdleBackup"
#windows #registry
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16
NAT (Network Address Translation) - это технология трансляции сетевых адресов, которая позволяет устройствам локальной сети выходить в Интернет через один общий внешний IP. Она лежит в основе почти каждого домашнего роутера и многих корпоративных решений. Но под капотом у NAT есть разные виды — разберёмся, в чём их суть и где применять.
NAT подменяет исходные или целевые IP-адреса (и порты) в IP-пакетах. Это позволяет:📍 Скрывать внутреннюю адресацию;📍 Пробрасывать доступ к локальным сервисам извне;📍 Повышать безопасность, не раскрывая реальную структуру сети
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 203.0.113.5
Используется, когда у сервера постоянный внешний IP.
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
Отличный выбор для нестабильного внешнего интерфейса.
iptables -t nat -A PREROUTING -p tcp --dport 2222 -j DNAT --to-destination 192.168.1.100:22
Удобно для проброса SSH, HTTP, RDP и других сервисов внутрь локальной сети.
#NAT #iptables
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23❤6🔥4
Когда возникает подозрение на проблемы с сетью - падение скорости, потери пакетов или просто "тормозит" - важно уметь быстро локализовать причину. В Linux есть три утилиты, которые закрывают основные потребности в диагностике: ethtool, iperf3 и nload.
Скорость подключения и режим дуплекса:
ethtool eth0
Есть ли сбои на интерфейсе:
ethtool -S eth0 | grep -E 'err|drop'
Настроить автосогласование, отключить Wake-on-LAN, изменить параметры offload'инга.
Удобно для диагностики "битых" линков и проблем с драйверами.
На одном узле запускаем сервер:
iperf3 -s
На втором - клиент:
iperf3 -c 192.168.1.1
Показывает скорость, потери, джиттер. Можно использовать TCP и UDP, настраивать количество потоков и длительность теста.
Пример теста в 5 потоков:
iperf3 -c 192.168.1.1 -P 5
Хорошо подходит для поиска узких мест между хостами.
nload eth0
Выведет в реальном времени график входящего и исходящего трафика. Можно переключаться между интерфейсами, видеть пики, общую статистику и скорость.
Особенно удобен, когда нужно на лету оценить нагрузку и понять, кто грузит канал.
ethtool - диагностика интерфейса;
iperf3 - замер скорости и качества канала;
nload - визуальный мониторинг трафика
#linux #network
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤4
В 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