Как стать автором
Обновить
0
0
Никита Козлов @niakrisn

Пользователь

Отправить сообщение

DDoS в обход Куратора: простые действия для спокойной жизни

Время на прочтение8 мин
Количество просмотров19K

Недавно в Москве прошла вторая конференция по эксплуатации и администрированию информационных систем Uptime.commuinty, на которой мы тоже поделились своим опытом. У нас, как обычно, о наболевшем — про DDoS.



DDoS-атаки на Хабр начались лет десять назад и до сих пор представляют для нас неприятную проблему. Сначала были робкие попытки чуть-чуть подзалить, а сейчас для нас обычный DDoS — это порядка 30 Гбит/с. Это и не удивительно, потому что сейчас у каждой бабушки в Москве есть 50Мб. Всё по классике: одна старушка — 50, 10 старушек — 500…

Читать дальше →
Всего голосов 61: ↑56 и ↓5+51
Комментарии18

Как написать свой первый Linux device driver. Часть 2

Время на прочтение10 мин
Количество просмотров14K
Привет хаброчитателям!

В предыдущей части мы рассмотрели базовые структуры, а также написали инициализацию и удаление устройства.

В данной статье мы добавим в наш драйвер функции открытия scull_open, чтения/записи scull_read/scull_write и получим первый рабочий драйвер устройства.



Хочу выразить благодарность всем пользователям, которые прочитали, лайкнули и прокомментировали мою предыдущую статью. Отдельное спасибо за уточнения Kolyuchkin и dlinyj.



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

Сразу к делу!
Читать дальше →
Всего голосов 17: ↑15 и ↓2+13
Комментарии3

Теория и практика парсинга исходников с помощью ANTLR и Roslyn

Время на прочтение23 мин
Количество просмотров40K

В нашем проекте PT Application Inspector реализовано несколько подходов к анализу исходного кода на различных языках программирования:


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

Наш цикл статей посвящен структуре и принципам работы модуля сигнатурного поиска (PM, pattern matching). Преимущества такого анализатора — скорость работы, простота описания шаблонов и масштабируемость на другие языки. Среди недостатков можно выделить то, что модуль не в состоянии анализировать сложные уязвимости, требующие построения высокоуровневых моделей выполнения кода.



К разрабатываемому модулю были, в числе прочих, сформулированы следующие требования:


  • поддержка нескольких языков программирования и простое добавление новых;
  • поддержка анализа кода, содержащего синтаксические и семантические ошибки;
  • возможность описания шаблонов на универсальном языке (DSL, domain specific language).

В нашем случае все шаблоны описывают какие-либо уязвимости или недостатки в исходном коде.


Весь процесс анализа кода может быть разбит на следующие этапы:


  1. парсинг в зависимое от языка представление (abstract syntax tree, AST);
  2. преобразование AST в независимый от языка унифицированный формат;
  3. непосредственное сопоставление с шаблонами, описанными на DSL.

Данная статья посвящена первому этапу, а именно: парсингу, сравнению функциональных возможностей и особенностей различных парсеров, применению теории на практике на примере грамматик Java, PHP, PLSQL, TSQL и даже C#. Остальные этапы будут рассмотрены в следующих публикациях.

Читать дальше →
Всего голосов 37: ↑34 и ↓3+31
Комментарии19

Перенос «физической» или MS Virtual PC на XenServer

Время на прочтение2 мин
Количество просмотров16K
Это повествование – академическое и возможно не имеющее практической ценности, тем не менее «Howto...»
Исходными данными для конвертации в формат XVA (XenServer Virtual Appliance) будет VHD (Virtual Hard Disk) и VMC (Virtual Machine Config). Сделаем из физической машины виртуальную:
Читать дальше →
Всего голосов 6: ↑4 и ↓2+2
Комментарии7

Избранные места из популярного учебника микроэлектроники на русском, который наконец-то выходит на бумаге

Время на прочтение3 мин
Количество просмотров32K
Год назад вышло бесплатное электронное издание на русском языке всеохватного вводного учебника Дэвида Харриса и Сары Харрис «Цифровая схемотехника и архитектура компьютера». Книга попала в струю, ее скачивания завалили британский сайт Imagination Technologies (дважды — 1, 2), после чего учебник стали использовать преподаватели московских МФТИ, МГТУ, питерского ИТМО, киевского КНУ, КПИ и других вузов. Интересной особенностью учебника является то, что его перевод на русский сделала группа энтузиастов: преподавателей российских и украинских университетов, русских сотрудников компаний в Silicon Valley (AMD, Synopsys, Apple, NVidia ...) и российских компаний (НИИСИ, МЦСТ, Модуль ...).

При этом, электронное издание Харрис-энд-Харрис сформатировано для планшета, и уже после первых скачиваний посыпались емейлы, когда же учебник будет и на бумаге. И вот час настал — Учебник Дэвида Харриса и Сары Харрис «Цифровая схемотехника и архитектура компьютера» можно заказать на бумаге (выходит в новогоднюю ночь). В этом посте я покажу, чем этот учебник отличается от других. Бонус: фотки участников и участниц проекта!



Есть много учебников, которые хорошо вводят в цифровую логику на уровне триггеров и мультиплексоров, или в программирование готовых микроконтроллеров на ассемблере, или показывают красивые диаграммы процессорных конвейеров, или обучают синтаксису Verilog или VHDL. Но если учить скажем микроархитектуре без HDL, или если например пропускать уровни между триггером и программированием микроконтроллера, то получатся студенты, которые могут сдать экзамен и спорить умными словами в интернете, но ничего не могут сделать практически.

Учебник H&H решает эту проблему:
Всего голосов 47: ↑44 и ↓3+41
Комментарии39

Визуализация атак, аномалий и нарушений информационной безопасности с помощью OpenGraphiti

Время на прочтение6 мин
Количество просмотров13K
Тех, кто посещает нашу штаб-квартиру с Сан-Хосе всегда поражает большая видео-стена, отображающая картину атак в реальном времени с возможностью детализации после прикосновения к определенным областям экрана.

Интерактивная стена безопасности в офисе Cisco

Однако как и любая карта атак, а у меня в коллекции их уже 34, любая такая визуализация малоэффективна в реальной жизни. Показать начальству, показать журналистам, включить в какой-либо ролик… Это все полезно, но в практической деятельности применимо мало. Обычно у вас собственные наборы данных, которые генерятся вашими средствами защиты. И вам интересно то, что происходит в вашей сети или направлено на вашу сеть, но уж точно не красивые карты с “ударами баллистических ракет”, которые рисуются абсолютным большинством компаний, предоставляющих сервисы визуализации атак.
Читать дальше →
Всего голосов 15: ↑14 и ↓1+13
Комментарии4

Прогноз времени выполнения типовых последовательных «тяжелых» вычислений в многопроцессорной системе в условиях непрогнозируемого поступления заявок

Время на прочтение6 мин
Количество просмотров5.2K
Идея написания первой статьи на Хабр возникла в процессе «собирания камней» для создания серверной системы, основные задачи которой:

  • получение заявок от пользователей на некоторые типовые последовательные «тяжелые» вычисления;
  • осуществление вычислений;
  • выдача информации (по запросу) об оставшемся времени вычислений;
  • выдача результатов вычислений по их завершению.


Следует уточнить ряд обстоятельств исследования:

  • под последовательным вычислением будем понимать вычисление, которое осуществляется не более чем одним ядром процессора (нераспараллеливаемый процесс), т.к. на данном этапе создания системы задача распараллеливания самих вычислений не стоит. В дальнейшем слово «последовательное» будем опускать;
  • вычисления являются типовыми, т.е. используется один и тот же алгоритм для рассчетов, время выполнения которого для заданной вычислительной системы преимущественно зависит от размерности исходных данных (размерность обозначим числом N), а не от их фактических значений;
  • вычисления предполагаются преимущественно «тяжелыми», что требует существенное время на выполнение (от секунд до часов и, возможно, более);
  • предполагается неизвестным характер изменения интенсивности заявок на вычисления и соответствующие им значения размерностей N.

Читать дальше →
Всего голосов 13: ↑11 и ↓2+9
Комментарии8

На GitHub опубликован исходный код компактного гипервизора

Время на прочтение2 мин
Количество просмотров33K
Известный гуру внутреннего устройства Windows и архитектуры ARM Алекс Ионеску опубликовал на ресурсе GitHub исходный текст базовой части гипервизора (инструмент виртуализации). Гипервизор содержит в себе множество замечательных свойств, включая, компактный размер, поддержку современных архитектур микропроцессоров, минимальное использование ассемблера в исходных текстах, а также комментарии по его использованию. При его разработке упор делался на максимальную компактность.



Опубликованный проект является настоящей находкой для системных программистов, а также исследователей по безопасности, которые интересуются низкоуровневыми функциями ОС. Гипервизор получил название SimpleVisor, поддерживает только современные 64-битные системы и был успешно протестирован на совместимость с такими системами как Windows 8.1 на микропроцессоре архитектуры Intel Haswell, а также Windows 10 на архитектуре Intel Sandy Bridge.

Читать дальше →
Всего голосов 33: ↑30 и ↓3+27
Комментарии37

Знакомьтесь, loop fracking

Время на прочтение15 мин
Количество просмотров13K
image

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

Автор назвал эту технику “loops fracking” по аналогии с, например, “loops unrolling” или “loops nesting”. Тем более, что термин отражает смысл и не занят.
Читать дальше →
Всего голосов 19: ↑18 и ↓1+17
Комментарии29

Git для профессионального программиста

Время на прочтение4 мин
Количество просмотров50K
Привет, Хаброжители!
У нас вышла новая книга С. Чакона и Б. Страуба

image

Эта книга представляет собой обновленное руководство по использованию Git в современных условиях. С тех пор как проект Git — распределенная система управления версиями — был создан Линусом Торвальдсом, прошло много лет, и система Git превратилась в доминирующую систему контроля версий, как для коммерческих целей, так и для проектов с открытым исходным кодом. Эффективный и хорошо реализованный контроль версий необходим для любого успешного веб-проекта. Постепенно эту систему приняли на вооружение практически все сообщества разработчиков ПО с открытым исходным кодом. Появление огромного числа графических интерфейсов для всех платформ и поддержка IDE позволили внедрить Git в операционные системы семейства Windows. Второе издание книги было обновлено для Git-версии 2.0 и уделяет большое внимание GitHub.
Читать дальше →
Всего голосов 33: ↑28 и ↓5+23
Комментарии41

Текстовый интерфейс, ч.2. Взаимодействие с пользователем

Время на прочтение9 мин
Количество просмотров24K
Итак, вторая часть. Здесь я раскрою как получить информацию от пользователя, а так же о манипуляции этими данными. Тут можно затронуть вопрос, поднятый в комментариях к предыдущему посту — «А зачем это все нужно?». Примерами применения таких интерфейсов в 21-м веке являются различные аплаянсы на виртуальных машинах, которые реализуют отдельные сервисы. Чаще всего они представляют из себя минимальный дистрибутив Linux или набор загружаемое ядро + busybox. С помощью такого интерфейса можно реализовать некий фронтэнд для сервиса, позволяющий одним взглядом определить состояние основных узлов или выполнить некие операции в удобной для пользователя форме. Примером можно назвать подобные фронтэнды у VMware ESXi (vDirector, vCenter etc), Citrix Xen, которые сочетают как мощь web-интерфейса, так и TUI как резервного интерфейса и/или интерфейса настройки/диагностики. Переключаясь по десяткам машин можно одним взглядом увидеть, все ли в порядке или быстро узнать IP адрес, полностью заблокировав юзеру доступ к консоли, показывая ему только то, что ему достаточно знать (foolproof).

Read more
Всего голосов 47: ↑42 и ↓5+37
Комментарии16

Теплый ламповый текстовый интерфейс. Просто о простом

Время на прочтение5 мин
Количество просмотров59K
Периодически просматривая топики на хабре, постоянно ловлю себя на мысли, что ещё чуть-чуть и какой-нибудь нейроинтерфейс в ноутбуке станет реальностью. В работе постоянно натыкаюсь на то, что современные люди не очень понимают и любят простую командную строку. А читать мануалы им тем более лень.
Но в моей практике часто случается так, что нужна небольшая утилита, выполняющая одну или две функции. А где именно она будет выполняться — неизвестно. Это может быть Windows, это может быть исключительно терминальный линукс, загрузочная медия — что угодно. Я не программист, но иногда бывает нужно облегчить жизнь себе или другим. И желательно как можно более наглядно. Сначала я пробовал делать просто консольные утилиты. Собственно, с этого, наверное, начинают все. Но очень быстро оказалось, что средствами printf/sprintf/puts и прочими (а пишу я на С) не очень удобно форматировать текст, выводить какую-то информацию. Окно с постоянным «скроллингом» выглядит не очень красиво, и если информации много — абсолютно нечитаемо. Тогда я вспомнил про ncurses.

Читать дальше →
Всего голосов 112: ↑101 и ↓11+90
Комментарии42

nxweb – HTTP сервер для приложений на Си

Время на прочтение10 мин
Количество просмотров16K
nxweb – это новый встраиваемый высокопроизводительный веб-сервер для приложений на Си. По функциональности это фреймворк для написания обработчиков HTTP запросов. Аналоги: G-WAN/libevent/Mongoose, Apache/mod_<ваш любимый язык>, Tomcat, Node.js. Разработчик – Ярослав Ставничий. Меня проект заинтересовал прежде всего тем, что он представляет реальную альтернативу существующим решениям, каждое из которых обладает своими недостатками. Выбор – это хорошо. Возможно, и вам понравится сочетание особенностей, плюсов и минусов этого сервера.

Под катом подробная информация о проекте из интервью с разработчиком.
Читать дальше →
Всего голосов 28: ↑21 и ↓7+14
Комментарии24

Захват пакетов в Linux на скорости десятки миллионов пакетов в секунду без использования сторонних библиотек

Время на прочтение8 мин
Количество просмотров86K
Моя статья расскажет Вам как принять 10 миллионов пакетов в секунду без использования таких библиотек как Netmap, PF_RING, DPDK и прочие. Делать мы это будем силами обычного Линукс ядра версии 3.16 и некоторого количества кода на С и С++.



Сначала я хотел бы поделиться парой слов о том, как работает pcap — общеизвестный способ захвата пакетов. Он используется в таких популярных утилитах как iftop, tcpdump, arpwatch. Кроме этого, он отличается очень высокой нагрузкой на процессор.

Итак, Вы открыли им интерфейс и ждете пакетов от него используя обычный подход — bind/recv. Ядро в свою очередь получает данные из сетевой карты и сохраняет в пространстве ядра, после этого оно обнаруживает, что пользователь хочет получить его в юзер спейсе и передает через аргумент команды recv, адрес буфера куда эти данные положить. Ядро покорно копирует данные (уже второй раз!). Выходит довольно сложно, но это не все проблемы pcap.

Кроме этого, вспомним, что recv — это системный вызов и вызываем мы его на каждый пакет приходящий на интерфейс, системные вызовы обычно очень быстры, но скорости современных 10GE интерфейсов (до 14.6 миллионов вызовов секунду) приводят к тому, что даже легкий вызов становится очень затратным для системы исключительно по причине частоты вызовов.

Также стоит отметить, что у нас на сервере обычно более 2х логических ядер. И данные могут прилететь на любое их них! А приложение, которое принимает данные силами pcap использует одно ядро. Вот тут у нас включаются блокировки на стороне ядра и кардинально замедляют процесс захвата — теперь мы занимаемся не только копированием памяти/обработкой пакетов, а ждем освобождения блокировок, занятых другими ядрами. Поверьте, на блокировки может зачастую уйти до 90% процессорных ресурсов всего сервера.

Хороший списочек проблем? Итак, мы их все геройски попробуем решить!
Читать дальше →
Всего голосов 113: ↑112 и ↓1+111
Комментарии77

Релиз FastNetMon 1.1.2 открытого решения для мониторинга DoS/DDoS атак

Время на прочтение3 мин
Количество просмотров27K
За прошедшие почти 10 месяцев с релиза 1.0.0 была очень большая работа по улучшению программы.

Из основных изменений стоит отметить следующие:
  • Возможность выявлять самые популярные виды атак: syn_flood, icmp_flood, udp_flood, ip_fragmentation_flood
  • Добавление поддержки протокола Netflow, поддерживаются 5, 9 и 10 (IPFIX) версии
  • Добавление поддержки протокола sFLOW v5, который поддерживается большинством современных сетевых коммутаторов
  • Добавлена поддержка использования netmap (поддерживаются Linux и FreeBSD, для Linux предоставляется специальная версия драйвера ixgbe: github.com/pavel-odintsov/ixgbe-linux-netmap) для захвата пакетов. Данный режим обеспечивает наивысшую производительность захвата трафика наряду с PF_RING ZC.
  • Добавлена поддержка PF_RING ZC (к сожалению, этот режим требует отдельной лицензии на библиотеку PF_RING)


Читать дальше →
Всего голосов 30: ↑29 и ↓1+28
Комментарии25

Самая медленная инструкция x86

Время на прочтение3 мин
Количество просмотров37K
Все знают и любят ассемблер x86. Большинство его инструкций современный процессор исполняет за единицы или доли наносекунд. Некоторые операции, которые декодируются в длинную последовательность микрокода, или ожидающие доступа к памяти могут исполняться намного дольше — до сотен наносекунд. Этот пост — о рекордсменах. Хит парад из четырех инструкций под катом, но для тех, кому лень читать весь текст, я напишу здесь, что главный злодей — [memory]++ при определенных условиях.

image

КПДВ взята из документа Агнера Фога, который, наряду с двумя документами от Intel (optimization guide и architecture software development manual) содержат много полезного и интересного по теме.
Читать дальше →
Всего голосов 45: ↑45 и ↓0+45
Комментарии28

Забудьте САР теорему как более не актуальную

Время на прочтение12 мин
Количество просмотров65K
или «Прекратите характеризовать хранилища данных как CP или AP»

capДжеф Ходжес в своем прекрасном посте «Заметки о распределенных системах для новичков» рекомендует использовать САР теорему для критики найденных решений. Многие, похоже, восприняли этот совет слишком близко к сердцу, описывая свои системы как «СР» (согласованность данных, но без постоянной доступности при сетевой распределенности), «АР» (доступность без согласованного состояния при сетевой распределенности), или иногда «СА» (означает «Я всё ещё не читал статью Коды (Coda Hale) почти 5-летней давности»).

Я согласен со всеми пунктами статьи кроме того, что касается САР теоремы. Она слишком всё упрощает и слишком многие понимают её неверно для того, чтобы использовать для определения характеристик системы. Так что я прошу перестать ссылаться на САР теорему, говорить о ней и дать ей уже спокойно уйти на покой. Вместо неё мы должны использовать более точную терминологию для обсуждения различных компромиссов.

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

САР использует слишком узкое определение


Если вы хотите ссылаться на САР как на теорему (а не на расплывчатый концепт в маркетинговых материалах к вашей базе данных), вы должны быть точны. Математика требует точности. Доказательство сохраняется только если вы вкладывается в слова, то же самое значение, что было использовано при доказательстве. И оно опирается на очень точные определения:
Еще 3000 слов увлекательного чтива
Всего голосов 70: ↑66 и ↓4+62
Комментарии23

Wiren Board 4 — контроллер для автоматизации

Время на прочтение4 мин
Количество просмотров60K
image

Год назад мы выпустили контроллер Wiren Board Smart Home. Благодаря невысокой цене и широким возможностям он имел успех среди энтузиастов.

Поэтому мы решили не останавливаться и выпустили новую версию — контроллер для автоматизации Wiren Board 4, к которому написали и новый софт.

Несмотря на название, покупатели часто использовали Wiren Board Smart Home и для совсем не “домашних” задач: сбора климатических параметров, опроса счётчиков и датчиков, удалённого контроля оборудования — то есть в качестве универсального логического контроллера.

Wiren Board 4 (как в железе, так и в ПО) лучше приспособлен для таких задач. Домашних пользователей это тоже коснулось — контроллер стал надёжнее.
Читать дальше →
Всего голосов 50: ↑47 и ↓3+44
Комментарии83

Машинное обучение — 4: Скользящее среднее

Время на прочтение3 мин
Количество просмотров31K
Принято считать, что две базовые операции «машинного обучения» — это регрессия и классификация. Регрессия — это не только инструмент для выявления параметров зависимости y(x) между рядами данных x и y (чему я уже посвятил несколько статей), но и частный случай техники их сглаживания. В этом примере мы пойдем чуть дальше и рассмотрим, как можно проводить сглаживание, когда вид зависимости y(x) заранее неизвестен, а также, как можно отфильтровать данные, которые контролируются разными эффектами с существенно разными временными характеристиками.

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



Читать дальше →
Всего голосов 15: ↑12 и ↓3+9
Комментарии13

Линейная алгебра: пробный заезд

Время на прочтение7 мин
Количество просмотров143K
Привет, Хабр!

Аналит, линейка, линал — эти слова ассоциируются скорее с фразой «сдать и забыть», а не с тем, для чего на самом деле нужен замечательный раздел математики под названием линейная алгебра. Давайте попробуем посмотреть на него с разных сторон и разберемся, что же в нем хорошего и почему он так полезен в приложениях.

Часто первое знакомство с линейной алгеброй выглядит как-то так:

image

Не очень вдохновляет, правда? Сразу возникает два вопроса: откуда это все взялось и зачем оно нужно.

Начнем с практики


Когда я занимался вычислительной гидродинамикой (CFD), один из коллег говорил: «Мы не решаем уравнения Навье-Стокса. Мы обращаем матрицы.» И действительно, линейная алгебра — «рабочая лошадка» вычислительной математики:


Читаем дальше...
Всего голосов 36: ↑35 и ↓1+34
Комментарии15
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность