Pull to refresh
4
0
Виталий Григорьев @VAAKAraceGUM

Ведущий системный архитектор

Send message

Бэкдоры OpenSSH

Level of difficultyEasy
Reading time12 min
Views7.8K

Представьте себе: обнаружен бэкдор в OpenSSH, мейнтейнеры спешат выпустить релиз с исправлениями, исследователи безопасности обмениваются техническими деталями, чтобы проанализировать вредоносный код. Разгораются обсуждения по поводу причастности и мотивов злоумышленника, а технические СМИ бросаются освещать историю. Почти что эпическое происшествие, удар по доверию, лежащему в основе разработки с открытым исходным кодом, яркое напоминание о рисках атак на цепочки поставок. В равной мере блестяще и коварно.

Если вы следите за новостями безопасности, то, возможно, сразу вспомните атаку на репозиторий liblzma/xz‑utils в начале этого года, конечной целью которой был бэкдор в OpenSSH. Однако ниже мы обсудим не случай с xz‑utils, ведь мало кто помнит, что бэкдор в xz‑utils на самом деле второй широко известной попыткой внедрения бэкдора в OpenSSH. Впервые это произошло более 22 лет назад, в 2002 году. Эта статья рассказывает историю того бэкдора и тому, чему можно научиться из атаки, произошедшей более двух десятилетий назад.

Читать далее
Total votes 14: ↑14 and ↓0+17
Comments6

Launcher для GoodbyeDPI – понятный способ обойти все блокировки и восстановить YouTube в России

Level of difficultyEasy
Reading time2 min
Views248K

Сейчас опишу интуитивно понятный способ восстановления работоспособности YouTube и обхождения любых блокировок провайдера на Windows компьютере. Уверен, что статью по указке РКН быстро удалят, так что если тема вам интересна, дочитайте до конца, сразу скачайте себе программу, даже если планируете использовать после. Заносить в закладки особого смысла нет. Ну и ставьте лайк. Отдельно также следует повысить карму ValdikSS - Пользователь / Хабр (habr.com) автору уникального решения GoodbyeDPI, который публиковал статью с описанием своего решения пару недель назад тут: Автономный способ обхода DPI и эффективный способ обхода блокировок сайтов по IP-адресу, теперь там банер РКН и слова «Эта интернет-страница удалена из публичного доступа по юридическим причинам».

Я не буду заново описывать техническое решение GoodbyeDPI, кратко это программа (или служба ОС Windows) позволяющая обнаруживать «заглушки» созданные провайдерами по указанию РКН для блокировки небогоугодных сайтов. Программа бесплатно распространяется на GitHub, является консольной утилитой мало понятной рядовому пользователю. Полное описание и ссылки есть на NNMClub ⚡ Автономный способ обхода DPI и эффективный способ обхода блокировок сайтов по IP-адресу. GoodbyeDPI и ReQrypt + Blockcheck – ресурс, конечно же, заблокирован у вас, если еще не установлен какой-либо способ обхода блокировок.

Сейчас появилось решение в виде графической оболочки для GoodbyeDPI, которое на русском языке позволяет в пару кликов решить проблемы медленного YouTube и не работающих сайтов. Решение Launcher for GoodbyeDPI, это простое окошко настройки к GoodbyeDPI, который также идёт в комплекте. Скачивайте с сайта автора, или с моего зеркала.

Восстановите YouTube и запрещенные сайты
Total votes 204: ↑191 and ↓13+213
Comments176

Два потока, одно ядро: как устроена одновременная многопоточность

Level of difficultyMedium
Reading time13 min
Views23K

Одновременная многопоточность (Simultaneous multithreading, SMT) — это функция, позволяющая процессору одновременно обрабатывать команды из двух разных потоков. Но задавались ли вы когда-нибудь вопросом, как это работает? Как процессор отслеживает два потока и распределяет ресурсы между ними?

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

Примечание: основная часть изложенного в статье относится к реализации SMT компании Intel, также называемой гипертредингом (hyper-threading). Она основана на научной статье компании, опубликованной в 2002 году.
Читать дальше →
Total votes 48: ↑46 and ↓2+68
Comments47

Сложно о простом. Сетевой уровень (L3) модели OSI

Level of difficultyEasy
Reading time7 min
Views12K


Приветствую, коллеги! Меня зовут ProstoKirReal, и сегодня мы продолжим наше путешествие по модели OSI, обсудив сетевой уровень (L3). Этот уровень отвечает за маршрутизацию данных между различными сетями.
Читать дальше →
Total votes 24: ↑20 and ↓4+26
Comments3

Сложно о простом. Транспортный уровень (L4) модели OSI

Level of difficultyEasy
Reading time10 min
Views9.7K


Приветствую, коллеги! Меня зовут ProstoKirReal, и сегодня мы продолжим наше путешествие по модели OSI, обсудив транспортный уровень (L4). Этот уровень играет ключевую роль в обеспечении надежной передачи данных.
Читать дальше →
Total votes 25: ↑22 and ↓3+25
Comments11

Тысяча и одна библиотека С++

Reading time65 min
Views24K

В жизни каждого программиста С++ рано или поздно возникает задача, которую кто-либо уже решил. Однако найти это решение бывает очень непросто в силу разных причин: оно недостаточно разрекламировано, либо имеет нечеткую документацию, или возникает проблема языкового барьера, ну, или поисковики просто плохо ищут).

Столкнувшись много раз подряд с тем, что найти что-то толковое довольно непросто, я решил попробовать распутать это узел и предложить для русскоязычных читателей свой справочник классных библиотек на С++. Я исходил из этого источника. Это очень многогранный и объемный список библиотек языка С++, но, скажем так, у меня были к нему вопросы. Потому я сделал перевод, затем значительно улучшил его в плане содержания (далее объясню, как, почему и зачем). На выходе получилось около 1000 библиотек. Как в сказке). Они, конечно, не покрывают все возможные задачи и предметные области, но поверьте, они затрагивают действительно многое.

Прикоснуться к сокровищнице языка С++
Total votes 82: ↑81 and ↓1+92
Comments23

Дом, милый дом: нюансы работы с ClickHouse. Часть 1

Level of difficultyMedium
Reading time12 min
Views14K

Всем привет, меня зовут Пётр, я инженер компании Nixys. На современных проектах используется огромное разнообразие баз данных: реляционные, ключ-значение, документоориентированные. Особое место среди них занимают колоночные базы данных, ярким представителем которых является ClickHouse. Это мощный инструмент, который способен обрабатывать миллиарды строк в секунду при минимальном времени ответа. Однако, для максимальной эффективности ClickHouse необходимо понимать ряд фундаментальных моментов для того, чтобы использовать его по назначению. В этой серии статей мы разберем особенности работы ClickHouse, которые помогут в выжимании максимума из этой базы. И сегодня начнём с фундаментальных теоретических моментов, чтобы составить максимально полное общее впечатление, которое поможет нам в дальнейшем.

Читать далее
Total votes 11: ↑11 and ↓0+11
Comments3

Дом, милый дом: нюансы работы с ClickHouse. Часть 2, репликация

Level of difficultyMedium
Reading time12 min
Views5.4K

Всем привет, меня зовут Пётр. В первой части этого цикла статей мы взглянули на некоторые базовые концепции ClickHouse. В этой же статье продолжим изучать тонкости работы с этой колоночной базой данных и подробно рассмотрим такой аспект как репликация. А ещё разберёмся с сервисами координации Zookeeper и ClickHouse Keeper.

Давайте разбираться!
Total votes 8: ↑8 and ↓0+9
Comments1

Как работают Векторные базы данных и Поиск похожих текстов в них

Level of difficultyEasy
Reading time6 min
Views12K

Если вы когда-нибудь использовали в работе retrieval augmentation generation (RAG) на базе векторного поиска и не лезли туда под капот, но были бы не прочь, я постараюсь погрузить вас в то, как устроена векторная база данных внутри.

Читать далее
Total votes 18: ↑16 and ↓2+18
Comments4

Полное руководство по Suricata: основы и важные команды

Level of difficultyEasy
Reading time10 min
Views5.7K

Введение

Suricata — это многофункциональная и мощная система обнаружения вторжений в сеть (IDS), система предотвращения вторжений (IPS) и инструмент мониторинга сетевой безопасности (NSM). Разработанная Фондом открытой информации безопасности (OISF), Suricata известна своей высокой производительностью и масштабируемостью, что делает её популярной среди специалистов по безопасности для мониторинга и защиты сетевых инфраструктур. Это полное руководство охватывает основы Suricata, её ключевые функции, процесс установки, детали конфигурации и важные команды, чтобы помочь вам максимально использовать её потенциал.

Читать далее
Total votes 5: ↑4 and ↓1+4
Comments4

Материалы для подготовки к собеседованию на позицию Data Scientist. Часть 4: Дизайн систем машинного обучения

Level of difficultyMedium
Reading time8 min
Views6.5K

Привет! Меня зовут Артем. Я работаю Data Scientist'ом в компании МегаФон (платформа для безопасной монетизации данных OneFactor). Мы строим скоринговые (credit scoring), лидогенерационные (lead generation) и антифрод (anti-fraud) модели на телеком данных, а также делаем гео-аналитику (geo-analytics).

В предыдущей статье я поделился материалами для подготовки к этапу по специализированному машинному обучению.

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

Читать далее
Total votes 4: ↑4 and ↓0+4
Comments3

Как в восемь раз уменьшить количество DNS-запросов в Go

Reading time6 min
Views13K

Привет, Хабр. Меня зовут Рустам. Я работаю в Ozon: админю Kubernetes и пишу на Go.

У нас очень много сервисов на Go — их количество исчисляется тысячами. Запускаются они внутри кластеров Kubernetes. А я плотно работаю с Kubernetes и заметил, что при запуске кода внутри Kubernetes для резолва одного адреса делается до десяти DNS-запросов. Это, конечно, влияет на производительность.

Я решил разобраться, как Go делает DNS-запросы. В результате мне удалось уменьшить их количество в наших проектах до одного-двух. Как у меня это получилось и можно ли использовать мой опыт в вашем проекте, я расскажу в статье.

Узнать больше про Go+DNS
Total votes 75: ↑55 and ↓20+51
Comments9

Lock-free структуры данных. Основы: откуда пошли быть барьеры памяти

Reading time22 min
Views96K

Как только я заинтересовался lock-free алгоритмами, меня стал мучить вопрос – а откуда взялась необходимость в барьерах памяти, в «наведении порядка» в коде?
Конечно, прочитав несколько тысяч страниц руководств по конкретной архитектуре, мы найдем ответ. Но этот ответ будет годен для этой конкретной архитектуры. Есть ли общий? В конце концов, мы же хотим, чтобы наш код был портабелен. Да и модель памяти C++11 не заточена под конкретный процессор.
Наиболее приемлемый общий ответ дал мне мистер Paul McKenney в своей статье 2010 года Memory Barriers: a Hardware View of Software Hackers. Ценность его статьи – в общности: он построил некоторую упрощенную абстрактную архитектуру, на примере которой и разбирает, что такое барьер памяти и зачем он был введен.
Вообще, Paul McKenney – известная личность. Он является разработчиком и активным пропагандистом технологии RCU, которая активно используется в ядре Linux, а также реализована в последней версии libcds в качестве ещё одного подхода к безопасному освобождению памяти (вообще, о RCU я хотел бы рассказать отдельно). Также принимал участие в работе над моделью памяти C++11.
Статья большая, я даю перевод только первой половины. Я позволил себе добавить некоторые комментарии, [которые выделены в тексте так].
Передаю слово Полу
Total votes 123: ↑117 and ↓6+111
Comments19

Сложно о простом. Модель OSI и TCP/IP

Level of difficultyEasy
Reading time5 min
Views41K

Приветствую, коллеги! Меня зовут @ProstoKirReal, и я сетевой инженер, который пришел в эту профессию из совершенно другой сферы. На начальном этапе было особенно трудно разобраться в сложных терминах и принципах работы сетевых протоколов и оборудования. Мне захотелось написать цикл статей, посвященных специфике работы сетей и сетевых протоколов. Прежде всего, я делаю это для себя, чтобы наконец разобраться в тех понятиях, которые до конца не понимаю. Надеюсь, эта информация будет полезна и вам, а если нет, то послужит хорошей шпаргалкой для меня самого.

В первой статье цикла я хочу начать с базовых понятий, которые пригодятся всем начинающим сетевым инженерам, студентам и тем, кто связан с сетевыми технологиями. Это модель OSI и TCP/IP. Это база, которую необходимо знать. Вначале мне было трудно запомнить и понять суть этих моделей и их связь с настройками обычного коммутатора. Однако понимание модели OSI облегчает понимание работы различных протоколов и позволяет общаться с коллегами на одном языке. Меня раньше часто поправляли из-за того, что я говорил неправильно, не зная базовых понятий.

Итак, давайте разберемся с базовой информацией.

Модель OSI (Open Systems Interconnection) — это эталонная модель, разработанная для описания функций телекоммуникационных или вычислительных систем, необходимых для сетевого взаимодействия. Она разделяет процесс сетевого взаимодействия на семь взаимосвязанных уровней. Каждый уровень выполняет специфические функции и взаимодействует с уровнями непосредственно выше и ниже.

Читать далее
Total votes 30: ↑27 and ↓3+26
Comments36

Regex engine internals as a library [full]

Level of difficultyHard
Reading time77 min
Views5.2K

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

Если всегда было интересно, как оно там под капотом устроено, а в книге Фриддла или в книге дракона вы не нашли подробностей, то добро пожаловать - будет интересно и очень сложно. Для понимания требуются знания основ теории автоматов (знать и понимать отличия ДКА от НКА) и иметь базовое представление о том, что такое регулярные выражения.

Так же прошу сообщать об ошибках и опечатках, чтобы я мог их исправить.

Прыгнуть в кроличью нору
Total votes 22: ↑20 and ↓2+32
Comments10

Ускоряем std::shared_mutex в 10 раз

Reading time35 min
Views53K
В этой статье мы детально разберем атомарные операции и барьеры памяти C++11 и генерируемые ими ассемблерные инструкции на процессорах x86_64.

Далее мы покажем как ускорить работу contfree_safe_ptr<std::map> до уровня сложных и оптимизированных lock-free структур данных аналогичных по функциональности std::map<>, например: SkipListMap и BronsonAVLTreeMap из библиотеки libCDS (Concurrent Data Structures library): github.com/khizmax/libcds

И такую многопоточную производительность мы сможем получить для любого вашего изначально потоко-небезопасного класса T используемого как contfree_safe_ptr<T>. Нас интересуют оптимизации повышающие производительность на ~1000%, поэтому мы не будем уделять внимание слабым и сомнительным оптимизациям.
Читать дальше →
Total votes 54: ↑54 and ↓0+54
Comments22

Методы расшифровки трафика

Reading time12 min
Views7.7K

Добрый день, дорогие читатели Хабра!

Мы команда специалистов из компании ПМ. Довольно часто к нам приходят заказы на анализ защищенности или тестирование на проникновение веб-ресурсов. Первоначальным этапом при проведении работ является разведка, которая включает в себя анализ принципов работы исследуемого веб-ресурса, обнаружение используемых технологий, окружения и т.д. Одним из методов для осуществления данной задачи является исследование пакетов, отправляемых между веб-клиентом и веб-сервером. Иногда исследование пакетов не составляет особого труда, но бывают случаи, когда это становится нетривиальной задачей. В ситуации, когда речь идет об открытом (незашифрованном) трафике, можно элементарно воспользоваться любым пакетным анализатором, типа Wireshark. Однако в тех случаях, когда применяется шифрование, приходится использовать различные методы для расшифровки. Именно они и будут рассмотрены в данной статье.

Читать далее
Total votes 13: ↑13 and ↓0+17
Comments6

C++17. Функция стандартной библиотеки std::launder и задача девиртуализации

Reading time34 min
Views29K

В этой статье мы попробуем разобраться с одним из самых неоднозначных и непонятных нововведений стандарта C++17 — функцией стандартной библиотеки std::launder. Мы посмотрим на std::launder с другой стороны, посмотрим на источник. Разберем что лежит в основе функции на примере решения задачи девиртуализации и реализации виртуальных указателей в LLVM.


Читать дальше →
Total votes 70: ↑70 and ↓0+70
Comments72

Вы все еще пишете многопоточку на C++ с ошибками синхронизации?

Level of difficultyMedium
Reading time11 min
Views25K
Привет, коллеги! В этой статье я покажу свой подход к написанию многопоточного кода, который помогает избежать типовых ошибок, связанных с использованием базовых примитивов синхронизации.

Демонстрация идеи будет проходить на живых примерах кода на современном C++. Большинство описанных решений я применял сначала на собственных проектах, а теперь часть этих подходов уже используется в нашей собственной микроядерной операционной системе «Лаборатории Касперского» (KasperskyOS).

Сразу хочу оговориться, что тема многопоточности — очень большая и серьезная. И эта статья — не полноценный анализ проблем многопоточки, а только частНЫе (но довольно частЫе) кейсы, когда мы вынуждены использовать мьютексы.
Читать дальше →
Total votes 53: ↑47 and ↓6+57
Comments148

STL, allocator, его разделяемая память и её особенности

Reading time11 min
Views12K

Разделяемая память — самый быстрый способ обмена данными между процессами. Но в отличие от потоковых механизмов (трубы, сокеты всех мастей, файловые очереди ...), здесь у программиста полная свобода действий, в результате пишут кто во что горазд.

Так и автор однажды задался мыслью, а что если … если произойдёт вырождение адресов сегментов разделяемой памяти в разных процессах. Вообще-то именно это происходит, когда процесс с разделяемой памятью делает fork, а как насчет разных процессов? Кроме того, не во всех системах есть fork.

Казалось бы, совпали адреса и что с того? Как минимум, можно пользоваться абсолютными указателями и это избавляет от кучи головной боли. Станет возможно работать со строками и контейнерами С++, сконструированными из разделяемой памяти.

Отличный, кстати, пример. Не то, чтобы автор сильно любил STL, но это возможность продемонстрировать компактный и всем понятный тест на работоспособность предлагаемой методики. Методики, позволяющей (как видится) существенно упростить и ускорить межпроцессное взаимодействие. Вот работает ли она и чем придётся заплатить, будем разбираться далее.
Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments2
1
23 ...

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

Software Architect, Pentester
Lead
Git
C++
Algorithms and data structures
Software development
Multiple thread
Code Optimization
Maths
Big data
Applied math
C++ STL