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

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

Что такое атака «Человек по середине»?

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

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

Существует два способа выполнения MITM (Man In Middle Attack):

  • ARP атака — с помощью особенностей протокола ARP ваш компьютер говорит другим, что он маршрутизатор, после этого все пакеты начинают предаваться ему;
  • DNS атака — когда компьютер пытается получить ip адрес для домена, мы подменяем этот адрес на свой, но чтобы этот вид работал, нужно использовать способ с ARP.

Программа Ettercap Linux умеет выполнять оба вида атак. Кроме того, утилита может выполнять атаки на отказ в обслуживании и сканировать порты. А теперь давайте рассмотрим как выполняется установка и использование Ettercap.

Установка Ettercap

Это довольно популярная программа, среди специалистов по сетевой безопасности, поэтому она есть в официальных репозиториях большинства дистрибутивов. Например, чтобы установить Ettercap в Ubuntu выполните:

sudo apt install ettercap-gtk

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

sudo yum install ettercap-gtk

С задачей как установить Ettercap Linux мы справились, но перед тем, как ее использовать, нужно изменить несколько настроек в конфигурационном файле.

sudo vi /etc/ettercap/etter.conf

Строки ec_uid и ec_gid должны иметь значение 0, чтобы сервис программы работал от имени суперпользователя:

[privs]
ec_uid = 0 # nobody is the default
ec_gid = 0 # nobody is the default

Дальше нужно найти и раскоментировать такие две строки:

redir_command_on = "iptables -t nat -A PREROUTING -i %iface -p tcp --dport %port -j REDIRECT --to-port %rport"
redir_command_off = "iptables -t nat -D PREROUTING -i %iface -p tcp --dport %port -j REDIRECT --to-port %rport"

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

Использование Ettercap GUI

Программа может работать в нескольких режимах — с графическим интерфейсом, без и в виде сервиса. Мы будем рассматривать работу в графическом интерфейсе. Для запуска программы с интерфейсом GTK используйте опцию -G:

sudo -E ettercap -G

Опцию -E для sudo мы используем, чтобы сохранить все переменные окружения нашего пользователя. Главное окно программы выглядит очень простым. Сначала мы рассмотрим как выполняется атака ARP-poisoing.

Атака ARP-poisoning в Ettercap

Как я уже говорил, с помощью этой атаки мы можем заставить целевой компьютер отправлять пакеты не маршрутизатору, а нам. Работает все достаточно просто. Компьютер знает IP маршрутизатора, он получил его при подключении к сети. Но каждый раз, когда ему нужно отправить пакет, нужно преобразовать этот универсальный IP адрес в низкоуровневый адрес используемой сетевой технологии, например, для проводного интернета — это MAC адрес.

Для этого используется протокол ARP. Компьютер отправляет запрос всем устройствам в сети, например «кто такой 192.168.1.1» и маршрутизатор, увидев свой адрес отправит в ответе свой MAC. Дальше он будет сохранен в кэше. Но мы можем с помощью Ettercap попросить целевой компьютер обновить свой ARP кэш и передать ему вместо MAC адреса роутера свой MAC адрес. Тогда все пакеты будут передаваться нам, а уже мы отправим их куда нужно.

Перейдем ближе к делу и выполним атаку attercap arp spofing. В Ettercap откройте меню Sniff и выберите Unified Snifing. Затем выберите ваш сетевой интерфейс, например, eth0 или wlan0:

Окно программы измениться и нам будет доступно намного больше функций. Теперь нужно просканировать сеть. Для этого откройте меню Hosts и нажмите Scan hosts. Если даже что-то не работает, то вы можете загрузить список хостов из файла:

Дальше, после быстрого сканирования, если вы откроете Hosts -> Hosts List, то увидите список подключенных к сети устройств:

Чтобы начать атаку нам нужно указать цель 1 и цель 2. В качестве первой цели нужно указать ip машины, которую мы собрались атаковать, а в качестве цели 2 — ip маршрутизатора. Для добавления целей используйте кнопки Add Target 1 и Add Traget 2:

Далее откройте меню MITM и выберите ARP poisoning:

В открывшемся окне отметьте пункт Sniff remote connections, чтобы перехватывать все удаленные соединения от этого компьютера:

Теперь, для запуска процесса подмены в меню Start выберите Start Sniffing.

После этого программа начнет отправлять в сеть пакеты, с запросом для 192.168.1.3 на обновление кэша ARP и замены MAC адреса маршрутизатора на ваш. Атака запущена и успешно выполняется. Вы можете открыть меню View -> Connections и посмотреть активные соединения для целевого устройства:

Если пакет не был зашифрован, то мы можем посмотреть передаваемую информацию клинув по соединению мышью. Слева отображается отправленная информация, а справа — полученная:

Атака DNS-spoofing с помощью Ettercap

Для преобразования имен сайтов в IP адреса сети используется специальная служба — DNS. Когда компьютеру нужен ip сайта он спрашивает его у DNS сервера. Но если вы уже выполняем MITM атаку, то можем подменить ответ сервера таким образом, чтобы вместо IP сервера сайта возвращался наш IP. Сначала нам нужно отредактировать файл /etc/ettercap/etter.dns:

sudo vi /etc/ettercap/etter.dns

google.com.ua A 127.0.0.1

Эта запись означает, что мы подменим основной IP google.com.ua на 127.0.0.1. Обратите внимание, что эта атака не выполняется без предыдущей. Дальше откройте меню Plugins -> Manage Plugins:

Затем два раза кликните по плагину dns_spoof:

Плагин будет активирован и вы можете проверять ip на устройстве. DNS действительно подменяется. Например, вы можете выполнить на целевой машине:

ping google.com.ua

Или:

ping www.ettercap.org

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

Фильтры Ettercap

Фильтры позволяют модифицировать пропускаемые через программу пакеты прямо на лету. Вы можете отбрасывать пакеты, либо вносить в них необходимые изменения с помощью функции replace. Фильтры тоже работают только пока запущена MITM атака. Синтаксис условий, по которым мы будем фильтровать пакеты очень похож на wireshark. Давайте рассмотрим простенький фильтр, который будет заменять все картинки на нашу:

vi test.filter

if (ip.proto == TCP && tcp.dst == 80) {
if (search(DATA.data, "Accept-Encoding")) {
replace("Accept-Encoding", "Accept-Rubbish!");
# note: replacement string is same length as original string
msg("zapped Accept-Encoding!\n");
}
}
if (ip.proto == TCP && tcp.src == 80) {
replace("img src="/, "img src=\"https://pbs.twimg.com/profile_images/655061121007616000/NCV0qQnS.png\" ");
replace("IMG SRC=", "img src=\"https://pbs.twimg.com/profile_images/655061121007616000/NCV0qQnS.png\" ");
msg("Filter Ran.\n");
}

Для тех, кто имел опыт работы с языками программирования здесь должно быть все понятно. Если протокол TCP и порт назначения 80, мы продолжаем поиск и ищем Accept-Encoding. Затем заменяем это слово на любое другое, но эквивалентное по длине. Потому что если браузер будет отправлять Accept-Encoding gzip, то данные будут сжаты и мы там ничего не отфильтруем. Дальше уже в ответе сервера, порт источника 80, мы подменяем все изображения на наше. Теперь фильтр нужно скомпилировать:

etterfilter test.filter -o test.ef

Осталось загрузить фильтр с помощью меню Filters -> Load Filter:

Выберите файл фильтра в файловой системе:

Фильтр будет загружен и вы можете открыть любой сайт, где не используется https чтобы убедиться, что все работает. Чтобы остановить MITM атаку, откройте меню MITM и выберите Stop All Mitm attacks. Наша инструкция Ettercap подходит к концу, но…

Как защититься?

Наверное, после прочтения статьи у вас возник резонный вопрос, как же защитить свой компьютер от такого вида атак? Для этого есть несколько инструментов, в том числе для операционной системы Linux:

  • XArp — графическая утилита, которая может обнаруживать попытки подмены MAC адресов по протоколу ARP и противодействовать этому. Может работать в WIndows и в Linux;
  • Snort — достаточно известная система противодействия вторжениям, среди прочего обнаруживает атаки на протокол ARP;
  • ArpON — небольшой сервис, который следит за ARP таблицей и защищает ее от подмены MAC адресов.
На завершение видео с демонстрацией работы программы:

Источник: losst.ru

Blender — это очень популярная свободная программа для 3d моделирования и проектирования различных трехмерных объектов. Программа используется многими дизайнерами и в том числе для создания известных и популярных проектов. Blender применялся при съемке некоторых фильмов и мультфильмов, а также разработки игр.

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

Установка Blender

Это кроссплатформенная программа, которая может быть установлена на WIndows, Linux или MacOS. Установочный файл для Windows и MacOS вы можете загрузить на официальном сайте. Что касается Linux, то в большинстве дистрибутивов можно получить программу из официальных репозиториев. Например, в Ubuntu для этого достаточно выполнить команду:

sudo apt install blender

Затем вы можете запустить программу из главного меню.

Как пользоваться Blender для начинающих

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

1. Главное окно программы

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

  • Основное меню программы;
  • Меню переключения вида;
  • Левая панель навигации;
  • Панель инструментов справа;
  • Основная рабочая область;
  • Строка времени внизу.

Все эти области были подчеркнуты на снимке экрана. По умолчанию в рабочей области отображается 3D фигура — куб. Дальше мы рассмотрим основные действия, которые можно с ней сделать.

2. Основы навигации

Программой очень просто управлять, вот основные приемы навигации:

  • Чтобы изменить угол обзора зажмите среднюю кнопку мыши и перемещайте ее;
  • Чтобы перемещаться вверх-вниз или назад-вперед зажмите кнопку Shift и среднюю кнопку мыши, затем двигайте ее;
  • Для изменения масштаба используйте колесо прокрутки;
  • Чтобы выбрать объект щелкните по нему правой кнопкой или щелкните правой кнопкой вне объекта, чтобы отменить выбор;
  • Для выбора нескольких объектов удерживайте кнопку Shift во время выбора;
  • Чтобы выбрать все объекты нажмите A, и еще раз чтобы отменить выбор, выбранные объекты будут выделены желтым.

3. Режимы работы

Программа для 3D моделирования Blender может работать в нескольких режимах:

  • Режим объекта (Object mode) — позволяет выбирать объекты, перемещать их, поворачивать, и двигать как вам нужно;
  • Режим редактирования (Edit mode) — позволяет изменить вершины объекта, его линии и плоскости, вы можете изменять сетку в этом режиме.
  • Скульптурный режим ( Sculpt mode) — режим редактирования 3D сетки;
  • Режим рисования (Vertex Paint mode) — позволяет изменить цвета фигур;
  • Режим рисования текстур (Texture Paint mode) — позволяет раскрашивать текстуры;
  • Режим толщины (Weight Paint mode) — позволяет изменить толщину поверхностей;
  • Сеточный режим (Particle mode) — удобен для работы с системами частиц.

Для переключения между этими режимами можно использовать кнопку Tab или меню:

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

4. Изменение объектов

3D моделирование Blender начинается с изменения объектов. Обратите внимание на стрелки, которые появляются около объекта, когда вы его выбираете. Это направляющие стрелки, и они указывают на грани системы координат. Красная стрелка соответствует оси X, зеленая — ось Y, а синяя — ось Z. Эти стрелки позволяют более точно перемещать объекты.

Переместить объект можно несколькими способами:

  • Просто перетащите его правой кнопкой мыши;
  • Нажмите G и перетащите объект в нужное место;
  • Нажмите на одной из стрелок и перемещайте объект вдоль нее.

Поворачивать объекты тоже очень просто. Все что нужно сделать — это выбрать объект и нажать кнопку R. Если вы хотите повернуть объект вокруг определенной оси, нажмите R, а затем одну из клавиш X, Y, Z. Они соответствуют осям координат.

Для масштабирования используйте кнопку S. Опять же, для масштабирования по одной из осей нажмите X, Y или Z.

5. Создание объектов

Работа в Blender предполагает не создание нескольких объектов в основной области. Сначала обратите внимание где находится 3D курсор. Именно в этом месте будет вставлен объект. По умолчанию он расположен в начале координат, но вы можете его переместить в любой место просто кликнув левой кнопкой.

Затем откройте меню «Add» в нижней части экрана и выберите нужный тип объектов, например, фигуры (Mesh), а затем саму фигуру. После ее добавления она появится около курсора. Так вы можете добавить любой объект.

6. Редактирование объектов

В режиме редактирования вы можете изменять размеры и характеристики объектов. Можно выбирать отдельные части объектов: вершины, линии и плоскости. Что нужно выбрать можно указать на панели:

Дальше работа похожа на перетаскивание объектов. Выберите нужную часть правой кнопкой и тащите куда нужно. Также в режиме редактирования вы можете выделить несколько вершин и объединить их вместе. Для этого выберите нужные вершины с помощью «Shift» затем нажмите «W» и выберите пункт меню «Merge».

Также в режиме редактирования вы можете вытягивать части объекта. Для этого выберите грань, вершину или плоскость, а затем нажмите «E» и перетащите ее в нужное место.

Вы можете вырезать часто объекта чтобы перетащить ее в другое место или развернуть. Для этого нажмите Ctrl+R и выберите нужную часть просто двигая мышь, затем эта часть будет отмечена и вы сможете сделать с ней все что нужно.

7. Модификаторы

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

Дальше нажмите «Add Modifier» и выберите нужный модификатор. Вы можете поэкспериментировать с ними. Чаще всего вам придется использовать «subdivision surface». Он позволяет сгладить углы поверхности. Все параметры модификатора будут находиться на правой панели. С помощью пункта «View» вы можете настроить силу скругления:

8. Сохранение результата

Чтобы сохранить результат своей работы откройте меню «File» и выберите опцию «Save»:

Затем вам нужно выбрать место для сохранения и нажать «Save blender file». Работа будет сохранена в формате Blender, и вы сможете продолжить ее редактировать. Но если вам нужна обычное изображение, в меню «File» выберите пункт «Export», затем выберите формат нужной картинки:

Источник: losst.ru

В наши дни беспроводные сети используются все чаще и чаще, уже в каждом доме где есть интернет, есть и роутер для раздачи Wifi на мобильные устройства и другие гаджеты. Интернет и Wifi стали неотъемлемой частью нашей жизни. Но остался вопрос о безопасности таких сетей. Как показывает история люди всегда находили способы взломать сети, и прекрасное тому подтверждение — протокол WEP, который поддавался взлому буквально за несколько минут, даже при отсутствии подключенных к сети пользователей.

Но, похоже, достучались, люди все реже используют WEP и защищают свои сети с помощью более современных стандартов таких как WPA и WPA2. Но действительно ли они безоговорочно безопасны? В этой статье мы рассмотрим как пользоваться утилитой Aircrack-ng для тестирования безопасности сетей WPA и WPA2. Вы увидите в чем их слабое место и узнаете как защитить себя от взлома.

Что такое Aircrack-ng?

Aircrack-ng — это набор утилит для тестирования безопасности Wifi сетей. Он был разработан группой специалистов с информационной безопасности и в него входят несколько утилит для сканирования сети, передачи пакетов в сеть, настройки интерфейса и непосредственно, перебора пароля. Программы поддерживают взлом WPA, так и WEP сетей.

В пакет Aircrak входит большое количество утилит, но мы рассмотрим только самые основные:

  • airodump-ng — сканирование сети и захват пакетов которые были отправлены в эфир;
  • airmon-ng — переключение сетевого интерфейса в режим мониторинга для приема всех пакетов, которые есть в сети;
  • wesside-ng — утилита для автоматического взлома WEP использует атаку типа PTW;
  • easside-ng — утилита для автоматического взлома WEP с помощью перебора ключа на основе векторов инициализации;
  • besside-ng — автоматический взлом сетей WEP и перехват handshake для WPA;
  • airolib-ng — утилита для управления списком точек доступа и паролей;
  • airbase-ng — универсальная утилита для выполнения различных атак на сети Wifi, находится в разработке;
  • tkiptun-ng — утилита для взлома WPA TKIP;
  • airdecap-ng — утилита для расшифровки перехваченного трафика, работает только при наличии ключа;
  • airdrop-ng  — выполняет деаутентификацию пользователей;
  • aireplay-ng — позволяет генерировать трафик внутри Wifi сети.

В этой статье мы будем использовать только некоторые из этих утилит. А именно airodump, airmon, aircrhack и besside для попытки автоматического взлома.

Как будет работать атака на WPA/WPA2?

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

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

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

Сначала мы переведем устройство в режим монитора с помощью airmon-ng, затем будем перехватывать все пакеты от этой сети с помощью airodump-ng пока не найдем рукопожатие, затем останется перебрать пароль по словарю с помощью aircrack. А теперь перейдем ближе к практике и рассмотрим насколько просто перебрать ваш пароль если он достаточно простой.

Как пользоваться Aircrack-ng для взлома WPA

Дальше рассмотрим как пользоваться aircrack-ng. Если программа еще не установлена на вашем компьютере, то в Linux вы можете скачать ее из официальных репозиториев. В Ubuntu:

sudo apt install aircrack-ng

А в Red Hat / CentOS:

sudo yum install aircrack-ng

Windows вам придется загрузить установщик из официального сайта. После установки первым делом нужно сделать чтобы нам ничего не мешало. Для этого отключите все сервисы, которые управляют Wifi и тем более отключитесь от Wifi сети, если вы к ней подключены. Если запущен NetworkManager, его нужно отключить:

sudo systemctl stop NetworkManager

Я предполагаю, что у вас уже установлены все необходимые драйвера и вы готовы к работе. Сначала смотрим подключенные к системе интерфейсы:

sudo ls /sys/class/net/

Обычно имя беспроводного интерфейса начинается на w, например, wlp3s0 или wlan0. У меня это wlp3s0b1. Нам нужно перевести сетевой интерфейс WiFi в режим мониторинга. В этом режиме он может захватывать все пакеты, которые летают в сети и даже если ему они не адресованы ему. Вообще, интерфейс и так захватывает все пакеты, но на программном уровне все пакеты, которые не адресованы этому компьютеру отсеиваются, теперь они не будут отсеиваться. Дальше идет инструкция Aircrack-ng.

Для этого воспользуемся утилитой airmon-ng. Ей нужно передать команду start и имя интерфейса:

sudo airmon-ng start wlp0s0b1

После этого будет создан виртуальный интерфейс, который работает в режиме монитора во второй колонке отображено его имя, у меня это wlp3s0b1mon, хотя часто он называется просто mon0. Если какие-либо программы будут мешать программа выдаст их имена и PID:

Их нужно завершить с помощью kill. Дальше нам нужно просканировать эфир и найти нашу сеть, которую мы собираемся тестировать. Для этого используйте команду airodump-ng. В параметрах ей нужно передать только интерфейс. Обратите внимание, что нужно передавать именно виртуальный интерфейс, который работает в режиме монитора:

sudo airodump-ng -i wlp3s0b1mon

Почти сразу же вы увидите свою сеть, поскольку она расположена ближе всех. У меня это MyPublicWifi423. Из предоставляемой информации нам понадобится ее BSSID и канал, который можно найти в колонке CH. Дальше мы будем использовать ту же самую утилиту, только теперь нацелим ее именно на нашу сеть, чтобы она не отвлекалась на посторонние и поймала все что нам нужно.

Мы зададим канал с помощью опции -с и BSSID роутера с помощью опции —bssid, а также укажем с помощью опции -w куда нужно сохранить перехваченные пакеты для дальнейшей обработки:

sudo airodump-ng -c 11 --bssid 56:0A:64:17:5D:33 -w /home/sergiy/hack.pcap wlp3s0b1mon

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

Мы можем это сделать со своими устройствами, но в реальной сети у хакера не будет такой возможности, поэтому мы можем принудительно отключить клиента от сети с помощью утилиты aireplay. Если передать ей опцию deauth, то она разошлет широковещательное сообщение от имени маршрутизатора, в котором попросит всех отключиться от сети. Нам нужно только передать в параметрах количество пакетов, которые нужно отправить и BSSID роутера:

sudo aireplay-ng --deauth 10 -a 56:0A:64:17:5D:33 wlp3s0b1mon

Сразу после этого вы сразу же увидите, сообщение WPA handshake: 56:0A:64:17:5D:33 в правом верхнем углу терминала. Вы можете использовать и более простой способ для получения Handshake. Утилита besside позволяет выполнить все действия автоматически нужно только передать BSSID роутера и интерфейс монитора:

sudo besside-ng -b 02:C2:C6:46:39:85 wlp3s0b1mon

Этап, связанный с работой в реальной сети завершен и нам осталось только перебрать все возможные пароли по словарю. Дальше рассмотрим как пользоваться Aircrack-ng для перебора паролей.

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

$ sudo aircrack-ng -b BSSID_маршрутизатора -w путь_к_словарю перехваченные_пакеты

sudo aircrack-ng --bssid 56:0A:64:17:5D:33 -w /home/sergiy/words /home/sergiy/hack.pcap-01.cap

 

Дальше начнется перебор ключей и если ключ, который использовался для защиты сети есть в списке, то он обязательно будет найден:

Как видите, aircrack-ng wpa2 psk достаточно быстро может быть взломан. Скорость перебора паролей достигает тысячи вариантов в секунду, а это значит, что на перебор до 100000 паролей уйдет всего только несколько минут. И это на обычном, бюджетном ноутбуке. На более мощном железе использовать Aircrack-ng будет намного быстрее.

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

Источник: losst.ru

Вы знали, что в GNOME Shell скрыто очень полезное приложение для настройки расширений?

Утилита gnome-shell-extension-prefs позволяет вам изменять параметры ваших любимых расширений GNOME без необходимости переходить на страницу установленных расширений официального веб-сайта GNOME Extensions в совместимом веб-браузере.

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

Когда я говорю, что приложение скрыто, это значит, что его не так легко обнаружить. Вы не найдёте иконки для него в меню «Обзор» или пункта меню в расширении Application Menu. Не зная, что оно существует, вы могли бы вообще его не найти!

Чтобы запустить инструмент настройки расширений GNOME, откройте новое окно терминала (или активируйте комбинацию клавиш Alt + F2) и выполните следующую команду:

gnome-shell-extension-prefs

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

Но если вы так же ленивы, как и я, просто запустите утилиту из командной строки и затем прикрепите её к своему избранному в приложении Dash to Dock:

Сегодня в вопросах безопасности нельзя допускать компромиссов. Неважно, касается ли это офиса, дома, или любого другого места работы, настройки безопасности должны предотвращать несанкционированный доступ к вашей системе и заражение ее вирусами. Наиболее распространенный путь доступа к содержимому компьютера - порты USB. Они используются для передачи данных и различных сетевых соединений. Любой может попытаться украсть ваши данные с помощью флешки, или заразить вашу систему вирусами или шпионскими программами. Для обеспечения повышенного уровня безопасности вы можете заблокировать доступ к портам USB в вашей системе.
Для администратора Linux основным рабочим инструментом является командная строка. Мы также будем выполнять необходимые операции в терминале.

Для блокировки доступа к USB и CD-ROM можно использовать права доступа файловой системы. Обычно все съемные диски монтируются в /media.

Команда:

$ sudo chmod 700 /media

разрешает только пользователю root монтировать съемные диски.

Для разблокировки доступа используется следующая команда:

$ sudo chmod 755 /media

Второй способ - использование списка блокировки. Настроить его можно в файле blacklist.conf.
В Ubuntu или других дистрибутивах на базе Debian необходимо редактировать файл blacklist.conf в директории /etc/modprobe.d/.

Для редактирования файла blacklist.conf введите команду:

$ sudo gedit /etc/modprobe.d/blacklist.conf

Содержимое файла выглядит следующим образом:

Добавьте следующие две строки в конец файла.

# Block access to USB
blacklist usb_storage

Сохраните и закройте файл, затем перезагрузите систему. Теперь порты USB отключены.

Для активации портов USB снова откройте файл, удалите эти строки (или закомментируйте их).

Еще один, более простой метод для добавления USB-дисков в список блокировки:

$ modprobe -r usb-storage
$ echo blacklist usb-storage >> /etc/modprobe.d/blacklist

Для блокировки CD-ROM просто удалите пользователя из группы "cdrom". После этого пользователь не сможет с ним работать.

Уже не для многих является секретом тот факт, что Linux — это очень стабильная и безопасная операционная система. Подтверждение тому переход многих компаний и структур на эту «ось». Как пример могу привести Приват Банк, Fiat, Google, Panasonic, Virgin America, Amazon, Министерство обороны США, Deutsche Bahn, Hundai, BMW, Volvo, PayPal, Singapore Airlines и многие другие. Данный список слишком большой, чтобы его продолжать. Но разговор не о том. С ростом данной системы на нее начали обращать внимание взломщики и хакеры, ища  уязвимости системы. Самыми опасными являются руткиты, меньшую опасность представляют вирусы и трояны. В данной статье я опишу некоторые инструменты для поиска rootkit.

Утилита chkrootkit

Chkrootkit это набор инструментов, которые призваны для поиска руткитов в системе. Она может находить почти все существующие современные руткиты. Система сканирования Chkrotkit постоянно улучшалась, в результате чего увеличивалась скорость сканирования, что очень полезно во время глубоких проверок системы на наличие известных руткитов. Утилита может находить больше 60 устаревших и современных rootkit, умеет определять сетевые интерфейсы в promiscous-режиме (это «неразборчивый» режим, в котором сетевая плата может принимать абсолютно все пакеты, не смотря на то, для кого они были адресованы.), умеет очень эффективно находить измененные файлы lastlog и wtmp (это файлы, сообщающие сисадминам о вторжениях в систему). Chkrootkit — это консольная утилита с понятными параметрами, которая создает подробные результаты исследования системы.

Чтобы установить chkrootkit в систему. нужно выполнить следующую команду в Терминале:

sudo apt-get install chkrootkit

Для запуска утилиты нужно выполнить команду:

sudo chkrootkit

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

Параметры:

-h        Справочная информация о программе
-V        Версия программы
-l        Все поддерживаемые типы проверок
-d        Подробная информация (режим отладки)
-q        Минимальный вывод информации (будет выводится информация только о подозрительных файлах)
-x        Режим эксперта (вывод всех действий программы)
-r        Указать директорию, которая будет использоваться в качестве корневой

Для сохранения подозрительных файлов в текстовый файл нужно выполнить команду:

sudo chkrootkit -q > chkrootkit.txt

В итоге в Домашнем каталоге появится файл chkrootkit.txt, который можно будет проанализировать самому, либо отправить по почте или на специализированный форум. Используя системную утилиту cron можно автоматизировать проверку системы.

Утилита rkhunter

Простая, но эффективная консольная программа для обнаружения rootkits и malware в системе. Утилита также проверяет и выявляет изменения в установленных приложениях, в системных файлах запуска, а также производит разные проверки для утилит и программ, «слушающих» на сетевых интерфейсах сервера. Другими словами — это анти шпион для Linux.

Установим программу командой в Терминале:

sudo apt-get install rkhunter

Теперь обновим базы сигнатур:

sudo rkhunter --update

Теперь можно запустить сканирование:

sudo rkhunter --check

Наберитесь терпения и ждите окончания проверки. Во время сканирования несколько раз вас попросят нажать клавишу Enter. Также можно добавить утилиту в cron и к примеру производить сканирование системы каждый день в 23-00. Добавим задание в crontab. Как добавлять задания в crontab я уже писал в одной из своих статей.

0 23 * * * sudo rkhunter —update; sudo rkhunter —check

Rkhunter, как и chkrootkit, не удаляет найденные угрозы, а просто выдает отчет о сканировании.
В заключении хочу сказать, что мы имеем два неплохих инструмента для безопасности своей системы. Linux не Linux, но как говориться — лучше перебдеть, чем недобдеть. Всем удачи!

Филиал Fujitsu — PFU — анонсировал драйверы сканеров Fujitsu SP (SP-1120, SP-1125, SP-1130) под операционные системы на базе Linux. К сожалению, даже в 2016 году, бинарные драйверы — это всё, что мы имеем, касательно принтеров и сканеров.

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

В качестве централизованного сбора логов используется rsyslog, а для структурирования и визуализации elasticsearch + kibana. Все бы ничего, но когда количество подключенных машин разрастается, то данных настолько много, что уходит (уходило) большое количество времени на их обработку и анализ. Наряду с другими интересными штуками всегда хотелось организовать свой центр безопасности. Этакая мультимониторная статистика с картами, графиками и прочим.

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

Так как у нас уже есть развернутый elastic с kibana, то будем на его базе и городить нашу систему.

Итак, у нас уже есть установленный докер и docker-compose, значит будем поднимать сервисы на нем.

elastic:

elasticsearch:
  build: elasticsearch:2.3.4
  container_name: elastic
  command: elasticsearch -Des.network.host=0.0.0.0
  net: host
  ports:
    - "9200:9200"
    - "9300:9300"
  volumes:
    - "/srv/docker/elastic/etc:/usr/share/elasticsearch/config"
    - "/srv/docker/elastic/db:/usr/share/elasticsearch/data"
    - "/etc/localtime:/etc/localtime:ro"
  restart: always
  environment:
    - ES_HEAP_SIZE=2g

/srv/docker/elastic/elasticsearch.yml:

cluster.name: Prod
node.name: "central-syslog"
http.port: 9200
network.host: _non_loopback_
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: [
 ]
transport.publish_host: 0.0.0.0
#transport.publish_port: 9300
http.cors.enabled : true
http.cors.allow-origin : "*"
http.cors.allow-methods : OPTIONS, HEAD, GET, POST, PUT, DELETE
http.cors.allow-headers : X-Requested-With,X-Auth-Token,Content-Type, Content-Length
script.engine.groovy.inline.aggs: on

/srv/docker/elastic/logging.yml:

logger:
  action: DEBUG
  com.amazonaws: WARN
appender:
  console:
    type: console
    layout:
      type: consolePattern
      conversionPattern: "[%d{ISO8601}][%-5p][%-25c] %m%n"

kibana:

kibana:
  image: kibana
  restart: always
  container_name: kibana
  environment:
    SERVICE_NAME: 'kibana'
    ELASTICSEARCH_URL:  "http://x.x.x.x:9200"
  ports:
    - "4009:5601"
  volumes:
    - "/etc/localtime:/etc/localtime:ro"

logstash:

logstash:
 image: logstash:latest
 restart: always
 container_name: logstash
 hostname: logstash
 ports:
  - "1025:1025"
  - "1026:1026"
 volumes:
  - "/srv/docker/logstash/logstash.conf:/etc/logstash.conf:ro"
  - "/srv/docker/logstash/ssh-map.json:/etc/ssh-map.json:ro"
 command: "logstash -f /etc/logstash.conf"

Итак. Мы запустили эластик и кибану, но осталось подготовить логстеш к обработке логов от внешних серверов. Я реализовал вот такую схему:

rsyslog → logstash → elastic → kibana.

Можно было бы использовать встроенный в rsyslog коннектор напрямую в эластик, но нам нужны данные по полям и с geoip для статистики.

На серверах, подключаемых к мониторингу вносим в конфиг rsyslog (обычно это /etc/rsyslog.d/50-default.conf) вот такую запись:

auth,authpriv.*                 @@x.x.x.x:1026

Этой записью мы отправляем все события об авторизации на наш удаленный сервер (logstash).

Далее, полученные логстешем логи нам нужно обработать и оформить. Для этого создаем маппинг полей, чтобы на выходе нам было удобно работать (/srv/docker/logstash/ssh-map.json):

{
        "template": "logstash-*",
        "mappings": {
                "ssh": {
                        "properties": {
                                "@timestamp": {
                                        "type": "date",
                                        "format": "strict_date_optional_time||epoch_millis"
                                },
                                "@version": {
                                        "type": "string"
                                },
                                "username": {
                                        "type": "string"
                                },
                                "src_ip": {
                                        "type": "string"
                                },
                                "port": {
                                        "type": "long"
                                },
                        }
                }
        }
}

В ходе создания маппинга столкнулся с одним багом логстеша, а именно присвоению полю значения geo_point (при создании своего индекса выставляется значение у geoip.location — float), по которому в дальнейшем будет строиться heatmap на карте. Баг этот зарегистрирован и в качестве workaround мне пришлось использовать шаблон стандартных индексов logstash-*.

Итак, маппинг у нас есть. Теперь нужно подготовить конфиг logstash, чтобы он фильтровал входящие данные и в нужном формате отдавал в эластик (/srv/docker/logstash/logstash.conf):

input {
   tcp {
        port => 1026
        type => "security"
   }
}

filter {
  grok {
    match => ["message", "Failed password for (invalid user |)%{USERNAME:username} from %{IP:src_ip} port %{BASE10NUM:port} ssh2"]
    add_tag => "ssh_brute_force_attack"
  }
  grok {
    match => ["message", "Accepted password for %{USERNAME:username} from %{IP:src_ip} port %{BASE10NUM:port} ssh2"]
    add_tag => "ssh_sucessful_login"
  }
  geoip {
    source => "src_ip"
  }
}
output {
   if "ssh_brute_force_attack" in [tags] {
         elasticsearch {
                hosts => ["x.x.x.x:9200"]
                index => "logstash-%{+YYYY.MM.dd}"
                manage_template => true
                template_name => "ssh"
                template => "/etc/ssh-map.json"
                template_overwrite => true
         } 
   }
}

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

Итак. Логи ссш попадают в логстеш, он их обрабатывает и отправляет в индексы эластика. Осталось только настроить визуализацию:

— Открываем веб интерфейс по адресу x.x.x.x:4009/
— Переходим в Settings и добавляем работу с нашими индексами (logstash-*)

Далее нам нужно в kibana создать поисковые запросы, визуализацию и дашборд.

Во вкладке Discover после добавления индексов в kibana мы видим наши записи — все настроили верно.

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

Первым фильтром пойдет список атакуемых серверов:

— около поля host нажимаем add
— сохраняем поиск как ssh-brute-servers-under-attack (имя вариативно)

Вторым фильтром будет список атакующих стран:

— около поля geoip.country_name нажимаем add
— сохраняем как ssh-brute-countries (имя вариативно)

Третьим фильтром будет общее количество атак:

— переходим на вкладку Discovery
— сохраняем как ssh-brute-all

Итак, на финальном экране у нас будет отображаться четыре разных параметра:

1. Суммарное количество атак
2. Атакующие страны
3. Атакуемые серверы
4. Карта с указателями на атакующие хосты

Суммарное количество атак:

— переходим на вкладку Visualize
— выбираем тип визуализации Metric
— From saved search — ssh-brute-all
— Открываем Metric и меняем значение поля на — Суммарное количество атак
— Сохраняем визуализацию

Атакующие страны:

— переходим на вкладку Visualize
— выбираем тип визуализации Data table
— From saved search — ssh-brute-countries
— Открываем Metric и меняем значение поля на — Количество атак
— Теперь нам нужно соотнести поля и посчитать в таблице «уники». Нажимаем split rows
— Aggregation — terms
— Field — geoip.country_name.raw
— Custom label — Страна

Если все ввели верно, то загорится зеленая кнопка play, после нажатия на которую увидим примерно такую картину:

image

— Сохраняем визуализацию

Атакуемые серверы:
— переходим на вкладку Visualize
— выбираем тип визуализации Data table
— From saved search — ssh-brute-servers-under-attack
— Открываем Metric и меняем значение поля на — Количество атак
— Теперь нам нужно соотнести поля и посчитать в таблице «уники». Нажимаем split rows
— Aggregation — terms
— Field — host.raw
— Custom label — Сервер

Если все ввели верно, то загорится зеленая кнопка play, после нажатия на которую увидим примерно такую картину:

image

— Сохраняем визуализацию

Карта с указателями на атакующие хосты (самое интересное)

— переходим на вкладку Visualize
— выбираем тип визуализации Tile map
— From new search — Select an index pattern — logstash-*
— Открываем Geo Coordinates. Если все шаги были верными, автоматически поле Field заполнится geoip.location
— Переходим в Options
— Меняем хостинг карт (так как у MapRequest изменились условия и нужно получать токен и дополнительно что-то делать). Ставим галку в — WMS compliant map server
— Приводим все поля к параметрам:

WMS Url — basemap.nationalmap.gov/arcgis/services/USGSTopo/MapServer/WMSServer
WMS layers* — 0
WMS version* — 1.3.0
WMS format* — image/png
WMS attribution — Maps provided by USGS
WMS styles* — пусто

В итоге у нас должна отобразиться карта атак:

image

— Сохраняем визуализацию

Теперь у нас всё есть для того, чтобы сделать свой дашборд.

Переходим на вкладку Dashboard, нажимаем на Add visualization (плюс в круге справа сверху) и добавляем свои сохраненные визуализации на экран и сохраняем экран. Поддерживается Drag'n'Drop. В итоге у меня получился вот такой экран:

image

Теперь для подключения новых хостов к системе достаточно будет указывать у них передачу логов авторизации на сервер logstash и при возникновении событий хосты и информация будут добавляться на экран и в эластик.

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

Универсальная последовательная шина (Universal Serial Bus) или же просто USB — это промышленный стандарт, разработанный в середине 1990 годов для того, чтобы стандартизировать подключение периферии к компьютеру. Он заменил большинство интерфейсов и теперь является самым распространенным типом разъемов для потребительских устройств.

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

Различные типы USB

У многих мог сейчас назреть вопрос: «Если USB должен быть универсальным, то почему он имеет большое количество типов?». Дело в том, что все эти типы USB разъемов выполняют различные функции. Это помогает обеспечить совместимость в случае выпуска устройства с улучшенными характеристиками. Давайте рассмотрим наиболее распространенные виды USB портов.

  • Type-A — большинство кабелей имеют на одном конце коннектор этого типа USB, туда же относятся и кабели современных клавиатур и мышей. Этим же типом USB комплектуются персональные компьютеры и зарядные устройства;
  • Type-B — это порт используется для подключения принтеров и других периферийных устройств к компьютеру. Но в настоящее время он не распространен так, как распространен USB Type-A;

  • Mini USB — это был стандартный разъем для мобильных устройств до появления Micro USB. Этот разъем меньше стандартного, что и можно понять по его названию. Этот тип разъемов тоже немного устарел и был заменен Micro USB, но это не означает, что такие виды USB нигде нельзя найти;
  • Micro USB — на данный момент является стандартом для портативных устройств. Его приняли все крупные производители мобильных устройств, за исключением Apple. Но Micro USB постепенно начинают заменять на USB Type-C. Кстати, существуют различные виды Micro USB разъемов, но об этом поговорим чуть позже;
  • Type-C — такой кабель может иметь на обоих концах один и тот же коннектор. Заявлена более высокая скорость передачи данных и более высокая мощность по сравнению с предыдущими стандартами USB. Такой разъем использовала компания Apple для Thunderbolt 3. О USB Type-C мы поговорим чуть позже;

  • Lightning — не относится к стандарту USB, но является фирменным интерфейсом для мобильной продукции Apple с сентября 2012 года. Устройства же до этого времени использовали менее компактный 30-pin проприетарный разъем.

USB 3.0

Новый стандарт обеспечивает более высокую скорость передачи данных и при этом имеет обратную совместимость со старым стандартом. По форме USB 3.0 и USB 2.0 Type-A одинаковы, просто новый стандарт окрашен в синий цвет, чтобы отличить USB 3.0 от 2.0.

Но увеличение скорости будет только в том случае, когда разъем, куда вставляется кабель или флеш-накопитель должен быть USB 3.0, и сам кабель или флеш-накопитель должен иметь коннектор USB 3.0.

Также кроме USB 3.0 Type-A существуют и другие типы разъемов USB 3.0. Type-B и его Micro версия имеют дополнительные контакты, чтобы обеспечить более высокую скорость передачи данных, что разрушает совместимость этих разъемов со старыми версиями, но старые USB 2.0 устройства можно подключить в новые USB 3.0 разъемы, но прироста скорости вы не получите.

Micro USB

Если у вас есть Android устройство, то вам нужно иметь Micro USB кабель. Даже самые ярые фанаты Apple не могут избежать этого типа разъемов в портативных аккумуляторах, колонках и другом.

Также имеются деления на типы разъемов Micro USB. В основном используется Micro USB Type-B, Type-A особо не распространен, да и я его в реальной жизни никогда не видел. То же самое относится и к Mini USB.

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

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

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

USB On-The-Go

USB On-The-Go (USB OTG) — это относительно новый стандарт, позволяющий вставлять в портативные устройства флеш-накопители, предназначенные для других USB интерфейсов, кабели, чтобы заряжать что-либо от аккумулятора вашего портативного устройства и так далее. USB OTG поддерживает не только USB Type-A, но и другие виды USB портов.

А теперь представьте, что у вас есть внешний жесткий диск, смартфон и ноутбук. Какие действия вы выполните для того, чтобы переместить какой-либо файл с внешнего жесткого диска на ваш смартфон? Самый простой способ — это сначала переместить файл с внешнего жесткого диска на ноутбук, а с него на смартфон.

А теперь представьте, что вы имеете USB OTG переходник. Просто вставьте переходник в смартфон, а в него кабель от внешнего жесткого диска. Необходимость в ноутбуке отпадает. Удобно?

К сожалению, не все устройства поддерживают USB On-The-Go, так что перед покупкой переходника советую вам проверить ваше устройство на поддержку USB OTG.

Переходники для Lightning существуют и они даже с версии iOS 9 везде работают, но называть это OTG как-то не особо хочется.

USB Type-C

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

В 2015 году компания Apple потрясла весь мир, выпустив MacBook с одним USB Type-C разъемом. Это может быть началом тенденции.

Сейчас существует немало устройств с USB Type-C разъемом. Для подключения к компьютеру стоит использовать USB Type-C — USB Type-A кабель, если у вас нет такого же разъема в компьютере.

Покупать дешевые USB Type-C кабели не стоит, совсем не стоит. Очень просто убить ваше устройство. К тому же по такому кабелю проходят большие токи, так что некачественный кабель еще и приведет к пожару. Не жалейте денег на качественный кабель.

Источник: losst.ru

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

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

Виды свободных лицензий ПО

Одна из самых распространенных лицензий программного обеспечения — лицензия GNU GPL. Ее суть во взаимности. Лицензия требует, чтобы если код был изменен, то все изменения были обязательно опубликованы и доступны всем. Это называется копилефт. Но есть другие типы лицензии, которые строятся вокруг свободы для разработчика. Такие лицензии накладывают минимальные ограничения на пользователей и не требуют взаимности от разработчиков. Оба типа лицензий свободны, разница только в том, что именно остается свободным.

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

Если сравнить долю каждой из лицензий по рейтингу Black Duck в этом месяце, по сравнению с январем 2010, то различие вполне очевидно:

В этом рейтинге самой популярной остается GPLv2, но она потеряла больше половины своей популярности, от 46% до 19%. За этот же период разрешительная лицензия MIT выросла от доли 8% до 29%. Apache License 2.0 выросла с 5% до 15%.

Можно предположить, что если в 2007 мы говорили о свободном по, то имели в виду копилефт лицензию GPL, тогда как сейчас фоукс сместился в сторону разрешающих MIT и Apache. Это не означает, что копилефт лицензии становятся менее важными, просто в наше время разработчикам больше нравятся разрешающие лицензии. Вот какие выводы мы можем сделать из этого графика:

Консолидация. Это топ 10 лицензий по популярности за 2010 и 2016 год, все, кроме трех из них, снизились в популярности. Больше всего снизилась лицензия GPL, а выросли Apache и MIT, это уже обсуждалось. Но примечательно, что достаточно популярная лицензия BSD, наоборот, снизилась. Та же тенденция у лицензии ISC. Сейчас только несколько лицензий являются самыми популярными и, возможно, скоро мы будем видеть консолидацию между несколькими лицензиями.

Бинарный выбор. Исторически так сложилось, что у вас есть три основных варианта выбора лицензии: копилефт, разрешающая и среднее положение. К средним лицензиям можно отнести  LGPLv2.1 (4), LGPLv3 (2), EPL (1), MPLv1.1 (<1), CDDL (<1) и CDDLv1.1 (<1) они имеют общую долю порядка 7-8%. Теперь все больше и больше выбор сводится к копилефт или разрешающим лицензиям.

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

Есть много объяснений этому явлению, например,безразличие разработчиков. Но все открытые программы без лицензии — это не открытое программное обеспечение и это плохо.

Основные лицензии свободного ПО

А теперь давайте сделаем краткое описание для каждой лицензии из рейтинга чтобы вы могли ориентироваться что они из себя представляют:

GNU General Public License. Расшифровывается как универсальная общественная лицензия. Была разработана в 1988 году в рамках проекта GNU. Принцип действия лицензии, как уже говорилось, все изменения кода должны быть опубликованы. Программа не может быть включена в проприетарное ПО, но зато может свободно распространяться между пользователей, изучаться и улучшаться при условии публикации улучшений. За время развития было выпущено три версии — GPLv1, GPLv2 и GPLv3, в которых были немного ослаблены ограничения лицензии gpl к проприетарному ПО.

MIT License. Это лицензия, разработанная Массачусетским технологическим институтом (МТИ). Это разрешительная лицензия, а это значит, что несмотря на свободность распространения, ПО может использоваться в качестве части проприетарных программ.

Apache License 2.0. Это еще одна разрешительная лицензия. Кроме того, что разрешается полностью свободно распространять продукт, программы можно встраивать в проприетарное ПО. Но нельзя изменять название, а в файлах нужно прикладывать всю информацию об изменениях и лицензии.

Artistic License — свободная лицензия, разработанная The Perl Foundation. Это копилефт лицензия, она требует чтобы все изменения были опубликованы, а в файлах были описаны вносимые правки.

BSD Licese 2.0. Лицензия на программное обеспечение университета Беркли. Лицензия очень похожа на MIT, и программное обеспечение тоже можно встраивать в проприетарные проекты. Но здесь нельзя использовать оригинальное название свободного проекта.

Code Project Open 1.0.2 License. Это лицензия, опубликованная сообществом разработчиков The Code Project. Она разрешает использовать исходный код и сами программы в коммерческих целях, код можно изменять и включать в другие проекты.

Mozilla Public License (MPL) 1.1. Эта лицензия была разработана в компании Netscape и улучшена в Mozilla Foundation. Разрешается использование кода в закрытых проектах, но измененный код должен быть лицензирован в соответствии с MPL.

Microsoft Public Licese (MS-PL) — это свободная лицензия, которая предоставляет право на использование, распространение и изменение кода. Но при распространении нужно сохранить информацию об авторских правах.

Понятие об отличиях основных лицензий свободного ПО на одной схеме:

Выводы

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

Небольшое видео по теме свободных лицензий и лицензии GPL:

Источник: losst.ru