Pull to refresh
14
0
Виктор Карташов @GreatMerlin

Разработчик ПО

Send message

Systemd за пять минут

Reading time4 min
Views624K
Наша компания занимается администрированием веб-серверов на базе CentOS. Довольно часто наши клиенты используют веб-приложения на базе python, ruby или java. Для автозапуска подобных приложений есть готовые шаблоны для написания стартап-скриптов. Но прогресс не стоит на месте, вышел уже второй релиз CentOS 7 и, следуя старой традиции «не ставить dot-zero релизы на продакшен», мы начинаем предлагать клиентам сервера на базе CentOS 7.1 (1503).

В CentOS7, так же как и в его родителе RHEL7, используется systemd — менеджер системы и служб для Linux, совместимый со скриптами инициализации SysV и LSB. systemd обеспечивает возможности агрессивной параллелизации и много всего прочего.

image

Огромный монстр с множеством возможностей, гибкими настройками и мегабайтами документации…

Но что делать, если стоит задача быстро-быстро, вот прямо вчера, сделать автозапуск некоего сервиса?
Давайте выжмем из документации минимально необходимый набор информации для создания простых старт-стоп скриптов.
Знакомство с systemd
Total votes 70: ↑66 and ↓4+62
Comments58

Аудио через Bluetooth: максимально подробно о профилях, кодеках и устройствах

Reading time26 min
Views615K
Комикс XKCD про 14 конкурирующих стандартов: Надпись: СИТУАЦИЯ: есть 14 конкурирующих стандартов. Гик: 14?! Абсурд! Нам необходимо разработать один универсальный стандарт, на все случаи жизни. Спутница гика: Да! Надпись: Скоро: СИТУАЦИЯ: Есть 15 конкурирующих стандартов.

This article is also available in English

Из-за массового выпуска смартфонов без аудиоразъема 3.5 мм беспроводные Bluetooth-наушники для многих стали основным способом прослушивания музыки и общения в режиме гарнитуры.
Производители беспроводных устройств не всегда пишут подробные характеристики товара, а статьи о Bluetooth-аудио в интернете противоречивы, местами некорректны, не рассказывают о всех особенностях, и часто копируют одну и ту же не соответствующую действительности информацию.
Попробуем разобраться с протоколом, возможностями Bluetooth-стеков ОС, наушников и колонок, Bluetooth-кодеков для музыки и речи, выясним, что влияет на качество передаваемого звука и задержку, научимся собирать и декодировать информацию о поддерживаемых кодеках и других возможностях устройств.

TL;DR:
  • SBC — нормальный кодек
  • У наушников есть свой эквалайзер и пост-процессинг на каждый кодек отдельно
  • aptX не настолько хорош, как о нём говорят рекламные анонсы
  • LDAC — маркетинговое фуфло
  • Качество звука в режиме разговора всё ещё низкое
  • В браузер можно встроить аудиоэнкодеры на C, скомпилировав в WebAssembly через emscripten, и они не будут особо тормозить.

Total votes 175: ↑171 and ↓4+167
Comments180

Разработка и применение модуля PAM для аутентификации в Astra Linux с использованием Рутокен ЭЦП и Рутокен S

Reading time13 min
Views48K


В этой статье мне бы хотелось рассказать о том, как приложения в Linux могут использовать систему Подключаемых Модулей Безопасности (Pluggable Authentication Modules) для прозрачной аутентификации пользователей. Мы немного покопаемся в истории развития механизмов аутентификации в Linux, разберемся с системой настроек PAM и разберем исходный код модуля аутентификации pam_p11, который позволяет проводить аутентификацию пользователей по смарт-картам.
В конце статьи мы рассмотрим на практике настройку и работу модуля аутентификации в сертифицированном по 3 классу защищенности СВТ и 2 уровню контроля отсутствия недекларированных возможностей дистрибутиве Astra Linux для аутентификации по USB-токенам Рутокен ЭЦП и Рутокен S. Учитывая то, что Рутокен S имеет сертификаты ФСТЭК по НДВ 3, а Рутокен ЭЦП по НДВ 4, это решение может применяться в информационных системах, обрабатывающих конфиденциальную информацию, вплоть до информации с грифом «С».
Читать дальше →
Total votes 27: ↑23 and ↓4+19
Comments7

Пишем модуль безопасности Linux

Reading time5 min
Views16K
Linux Security Modules (LSM) — фреймворк, добавляющий в Linux поддержку различных моделей безопасности. LSM является частью ядра начиная с Linux версии 2.6. На данный момент в официальном ядре «обитают» модули безопасности SELinux, AppArmor, Tomoyo и Smack.

Работают модули параллельно с «родной» моделью безопасности Linux — избирательным управлением доступом (Discretionary Access Control, DAC). Проверки LSM вызываются на действия, разрешенные DAC.

Применять механизм LSM можно по-разному. В большинстве случаев это добавление мандатного управления доступом (как, например, в случае с SELinux). Кроме того, можно придумать собственную модель безопасности, реализовать ее в виде модуля и легко внедрить, используя фреймворк. Рассмотрим для примера реализацию модуля, который будет давать права на действия в системе при наличии особого USB-устройства.

Поглядим на схему и попытаемся разобраться, как работает хук LSM (на примере системного вызова open).


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

Тяжелое расставание с Net-Tools

Reading time7 min
Views100K

Не секрет, что Net-Tools пора на почетную отставку. Да, многим админам и мне в том числе, до условного рефлекса Павлова знакомы команды ifconfig, route, netstat. На первый взгляд нет причин что-то менять, а лучшее как всегда враг хорошего.




Давайте узнаем почему Net-Tools уже не тот и как безболезненно с него перейти на iproute2 .

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

Локализация комментариев в коде. Лекция Яндекса

Reading time8 min
Views26K
В процессе выхода на международный рынок с API Карт мы решили отказаться от комментирования кода на русском языке. При этом на основе комментариев формируются справочники сервиса, которые затем публикуются у нас на портале, и отказываться от поддержки справочников на русском языке мы не хотели. Из доклада Олеси Горбачевой и Максима Горкунова вы узнаете, как технические писатели Яндекса совместно с разработчиками API Карт поменяли язык комментариев и организовали синхронную поддержку справочников и примеров сразу на двух языках.


Total votes 47: ↑43 and ↓4+39
Comments30

Как программистам не дают больше ничем заниматься

Reading time3 min
Views56K


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

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

Но как только я упоминаю, что пишу код, то становлюсь «разработчиком». Всё, точка. Теперь обязательно нужно назначать менеджера проекта, который определит мне задание. Кто-то напишет техническое задание, по которому я должен дать оценку времени выполнения. Я больше не говорю с клиентами и должен периодически отчитываться о выполненной работе.

Это очень любопытный феномен, который я наблюдал неоднократно, во многих ситуациях и организациях, и не только со мной. Дошло до того, что теперь в некоторых проектах я активно избегаю писать код (или притворяюсь, что не умею), потому что хочу добиться доверия со стороны пользователя или заказчика (например), чтобы он разрешил мне заниматься планированием и составлением технических заданий. Но как только я что-нибудь напишу, то сразу становлюсь в команде «разработчиком». И останусь им навсегда.
Читать дальше →
Total votes 106: ↑93 and ↓13+80
Comments127

Сборка проектов с GitLab CI: один .gitlab-ci.yml для сотни приложений

Reading time8 min
Views74K


В статье решается задача управления описанием сборки для большого количества однотипных приложений. Чтобы в проекте заработал GitLab CI, нужно в репозиторий добавить файл .gitlab-ci.yml. Но что, если в сотне репозиториев это файл с одинаковым содержимым? Даже если разложить его по репозиториям один раз, то как его потом изменять? А что, если одного .gitlab-ci.yml мало для сборки — нужны Dockerfile или Dappfile, разные скрипты и структура YAML-файлов для Helm? Как обновлять их?

С чего начать решение задачи по сборке сотни однотипных приложений? Конечно же, посмотреть, можно ли GitLab CI указать использовать .gitlab-ci.yml из другого репозитория или компоновать .gitlab-ci.yml из файлов в других репозиториях…
Читать дальше →
Total votes 37: ↑35 and ↓2+33
Comments7

Как мы на FPGA AES ускоряли: разработка драйвера

Reading time12 min
Views13K

Недавно мы применили плату Ethond в качестве мини-роутера и запустили на нём OpenVPN.


Но обнаружилось, что процессор часто нагружается на 100%, а скорость не поднимается выше 15-16 Мбит/с. На канале связи 100 мегабит это очень мало, поэтому мы решили ускорить процесс аппаратно.


Ребята из группы FPGA-разработчиков сделали прошивку на базе открытого IP-core для Altera CycloneV с реализацией шифра AES-128, которая умеет шифровать 8 Гбит/сек и дешифровать 700 Мбит/сек. Для сравнения, программа openssl на CPU (ARM Cortex A9) того же CycloneV может обрабатывать лишь около 160 Мбит/сек.


Эта статья посвящена нашему исследованию по применению аппаратного шифрования AES. Мы сжато представим описание криптографической инфраструктуры в Linux и опишем драйвер (исходный код открыт и доступен на github), который осуществляет обмен между FPGA и ядром. Реализация шифрования на FPGA не является темой статьи — мы описываем лишь интерфейс, с которым происходит взаимодействие c акселератором со стороны процессора.


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

Наш рецепт отказоустойчивого VPN-сервера на базе tinc, OpenVPN, Linux

Reading time9 min
Views45K


Один из наших клиентов попросил разработать отказоустойчивое решение для организации защищенного доступа к его корпоративному сервису. Решение должно было:

  • обеспечивать отказоустойчивость и избыточность;
  • легко масштабироваться;
  • просто и быстро решать задачу добавления и блокировки пользователей VPN;
  • балансировать нагрузку между входными нодами;
  • одинаково хорошо работать для клиентов на GNU/Linux, Mac OS X и Windows;
  • поддерживать клиентов, которые находятся за NAT.

Готовых решений, удовлетворяющих всем поставленным условиям, не нашлось. Поэтому мы собрали его на базе популярных Open Source-продуктов, а теперь с удовольствием делимся полученным результатом в этой статье.
Читать дальше →
Total votes 27: ↑24 and ↓3+21
Comments26

3 необычных кейса о сетевой подсистеме Linux

Reading time6 min
Views54K

В этой статье представлены три небольшие истории, которые произошли в нашей практике: в разное время и в разных проектах. Объединяет их то, что они связаны с сетевой подсистемой Linux (Reverse Path Filter, TIME_WAIT, multicast) и иллюстрируют, как глубоко зачастую приходится анализировать инцидент, с которым сталкиваешься впервые, чтобы решить возникшую проблему… и, конечно, какую радость можно испытать в результате полученного решения.
Читать дальше →
Total votes 39: ↑36 and ↓3+33
Comments18

Нефункциональные требования к программному обеспечению. Часть 1

Reading time10 min
Views333K

Введение


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

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

итак, все о НФТ
Total votes 19: ↑19 and ↓0+19
Comments56

Эти токсичные, токсичные собеседования

Reading time8 min
Views104K


Всё началось, когда автор Ruby on Rails признался миру:

Total votes 205: ↑197 and ↓8+189
Comments734

Анатомия IPsec. Проверяем на прочность легендарный протокол

Reading time13 min
Views188K


В современном мире различные VPN-технологии используются повсеместно. Некоторые (например, PPTP) со временем признаются небезопасными и постепенно отмирают, другие (OpenVPN), наоборот, с каждым годом наращивают обороты. Но бессменным лидером и самой узнаваемой технологией для создания и поддержания защищенных частных каналов по-прежнему остается IPsec VPN. Иногда при пентесте можно обнаружить серьезно защищенную сеть с торчащим наружу лишь пятисотым UDP-портом. Все остальное может быть закрыто, пропатчено и надежно фильтроваться.

В такой ситуации может возникнуть мысль, что здесь и делать-то особо нечего. Но это не всегда так. Кроме того, широко распространена мысль, что IPsec даже в дефолтных конфигурациях неприступен и обеспечивает должный уровень безопасности. Именно такую ситуацию сегодня и посмотрим на деле. Но вначале, для того чтобы максимально эффективно бороться c IPsec, нужно разобраться, что он собой представляет и как работает. Этим и займемся!
Читать дальше →
Total votes 25: ↑23 and ↓2+21
Comments13

VPN везде и всюду: IPsec без L2TP со strongSwan

Reading time10 min
Views321K
image
достаточно сильный лебедь

Если вы когда-либо искали VPN, который будет работать на десктопах, мобильных устройствах и роутерах без установки дополнительного ПО и перепрошивки роутера, вы, вероятно, выбирали между PPTP и L2TP+IPsec. У протокола PPTP имеются проблемы с безопасностью и прохождением через брандмауеры и NAT, так что в 2015 году его уже использовать не стоит, а использование L2TP излишне, т.к. L2 VPN, по моему мнению, для обычного удаленного доступа не нужен практически никогда.

Удивительно, что в интернете не так-то просто можно найти информацию о настройке чего-то помимо L2TP+IPsec в транспортном режиме, учитывая, что это обширный стек протоколов, который можно конфигурировать буквально как душе угодно, поэтому я попытаюсь устранить такое несовершенство мира.

Небольшое введение в мир IPsec

Вообще говоря, не совсем правильно называть IPsec VPN. IPsec не предназначен для построения «виртуальных частных сетей», а создан для шифрования или защиты от подмены передаваемых по IP данных. Это специальный слой поверх IP, который, в зависимости от режима и настроек, работает по-разному. В отличие от привычного VPN, который создает новый интерфейс в системе, на который вы, как это чаще всего бывает, назначаете IP-подсеть из диапазона частных адресов (т.е. создаете новый сетевой сегмент), и через который маршрутизируется трафик в зашифрованном виде, IPsec просто шифрует трафик магическим образом между «внешними» интерфейсами сервера и клиента.
Читать дальше →
Total votes 50: ↑49 and ↓1+48
Comments166

Криптографический облачный сервис PKCS#11: от мифа к реальности

Reading time6 min
Views13K
imageВ 2016 году была опубликована статья «Облачный токен PKCS#11 – миф или реальность?». Прошло полгода и вот на просторах Интернет появилось облако (облачный сервис), в котором желающие могут получить персональный облачный токен PKCS#11 с поддержкой российской криптографии.
Читать дальше →
Total votes 8: ↑6 and ↓2+4
Comments10

Зрение ИТ-специалиста: что нужно знать лично вам

Reading time9 min
Views97K


— Что лучше: очки, линзы или лазерная коррекция зрения?
Лучше всего видеть без каких-либо средств коррекции. Если вас полностью устраивают очки — сохраняйте спокойствие, ни какую другую коррекцию делать не нужно. Линзы — этот способ коррекции требует соблюдения четких правил пользования, в конечном счете более затратный и рисковый, но он очень популярен, поскольку основные опасности появляются не сразу после начала ношения, а годы спустя.

— Я решил остановиться на очках, но боюсь, что мне в лицо откроется подушка автомобиля, и они станут контактными линзами. Что делать?
По моему хирургическому опыту, современные подушки безопасности не травмируют очкариков. Глаза и лицо повреждаются осколками лобового стекла обычно. Если вы беспокоитесь о сохранности очков, то подумайте про современные, с поликарбонатными линзами, они невероятно прочные, на краш-тестах по ним машина ездит.

— Это правда, что все болезни глаз от компьютера?
Нет, неправда. Основная причина проблем с оптикой — близорукости, дальнозоркости или астигматизма — это генетика. Неблагоприятные условия внешней среды, особенно при длительной работе на близком расстоянии, важны в детстве, когда развитие организма ещё не завершено. А такие болезни, как катаракта, глаукома, отслойка сетчатки и прочие с одинаковой частотой встречаются у тех, кто работает часами за компьютером и у тех, кто не знает где у компьютера кнопка включения.

— Могу ли я очками испортить зрение?
Если вы видите плохо и не надеваете очки, вы теряете часть информации об окружающем мире и при этом создаете дополнительную нагрузку на зрительный аппарат. Есть проблема — нужна оптическая коррекция. А испортить глаза очками можно как один из наших коллег из клиники в Марбурге – он уснул в стеклянных очках за компьютером дома, упал лицом на клавиатуру, и осколок стекла вошёл в хрусталик. Сначала заменили хрусталик, потом через год понадобилась трансплантация.
Читать дальше →
Total votes 64: ↑63 and ↓1+62
Comments159

Внешние зависимости в гите: submodule или subtree?

Reading time3 min
Views54K
Давным-давно я усвоил, что зависимости должны храниться вместе с кодом проекта. Тогда, при возврате к старой версии кода, гораздо проще восстанавливать окружение.

У моего проекта несколько зависимостей. Бóльшая часть зависимостей живет в гитовых репозиториях. Сам проект тоже живёт в гите.

Одна из используемых нами библиотек часто обновляется. Мы сидим на девелоперской версии, и нередко сами контрибутим в неё код, который требуется нашему проекту. То есть требуется оперативно пропускать наши правки через основной репозиторий этой библиотеки — создавать и поддерживать свой форк по ряду причин совершенно не хочется.

Раньше я просто копировал зависимости в папку проекта, и добавлял к каждой файл VERSION.TXT с её версией. Но, если нужно работать с текущей версией стороннего кода, это неудобно. Да и копировать файлы руками когда есть гит как-то глупо. Хочется найти более современное решение.
Читать дальше →
Total votes 29: ↑28 and ↓1+27
Comments14

IMHO, как писать на Хабр

Reading time10 min
Views38K


Акронис на прошлой неделе попросил меня рассказать про опыт на Хабре. После семинара я обещал выложить основные тезисы. Возможно, вы найдёте что-то полезное ниже.

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

При этом активных (голосующих) пользователей всего около 3 тысяч. Уровень знаний аудитории на входе в пост — в примерно 95% случаев низкий, в 5% — экспертный (разбиение оценочное). Проще говоря, есть люди, которые вообще не понимают, что вы хотите сказать (и их большинство), и есть те, кто разбирается в теме на голову лучше вас. Поэтому лучший пост — это тот, что проходит от ликбеза к хардкору. На площадке довольно высокий уровень агрессии (точнее, желания проверить материал на прочность). Ранее был экстремально высок. Средняя или низкая внимательность читателя (ранее была высокая).

Разумеется, это всё моё личное мнение, и можно поспорить. Сейчас постараюсь объяснить, почему я так считаю, и как это влияет на посты. Я основываюсь на опыте примерно 1500 постов за 6 лет, которые написал сам или помогал готовить.

Но начнём с численных показателей. Вот эти компании так или иначе вызвали мой интерес тем, что для них работают агентства или выделенный инхаусный пиар:


Данные тут на конец августа, я их к другому семинару (в Хабре для владельцев блогов) готовил.
Читать дальше →
Total votes 200: ↑182 and ↓18+164
Comments165

Bobby. Рюкзак особого назначения

Reading time8 min
Views151K
В мире существует довольно много компаний, производящих такой класс вещей, как рюкзаки. Ещё больше существует самих рюкзаков: для ноутбуков, для фотоаппаратов, для фотоаппаратов и ноутбуков, для дронов, для активного отдыха, для лежания овощем и т.д — только у нас на сайте отобрано более 50 моделей (и это именно в наличии). Казалось бы, рассказывать о них на Geektimes нет никакого смысла, рюкзаки и рюкзаки. Но сегодня про один всё же расскажем, так как внимания гиков он заслуживает совершенно точно: это новый Bobby от голландской компании XD-Design.

Total votes 48: ↑43 and ↓5+38
Comments136
1
23 ...

Information

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

Specialization

Application Developer
Lead
C++
C
Software development
Linux Kernel
Linux
Cryptography
Applied cryptography