Friday, May 26, 2023

Основные сведения о драйверах (не проприетарных) к видеокартам AMD, Intel и Nvidia.

Источник - портал OpenSUSE: https://forums.opensuse.org/t/amd-intel-nvidia-x-graphics-driver-primer-third-edition/148576


"Драйверы" к видеоадаптерам для X - как Xorg, так и Wayland - состоят из множества компонент или слоёв. Эта статья рассматривает только первые два слоя и только для видов FOSS (Free & Open-Source Software), включенных в репозитории и установочные носители Open SUSE.


Первый слой - kernel devise driver. В каждом ядре есть один или более модулей (драйверов) для видеокарт каждого из производителей. Для AMD это amdgpu для более новых устройств (APU, GPU, IGP) и radeon для старых. Для подавляющего большинства адаптеров Intel это i915, и для некоторых конфигураций SOC - gma500. Для NVidia - только nouveau. Эти модули ядра обеспечивают функциональность под названием Kernel ModeSetting (KMS), от которой всегда зависят драйверы дисплея для X.


Все оригинальные базовые драйверы дисплея для Х зависят от оборудования и поэтому называются DDX - Device Dependent X (display driver). Названия базовых драйверов: amdgpu (для новых карт amd), radeon (для старых); intel - для карт intel; nouveau -  для nvidia. Эти драйверы представлены пакетами xf86-video-*, установка которых опциональна. Однако, существует более новая технология универсального драйвера для Х - ей более восьми лет, - в которой драйвер работает так, будто зависит от устройства, но на самом деле поддерживает видеоадаптеры любого производителя. Эта технология называется modesetting. Драйвер modesetting не является опциональным, так как входит в пакет Х-сервера, а также является независимым от аппаратного обеспечения, т.е. DIX - Device Independent X. Так как он относительно новый, то не поддерживает старые GPU (примерно до 4 поколения карт intel  и карт других вендоров выпуска до 2007-2008 года).


Хотя modesetting является драйвером дисплея по умолчанию, и пакеты xf86-video-* необязательны, большинство установочных образов OpenSUSE содержат метапакет xorg-x11-driver-video, в который включены все драйверы типа xf86.... Благодаря наличию этого метапакета установочный носитель поддерживает старые видеокарты, для которых не подходит modesetting. Для таких устройств устанавливаются драйверы xf86-video-* вместо modesetting, и поэтому многие пользователи, говоря о графических драйверах, даже не знают о существовании modesetting DIX. А из-за схожести названий модулей ядра и драйверов дисплея при обсуждении графических "драйверов" часто происходит подмена термина: люди говорят о драйвере дисплея, а подразумевают модуль ядра, и наоборот. 


Если вы хотите использовать modesetting DIX, то вам проще всего будет удалить из системы метапакет xorg-x11-driver-video со всеми драйверами xf86-video-*. Какой из драйверов покажет лучшую производительность - modesetting или xf86, - можно определить только опытным путём. Тиринги и другие проблемы часто устраняются или смягчаются путём замены драйвера дисплея Х. 


Для Х-сервера существуют и другие драйверы, не зависящие от KMS и поддерживающие любое оборудование - это FBDEV и VESA. Но они обеспечивают ограниченную функциональность: не дают аппаратного ускорения, поддерживают ограниченное число разрешений экрана (обычно это 4:3, т.е. 1280х1024, 1600х1200, а чаще только 1024х768). Они подходят для действий по восстановлению системы или для серверов, где графическая оболочка почти не используется. Нередко они требуются при установке: если загрузка ядра сконфигурирована с параметром nomodeset. Этот параметр исключает использование всех FOSS драйверов дисплея, что приводит к сниженной производительности графики либо к чёрному экрану вместо графического окна входа в систему, что решается только удалением modeset из параметров загрузки.


Подводя итог, для корректной работы Х-сервера требуются следующие драйверы:


amdgpu 

(kernel)+amdgpu (DDX) или modesetting (DIX) для новых устройств AMD.

radeon 

(kernel)+radeon (DDX) или modesetting (DIX) для старых устройств AMD/ATI.

gma500

(kernel) или i915 (kernel)+intel (DDX) или modesetting (DIX) для устройств Intel.

nouveau 

(kernel)+nouveau (DDX) или modesetting (DIX) для устройств NVidia.


Saturday, October 1, 2022

Wireless lan security. Глава 2. Основные функции безопасности и механизмы их обеспечения.

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

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

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


Механика обеспечения безопасности.


Основными функциями безопасности являются конфиденциальность, целостность и доступность. В случае беспроводных сетей (и не только их) необходимо также реализовать такие функции, как аутентификация, авторизация и контроль доступа. Зачастую доступность рассматривается как функция качества обслуживания, а не проблема безопасности. Криптография, в некотором смысле, является механизмом обеспечения безопасности. В контексте беспроводной связи интерес представляют цифровая подпись, шифрование и управление ключами. Далее приведен список формальных определений основных функций безопасности:

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

Механизмы конфиденциальности: симметричное и асимметричное шифрование.

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

Механизмы обеспечения целостности: цифровые подписи с использованием однонаправленных хэш-функций. 

Доступность - это возможность отправлять и получать данные. Например, если система подверглась DoS атаке, это становится невозможным.

Механизмы: в основном это способы обнаружения и предотвращения Dos атак.

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

Механизмы: протоколы различных уровней, такие как 802.1х, RADIUS, PAP/CHAP, MS-CHAP и т.д.

Авторизация - это определение действий, доступных пользователю после идентификации, т.е. его прав доступа. Как правило, авторизация тесно связана с аутентификацией. Можно возразить, что авторизация не всегда требует аутентификации, но в этой книге они связаны: авторизация обычно следует за любой процедурой аутентификации.

Механизмы: различные протоколы.

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

Механизмы: списки контроля доступа в AP.

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

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

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

        Управление ключами.

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

Механизмы: Проблема беспроводных сетей - безопасное и масштабируемое распространение ключей в автоматическом режиме.

Далее механизмы обеспечения безопасности будут рассмотрены более детально.


Механизмы обеспечения конфиденциальности.


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


Шифрование симметричным ключом.


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

Примечание: Симметричное шифрование обладает меньшей вычислительной сложностью по сравнению с ассиметричным и, следовательно, даёт преимущество в производительности. Для любого массового шифрования симметричное будет предпочтительным методом.

На рисунке 2-1 изображены два пользователя: Алиса и Боб, которым нужно безопасно связываться друг с другом. Они должны договориться, какой криптографический алгоритм будут использовать для шифрования и дешифровки, а также согласовать общий - закрытый - ключ для использования с выбранным алгоритмом. Для этих целей существуют специальные протоколы согласования ключей. 

рисунок 2-1.




Алгоритмы симметричного шифрования делятся на две категории:


Блочный шифр - за одну итерацию обрабатывается блок, обычно размер блока 64 бита, но это требование не является абсолютным.

Потоковый шифр - обрабатывает по одному биту последовательно.


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


Примечание: современные алгоритмы безопасности WLAN используют Advanced Encryption Standard (AES), использующий потоковый метод, но по-прежнему полезно понимать и учиться на уязвимостях "классических" алгоритмов.

                Режимы шифрования.

При использовании блочного шифра необходимо разбить исходное сообщение на блоки по 64 бита, а затем преобразовать их в последовательность зашифрованного текста. Здесь рассматривается четыре основных механизма соединения блоков. Эти механизмы определяют способ объединения открытого текста, закрытого ключа и шифротекста для генерации потока шифротекста, который будет передан получателю. Речь идет о следующих режимах шифрования: Electronic codebook (ECB), Cipher block chaining (CBC), Cipher feedback (CFB), Output feedback (OFB).

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


Примечание: помните, что в контексте беспроводной связи у шифрования одна и только одна задача: не дать перехватчику прочесть передаваемое сообщение (или, если на то пошло, сделать какие-либо умозаключения на  основании перехваченных пакетов).


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


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


Остальные три алгоритма: CBC, CFB, и OFB - обладают свойствами, позволяющими добавлять элемент случайности в шифротекст. При отправке блоков одинакового открытого текста, зашифрованного с помощью этих алгоритмов, вы получите на выходе каждый разные блоки шифротекста. Большинство алгоритмов с закрытым ключом используют один из этих четырех режимов для обеспечения дополнительной безопасности передаваемых данных. 


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


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


Режим обратной связи по выходу - OFB - аналогичен CFB,  но блоки, с которыми суммируются части исходного сообщения, генерируются случайно и не зависят от предыдущих частей открытого текста.


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


Алгоритмы симметричного шифрования.


На сегодняшний день наиболее широко используются следующие алгоритмы:


AES (Advanced Encryption Standard) - был создан при попытке Министерства Торговли США разработать стандарт шифрования нового поколения. Дополнительную информацию можно найти на сайте Национального Института Стандартов и Технологий: https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.197.pdf  На данный момент AES является самым надежным алгоритмом шифрования, поэтому все новые реализации протоколов требуют его поддержки. Например, спецификация  IEEE 802.11i требует шифрования AES.


DES (Data Encryption Standart ) был наиболее широко распространен. Он работает с 64-битными блоками сообщений. Для преобразования 64-битного входного блока в 64-битный выходной алгоритм использует серию процедур. В стандартном виде алгоритм использует 64-битные ключи, из которых 56 бит выбираются случайно, остальные 8 - биты четности (по одному на каждый 7-битный блок 56-битового случайного значения). DES широко использовался в коммерческих приложениях и может работать в четырех режимах: ECB, CBC, CFB, OFB. Но обычно DES работает либо в режиме СВС, либо CFB.

Примечание: стандартная длина ключа для DES 64 бита. Из-за  правил экспорта вы увидите, что 40-битовый ключ тоже является стандартным. В 40-битовом DES все биты ключа, кроме сорока, раскрываются благодаря реализации механизма связи. Например, можно реализовать 40-битовый DES предваряя каждое сообщение теми же 24 битами ключа, которые используются для шифрования. 40-битовый DES используется исключительно для контроля экспорта ключей правительства США. Технически нет никаких оснований не использовать постоянно стандартный DES. 


3DES (тройной DES) является альтернативой DES, затрудняющей брутфорс, которую можно использовать с программами, созданными для DES. 3DES обрабатывает блоки размером 64 бит и осуществляет шифрование, расшифровку и снова шифрование. 3DES может использовать один, два или три разных ключа. Преимущество одного ключа в обратной совместимости с DES: в этом случае алгоритмы 3DES и стандартный DES аналогичны, за исключением увеличения времени, требуемого для обработки. 3DES определен только для режима ECB, в основном из соображений производительности: скорость приносится в жертву безопасности алгоритма. Как DES, так и 3DES находятся в свободном доступе.


RC4 - шифр Ривеста 4. Это проприетарный алгоритм, изобретенный Роном Ривестом и принадлежащий компании RSA Data Security. Он часто используется с 128-битовым ключом, хотя размер ключа может меняться. RC4 использует блочный шифр. Он не запатентован, но защищён как коммерческая тайна. Однако, он просочился в интернет в 1994 г. Поскольку правительство США разрешает экспорт при длине закрытого ключа 40 бит и меньше, в некоторых реализация длина ключа очень небольшая. RC4 используется в WEP.


IDEA (International Data Encryption Algorithm) разработан в качестве замены DES. Он оперирует блоками по 64 бита, но использует 128-битовый ключ. Как и стандартный DES, IDEA может функционировать во всех четырех режимах:  ECB, CBC, CFB, и OFB. Алгоритм запатентован и требует лицензии для коммерческого использования.


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


Частый обмен закрытыми ключами во избежание их компрометации.

Безопасное создание закрытых ключей.

Безопасное распространение закрытых ключей.

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


Асимметричное шифрование.


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


Ниже перечислены некоторые из наиболее распространенных случаев применения алгоритмов с открытым ключом.
Это обеспечение целостности данных, конфиденциальности данных, безотказности с подтверждением отправителя; а также аутентификация отправителя.
Конфиденциальность данных и аутентификация отправителя могут быть достигнуты при использовании алгоритма с открытым ключом.  Рисунок 2-2 демонстрирует, каким образом это происходит.


Рисунок 2-2. Обеспечение целостности и конфиденциальности данных с помощью шифрования с открытым ключом.






тентификации отправителя данных Алиса и Боб должны предпринять следующие шаги:

Шаг 1. Алиса и Боб создают свои личные пары ключей: открытый и закрытый.
Шаг 2. Алиса и Боб обмениваются открытым ключами.

Шаг 3. Алиса пишет Бобу сообщение и шифрует его открытым ключом Боба.
Зашифрованное сообщение отправляется по сети. Шаг 4. Боб расшифровывает сообщение своим закрытым ключом.            
        Шаг 5. Боб пишет ответ, шифрует его открытым ключом Алисы и шлёт зашифрованный
ответ по сети.
        Шаг 6. Алиса расшифровывает ответ своим закрытым ключом.

Конфиденциальность данных обеспечивается, когда Алиса отправляет первое сообщение, так как
только Боб может его расшифровать с помощью своего закрытого ключа. Целостность данных
также обеспечивается, поскольку для модификации сообщения злоумышленнику потребуется
закрытый ключ Боба. Кроме того, целостность и конфиденциальность обеспечиваются и для
ответа, поскольку доступ к закрытому ключу имеется у Алисы, и только она может изменить или
расшифровать сообщение с его помощью.
Однако, такой обмен не слишком надежен, поскольку злоумышленник может притвориться
Алисой и отправить сообщение Бобу, зашифрованное его открытым ключом, который является
широко доступным. Важно убедиться, что сообщение отправила именно Алиса. Далее показано,
как криптография с открытым ключом решает эту проблему и обеспечивает аутентификацию
отправителя и безотказность с подтверждением личности отправителя.
        Шаг 1. Алиса создаёт свои пары ключей.

Шаг 2. Алиса и Боб обмениваются открытыми ключами.
Шаг 3. Алиса пишет Бобу сообщение, шифрует его своим закрытым ключом и отправляет Бобу.
Шаг 4. Боб расшифровывает сообщение открытым ключом Алисы.
Шаг 5. Боб пишет ответ, шифрует его своим закрытым ключом и отправляет Алисе.
Шаг 6. Алиса расшифровывает ответ открытым ключом Боба.
Здесь сообщения шифруются закрытыми ключами. Аутентификация достигается за счет того, что закрытые ключи есть только соответственно у Боба и Алисы. Также это обеспечивает безотказность: Боб и Алиса не смогут отрицать отправку сообщения, если их закрытые ключи не были скомпрометированы. Это, конечно, вызывает споры о том, насколько честны Алиса и Боб: они могут отказаться от своих сообщений, просто заявив, что ключ был скомпрометирован.
Примечание: этот сценарий предполагает безопасный внеполосной обмен открытыми ключами между Алисой и Бобом. Это имеет смысл для однократного обмена данными между двумя объектами, но не масштабируется для большого количества объектов.


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


Примечание: для асимметричного шифрования критично, чтобы закрытый ключ хранился в тайне. Если он будет скомпрометирован, злоумышленник может выдать себя за вас, отправлять и принимать ваши сообщения. 
Для генерации открытых/закрытых ключей используются сложные механизмы, но в результате они дают два случайных числа большой разрядности, одно из которых становится открытым ключом, а другое - закрытым. Генерация ключей интенсивно нагружает процессор, так как эти числа и их произведение должны соответствовать строгим математическим критериям для сохранения уникальности каждой пары ключей.
Примечание: никакой математический критерий не гарантирует уникальности пары, есть лишь гарантия того, что не будут созданы слабые ключи. Алгоритмы с открытым ключом редко используются для обеспечения конфиденциальности данных, так как имеют ограничения в производительности, требуют большого объема вычислений и плохо поддаются аппаратной оптимизации. Вместо этого  их обычно используют в приложениях, включающих аутентификацию с использованием цифровых подписей и управлении ключами. Открытые ключи также используются для шифрования симметричных сеансовых ключей, чтобы ими можно было обмениваться или отправлять их по общедоступной сети без компрометации. Некоторые из широко применяемых асимметричных алгоритмов: алгоритм Рона Ривеста, Ади Шамира, Леонарда Адлемана и Эль Гамаль.

Сильные и слабые стороны алгоритмов шифрования.

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


Следующий аспект - длина ключей и криптографическая стойкость алгоритмов. Криптостойкость - это, в целом, время, усилия и ресурсы, необходимые для взлома ключа. Стойкость очень сильно зависит от существующих современных технологий, особенно с вычислительной мощностью, так что это относительное понятие. На самом деле, механизмы безотказности - такие как спецификации ETSI - имеют функционал "повторного шифрования" данных, рассчитанный на использования по прошествии времени, когда стойкость оригинального шифрования уменьшается благодаря технологическим достижениям.Этот функционал рассчитан на долгосрочное использование. 
Количество бит ключа для безопасного шифрования в конкретной среде может быть спорным вопросом. Чем больше пространство ключей - диапазон всех возможных значений ключа, - тем сложнее взломать его простым перебором. Брутфорс атака заключается в том, что к алгоритму применяются все комбинации битов ключа до тех пор, пока сообщение не будет расшифровано. Таблица 2-1 демонстрирует количество вариантов, которые нужно перебрать для исчерпания всех возможных ключей указанной длины.
Таблица 2-1. Комбинации битов для брут-форс атаки

Длина ключа (бит)

Число комбинаций

40

240= 1,099,511,627,776

56

256= 7.205759403793 * 1016

64

264= 1.844674407371 * 1019

112

2112= 5.192296858535 * 1033

128

2128= 3.402823669209 * 1038

 

Стремление использовать как можно более длинные ключи естественно, так как это затрудняет их взлом, но чем длиннее ключ, тем больше вычислительных мощностей может потребовать процесс шифрования и дешифровки. Целью является сделать так, чтобы стоимость взлома ключа превысила стоимость информации, которую он защищает.
    Примечание: если вы собираетесь обмениваться конфиденциальными сообщениями на международном уровне, вы должны понимать текущую политику правительства и знать соответствующие правила. Во многих странах существуют спорные регламенты на длину ключа, допустимую для применения в алгоритмах шифрования. Имейте в виду, что контроль экспорта зашифрованных сообщений в США имеет много тонкостей.
Ещё одна тема для обсуждения - вектор инициализации. WEP использует алгоритм RC4 с разрядностью вектора 24 бит. 24-битовый IV даёт 16 миллионов комбинаций, так что теоретически, прежде чем отследить повторное использование ключа с IV, нужно перехватить миллионы пакетов. Но исследователи доказали, что на самом деле коллизия ключей может произойти примерно на 5000-м пакете. Этот факт и другие уязвимости обсуждаются в главе 6  - "Уязвимости в беспроводных сетях".


механизмы обеспечения целостности.


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


Хэш-функции.


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

Он должен быть случайным или создавать видимость случайности, чтобы не было возможности угадать исходное сообщение.
Хэши должны быть уникальными, т.е. не должно быть вероятности, что два сообщения дадут на выходе один и тот же дайджест.
Хэш должен быть односторонним, т.е. должно быть чрезвычайно сложно, если вообще возможно, установить входное сообщение по значению его хэш-функции.
Односторонние хэш-функции обычно используются для создания цифрового отпечатка сообщения или файла. Подобно отпечатку человеческого пальца, хэш уникален и, таким образом, обеспечивает целостность и подлинность сообщения. 
Давайте рассмотрим механизм использования хэш-функций. Рисунок 2-4 проливает свет на процедуру. Алиса и Боб используют одностороннюю Хэш-функцию, чтобы убедиться, что исходное сообщение не было подделано в процессе передачи.


Рисунок 2-4. Использование односторонней хэш-функции для обеспечения целостности данных.






Для обеспечения целостности Алиса и Боб предпринимают следующие шаги:
Шаг 1. Алиса создает сообщение и передает его на вход односторонней хэш-функции.
Шаг 2. Результат хэш-функции добавляется в качестве отпечатка к сообщению, которое отправляется Бобу.
Шаг 3. Боб разделяет сообщение и отпечаток и подает текст сообщения на вход такой же хэш-функции, какую использовала Алиса.
Шаг 4. Если хэши совпадают, Боб может быть уверен, что сообщение не было подделано.
Проблема такого упрощенного подхода заключается в том, что можно подделать отпечаток, то есть он подвержен атакам MitM - Man in the Middle.
Примечание:  атака MitM -  человек посередине - подразумевает объект, который прослушивает предположительно защищенное соединение и выдает себя за отправителя или получателя. Этот объект перехватывает сообщение отправителя, добавляет свое содержимое и создает правильный хэш для модифицированного сообщения. Получатель, не подозревая о посреднике, проверяет хэш, который, разумеется, будет верным, и приходит к выводу, что измененное сообщение было послано отправителем. Эта схема работает, поскольку не защищен сам хэш.
Чтобы эффективно использовать хэши в качестве отпечатков, нужно совмещать их с технологией открытых ключей для создания цифровых подписей, которая рассматривается в следующей часть главы.
Распространенными хэш-функциями являются: алгоритм Message Digest 4 (MD4), Message Digest 5 (MD5), Secure Hash Algorithm (SHA). MD4/5 были созданы Роном Ривестом из Массачусетского Технологического Института. В современных продуктах в основном используются MD5 и SHA, основанные на MD4. MD5 обрабатывает входные данные блоками по 512 бит и выдает дайджест длиной 128 бит. SHA также работает с блоками по 512 бит, но дайджест содержит 160 разрядов. SHA сильнее нагружает процессор и может работать несколько медленнее, чем MD5.


Цифровые подписи.


Цифровая подпись - это зашифрованный дайджест сообщения, который добавляется к документу. Она используется для того, чтобы подтвердить личность отправителя и целостность документа. Цифровые подписи основаны на комбинации асимметричного шифрования и надежных алгоритмов односторонней хэш-функции. На рисунке 2-5 показано создание цифровой подписи.


Рисунок 2-5. Создание цифровой подписи.







Чтобы создать цифровую подпись, Боб должен сделать следующее:
Шаг 1. Боб создает пару ключей: открытый/закрытый.
Шаг 2. Боб передаёт открытый ключ Алисе.
Шаг 3. Боб пишет Алисе сообщение и подаёт его на вход односторонней хэш-функции.
Шаг 4. Получившийся на выходе хэш Боб шифрует своим закрытым ключом, получая в результате цифровую подпись.
Алисе Боб отсылает комбинацию документа и цифровой подписи. На рисунке 2-6 показан процесс верификации цифровой подписи.


Рисунок 2-6. Верификация цифровой подписи.






Алиса как принимающая сторона должна совершить следующие действия, чтобы убедиться, что сообщение действительно отправлено Бобом (т.е. верифицировать цифровую подпись):
Шаг 1. Алиса разделяет полученное сообщение на документ и цифровую подпись. 
Шаг 2. Алиса использует открытый ключ Боба для расшифровки цифровой подписи, получая в результате дайджест исходного сообщения.
Шаг 3. Алиса сравнивает дайджесты, чтобы убедиться, что они совпадают.


Если дайджест, вычисленный Алисой из исходного сообщения совпадает с расшифрованным дайджестом Боба, то целостность документа подтверждена, и аутентификация отправителя пройдена.
Примечание: начальный обмен открытым ключом должен выполняться надежным образом с обеспечением безопасности. Это критически важно и является основной причиной использования цифровых сертификатов. Цифровой сертификат - это сообщение, подписанное закрытым ключом доверенной третьей стороны, в котором утверждается, что конкретный открытый ключ принадлежит лицу с определенным именем или объекту с определенными атрибутами. Если начальный обмен ключами не был безопасным, то злоумышленник может выдать себя за отправителя. Например, если А - шпион, и подслушав телефонный разговор, он узнает, что вы собираетесь передать кому-то свой открытый ключ по электронной почте, то он может перехватить ваше сообщение и подменить ваш открытый ключ своим, таким образом  получив возможность подделывать ваши сообщения. В реальности если вы отсылаете кому-то свой открытый ключ, то каковы шансы, что это кому-то небезразлично? Кого это должно волновать, если от этого не зависит тайна или деньги? Если вас это беспокоит, вы всегда можете позвонить получателю и удостоверить подлинность данных. При этом вы можете столкнуться с некоторыми вопросами и проблемами.
Цифровая подпись не обеспечивает конфиденциальность содержания сообщения. Однако, зачастую более важно удостоверить подлинность отправителя, нежели скрыть содержание сообщения. Вероятно, вам может понадобиться аутентификация и гарантия целостности сообщения, но не конфиденциальность, например, когда обновления таблиц маршрутизации передаются в базовой сети. Содержание таблиц может не быть конфиденциальным, но важно убедиться, что обновление инициировано доверенным источником. Ещё одним примером важности аутентификации отправителя является онлайн-торговля и банковские транзакции, для которых подтверждение происхождения обязательно, прежде чем предпринимать какие-либо действия.


Некоторыми из наиболее распространенных алгоритмов создания цифровых подписей с помощью открытых ключей являются алгоритмы Рона Ривеста, Ади Шамира и Леонарда Адлемана (RSA), а также Стандарт Цифровой Подписи (Digital Signature Standatd, DSS). DSS был предложен NIST и основан на алгоритме открытого ключа Эль-Гамаля. По сравнению с RSA, DSS быстрее генерирует ключи, имеет примерно такую же производительность при создании подписей, но гораздо медленнее проверяет подписи.



Управление ключами.


Управление ключами является сложной задачей в безопасной связи скорее из-за человеческого фактора, нежели с технической точки зрения. В мире беспроводной связи двумя важными факторами являются масштабируемость и управляемость. На данный момент беспроводные технологии используют симметричное шифрование. Для небольшого количество точек доступа (AP) и клиентов разумно создать ключ и ввести его вручную. Однако, для большинства крупных предприятий этот механизм неудобен и является устаревшим.
Распространенным способом для распределенного создания закрытых сеансовых ключей является алгоритм Диффи-Хеллмана. Этот алгоритм позволяет двум сторонам создать общий закрытый ключ, который будет известен только этим двум сторонам, даже если они общаются по незащищенному каналу. Затем этот закрытый ключ используется для шифрования данных с помощью асимметричного алгоритма, который они предпочитают. На рисунке 2-7  показана работа алгоритма Диффи-Хеллмана.


Рисунок 2-7. Создание закрытого ключа с помощью алгоритма Диффи-Хеллмана.





Алгоритм Диффи-Хеллмана состоит из следующих шагов.
Шаг 1. Алиса инициирует обмен данными и передает Бобу два больших числа - p и q.
Шаг 2. Алиса выбирает большое случайное целое число Xa и вычисляет значение следующего выражения: Ya=qXa mod p 
Шаг 3. Боб выбирает большое случайное целое число Xb  и вычисляет значение выражения:
 Yb=qXb mod p
Шаг 4. Алиса отправляет Ya Бобу, а Боб отправляет Yb Алисе.
Шаг 5. Алиса вычисляет значение выражения: Z = (YB)Xamod p
Шаг 6. Боб вычисляет значение: Z = (YA)Xb mod p
В результате у обоих есть разделяемый закрытый ключ Z = Z = qXaXb mod p.
Безопасность алгоритма основана на двух сложных математических задачах:

1. Злоумышленнику нужно вычислить дискретный логарифм, чтобы найти Xa и Xb - то есть рассчитать значение Xa по известному q^Xa или Xb по q^Xb.


2. Злоумышленнику нужно перемножать большие простые числа. Большими можно считать числа порядка 100-200 разрядов. Простыми должны быть p,q и (p-1)/2.


Управление ключами и начальное доверие - обширные области, которые до сих пор развиваются.



        Создание и распространение открытых ключей.


Создание пар ключей для асимметричных алгоритмов - сложная процедура. Ключи должны соответствовать строгим правилам, определяемым алгоритмом, которые должны гарантировать уникальность каждой пары ключей. Уникальность гарантируется "статистически" - т.е. вероятность того, что независимо будут сгенерированы одинаковые ключи, астрономическая. Сложность генерации пар ключей заключается в установке ряда параметров, удовлетворяющих требованиям алгоритма (например, простые числа для RSA и многих других алгоритмов). Сама по себе генерация или нахождение больших простых чисел обладает высокой вычислительной сложностью.


Примечание:

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


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


Цифровые сертификаты


Цифровой сертификат - это сообщение, снабженное цифровой подписью, которое обычно используется для подтверждения подлинности открытого ключа какого-либо объекта. Сертификаты требуют общего формата и в значительной степени основаны на стандарте ITU-T X.509. ITU-T (МСЭ-t) - это сектор стандартизации Международного союза электросвязи. Этот орган стандартизации выпустил много общих стандартов, таких как серии v.32, V.42, и V.90 для передачи данных по телефонным сетям с использованием модемов; серия Х - передача данных, серия Н - для аудиовизуальных мультимедийных систем. Общий формат сертификата X.509 V3 включает следующие элементы:


Номер версии

Серийный номер сертификата

Информация об алгоритме эмитента

Эмитент сертификата

Срок действия сертификата (дата начала и конца действия)

Открытый ключ субъекта

Информация об асимметричном алгоритме субъекта

Цифровая подпись выпустившего сертификат центра

Другие необязательные параметры.


Цифровые сертификаты являются способом проверки подлинности публичных ключей и вполне могут стать механизмом обеспечения возможности единого входа в корпоративную сеть. Но аспект развертывания этой технологии находится в зачаточном состоянии. Формат сертификатов в основном уже определён, но необходимо убедиться в подлинности сертификатов, их управляемости и согласованной семантической интерпретации. Под семантикой подразумеваются ответы на такие вопросы, как "чему можно и чему нельзя доверять?", "какой уровень доверия предполагает сертификат?".


Некоторые (в том числе один из рецензентов книги) не согласны с тем, что технология цифровых сертификатов находится в зачаточном состоянии. SSL/TLS - один из широко используемых криптографических стандартов, предполагает цифровые сертификаты. Это зрелая технология, но корпоративное развертывание аутентификации систем или пользователей с помощью цифровых сертификатов до сих пор не реализовано массово.


Центры сертификации.

Как уже упоминалось, Центр Сертификации (ЦС, Certificate Authority, CA) - это доверенная третья сторона, которая ручается за подлинность сертификата. ЦС должен регистрировать, распространять и удалять (отзывать) сертификаты, когда содержащаяся в них информация становится недействительной. Рисунок 2-8 демонстрирует, как Боб может получить надёжным способом открытый ключ Алисы, используюя ЦС.



Рисунок 2-8. Получения открытого ключа, используя ЦС




Пусть действительный сертификат Алисы хранится в ЦС, и Боб безопасным способом получил открытый ключ Центра Сертификации. Чтобы надежным способом получить открытый ключ Алисы, Боб должен предпринять следующие шаги:
Шаг 1. Боб запрашивает сертификат Алисы у ЦС.
Шаг 2. ЦС присылает сертификат Алисы, подписанный закрытым ключом центра.
Шаг 3. Боб получает сертификат и проверяет его цифровую подпись.
Шаг 4. Поскольку публичный ключ Алисы есть в сертификате, у Боба теперь имеется его "нотариально заверенная" версия.
В основе этой схемы - безопасное распространение открытых ключей ЦС между пользователями. Всё ещё ведутся дискуссии по поводу того, кто должен поддерживать ЦС в интернете. Интерес в предоставлении услуг ЦС выразили многие организации, в том числе финансовые институты, правительственные учреждения и поставщики приложений. В любом случае, это решения основано на доверии. Некоторый корпорации могут захотеть иметь собственную контролируемую инфраструктуру сертификатов, другие предпочтут аутсорсинг. Существует проблема стоимости: цены сторонних ЦС слишком высоки для многих предприятий.
Теперь, когда мы рассмотрели некоторые детали механизмов обеспечения  конфиденциальности и целостности, а также некоторые способы обмена ключами, давайте сменим тему и перейдём на следующий уровень: аутентификация и идентификация.




 








Monday, July 18, 2022

Безопасность беспроводных сетей. Глава 1. Ведение.


оригинал:    http://etutorials.org/Networking/Wireless+lan+security/

Глава 1. Введение


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

WLAN: Перспективы.


В определенном смысле беспроводные локальные сети - не что иное, как радиоволны разной частоты с разными характеристиками, используемые в качестве среды передачи данных. Концепция WLAN коренным образом отличается от привычного сетевого взаимодействия, представляющего собой проводные соединения через разъемы в аппаратуре.  Отсутствие проводов позволило обеспечить  повсеместную связь и преобладание объединенных сетевых моделей. Несмотря на популярность технологии, с точки зрения индустрии беспроводные локальные сети популярны недостаточно.

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

Беспроводная технология выходит за рамки обычных сетей передачи данных и позволяет оказывать услуги сотовой связи, IP-телефонии и др. Беспроводные сервисы работают повсеместно, в т.ч. в автомобилях. Недавно появились новости о предложении Федеральной Комиссии по Связи разрешить задействовать неиспользуемую полосу между телеканалами 2 и 51 для нелицензионных беспроводных устройств. Эта инициатива имеет большое значение: телевизионные сигналы работают на низких частотах, что дает бОльшую зону покрытия и лучшее проникновение через стены и другие препятствия, а также более сильный сигнал. Другим аспектом является способность телевизионной инфраструктуры предлагать интерактивные услуги на основе сетей WLAN, работающих в этом спектре.

Однако, беспроводная технология подразумевает ряд проблем: безопасность, ограниченный охват, изменчивость силы сигнала,отсутствие эффективных механизмов передачи/роуминга между точками доступа. Также WLAN добавляет  накладные расходы в виде служебных сообщений для обнаружения точек доступа, управления и тд.

Корпоративные беспроводные сети должные учитывать различные аспекты: мобильность, безопасность, управление сетью, управление частотами (RF), интеграцию в существующую инфраструктуру.

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

Дизайн WLAN развивается от распределенного/децентрализованного развертывания точек доступа и клиентов к централизованному с интеграцией в существующую инфраструктуру. Иллюстрацией этой тенденции служат, например, продукты CISCO:

1. CISCO Structured Wireless Aware Network (SWAN) распространяет "осведомленность о беспроводных сетях" на проводную инфраструктуру. Платформа предназначена для развертывания беспроводных сетей разного масштаба: от малых предприятий до корпораций, университетов и общественных сетей, - и предлагает возможность интеграции и расширения проводных и беспроводных сетей. Степень интеграции WLAN и LAN может быть высокой, либо WLAN можно наложить на существующую проводную инфраструктуру. SWAN рассматривается в 9 главе более подробно. 

2. Модуль Cisco Wireless LAN Services Module (WLSM) для серии Catalyst 6500 обеспечивает быстрый, безопасный беспроводной роуминг третьего уровня для университетов и упрощает развертывание беспроводной сети. Также WLSM позволяет расширить возможности Catalyst 6500 за счет следующих факторов:
- Он расширяет возможности супервизора серии свитчей 2 и 3 уровней Catalyst 6500 - непрерывную переадресацию, переключение с отслеживанием состояний - на беспроводной трафик.

- Обеспечивает полный спектр ACL для анализа трафика и ограничения скорости на основе заголовков пакетов протоколов уровня 2-4 для беспроводного трафика.

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

- Аппаратные механизмы защиты от отказа в обслуживании, такие как ограничители скорости в плоскости контроля и Unicast Reverse Path Forwarding (uRPF).

- Совместимость с модулями обнаружения вторжений, сетевого анализа, IPSec VPN и сервисными модулями сетевого экрана.

3. Инициатива Cisco Compatible Extensions (CCX) для WLAN обеспечивает возможность достижения функциональной совместимости при одновременном развитии различных стандартов и спецификаций для обеспечения безопасности, производительности и богатого функционала. Нельзя допускать отклонение от стандартов и фрагментацию при быстром прогрессе.

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


Компоненты и терминология wlan.


Традиционными составляющими WLAN являются точки доступа (AP), сетевые адаптеры (NICs) или клиенты, мосты, повторители и антенны. Кроме того, в корпоративной сети присутствуют серверы авторизации (AAA) (а именно RADIUS - Remote Address Dial-in User Service), система управления сетью (NMS), а также коммутаторы и маршрутизаторы с беспроводными адаптерами.

▪ Точка доступа (AP - Access Point) работает внутри определенного частотного диапазона и использует методы модуляции, предусмотренные стандартом 802.11. Она информирует беспроводных клиентов о своей доступности, проводит их авторизацию и предоставляет связь с беспроводной сетью. Также точка доступа координирует использование проводного соединения беспроводными клиентами. Существует несколько типов AP, которые могут работать в одном или нескольких диапазонах, согласно стандарту.

▪ Сетевой адаптер (NIC - Network Interface Controller). ПК или рабочая станция используют беспроводные сетевые карты (клиентские адаптеры) для подключения к беспроводной сети. Сетевые карты сканируют доступный диапазон частот на возможность подключения и связываются с точкой доступа или другим беспроводным клиентом. Операционная система клиентской машины взаимодействует с сетевой картой посредством драйвера. 

▪ Мост. Мосты служат для соединения нескольких сегментов локальной сети ( как проводной, так и беспроводной) на уровне MAC (Media Access Control). Беспроводные мосты имеют большую зону покрытия, чем AP, и служат для соединения между зданиями. Стандарт 802.11 определяет максимальную зону покрытия точки доступа одной милей. Мосты можно применять в разных вариантах, предусмотренных стандартом. Мосты не определяются в стандартах 802.11, то есть не работают по открытым стандартам. Поэтому мосты должны быть того же вендора, что и остальная инфраструктура беспроводной сети.

▪ Мост рабочей группы (WGB - Workgroup Bridge) - это мост меньшего масштаба, который может поддерживать ограниченное число проводных клиентов.

▪ Антенна излучает модулированный сигнал по воздуху, чтобы беспроводные клиенты могли его получить. Характеристики антенны определяются схемой распространения (остронаправленные, ненаправленные), коэффициентом усиления, мощностью передачи и т.д. Антенны должны присутствовать на AP, мостах и клиентах. Они не обязательно должны быть на виду: в ноутбуках, например, их обычно скрывают по бокам монитора.

▪ Сервер авторизации, аутентификации и сбора учётных данных (AAA - Authentication, Authorization, Accounting). Протоколы AAA необходимы для обеспечения безопасности беспроводного соединения. Сервер используется в корпоративных сетях для авторизации как пользователей, так и администраторов. Он может использоваться для реализации политики авторизации, например Virtual Lan (VLAN)  и SSID клиентов; для предоставления различных уровней доступа администраторам и для генерации ключей динамического шифрования для пользователей WLAN. 

▪ Система управления сетью (Network Management System) нужна для того, чтобы упростить развертывание больших сетей и управление ими. Система должна поддерживать программное/микропрограммное управление; настройки конфигураций; анализ тенденций производительности с отчетами, а также отчеты о клиентах беспроводной сети. В корпоративных сетях кроме этого требуется управление радиоспектром и обнаружение фальшивых точек доступа. NMS должна поддерживаться другими системными мониторами для логирования и т.п.

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

Описанные компоненты сети объединяются для создания сквозного подключения с обеспечением мобильности на предприятиях.

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

Клиентская сетевая карта может также называться "STA" - station, "supplicant" или "peer". Точку доступа также называют "authenticator" или "network access server" - сервер доступа к сети, так как она служит интерфейсом между клиентом и сетью. Сервер авторизации также называют "authentication server", "RADIUS server" или сервер контроля доступа - ACS, "access control server".

Стандарты wlan.


В основе различных аспектов домена WLAN лежат публичные стандарты таких организаций, как IEEE, ETSI - European Telecommunications Standards Institute - и IETF - Internet Engineering Task Force. Основной стандарт - это IEEE 802.11, описывающий протоколы беспроводных сетей, кадры данных, различные уровни и диапазоны частот. 


Стандарты IETF относятся к области протоколов и методов безопасности, а ETSI определяет частоты и другие вопросы регулирования радиосвязи. Глава 3 - «Стандарты WLAN» - подробно описывает различные стандарты.

Безопасность wlan


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


Концептуальная модель домена безопасности wlan.


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

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

Таблица 1-1



Сущности Идентификатор

Основы Имя пользователя, имя домена в сертификате

клиентские сетевые карты MAC-Id, IP-адрес

Точки доступа SSID


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

После успешной аутентификации в соответствии с действующими политиками клиент получает права доступа - авторизуется. Авторизация может принимать различные формы:

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

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

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

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


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

        Навигация по книге, краткое описание глав.


Прежде всего в книге уделяется внимание безопасности беспроводных сетей, поэтому все главы содержат прямо или косвенно аспекты безопасности. По сути книга разделена на 2 части: главы с 1 по 8 посвящены основам и концепциям, а главы с 9 по 13 посвящены проектированию, рекомендациям, настройке и развертыванию. 

Вы можете усомниться в пользе тщательного прочтения сухих стандартов и  материалов, посвященных подробностям работы протоколов. Некоторые могут привычно пропускать главы, посвященные стандартам, так как последние непрозрачны и сложны для чтения. Надеемся, что у вас появится мотивация прочесть эти главы. Как отметил один из рецензентов, из-за быстрого развития понимание стандартов представляет собой новую технологию, улучшающую работу беспроводных сетей и управление ими. Во многих случаях, как, например, EAP-FAST, реализация безопасной инфраструктуры требует знания основ протоколов аутентификации, таких как EAP. Кроме того, беспроводные сети развиваются быстрыми темпами: с начала написания книги сменилось уже как минимум 2 поколения! Поэтому единственная защита от того, чтобы отстать - следить за базовыми технологиями.

Глава 2: "Базовые принципы работы протоколов безопасности" - содержит краткий справочный материал по криптографии, различным протоколам и методам обеспечения безопасности. 

Глава 3: "Стандарты WLAN". Может показаться нудной, но является хорошим введением в разнообразие стандартов. Если вам понадобится больше информации о конкретном стандарте, можете обратиться непосредственно к стандарту. Знание основ главных стандартов IEEE и IETF необходимо для понимания методов усиления безопасности. 

Глава 4: "Основы беспроводных сетей" описывает основы ещё более детально.

Глубокие знания об уязвимостях действующих реализаций протоколов уберегут вас от повторения ошибок. В этом смысле полезным будет понимание классической реализации WEP, описанной в главе 5 - "Основные методы аутентификации и обеспечения конфиденциальности WLAN". В главе 6 "Уязвимости беспроводных сетей" вы углубитесь в аспекты безопасности. Наконец, как упоминалось ранее, для реализации инфраструктуры безопасности вы должны понимать протоколы. Глава 7 "Протоколы аутентификации EAP для локальных беспроводных сетей" и глава 8 "Протоколы шифрования и обеспечения целостности данных в беспроводных сетях" дают это понимание.

Главы с 9 по 13 посвящены наиболее интересным аспектам: проектированию, настройке и развертыванию WLAN.

Глава 9  "SWAN - комплексное решение для обеспечения безопасности" освещает систему Cisco Structured Wireless Aware Network (SWAN), которая обеспечивает масштабируемость, управляемость, надежность и простоту развертывания для малых, средних и крупных предприятий, а также в вертикальных коммуникациях.

Глава 10 "Руководство по проектированию безопасных сетей WLAN" и глава 11 "Рекомендации по безопасности при проектировании и эксплуатации локальных беспроводных сетей" предоставляют прекрасную возможность перейти от технических основ к проектированию и передовым методам эксплуатации. Глава 12 "Рекомендации и примеры конфигурации безопасных WLAN" посвящена настройке продуктов Cisco, которые могут пригодиться при работе с продуктами Aironet. Глава 13 "Примеры развертывания беспроводных сетей" предоставляет исчерпывающие знания о шаблонах развертывания, которые можно применить к реальным ситуациям.

Эта книга задумана и написана так, что её нужно читать последовательно, начиная с 1 главы  до конца. Различные концепции вводятся и обсуждаются с минимальными требованиями к предварительным знаниям. Кроме того, темы развиваются постепенно, так что вы не столкнетесь с новой технологией без предварительного ознакомления.

       Резюме


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






Saturday, July 25, 2020

МЕХАНИЗМ ПОТРЕБЛЕНИЯ ПАМЯТИ В LINUX.

оригинал
Эта статья для тех, кто когда-либо задавался вопросом: "Какого черта обычный текстовый редактор  KDE потребляет 25 МБ памяти?" многие считают, что приложения в Линукс, особенно программы KDE или GNOME, раздуты, основываясь в основном на выводе команды ps. Тем временем, это может быть как правдой, так и нет, в зависимости от программы. В общем случае это не так - многие программы гораздо более эффективно расходуют память, чем кажется.

Команда ps может выводить разную информацию о процессе, например,  process id, текущий статус, потребление ресурсов. Есть 2 показателя - VSZ and RSS, что означает “virtual set size” - количество виртуальной памяти, потребляемой процессом; и “resident set size” - количество физической памяти, потребляемой процессом.

Например:

USER       PID  %CPU  %MEM    VSZ     RSS    TTY  STAT   START   TIME   COMMAND
dbunker    3468     0.0          2.7      25400   14452    ?        S         20:19       0:00     kdeinit:kedit

Согласно выводу ps, Kedit потребляет около 25 МБ виртуальной памяти, а в физической занимает около 14 МБ (числа выше указаны в КиБ). Похоже, большинству людей  нравится случайным образом выбирать одно из этих чисел и считать его показателем реального использования памяти процессом. Я не буду сейчас объяснять разницу между VSZ & RSS, но, разумеется, это неверный подход. Ни одно из чисел не дает точного представления о том, сколько памяти требуется для работы Kedit.

PS не сообщает о реальном использовании памяти. На самом деле он показывает, сколько памяти потреблял бы каждый процесс, если бы он был единственным запущенным. Естественно, на реальной машине одновременно запущены десятки процессов, то есть числа, демонстрируемые VSZ & RSS почти наверняка неверные. Чтобы понять, почему, необходимо узнать, как Линукс работает с разделяемыми библиотеками программ.

Большинство основных программ в Линукс использует разделяемые библиотеки, чтобы обеспечить определенную функциональность. Например, редакторы текста из KDE будут использовать разделяемые библиотеки KDE (для взаимодействия с другими компонентами KDE), несколько библиотек Х (для отображения картинок и возможности копипастить). Многие из этих библиотек, особенно общего использования, как libc, используются также другими программами, работающими в системе. Так как библиотеки разделяемые, Линукс загружает в память всего по одной копии библиотеки, и каждая программа, ссылающаяся на неё, использует эту копию.

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

К сожалению, точное количество памяти, потребляемой процессом, не просто получить. Вы должны не только знать, как работает система, но и решить, как ответить на сложные вопросы. Должна ли учитываться при расчете потребления памяти процессом разделяемая библиотека, необходимая только для одного процесса? Если разделяемая библиотека используется несколькими процессами, следует ли разделить память, которую она потребляет, равномерно между разными процессами, или просто проигнорировать её? Здесь нет однозначного критерия - в зависимости от вашей ситуации ответы могут быть разными.

Учитывая неоднозначность, легко понять, почему ps не старается вычислить "правильные" значения.

Просмотр карты памяти процесса скажет достаточно. Давайте посмотрим на ситуацию с этим "огромным" Kedit. Для этого используем программу pmap -d:

Address Kbytes Mode Offset Device Mapping
0804800   40 r-x – 0000000000000000 0fe:00000 kdeinit
08052000 4 rw— 0000000000009000 0fe:00000 kdeinit
08053000 1164 rw— 0000000008053000 000:00000 [ anon ]
40000000 84 r-x– 0000000000000000 0fe:00000 ld-2.3.5.so
40015000 8 rw— 0000000000014000 0fe:00000 ld-2.3.5.so
40017000 4 rw— 0000000040017000 000:00000 [ anon ]
40018000 4 r-x– 0000000000000000 0fe:00000 kedit.so
40019000 4 rw— 0000000000000000 0fe:00000 kedit.so
40027000 252 r-x– 0000000000000000 0fe:00000 libkparts.so.2.1.0
40066000 20 rw— 000000000003e000 0fe:00000 libkparts.so.2.1.0
4006b000 3108 r-x– 0000000000000000 0fe:00000 libkio.so.4.2.0
40374000 116 rw— 0000000000309000 0fe:00000 libkio.so.4.2.0
40391000 8 rw— 0000000040391000 000:00000 [ anon ]
40393000 2644 r-x– 0000000000000000 0fe:00000 libkdeui.so.4.2.0
40628000 164 rw— 0000000000295000 0fe:00000 libkdeui.so.4.2.0
40651000 4 rw— 0000000040651000 000:00000 [ anon ]
40652000 100 r-x– 0000000000000000 0fe:00000 libkdesu.so.4.2.0
4066b000 4 rw— 0000000000019000 0fe:00000 libkdesu.so.4.2.0
4066c000 68 r-x– 0000000000000000 0fe:00000 libkwalletclient.so.1.0.0
4067d000 4 rw— 0000000000011000 0fe:00000 libkwalletclient.so.1.0.0
4067e000 4 rw— 000000004067e000 000:00000 [ anon ]
4067f000 2148 r-x– 0000000000000000 0fe:00000 libkdecore.so.4.2.0
40898000 64 rw— 0000000000219000 0fe:00000 libkdecore.so.4.2.0
408a8000 8 rw— 00000000408a8000 000:00000 [ anon ]
…. (trimmed) …
mapped: 25404K writeable/private: 2432K shared: 0K

Вырезанные строки аналогичны тем, которые вы видите. Даже из неполного вывода можно увидеть очень интересные вещи. Важно отметить, что каждая разделяемая библиотека отображается в списке дважды: один раз - сегмент её кода, второй раз - сегмент данных. Права доступа к сегменту кода "r-x--", а данных - "rw---". Нас интересуют только  поля Kbytes, Mode, и Mapping, так как остальные не имеют отношения к делу.

Если вы просмотрите вывод, то обнаружите, что записи с бОльшими значениями Kbytes - это обычно сегменты кода разделяемых библиотек. Они хороши тем, что процессы могут разделять их между собой. Если исключить все части, разделенные между процессами,  получится значение   “writeable/private”, которое фигурирует в конце вывода. Это можно считать дополнительными издержками процесса, исключая разделяемые библиотеки. Таким образом, стоимость запуска этого экземпляра Kedit (учитывая, что все разделяемые библиотеки уже были загружены) около 2 мегабайт. Это довольно сильно отличается от 14 или 25 МБ, которые показала ps.

Что все это означает?

Мораль истории такова, что использование памяти процессами в Линукс - сложная материя. Не получится просто запустить ps и узнать, что происходит. Особенно это касается программ, которые создают много идентичных дочерних процессов, как Apache. Ps может показать, что каждый экземпляр Апача потребляет 10 МБ памяти, а на самом деле может быть, что предельное значение 1 МБ. Эта информация критична при настройке Apache’s MaxClients, которая задает, сколько запросов может одновременно обрабатывать сервер.

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


Friday, December 6, 2019

Команда find: основные параметры и примеры.

Оригинал: https://www.booleanworld.com/guide-linux-find-command/

Find - часть пакета findutils. Она позволяет искать файлы и каталоги, задавая различные условия, а также выполнять разные действия над результатом поиска.

ВВЕДЕНИЕ.

Основная структура команды выглядит так:

    find [paths] [expression] [actions]

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

По умолчанию find находит всё, что есть в каталоге, но можно задать фильтры. Действие по умолчанию - вывод результатов на stdout, то есть print, но можно задавать и другие команды.

После рассмотрения примеров станет понятнее, о чем речь.

ПОИСК ФАЙЛОВ И КАТАЛОГОВ.

Допустим, вам нужен список всех файлов и подкаталогов какого-то каталога. Например, /usr/share.

    find /usr/share

Команда выдаст список вида:


/usr/share
/usr/share/dict
/usr/share/gnome-doc-utils
/usr/share/gnome-doc-utils/templates
/usr/share/gnome-doc-utils/templates/gnome-app-template.xml
/usr/share/gnome-doc-utils/templates/legal.xml
.......
который может быть очень длинным.

Если вам нужно вывести содержимое нескольких каталогов, их нужно указать:

    find /sbin /bin /usr/sbin

Без аргументов будет выведено содержимое текущего каталога - .


ПОИСК ПО НАЗВАНИЮ.

В начале мы говорили о возможности фильтровать вывод. Обсудим это подробнее.

Поиск по шаблону NEWS.txt в каталоге /usr:

    find /usr -name NEWS.txt

Ключ -name предполагает регистрозависимый поиск. Если не нужно учитывать регистр, вместо name используется iname.

Ключи -iname и -name принимают wildcards - специальные символы, заменяющие другие символы. Этих символов два:" ? "- любой одиночный символ;" * " -  любое количество любых символов, включая 0 - то есть их отсутствие. При использовании спецсимволов, параметр для name\iname нужно заключать в одинарные или двойные кавычки, чтобы оболочка командной строки не раскрыла их как свои регулярные выражения.

Поиск файлов с расширением .txt в каталоге /usr:

    find /usr -name '*.txt'

Поиск файлов и подкаталогов, название которых состоит из 4 букв:

    find /usr -name '????'

Для поиска не по имени, а по полному пути используется ключ -path. Например, вам нужно найти все файлы и каталоги с окончанием ".txt" в подкаталоге src:

    find /usr -path '*/src/*.txt'

Для игнорирования регистра используется ключ -ipath в подкаталоге src:

    find /usr -path '*/src/*.txt'

Для игнорирования регистра используется ключ -ipath.


ПОИСК ФАЙЛОВ ИЛИ КАТАЛОГОВ.

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

 f - files; d - directories, l - symbolic links.

То есть поиск всех файлов в каталоге будет выглядеть так:

    find /usr -type f -name '*.txt'

Поиск подкаталогов, начинающихся с 'python':

    find /usr -type d -name 'python*'

ПОИСК ПУСТЫХ ФАЙЛОВ И КАТАЛОГОВ.

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

    find ~ -type d -empty

ИНВЕРСИЯ ВЫБОРА.

Это полезно, когда нужно исключить из поиска соответствующие критерию сущности. Например, найти все файлы в каталоге, название которых не заканчивается на '.txt' :

    find /usr -type f ! -name '*.txt'

ПОИСК ПО ВЛАДЕЛЬЦУ.

Для поиска файлов и каталогов, принадлежащих определенному пользователю, есть ключ -user. Например, найти все файлы  в системе, принадлежащие пользователю booleanworld:

    find / -type f -user booleanworld

Можно также передавать не имя, а ID пользователя, который выясняется командой id:

    id -u <username>

Аналогично, есть ключ -group для поиска файлов и каталогов, принадлежащих группе. ID группы выясняется командой id:

    id -g <username>

ПОИСК ПО ДАТЕ И ВРЕМЕНИ.
В Линуксе есть 3 типа временных меток, связанных с файлом:

 ▪ Modification time (mtime): время последнего изменения содержимого.
 ▪ Access time (atime): время, когда файл открывали на чтение.
 ▪ Change time (ctime): время последней модификации содержимого файла или его атрибутов.

Ключи команды find для поиска по времени, соответственно: -mtime, -atime, -ctime. Они также позволяют фильтровать файлы по количеству дней. День - это период в 24  часа.

Например:

-mtime 2: поиск файла, измененного 2 дня назад, т.е. от 48 до 72 часов назад.
-mtime -2: файл изменен менее 48 часов назад, т.е. в последние 48 часов.
-mtime +2: файл изменен более 2 дней назад - как минимум 3 дня назад, т.е. 72 и более часа назад.

Ключи atime и ctime работают так же.

Если день - это слишком долго, есть ключи по минутам: -mmin, -amin, -cmin. Так, -amin +5 - это файлы, доступ к которым в последний раз был более 5 минут назад. Флаги можно комбинировать. Например, файлы, которые были изменены 2 дня назад, а последний доступ был 5 минут назад:

find /usr -type f -mtime 2 -amin 5

Можно использовать один флаг несколько раз. Например, файлы, измененные от 50 до 100 дней назад:

find /usr -type f -mtime +50 -mtime -100 # Не факт, что у вас сработает.

ПОИСК ПО РАЗМЕРУ.

Ключ -size. Каталоги не будут отображаться, так как не имеют размера. Размер указывается числом, за которым следует буква, обозначающая единицы измерения:

 c - байт; k - килобайт; M -мегабайт; G - гигабайт.

Так же, как со временем, + и - обозначают "более чем" и "менее чем".

Например, файлы больше 1 Гб:

    find / -size +1G

ПОИСК ПО ПРАВАМ ДОСТУПА.

Ключ -perm позволяет искать по правам доступа как в числовом, так и в символьном виде.

▪ СИМВОЛЬНЫЕ ПРАВА.
Допустим, вы хотите найти все файлы и подкаталоги в /usr с правами rwxr-xr-x:

    find /usr -perm u=rwx,g=rx,o=rx

где u - это пользователь-владелец файла; g - пользователи, входящие в группу-владельца; о - other, т.е. пользователи, не входящие в группу, владеющую файлом.

Буква a обозначает all - всех пользователей.

Например, найти все файлы и каталоги в системе с правами  r-xr-xr-x:

    find /usr -perm a=rx

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

    find / -type f -perm /a=x

▪ ЧИСЛЕННЫЕ ПРАВА.
Первый пример в предыдущей части - файлы с правами rwxr-xr-x в каталоге /usr:

    find /usr -perm 644

Сложнее найти подмножество прав. Как мы упомянули ранее, поиск файлов, которые могут исполнять все пользователи, включает в себя проверку, установлен ли бит исполнения в 1. Другие биты нас не интересуют. Бит, который нам нужно проверить, мы берем равным 1, а остальные - равными 0. Таким образом мы получим двоичное число, которое переведем в восьмеричное:

(001  001  001)₂ = 111₈
user group other

Затем перед восьмеричным числом надо поставить "-" как индикатор поиска по подмножеству:

    find / -type f -perm -111

!!! Примечание переводчика: не знаю, может у автора другая версия find, чем у меня, но вообще, "/" обозначает, что бит выставлен у какого-либо типа пользователей (u,g, или o, или у всех), то есть как нестрогая дизъюнкция; "-" означает, что все заявленные биты выставлены, то есть как конъюнкция. Это описано в мануале. Т.е. /a=x значит, что бит исполнения вообще есть в правах - например, rwx--, - а -111 (или -а=х) значит, что бит выставлен у всех пользователей.

ПОИСК ПО ФЛАГАМ В ПРАВАХ ДОСТУПА.

Флаг suid  в символьном виде выражается как 4 перед основными правами. Таким образом, чтобы найти файлы с суидным битом, нужно ввести:

find / -type f -perm -4000(/4000)

* Прим. переводчика: В этом случае "-" и "/" эквивалентны, но если нужно задать ещё другие права, то вывод команд поиска будет разным.
Аналогично, set group id обозначается цифрой 2 перед правами, а  sticky bit  - цифрой 1. Если биты сочетаются, то их значения складываются. То есть, если нужно найти файлы со битами suid и sgid, то шаблон будет 6000.

В символьном режиме шаблон поиска будет выглядеть примерно так:

    find / -type f -perm /u=s

Шаблон для бита sgid - /g=s; для sticky - /o=t.

ОГРАНИЧЕНИЕ ГЛУБИНЫ РЕКУРСИВНОГО ПОИСКА.

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

ЛОГИЧЕСКИЕ ОПЕРАТОРЫ В КОМАНДЕ FIND.

Команда поддерживает ключи -a (and) и -o (or), а также группировку частей выражения с помощью скобок. Скобки надо экранировать бэкслешем или брать в кавычки, чтобы шелл не принимал их за свое регулярное выражение. При указывании нескольких флагов одного за другим find считает, что вы используете and (expr1 expr2).

Например, рассмотренный ранее поиск каталогов, названия которых начинаются с 'python':

find /usr -type d -name 'python*'

Оператор and можно указать явно: 

find /usr -type d -a -name 'python*'

Рассмотрим другой пример: нужно найти файлы/каталоги в системе, которые были изменены в последние 5 минут или более 50 дней назад:

find / -mmin -5 -o -mtime +50

Теперь введем дополнительное ограничение к предыдущей задаче: нужно найти только файлы. Так как приоритет and выше, чем or, то понадобятся скобки:

find / '(' -mmin -5 -o -mtime +50 ')' -a -type f
Так как -а в данном случае подразумевается, его можно опустить.

ДЕЙСТВИЯ НАД РЕЗУЛЬТАТОМ ПОИСКА.

Команда поддерживает различные действия, такие как копирование или удаление. Действие по умолчанию - вывод результатов на stdout.

▪ Удаление.
Действие -delete. Работает как с файлами,так и с каталогами. Например, чтобы удалить все пустые директории в домашнем каталоге:

find ~ -type d -empty -delete

▪ Выполнение произвольной команды.
Можно выполнить свою команду, использовав ключ -exec. Предположим, вы хотите сделать резервную копию mp3 файлов из вашего домашнего каталога на внешний диск. Пусть этот диск смонтирован в /media/MyDrive. Чтобы скопировать 1 файл, нужно дать следующую команду: cp <path to file> /media/MyDrive

Чтобы скопировать все файлы:

find ~ -type f -name '*.mp3' -exec cp {} ';'

где "{}" заменяет путь к файлу; ";" - индикатор окончания ввода аргументов. Оба символа нуждаются в экранировании, так как являются спецсимволами также для оболочки командной строки.
Каждый раз, когда find находит файл, подходящий под условие поиска, она заменяет фигурные скобки путём к файлу и выполняет команду для этого файла.
Ещё один важный пример - поиск строки во множестве файлов. Чтобы найти строку "hello" в файле, используется grep:
grep hello <filename>
Если вы знакомы с grep, у вас может возникнуть соблазн дать следующую команду:
find ~ -type f -exec grep hello {} ';'
Однако, если вы это сделаете, то сразу осознаете ошибку: нам нужен список файлов, в которых содержится строка "hello", а мы получим список строк, содержащих шаблон. Ключ -l команды grep используется для вывода путей к файлам, содержащим шаблон.
find ~ -type f -exec grep -l hello {} ';'

ЕЩЁ ОДИН ВАРИАНТ ДЕЙСТВИЙ НАД РЕЗУЛЬТАТОМ.

Допустим, вам нужно создать сжатый архив. Например, вы хотите заархивировать и сжать все mp3-файлы в своем домашнем каталоге. Вероятно, вы сделаете так:
find ~ -type f -name '*.mp3' -exec tar -czf music.tar.gz {} ';'
Однако, если вы посмотрите содержание архива, то увидите, что там только один файл mp3. Запомните, что find выполняет команду каждый раз, когда находит новое совпадение. Итак, предыдущий файл каждый раз переписывался новым архивом.

Эта проблема решилась бы, если бы можно было указать команде find передавать tar список файлов после того, как найдены все совпадения. В этом случае нам нужен второй вариант ключа -exec, когда вместо ";" в конце команды ставится "+":

find ~ -type f -name '*.mp3' -exec tar -czf music.tar.gz {} +

ВЫПОЛНЕНИЕ ДЕЙСТВИЙ НАД КАТАЛОГАМИ.

Иногда нужно выполнить команду, аргументом которой должен быть каталог, в котором находится искомый файл/каталог. Для этого есть ключ -execdir. Он аналогичен ключу -exec во всем, и даже имеет варианты с ";" и "+".
* У меня в мануале ключ execdir описывается как более безопасный вариант exec  - в случае execdir команда выполняется из подкаталога, содержащего искомый файл, который обычно отличается от каталога, из которого вы вызываете find.

ПРОСМОТР ИНФОРМАЦИИ О ФАЙЛЕ.

Если вы хотите увидеть метаданные файла/каталога, такие как права доступа и размер, нужно использовать ключ -ls. Например, вам нужны детали о файлах в системе, размер которых больше 1 Гб:

find / -type f -size +1G -ls

СКРЫТИЕ СООБЩЕНИЙ ОБ ОШИБКАХ.

Иногда во время выполнения команды find вы можете получить сообщения типа "Permission denied". Эти сообщения можно скрыть, перенаправив их в /dev/null:

find [paths] [expression] [actions] 2>/dev/null