Серверная Админа | Компьютерные сети
26.6K subscribers
1.29K photos
8 videos
7 files
1.4K links
Я действующий сетевой инженер, расскажу вам о сетях в доступной форме.

Реклама - @bashmak_media
Мы на бирже: https://telega.in/c/school_network

РКН: https://vk.cc/cHYqt5
Download Telegram
📝HMAC: три шага, которые защищают запрос от подделки

🟣Как работает HMAC: клиент и сервер заранее знают общий секретный ключ. Клиент берёт данные запроса, считает от них криптографическую подпись и отправляет её вместе с запросом.

GET /api/user/42
X-Timestamp: 1714000000
X-Signature: 8f3a91...


Сервер повторяет расчёт с тем же секретом. Подписи совпали - запрос не изменён и знает секрет.

🟣Что именно подписывается: обычно метод, путь, timestamp, nonce и тело запроса. Например:

POST
/api/payment
1714000000
abc123
{"amount":100}


Из этой строки и секретного ключа получается HMAC:
HMAC-SHA256(data, secret)

🟣Почему просто отправить секрет нельзя: клиент не передаёт ключ серверу при каждом запросе. Он используется только для вычисления подписи.

Если атакующий изменит:

{"amount":100}


на:

{"amount":100000}


подпись уже не совпадёт.

🟣Но HMAC сам по себе не защищает от повторной отправки запроса. Если украсть настоящий запрос, его можно попробовать отправить ещё раз.

Поэтому рядом используют timestamp и nonce:

timestamp → запрос должен быть свежим
nonce → конкретный запрос можно использовать один раз
signature → данные нельзя незаметно изменить


Такую схему часто используют API, вебхуки и взаимодействие между сервисами, где важно доказать не только «кто отправил запрос», но и что его содержимое не меняли по дороге.

Серверная Админа | Zeroday | #HMAC
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5💘1
Please open Telegram to view this post
VIEW IN TELEGRAM
🌚17❤3😁3🕊3
V100 вместо RTX 3090: как собрать домашний LLM-сервер из списанного железа

В статье показывают, как собрать домашний сервер для локальных LLM из бывших в употреблении Tesla V100. Эти ускорители 2017 года с 32 ГБ HBM2 и пропускной способностью 900 ГБ/с сегодня можно найти за $100–150. А если объединить несколько карт, получится уже 64–128 ГБ видеопамяти - достаточно, чтобы запускать модели, которым тесно в обычных потребительских видеокартах.

🟣Правда, лёгкой такую сборку не назовёшь: понадобятся переходники для SXM2, мощное охлаждение, блок питания на несколько киловатт и терпение при настройке CUDA с PyTorch. Четыре V100 могут потреблять до 1200 Вт, зато за относительно небольшие деньги получится настоящий домашний сервер для локальных LLM.

Серверная Админа | Zeroday | #Статья
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1🗿1
👋 Привет, сетевой друг!

Давай расскажу про mdns-scanner, который быстро пробегается по локальной сети и пытается понять, какие устройства там вообще живут.

🟣Запускаете его - и вместо голого списка IP получаете связку адресов с именами:

192.168.1.12 → macbook.local
192.168.1.24 → printer.local
192.168.1.37 → nas.local


Причём он не ограничивается обычным DNS. mdns-scanner умеет собирать mDNS-имена, DNS-SD service instances и другие алиасы, которые устройства сами объявляют в локальной сети.

🟣mDNS особенно крут там, где обычного DNS просто нет. Например, ноутбук или принтер может прекрасно знать себя как printer.local, хотя никакой записи для него на вашем DNS-сервере не существует.

А через DNS-SD можно увидеть ещё и опубликованные сервисы:

_http._tcp
_ssh._tcp
_airplay._tcp
_printer._tcp


То есть можно понять не только «этот IP существует», но и «что устройство вообще предлагает в сети».

🟣Инструмент автоматически сканирует доступные non-loopback интерфейсы, ищет хосты и пытается разрешить найденные IP в связанные имена. Получается довольно удобная быстрая инвентаризация локалки без ручного просмотра ARP-таблиц и DNS.

🟣Написан mdns-scanner на Rust, есть версии для Linux, macOS и Windows. На Windows понадобится Npcap.

Установка из Git:

cargo install --git https://github.com/CramBL/mdns-scanner mdns-scanner


Или можно скачать готовый бинарник из Releases.

🟣Но есть маленький нюанс. Утилита действительно сканирует сеть, причём довольно бодро - автор предупреждает о сотнях IP-проверок в секунду. Поэтому в рабочей сети лучше сначала предупредить админа, а не устраивать внезапную перепись всего /24.

Серверная Админа | Zeroday | #Инструмент
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍5
👋 Привет, сетевой друг!

Давай расскажу про протокол ALTO, через который оператор сам подсказывает приложению как лучше передавать трафик в его сети.

🟣Проблема которую решает: приложение не знает топологию сети оператора. P2P-клиент выбирает пира случайно и трафик может идти через дорогой межоператорский линк когда нужный пир сидит в той же AS за соседним свитчем. Стриминг выбирает CDN-узел по географии, а не по реальной близости в сети. Оператор об этом знает, но молчит.

🟣Что делает ALTO: оператор поднимает ALTO-сервер и отдаёт через REST API карту своей сети - стоимость маршрутов между подсетями, предпочтительные точки выхода, ранжирование эндпоинтов. Приложение делает запрос и получает подсказку кого лучше выбрать:

# Запрос стоимости маршрутов между подсетями
curl https://alto.operator.com/networkmap
curl https://alto.operator.com/costmap/pv/num/routingcost

# Ответ содержит матрицу стоимостей между PID-группами
# PID — это группы подсетей которые оператор считает эквивалентными


🟣Как это выглядит на практике: BitTorrent-клиент с поддержкой ALTO спрашивает у оператора какие из доступных пиров предпочтительнее. Оператор отвечает что пиры внутри его AS имеют стоимость 0, а пиры в других AS стоимость 10. Клиент выбирает внутренних - оператор экономит на межоператорском трафике, пользователь получает лучшую скорость.

🟣Endpoint Cost Service - самая полезная часть: приложение отдаёт список конкретных IP и получает их ранжирование:

POST /endpointcost/lookup
{
"cost-type": {"cost-mode": "numerical", "cost-metric": "routingcost"},
"endpoints": {
"srcs": ["ipv4:192.0.2.1"],
"dsts": ["ipv4:198.51.100.1", "ipv4:203.0.113.1", "ipv4:198.51.100.2"]
}
}


В ответе каждому dst назначена стоимость - приложение выбирает минимальную.

🟣А где используют: крупные CDN запрашивают ALTO у операторов для выбора точки присутствия, WebRTC-клиенты для выбора TURN-сервера, следующее поколение адаптивного стриминга. RFC 7285 принят в 2014 году, активно развивается - в 2021 вышли расширения для поддержки ALTO в мультидоменных сетях и датацентрах.

🟣И это редкий случай когда оператор и приложение реально сотрудничают вместо того чтобы бороться. Оператор получает меньше межоператорского трафика, приложение получает лучший выбор узлов, пользователь получает скорость. Все довольны.

Серверная Админа | Zeroday | #ALTO
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5
Когда в ИТ три человека, появляется четвёртая работа — выяснять, кто чем занимается.

— Кто взял заявку бухгалтерии?
— Саша вроде.
— А сервером кто занимается?
— Я думал, ты.
— А в филиал кто-нибудь написал?
— Сейчас спрошу.


И вот вместо работы кто-то в команде постепенно превращается в диспетчера.

Нужно помнить, кому что передали, проверять, взял ли человек задачу, смотреть, кто сейчас свободен, напоминать про зависшие обращения и периодически разруливать классическое «я думал, это делает кто-то другой».

Пока админ один, такой проблемы почти нет. Когда появляется команда и поток обращений растёт — координация сама становится отдельной работой.

В Okdesk эту «диспетчерскую» нагрузку можно снять: заявки распределяются между сотрудниками и командами, назначаются ответственные, задаются приоритеты и сроки, настраивается автоматическая маршрутизация.
 
❓Вопрос «Саша это делает?» больше не нужен — достаточно открыть платформу и увидеть, кто отвечает за заявку и на каком она этапе.

Хотите увидеть, как это работает на практике?

Приходите на вебинар — разберём на примере «Мобиус Технологии», как разделить потоки между поддержкой, инженерами и экспертами, настроить маршрутизацию под разные типы обращений и масштабировать обслуживание без потери SLA.

👉 Получить бесплатный вебинар можно по ссылке https://lead.okdesk.ru/mnogourovnevyj-servis

Реклама. ООО «Облачные решения». erid: 2VtzqxJ7bjz
🤪4🔥1😁1
This media is not supported in your browser
VIEW IN TELEGRAM
👋 Привет, сетевой друг!

Собрал три способа прокачать защиту MikroTik - особенно если роутеров уже несколько и хочется меньше ручной работы…

🟣Автоматически обновлять блок-листы через RouterOS API + Python: Когда роутеров десятки, заходить на каждый и вручную добавлять подозрительные IP - сомнительное удовольствие. Через API можно централизованно обновлять address-list и быстро распространять блокировки на весь парк:

import routeros_api

connection = routeros_api.RouterOsApiPool(
'192.168.1.1',
username='admin',
password='pass',
plaintext_login=True
)

api = connection.get_api()

rules = api.get_resource('/ip/firewall/filter')
print(rules.get())


Например, добавить IP в blocklist:

api.get_resource('/ip/firewall/address-list').add(
list='blocklist',
address='10.0.0.5',
comment='auto-blocked'
)


Так можно быстро блокировать адреса, полученные из SIEM, threat intelligence или внутренней системы мониторинга, сразу на всех MikroTik.

🟣Проверять доступность сервисов через Netwatch: Ping не всегда показывает реальное состояние сервиса. Хост может отвечать на ICMP, пока nginx возвращает 502, приложение не работает, а пользователи уже не могут подключиться. Для дополнительного контроля Netwatch можно связать с HTTP health-check и проверять конкретный endpoint:

/tool netwatch
add host=10.0.0.10 interval=30s timeout=5s \
type=HTTP http-codes=200 \
down-script="/log error \"Web server DOWN\"" \
up-script="/log info \"Web server UP\""


Если сервис перестал отвечать, down-script может добавить его адрес в отдельный список, отправить событие в мониторинг или запустить переключение на резервный сервер.

🟣Ловить сканирование внутри сети: Скомпрометированный хост может начать быстро перебирать адреса и открывать множество TCP-соединений. Для этого можно отслеживать новые SYN и складывать активные источники в отдельный список:

/ip firewall mangle
add chain=forward protocol=tcp tcp-flags=syn \
connection-state=new \
src-address-list=!whitelist \
action=add-src-to-address-list \
address-list=syn-tracking \
address-list-timeout=30s

/ip firewall filter
add chain=forward protocol=tcp tcp-flags=syn \
connection-state=new \
src-address-list=syn-tracking \
connection-limit=30,32 \
action=add-src-to-address-list \
address-list=internal-scanner \
address-list-timeout=1h \
log=yes \
log-prefix="SCAN DETECTED:"

add chain=forward src-address-list=internal-scanner \
action=drop \
log=yes \
log-prefix="SCANNER BLOCKED: "


В итоге источник, который набирает слишком много одновременных TCP-соединений, попадает в internal-scanner, а следующее правило уже режет ему трафик.

Серверная Админа | Zeroday | #Mikrotik
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍2💘1
👋 Привет, сетевой друг!

Сегодня про Ethernet, который мы привыкли воспринимать как обычный кабельный LAN. Но за ним давно стоит целый набор технологий, которые позволяют гонять трафик на десятки и сотни гигабит.

🟣Сначала был 10BASE-T: В классическом Ethernet по витой паре использовались 10 Мбит/с и обычная схема с хабами. Несколько устройств делили один collision domain и решали, кто сейчас может передавать, через CSMA/CD. С современными коммутаторами эта история практически исчезла.

🟣Потом Ethernet научился работать одновременно: Появился full-duplex: устройство может передавать и принимать данные одновременно, а коллизии на коммутируемом соединении больше не нужны. Поэтому сегодня 1000BASE-T означает не просто «гигабит по кабелю». Это уже point-to-point соединение между портом коммутатора и конечным устройством.

🟣А дальше началась гонка скоростей:

10 → 100 → 1000 → 10G → 25G → 40G → 100G → 200G → 400G → 800G.


Причём скорость росла не только за счёт увеличения частоты сигнала. Используются более сложные схемы кодирования, PAM4, несколько физических линий и всё более продвинутые DSP. Например, 400GbE может передавать данные четырьмя электрическими или оптическими лэйнами по 100 Гбит/с.

🟣Почему 25G вообще появился, если был 10G?: Для дата-центров оказалось удобнее масштабировать серверные подключения по 25G: один 25G lane хорошо сочетается с 100G и 400G аплинками.
Например:

Server
│ 25G
▼
Leaf
│ 100G
▼
Spine
│ 400G
▼
Core


Так Ethernet постепенно превратился из стандарта для офисной сети в основу современных дата-центров.

🟣И самое интересное: Ethernet не выиграл потому, что у него всегда была самая высокая скорость. Его сила в огромной экосистеме: совместимые коммутаторы, NIC, оптика, медь, стандарты, LACP, VLAN, QoS и куча оборудования от разных производителей. Поэтому когда вы подключаете сервер на 25G или 100G, под капотом всё ещё работает тот же Ethernet, которому уже больше 40 лет.

Серверная Админа | Zeroday | #LAN
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6💘4🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
💯21😭11❤2😁2
Почему SAML снова и снова ломается на одном и том же месте?

SAML больше 20 лет отвечает за корпоративный SSO, но исследователи до сих пор находят способы обходить его защиту. В статье разбирают, как XML-комментарии, особенности парсеров и канонизация позволяют подменять подписанные данные так, что проверка проходит, а приложение получает уже другое содержимое.

🟣Разбирают пять проблем протокола: сложность XML, канонизацию, вложенные подписи, перегруженную спецификацию и устаревшую архитектуру. Отдельно проходят по XSW, parser differential и round-trip-атакам, а затем сравнивают подход SAML с OIDC и показывают, почему современные системы постепенно уходят от XML в сторону JSON/JWT.

Серверная Админа | Zeroday | #Статья
Please open Telegram to view this post
VIEW IN TELEGRAM
👋 Привет, сетевой друг!

Сегодня про webcensus - инструмент для довольно специфичной задачи: найти один и тот же URL-путь сразу на огромном количестве сайтов.

🟣Например, хочется понять, кто вообще публикует /.well-known/security.txt, robots.txt, ads.txt или sitemap.xml. Перебирать сайты по одному здесь явно не вариант.

🟣webcensus собирает это в конвейер из нескольких этапов:

список доменов
↓
DNS
↓
HTTPS probe
↓
скачивание
↓
проверка файла


Сначала massdns быстро резолвит миллионы доменов и оставляет только те, у которых есть A-запись.

🟣Дальше в дело вступает собственный Rust-пробер skim. Он подключается к :443, выполняет TLS handshake и отправляет обычный HTTP-запрос к нужному пути. Но самое интересное - тело ответа на этом этапе вообще не скачивается.

Инструмент читает только HTTP status line:

{"url":"https://example.com/.well-known/security.txt","status":"success","code":200,"cert_ok":true}


Поэтому из миллионов адресов дальше проходят только те, где HTTPS вообще поднялся и нужный путь вернул 200.

🟣И только теперь начинается полноценная загрузка. curl --parallel скачивает найденные URL пачками, причём для каждого запроса есть ограничения по размеру, времени и числу повторных попыток.

Например:

--parallel-max 50
--max-filesize 5M
--max-time 10
--connect-timeout 3
--retry 2


Это важно, потому что сервер вполне может ответить 200, а вместо маленького security.txt отдать несколько мегабайт HTML.

🟣После скачивания webcensus ещё раз проверяет содержимое уже локально. HTML-страницы, JSON-ошибки, бинарный мусор и слишком короткие ответы отбрасываются.
Получается важная разница:

HTTP 200
≠
нужный файл действительно существует


Например, сайт может отдавать одну и ту же SPA-страницу на любой URL с кодом 200. Для простого сканера это найденный файл, для webcensus - мусор.

🟣Весь процесс запускается внутри Docker, а каждый этап оставляет результат в data/. Можно остановиться после любого шага и продолжить с него, а локальный этап проверки вообще не требует повторно ходить в интернет.

Серверная Админа | Zeroday | #Инструмент
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2