security.html 152 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467
  1. <!DOCTYPE html>
  2. <html lang="ru">
  3. <head>
  4. <meta charset="utf-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
  6. <title>Безопасность &#8212; Неофициальный FAQ по Fedora (версия 2023.05.30)</title>
  7. <link rel="stylesheet" type="text/css" href="_static/pygments.css" />
  8. <link rel="stylesheet" type="text/css" href="_static/alabaster.css" />
  9. <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
  10. <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
  11. <script src="_static/doctools.js"></script>
  12. <script src="_static/sphinx_highlight.js"></script>
  13. <script src="_static/translations.js"></script>
  14. <script defer="defer" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
  15. <script defer="defer" src="_static/search.js"></script>
  16. <link rel="icon" href="_static/faq-icon.ico"/>
  17. <link rel="index" title="Алфавитный указатель" href="genindex.html" />
  18. <link rel="search" title="Поиск" href="search.html" />
  19. <link rel="next" title="Работа в системе" href="using-system.html" />
  20. <link rel="prev" title="Виртуализация" href="virtualization.html" />
  21. <link rel="stylesheet" href="_static/custom.css" type="text/css" />
  22. <link rel="apple-touch-icon" href="_static/faq-icon.png" />
  23. <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
  24. </head><body>
  25. <div class="document">
  26. <div class="documentwrapper">
  27. <div class="bodywrapper">
  28. <div class="body" role="main">
  29. <section id="security">
  30. <span id="id1"></span><h1>Безопасность<a class="headerlink" href="#security" title="Permalink to this heading">¶</a></h1>
  31. <section id="selinux">
  32. <span id="index-0"></span><span id="id2"></span><h2>Что такое SELinux?<a class="headerlink" href="#selinux" title="Permalink to this heading">¶</a></h2>
  33. <p>SELinux – это мандатная система контроля доступа, ограничивающая доступ ряду сервисов к файлам и каталогам.</p>
  34. <p>Более подробная информация может быть получена <a class="reference external" href="https://ru.wikipedia.org/wiki/SELinux">здесь</a>.</p>
  35. </section>
  36. <section id="selinux-temp">
  37. <span id="index-1"></span><span id="id3"></span><h2>Как мне временно отключить SELinux?<a class="headerlink" href="#selinux-temp" title="Permalink to this heading">¶</a></h2>
  38. <p>Мы настоятельно не рекомендуем этого делать, однако если это необходимо, то для временного однократного отключения SELinux, передадим ядру Linux специальный <a class="reference internal" href="administration.html#kernelpm-once"><span class="std std-ref">параметра ядра</span></a>:</p>
  39. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>SELINUX=0
  40. </pre></div>
  41. </div>
  42. </section>
  43. <section id="selinux-disable">
  44. <span id="index-2"></span><span id="id4"></span><h2>Как мне навсегда отключить SELinux?<a class="headerlink" href="#selinux-disable" title="Permalink to this heading">¶</a></h2>
  45. <p>Для постоянного отключения SELinux, откроем его главный файл файл конфигурации <code class="docutils literal notranslate"><span class="pre">/etc/selinux/config</span></code> в текстовом редакторе:</p>
  46. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudoedit /etc/selinux/config
  47. </pre></div>
  48. </div>
  49. <p>Изменить значение директивы <code class="docutils literal notranslate"><span class="pre">SELINUX</span></code> на одно из допустимых значений:</p>
  50. <blockquote>
  51. <div><ul class="simple">
  52. <li><p><code class="docutils literal notranslate"><span class="pre">enforcing</span></code> — включён и блокирует всё, что явно не разрешено;</p></li>
  53. <li><p><code class="docutils literal notranslate"><span class="pre">permissive</span></code> — включён, но ничего не блокирует, а лишь записывает события в <a class="reference internal" href="administration.html#journal-current"><span class="std std-ref">системный журнал</span></a>;</p></li>
  54. <li><p><code class="docutils literal notranslate"><span class="pre">disabled</span></code> — полностью отключён.</p></li>
  55. </ul>
  56. </div></blockquote>
  57. <p>Изменения вступят в силу при следующей загрузке системы.</p>
  58. </section>
  59. <section id="selinux-status">
  60. <span id="index-3"></span><span id="id5"></span><h2>Как узнать текущий статус SELinux?<a class="headerlink" href="#selinux-status" title="Permalink to this heading">¶</a></h2>
  61. <p>Получим текущий статус SELinux при помощи одной из следующих команд: <code class="docutils literal notranslate"><span class="pre">getenforce</span></code> или <code class="docutils literal notranslate"><span class="pre">sestatus</span></code>.</p>
  62. </section>
  63. <section id="selinux-auditd">
  64. <span id="index-4"></span><span id="id6"></span><h2>Как разрешить заблокированные действия SELinux?<a class="headerlink" href="#selinux-auditd" title="Permalink to this heading">¶</a></h2>
  65. <p>По умолчанию <a class="reference internal" href="#selinux"><span class="std std-ref">SELinux</span></a> будет блокировать доступ к любым файлам, каталогам, сокетам, которые не разрешены в политиках для конкретного процесса. Это вызывает множество проблем, поэтому пользователи зачастую предпочитают <a class="reference internal" href="#selinux-disable"><span class="std std-ref">отключать SELinux</span></a>, что в корне неверно. Вместо этого следует разобраться в причине блокировки и создать разрешающее правило.</p>
  66. <p>Очистим журнал аудита для того, чтобы избавиться от предыдущих ошибок и случайно не позволить лишние действия, накопившиеся с момента его прошлой ротации:</p>
  67. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo bash -c &quot;cat /dev/null &gt; /var/log/audit/audit.log&quot;
  68. </pre></div>
  69. </div>
  70. <p>Запустим приложение, модуль ядра и т.д., который вызывает срабатывание SELinux и блокировку доступа к ресурсу (файлу, каталогу, сокету). Как только это произойдёт, воспользуемся утилитой <strong>audit2allow</strong> для анализа журнала аудита, облегчающей создание новых разрешающих правил для SELinux:</p>
  71. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo bash -c &quot;cat /var/log/audit/audit.log | audit2allow -M foo-bar&quot;
  72. </pre></div>
  73. </div>
  74. <p>В результате работы данной утилиты будет создан новый модуль <code class="docutils literal notranslate"><span class="pre">foo-bar.te</span></code>, в котором разрешаются действия, записи о запрещении которых были внесены в журнал auditd ранее.</p>
  75. <p>Перед применением этого файла и созданием политики SELinux обязательно загрузим его в текстовый редактор и проверим корректность, т.к. в нем может содержаться больше разрешающих правил, чем требуется, а также присутствуют подсказки о том, как правильно настроить SELinux.</p>
  76. <p>В сгенерированном файле модуля <code class="docutils literal notranslate"><span class="pre">foo-bar.te</span></code> после комментария <em>This avc can be allowed using one of the these booleans</em> присутствует список переменных двоичного типа, установка которых поможет разрешить заблокированное действие. Справочную информацию можно получить из документации SELinux:</p>
  77. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>getsebool -a
  78. </pre></div>
  79. </div>
  80. <p>Описание переменных SELinux, относящихся к работе веб-сервера, можно найти <a class="reference external" href="https://dwalsh.fedorapeople.org/SELinux/httpd_selinux.html">здесь</a>.</p>
  81. </section>
  82. <section id="selinux-httpd">
  83. <span id="index-5"></span><span id="id7"></span><h2>Как настроить SELinux так, чтобы веб-сервер мог создавать файлы и каталоги?<a class="headerlink" href="#selinux-httpd" title="Permalink to this heading">¶</a></h2>
  84. <p>Если при работе веб-сервера в журналах появляются сообщения вида:</p>
  85. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>Warning: chmod(): Permission denied in /var/www/html/foo-bar/foo.php on line XXX
  86. Warning: Directory /var/www/html/foo-bar/foo not writable, please chmod to 755 in /var/www/html/foo-bar/foo.php on line XXX
  87. </pre></div>
  88. </div>
  89. <p>Они означают, что процесс веб-сервера (или интерпретатора языка программирования) не может получить доступ на запись. Если права доступа (chmod и chown) при этом установлены верно, значит доступ блокирует <a class="reference internal" href="#selinux"><span class="std std-ref">SELinux</span></a>.</p>
  90. <p>Установим правильный контекст безопасности для всех каталогов внутри <code class="docutils literal notranslate"><span class="pre">document_root/foo-bar</span></code>:</p>
  91. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo semanage fcontext -a -t httpd_sys_rw_content_t &quot;/var/www/html/foo-bar(/.*)?&quot;
  92. </pre></div>
  93. </div>
  94. <p>Сбросим контекст безопасности для всех файлов внутри document_root рекурсивно:</p>
  95. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo restorecon -Rv /var/www/html
  96. </pre></div>
  97. </div>
  98. <p>Для отмены произведённых изменений контекста выполним:</p>
  99. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo semanage fcontext -d &quot;/var/www/html/foo-bar(/.*)?&quot;
  100. </pre></div>
  101. </div>
  102. <p>Получим список контекстов для httpd:</p>
  103. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo semanage fcontext -l | grep httpd
  104. </pre></div>
  105. </div>
  106. <p>Если предудущая команда выводит очень много информации, осуществим фильтрацию вывода:</p>
  107. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo semanage fcontext -l | grep /var/www/html
  108. </pre></div>
  109. </div>
  110. <p>Получим список файлов и каталогов с установленным контекстом SELinux:</p>
  111. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>ls -laZ /var/www/html/foo-bar
  112. </pre></div>
  113. </div>
  114. <p>Более полную информацию о контекстах безопасности и работе с ними можно найти <a class="reference external" href="https://docs.fedoraproject.org/en-US/Fedora/25/html/SELinux_Users_and_Administrators_Guide/sect-Security-Enhanced_Linux-Working_with_SELinux-SELinux_Contexts_Labeling_Files.html">здесь</a>.</p>
  115. <p>Откроем текстовый редактор и создадим новый модуль <code class="docutils literal notranslate"><span class="pre">httpd_wr.te</span></code>:</p>
  116. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>module httpd_wr 1.0;
  117. require {
  118. type httpd_t;
  119. type httpd_sys_rw_content_t;
  120. class file { create write setattr rename unlink };
  121. class dir { create write setattr add_name remove_name rmdir };
  122. }
  123. allow httpd_t httpd_sys_rw_content_t:file { create write setattr rename unlink };
  124. allow httpd_t httpd_sys_rw_content_t:dir { create write setattr add_name remove_name rmdir };
  125. </pre></div>
  126. </div>
  127. <p>Проверим, скомпилируем и установим его:</p>
  128. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo checkmodule -M -m httpd_wr.te -o httpd_wr.mod
  129. sudo semodule_package -o httpd_wr.pp -m httpd_wr.mod
  130. sudo semodule -i httpd_wr.pp
  131. </pre></div>
  132. </div>
  133. <p>Больше полезной информации о модулях:</p>
  134. <blockquote>
  135. <div><ul class="simple">
  136. <li><p><a class="reference external" href="https://habr.com/ru/company/pt/blog/142423/">создание модулей SELinux</a>;</p></li>
  137. <li><p><a class="reference external" href="https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/4/html/SELinux_Guide/rhlcommon-section-0049.html">создание разрешений для классов</a>;</p></li>
  138. <li><p><a class="reference external" href="https://dwalsh.fedorapeople.org/SELinux/httpd_selinux.html">информация о контекстах и настройках для веб-сервера</a>.</p></li>
  139. </ul>
  140. </div></blockquote>
  141. </section>
  142. <section id="selinux-connections">
  143. <span id="index-6"></span><span id="id8"></span><h2>Как настроить SELinux так, чтобы веб-сервер мог осуществлять исходящие сетевые соединения?<a class="headerlink" href="#selinux-connections" title="Permalink to this heading">¶</a></h2>
  144. <section id="nsl-first">
  145. <span id="id9"></span><h3>Первый вариант (самый правильный):<a class="headerlink" href="#nsl-first" title="Permalink to this heading">¶</a></h3>
  146. <p>Откроем текствый редактор и создадим новый модуль <code class="docutils literal notranslate"><span class="pre">httpd_network.te</span></code>:</p>
  147. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>module httpd_connect 1.0;
  148. require {
  149. type httpd_t;
  150. type ephemeral_port_t;
  151. class tcp_socket name_connect;
  152. }
  153. allow httpd_t ephemeral_port_t:tcp_socket name_connect;
  154. </pre></div>
  155. </div>
  156. <p>Проверим, скомпилируем и установим его:</p>
  157. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo checkmodule -M -m httpd_network.te -o httpd_network.mod
  158. sudo semodule_package -o httpd_network.pp -m httpd_network.mod
  159. sudo semodule -i httpd_network.pp
  160. </pre></div>
  161. </div>
  162. <p>Получим названия диапазонов портов:</p>
  163. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo semanage port -l
  164. </pre></div>
  165. </div>
  166. <p>Добавим порт в диапазон:</p>
  167. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>semanage port -a -t ephemeral_port_t -p tcp 80-88
  168. </pre></div>
  169. </div>
  170. <p>Удалим порт из диапазона:</p>
  171. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>semanage port -d -t ephemeral_port_t -p tcp 80-88
  172. </pre></div>
  173. </div>
  174. <p>Здесь <strong>ephemeral_port_t</strong> – название диапазона, <strong>tcp</strong> – используемый протокол, а <strong>80-88</strong> – диапазон разрешаемых портов.</p>
  175. </section>
  176. <section id="nsl-second">
  177. <span id="id10"></span><h3>Второй вариант (быстрый, но менее безопасный)<a class="headerlink" href="#nsl-second" title="Permalink to this heading">¶</a></h3>
  178. <p>Разрешим любые исходящие соединения для веб-сервера:</p>
  179. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo setsebool -P httpd_can_network_connect on
  180. </pre></div>
  181. </div>
  182. </section>
  183. </section>
  184. <section id="openvpn-selinux">
  185. <span id="index-7"></span><span id="id11"></span><h2>OpenVPN не может получить доступ к сертификатам из-за SELinux. Что делать?<a class="headerlink" href="#openvpn-selinux" title="Permalink to this heading">¶</a></h2>
  186. <p>Это нормально ибо запущенные сервисы не могут получать доступ к каталогам пользователя, однако для OpenVPN сделано исключение в виде каталога <code class="docutils literal notranslate"><span class="pre">~/.cert</span></code>.</p>
  187. <p>По умолчанию он не существует, поэтому его нужно создать и задать для него контекст безопасности SELinux:</p>
  188. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>mkdir ~/.cert
  189. restorecon -Rv ~/.cert
  190. </pre></div>
  191. </div>
  192. <p>Теперь в нём можно размещать сертификаты и приватные ключи.</p>
  193. </section>
  194. <section id="kpti">
  195. <span id="index-8"></span><span id="id12"></span><h2>Можно ли отключить KPTI?<a class="headerlink" href="#kpti" title="Permalink to this heading">¶</a></h2>
  196. <p>KPTI – это новый механизм ядра, направленный на защиту системы от уязвимости <a class="reference external" href="https://ru.wikipedia.org/wiki/Meltdown_(%D1%83%D1%8F%D0%B7%D0%B2%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C)">Meltdown</a> в процессорах Intel. Настоятельно не рекомендуется его отключать, хотя это и возможно. Для этого необходимо и достаточно передать <a class="reference internal" href="administration.html#kernelpm-perm"><span class="std std-ref">параметр ядра</span></a>:</p>
  197. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>nopti
  198. </pre></div>
  199. </div>
  200. <p>Параметр <code class="docutils literal notranslate"><span class="pre">pti=off</span></code> также поддерживается в полной мере.</p>
  201. </section>
  202. <section id="spectre-v1">
  203. <span id="spectrev1"></span><span id="index-9"></span><h2>Можно ли отключить защиту от Spectre v1?<a class="headerlink" href="#spectre-v1" title="Permalink to this heading">¶</a></h2>
  204. <p>Программные заплатки могут быть отключены при помощи <a class="reference internal" href="administration.html#kernelpm-perm"><span class="std std-ref">параметра ядра</span></a>:</p>
  205. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>nospectre_v1
  206. </pre></div>
  207. </div>
  208. </section>
  209. <section id="spectre-v2">
  210. <span id="spectrev2"></span><span id="index-10"></span><h2>Можно ли отключить защиту от Spectre v2?<a class="headerlink" href="#spectre-v2" title="Permalink to this heading">¶</a></h2>
  211. <p>Да, при помощи <a class="reference internal" href="administration.html#kernelpm-perm"><span class="std std-ref">параметра ядра</span></a>:</p>
  212. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>nospectre_v2
  213. </pre></div>
  214. </div>
  215. </section>
  216. <section id="spectre-v4">
  217. <span id="spectrev4"></span><span id="index-11"></span><h2>Можно ли отключить защиту от Spectre v4?<a class="headerlink" href="#spectre-v4" title="Permalink to this heading">¶</a></h2>
  218. <p>Да, при помощи <a class="reference internal" href="administration.html#kernelpm-perm"><span class="std std-ref">параметра ядра</span></a>:</p>
  219. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>nospec_store_bypass_disable
  220. </pre></div>
  221. </div>
  222. </section>
  223. <section id="l1tf">
  224. <span id="index-12"></span><span id="id13"></span><h2>Можно ли отключить защиту от L1TF?<a class="headerlink" href="#l1tf" title="Permalink to this heading">¶</a></h2>
  225. <p>Да, при помощи <a class="reference internal" href="administration.html#kernelpm-perm"><span class="std std-ref">параметра ядра</span></a>:</p>
  226. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>l1tf=off
  227. </pre></div>
  228. </div>
  229. </section>
  230. <section id="mds">
  231. <span id="index-13"></span><span id="id14"></span><h2>Можно ли отключить защиту от MDS?<a class="headerlink" href="#mds" title="Permalink to this heading">¶</a></h2>
  232. <p>Да, при помощи <a class="reference internal" href="administration.html#kernelpm-perm"><span class="std std-ref">параметра ядра</span></a>:</p>
  233. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>mds=off
  234. </pre></div>
  235. </div>
  236. </section>
  237. <section id="itlb">
  238. <span id="index-14"></span><span id="id15"></span><h2>Можно ли отключить защиту от iTLB?<a class="headerlink" href="#itlb" title="Permalink to this heading">¶</a></h2>
  239. <p>Да, при помощи <a class="reference internal" href="administration.html#kernelpm-perm"><span class="std std-ref">параметра ядра</span></a>:</p>
  240. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>nx_huge_pages=off
  241. </pre></div>
  242. </div>
  243. </section>
  244. <section id="tsx">
  245. <span id="index-15"></span><span id="id16"></span><h2>Можно ли отключить защиту от TSX?<a class="headerlink" href="#tsx" title="Permalink to this heading">¶</a></h2>
  246. <p>Да, при помощи <a class="reference internal" href="administration.html#kernelpm-perm"><span class="std std-ref">параметра ядра</span></a>:</p>
  247. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>tsx=on
  248. </pre></div>
  249. </div>
  250. <p>Для полной деактивации должен использоваться совместно с <a class="reference internal" href="#taa"><span class="std std-ref">TAA</span></a>.</p>
  251. </section>
  252. <section id="taa">
  253. <span id="index-16"></span><span id="id17"></span><h2>Можно ли отключить защиту от TAA?<a class="headerlink" href="#taa" title="Permalink to this heading">¶</a></h2>
  254. <p>Да, при помощи <a class="reference internal" href="administration.html#kernelpm-perm"><span class="std std-ref">параметра ядра</span></a>:</p>
  255. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>tsx_async_abort=off
  256. </pre></div>
  257. </div>
  258. </section>
  259. <section id="mitigations-off">
  260. <span id="index-17"></span><span id="id18"></span><h2>Можно ли отключить все виды защит от уязвимостей в процессорах?<a class="headerlink" href="#mitigations-off" title="Permalink to this heading">¶</a></h2>
  261. <p>Да. Начиная с версии ядра Linux 5.1.2, появился особый <a class="reference internal" href="administration.html#kernelpm-perm"><span class="std std-ref">параметр ядра</span></a>, отключающий все виды программных защит:</p>
  262. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>mitigations=off
  263. </pre></div>
  264. </div>
  265. </section>
  266. <section id="intel-gpu">
  267. <span id="i915-mitigations"></span><span id="index-18"></span><h2>Можно ли отключить защиту от уязвимостей в Intel GPU?<a class="headerlink" href="#intel-gpu" title="Permalink to this heading">¶</a></h2>
  268. <p>Да. Начиная с версии ядра Linux 5.12, появился особый <a class="reference internal" href="administration.html#kernelpm-perm"><span class="std std-ref">параметр ядра</span></a>, отключающий все виды программных защит интегрированных видеокарт Intel:</p>
  269. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>i915.mitigations=off
  270. </pre></div>
  271. </div>
  272. </section>
  273. <section id="hardware-vuln">
  274. <span id="index-19"></span><span id="id19"></span><h2>Как узнать защищено ли ядро от известных уязвимостей в процессорах?<a class="headerlink" href="#hardware-vuln" title="Permalink to this heading">¶</a></h2>
  275. <p>Ранее для этого применялись сторонние утилиты, но в современных версиях ядра для этого есть штатный механизм, который можно использовать:</p>
  276. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>grep . /sys/devices/system/cpu/vulnerabilities/*
  277. </pre></div>
  278. </div>
  279. </section>
  280. <section id="selinux-boot-error">
  281. <span id="index-20"></span><span id="id20"></span><h2>При загрузке получаю ошибку SELinux. Как исправить?<a class="headerlink" href="#selinux-boot-error" title="Permalink to this heading">¶</a></h2>
  282. <p>Такое бывает если по какой-то причине сбился контекст безопасности SELinux. Исправить это можно двумя различными способами.</p>
  283. <p><em>Способ первый</em>:</p>
  284. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo touch /.autorelabel
  285. sudo systemctl reboot
  286. </pre></div>
  287. </div>
  288. <p>Внимание! Следующая загрузка системы займёт много времени из-за переустановки контекста для всех файлов и каталогов. Ни в коем случае не следует её прерывать. По окончании система автоматически перезагрузится ещё один раз.</p>
  289. <p><em>Способ второй</em>:</p>
  290. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo restorecon -Rv /
  291. sudo systemctl reboot
  292. </pre></div>
  293. </div>
  294. <p>После перезагрузки все ошибки, связанные с SELinux, должны исчезнуть.</p>
  295. </section>
  296. <section id="usb">
  297. <span id="luks-usb"></span><span id="index-21"></span><h2>Как можно надёжно зашифровать файлы на USB устройстве?<a class="headerlink" href="#usb" title="Permalink to this heading">¶</a></h2>
  298. <p>См. <a class="reference external" href="https://www.easycoding.org/2016/11/14/shifruem-vneshnij-nakopitel-posredstvom-luks.html">здесь</a>.</p>
  299. </section>
  300. <section id="luks-home">
  301. <span id="index-22"></span><span id="id21"></span><h2>Можно ли зашифровать домашний раздел уже установленной системы?<a class="headerlink" href="#luks-home" title="Permalink to this heading">¶</a></h2>
  302. <p>См. <a class="reference external" href="https://www.easycoding.org/2016/12/09/shifruem-domashnij-razdel-ustanovlennoj-sistemy.html">здесь</a>.</p>
  303. </section>
  304. <section id="luks">
  305. <span id="luks-change-password"></span><span id="index-23"></span><h2>Как сменить пароль зашифрованного LUKS раздела?<a class="headerlink" href="#luks" title="Permalink to this heading">¶</a></h2>
  306. <p>Сменить пароль достаточно просто. Достаточно выполнить следующую команду:</p>
  307. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup luksChangeKey /dev/sda1 -S 0
  308. </pre></div>
  309. </div>
  310. <p>Здесь <strong>/dev/sda1</strong> – зашифрованный раздел диска, а <strong>0</strong> – порядковый номер LUKS слота для пароля.</p>
  311. <p>Для успешной смены пароля раздел не должен быть смонтирован, поэтому если это корневой или домашний, то придётся выполнять загрузку с <a class="reference internal" href="installation.html#usb-flash"><span class="std std-ref">LiveUSB</span></a>.</p>
  312. </section>
  313. <section id="luks-info">
  314. <span id="index-24"></span><span id="id22"></span><h2>Как получить информацию о зашифрованном LUKS устройстве?<a class="headerlink" href="#luks-info" title="Permalink to this heading">¶</a></h2>
  315. <p>Если требуется получить подробную информацию о зашифрованном LUKS разделе (алгоритм шифрование, тип хеша и количество итераций и т.д.), можно воспользоваться утилитой <strong>cryptsetup</strong>:</p>
  316. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup luksDump /dev/sda1
  317. </pre></div>
  318. </div>
  319. <p>Здесь <strong>/dev/sda1</strong> – зашифрованный раздел диска.</p>
  320. </section>
  321. <section id="luks-benchmark">
  322. <span id="index-25"></span><span id="id23"></span><h2>Насколько сильно шифрование LUKS снижает производительность дисковой подсистемы?<a class="headerlink" href="#luks-benchmark" title="Permalink to this heading">¶</a></h2>
  323. <p>На современных процессорах с аппаратной поддержкой набора инструкций AES-NI снижение производительности практически незаметно даже на самых производительных NVMe SSD накопителях.</p>
  324. <p>Для того, чтобы оценить скорость работы на реальном оборудовании, в <strong>cryptsetup</strong> присутствует встроенный бенчмарк для тестирования разных алгоритмов шифрования и типа сцепления блоков шифротекста:</p>
  325. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>cryptsetup benchmark
  326. </pre></div>
  327. </div>
  328. </section>
  329. <section id="aes-ni">
  330. <span id="luks-aes"></span><span id="index-26"></span><h2>Как узнать поддерживает ли процессор моего ПК набор инструкций AES-NI?<a class="headerlink" href="#aes-ni" title="Permalink to this heading">¶</a></h2>
  331. <p>Если в выводе <code class="docutils literal notranslate"><span class="pre">/proc/cpuinfo</span></code> присутствует строка <strong>aes</strong>, значит поддерживает:</p>
  332. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>grep -Eq &#39;aes&#39; /proc/cpuinfo &amp;&amp; echo Yes || echo No
  333. </pre></div>
  334. </div>
  335. </section>
  336. <section id="firewalld">
  337. <span id="firewalld-about"></span><span id="index-27"></span><h2>Что такое Firewalld?<a class="headerlink" href="#firewalld" title="Permalink to this heading">¶</a></h2>
  338. <p>Firewalld – это современный динамически управляемый брандмауэр с поддержкой зон для интерфейсов.</p>
  339. </section>
  340. <section id="firewalld-configure">
  341. <span id="index-28"></span><span id="id24"></span><h2>Как можно настраивать Firewalld?<a class="headerlink" href="#firewalld-configure" title="Permalink to this heading">¶</a></h2>
  342. <p>Для настройки применяется либо графическая утилита <strong>firewall-config</strong>, либо консольная <strong>firewall-cmd</strong>.</p>
  343. <p>Документацию можно <a class="reference external" href="https://fedoraproject.org/wiki/FirewallD/ru">найти в Wiki</a>.</p>
  344. </section>
  345. <section id="firewalld-hardened">
  346. <span id="index-29"></span><span id="id25"></span><h2>Как усилить настройки безопасности Firewalld?<a class="headerlink" href="#firewalld-hardened" title="Permalink to this heading">¶</a></h2>
  347. <p>По умолчанию в Fedora Workstation применяется зона брандмауэра <strong>FedoraWorkstation</strong>, для которой разрешены входящие соединения на порты из диапазона 1025-65535, как по TCP, так и UDP.</p>
  348. <p>Если необходимо запретить все входящие подключения, кроме явно разрешённых, переключим зону на <strong>public</strong>:</p>
  349. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo firewall-cmd --set-default-zone=public
  350. </pre></div>
  351. </div>
  352. </section>
  353. <section id="firewalld-hide-service">
  354. <span id="index-30"></span><span id="id26"></span><h2>Как замаскировать сервис средствами Firewalld?<a class="headerlink" href="#firewalld-hide-service" title="Permalink to this heading">¶</a></h2>
  355. <p>См. <a class="reference external" href="https://www.easycoding.org/2017/06/22/maskiruem-opredelyonnyj-servis-sredstvami-firewalld.html">здесь</a>.</p>
  356. </section>
  357. <section id="ip">
  358. <span id="firewalld-block"></span><span id="index-31"></span><h2>Как запретить подключения с конкретных IP-адресов?<a class="headerlink" href="#ip" title="Permalink to this heading">¶</a></h2>
  359. <p>Достаточно добавить их в специально созданную зону <strong>drop</strong> файрвола:</p>
  360. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo firewall-cmd --permanent --zone=drop --add-source=1.2.3.4
  361. </pre></div>
  362. </div>
  363. <p>Здесь вместо <strong>1.2.3.4</strong> нужно указать необходимый IP-адрес или подсеть (<strong>1.2.3.0/24</strong>).</p>
  364. </section>
  365. <section id="gnupg">
  366. <span id="gpg-signatures"></span><span id="index-32"></span><h2>Как работать с подписями GnuPG?<a class="headerlink" href="#gnupg" title="Permalink to this heading">¶</a></h2>
  367. <p>См. <a class="reference external" href="https://www.easycoding.org/2018/01/11/rabotaem-s-cifrovymi-podpisyami-gpg.html">здесь</a>.</p>
  368. </section>
  369. <section id="gpg-encrypt">
  370. <span id="index-33"></span><span id="id27"></span><h2>Как зашифровать и расшифровать файлы с определённой маской в текущем каталоге?<a class="headerlink" href="#gpg-encrypt" title="Permalink to this heading">¶</a></h2>
  371. <p>Шифрование всех файлов с маской <em>.7z.</em> (многотомные архивы 7-Zip):</p>
  372. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>find . -maxdepth 1 -type f -name &quot;*.7z.*&quot; -exec gpg2 --out &quot;{}.asc&quot; --recipient &quot;example@example.org&quot; --encrypt &quot;{}&quot; \;
  373. </pre></div>
  374. </div>
  375. <p>Расшифровка:</p>
  376. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>find . -maxdepth 1 -type f -name &quot;*.asc&quot; -exec gpg2 --out &quot;$(basename {})&quot; --decrypt &quot;{}&quot; \;
  377. </pre></div>
  378. </div>
  379. </section>
  380. <section id="admin-vs-user">
  381. <span id="index-34"></span><span id="id28"></span><h2>Чем отличается пользователь-администратор от обычного?<a class="headerlink" href="#admin-vs-user" title="Permalink to this heading">¶</a></h2>
  382. <p>Администратор (в терминологии программы установки Anaconda) имеет доступ к sudo.</p>
  383. </section>
  384. <section id="sudo-run">
  385. <span id="index-35"></span><span id="id29"></span><h2>Как запустить команду с правами суперпользователя?<a class="headerlink" href="#sudo-run" title="Permalink to this heading">¶</a></h2>
  386. <p>Для запуска чего-либо с правами суперпользователя необходимо использовать sudo:</p>
  387. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo foo-bar
  388. </pre></div>
  389. </div>
  390. <p>Здесь вместо <strong>foo-bar</strong> следует указать команду, путь к исполняемому файлу, скрипту и т.д.</p>
  391. </section>
  392. <section id="sudo-su">
  393. <span id="sudo-password"></span><span id="index-36"></span><h2>Какие пароли запрашивают sudo и su?<a class="headerlink" href="#sudo-su" title="Permalink to this heading">¶</a></h2>
  394. <p>Утилита sudo запрашивает текущий пароль пользователя, а su – рутовый.</p>
  395. </section>
  396. <section id="root-password">
  397. <span id="index-37"></span><span id="id30"></span><h2>Как мне сменить пароль суперпользователя?<a class="headerlink" href="#root-password" title="Permalink to this heading">¶</a></h2>
  398. <p>Для смены или установки пароля суперпользователя при наличии доступа к sudo, можно выполнить:</p>
  399. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo passwd root
  400. </pre></div>
  401. </div>
  402. </section>
  403. <section id="sudo">
  404. <span id="sudo-access"></span><span id="index-38"></span><h2>Как мне получить доступ к sudo?<a class="headerlink" href="#sudo" title="Permalink to this heading">¶</a></h2>
  405. <p>Если при установке Fedora, при создании пользователя, не был установлен флажок в чекбокс <strong>Создать администратора</strong>, то необходимо самостоятельно добавить пользовательский аккаунт в группу <strong>wheel</strong>:</p>
  406. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>su -c &quot;usermod -a -G wheel $(whoami)&quot;
  407. </pre></div>
  408. </div>
  409. </section>
  410. <section id="sudo-vs-su">
  411. <span id="index-39"></span><span id="id31"></span><h2>Что лучше: sudo или su?<a class="headerlink" href="#sudo-vs-su" title="Permalink to this heading">¶</a></h2>
  412. <p>Sudo ибо позволяет гибко настраивать права доступа, включая список разрешённых команд, а также ведёт полный журнал её использования.</p>
  413. </section>
  414. <section id="sudo-file-manager">
  415. <span id="index-40"></span><span id="id32"></span><h2>Почему я не могу запустить файловый менеджер с правами суперпользователя?<a class="headerlink" href="#sudo-file-manager" title="Permalink to this heading">¶</a></h2>
  416. <p>Это сделано из соображений безопасности. Более подробная информация доступна <a class="reference external" href="https://blog.martin-graesslin.com/blog/2017/02/editing-files-as-root/">здесь</a>.</p>
  417. </section>
  418. <section id="sudo-edit-config">
  419. <span id="index-41"></span><span id="id33"></span><h2>Как мне отредактировать конфиг, доступный только суперпользователю?<a class="headerlink" href="#sudo-edit-config" title="Permalink to this heading">¶</a></h2>
  420. <p>Необходимо использовать <strong>sudoedit</strong>:</p>
  421. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudoedit /путь/к/файлу/конфигурации.conf
  422. </pre></div>
  423. </div>
  424. </section>
  425. <section id="sudoedit">
  426. <span id="sudoedit-info"></span><span id="index-42"></span><h2>Sudoedit безопаснее прямого запуска текстового редактора с правами суперпользователя?<a class="headerlink" href="#sudoedit" title="Permalink to this heading">¶</a></h2>
  427. <p>Да, намного ибо sudoedit копирует нужный файл во временный каталог и загружает в выбранном по умолчанию текстовом редакторе с обычными правами, а по завершении редактирования копирует на прежнее место.</p>
  428. </section>
  429. <section id="ssh">
  430. <span id="ssh-install"></span><span id="index-43"></span><h2>Как включить и безопасно настроить сервер SSH?<a class="headerlink" href="#ssh" title="Permalink to this heading">¶</a></h2>
  431. <p>Сначала установим и активируем sshd:</p>
  432. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo dnf install openssh-server
  433. sudo systemctl enable --now sshd.service
  434. </pre></div>
  435. </div>
  436. <p>Создадим собственный файл конфигурации, в который будем вносить изменения:</p>
  437. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo touch /etc/ssh/sshd_config.d/00-foobar.conf
  438. sudo chmod 0600 /etc/ssh/sshd_config.d/00-foobar.conf
  439. </pre></div>
  440. </div>
  441. <p>Имя файла начинается с <strong>00</strong>, т.к., согласно документации OpenSSH, приоритет среди всех файлов конфигурации имеет та директива, которая была указана раньше.</p>
  442. <p>Отредактируем созданный файл для внесения своих изменений:</p>
  443. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudoedit /etc/ssh/sshd_config.d/00-foobar.conf
  444. </pre></div>
  445. </div>
  446. <p>Отключим вход суперпользователем:</p>
  447. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>PermitRootLogin no
  448. </pre></div>
  449. </div>
  450. <p>Запретим вход по паролям (будет доступна лишь аутентификация по ключам):</p>
  451. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>PasswordAuthentication no
  452. PermitEmptyPasswords no
  453. </pre></div>
  454. </div>
  455. <p>Сохраним изменения и перезапустим sshd:</p>
  456. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo systemctl restart sshd.service
  457. </pre></div>
  458. </div>
  459. </section>
  460. <section id="ssh-passwords">
  461. <span id="index-44"></span><span id="id34"></span><h2>Допустимо ли использовать парольную аутентификацию для SSH?<a class="headerlink" href="#ssh-passwords" title="Permalink to this heading">¶</a></h2>
  462. <p>В настоящее время мы настоятельно не рекомендуем эксплуатировать SSH серверы с включённой парольной аутентификацией (настройки по умолчанию), т.к. он станет постоянной целью для атак заражённых устройств, которые будут пытаться подобрать пароль по словарям, а также полным перебором, создавая тем самым лишнюю нагрузку на SSH сервер.</p>
  463. <p>Автоматическая блокировка средствами fail2ban также не особо поможет, т.к. современные ботнеты умеют координировать свои атаки посредством мастер-сервера и знают стандартные настройки данных утилит.</p>
  464. </section>
  465. <section id="ssh-port">
  466. <span id="index-45"></span><span id="id35"></span><h2>Следует ли сменить порт SSH на нестандартный?<a class="headerlink" href="#ssh-port" title="Permalink to this heading">¶</a></h2>
  467. <p>Это никак не поможет скрыть сервер от крупных бот-сетей, сканирующих весь допустимый диапазон портов, и лишь создаст дополнительные неудобства для самих пользователей.</p>
  468. </section>
  469. <section id="ssh-keys">
  470. <span id="index-46"></span><span id="id36"></span><h2>Безопасна ли аутентификация по ключам в SSH?<a class="headerlink" href="#ssh-keys" title="Permalink to this heading">¶</a></h2>
  471. <p>Да. В настоящее время это самый безопасный метод аутентификации. Если во время рукопожатия SSH клиент не предоставил серверу разрешённый ключ, последний немедленно закроет соединение.</p>
  472. </section>
  473. <section id="ssh-keygen">
  474. <span id="index-47"></span><span id="id37"></span><h2>Как сгенерировать ключи для SSH?<a class="headerlink" href="#ssh-keygen" title="Permalink to this heading">¶</a></h2>
  475. <p>Для создания ключевой пары из открытого и закрытого ключей, необходимо воспользоваться утилитой <strong>ssh-keygen</strong>:</p>
  476. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>ssh-keygen -t rsa -C &quot;user@example.org&quot;
  477. </pre></div>
  478. </div>
  479. <p>Здесь в качестве параметра <strong>-t</strong> указывается тип ключа: RSA, DSA, ecdsa или ed25519. Рекомендуется использовать либо RSA, либо ed25519.</p>
  480. <p>Для RSA можно добавить параметр <strong>-b</strong> и указать длину в битах, например <strong>-b 4096</strong>.</p>
  481. </section>
  482. <section id="ssh-transfer">
  483. <span id="index-48"></span><span id="id38"></span><h2>Как безопасно передать публичный ключ SSH на удалённый сервер?<a class="headerlink" href="#ssh-transfer" title="Permalink to this heading">¶</a></h2>
  484. <p>Для простой, быстрой и безопасной передачи можно использовать утилиту <strong>ssh-copy-id</strong>:</p>
  485. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>ssh-copy-id user@example.org
  486. </pre></div>
  487. </div>
  488. <p>Здесь <strong>user&#64;example.org</strong> – данные для подключения к серверу, т.е. имя пользователя на удалённом сервере и хост.</p>
  489. </section>
  490. <section id="ssh-port-forwarding">
  491. <span id="index-49"></span><span id="id39"></span><h2>Как пробросить порт с удалённой машины на локальную через SSH?<a class="headerlink" href="#ssh-port-forwarding" title="Permalink to this heading">¶</a></h2>
  492. <p>Для примера пробросим с удалённого сервера на локальную машину порт MySQL/MariaDB:</p>
  493. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>ssh user@example.org -L 3306:127.0.0.1:3306 -N -f
  494. </pre></div>
  495. </div>
  496. <p>Здесь <strong>user&#64;example.org</strong> – данные для подключения к серверу, т.е. имя пользователя на удалённом сервере и хост, а <strong>3306</strong> – порт. Параметры <code class="docutils literal notranslate"><span class="pre">-N</span> <span class="pre">-f</span></code> заставляют SSH клиент сразу вернуть управление, уйти в фоновый режим и продолжать поддерживать соединение до своего завершения.</p>
  497. </section>
  498. <section id="socks-ssh">
  499. <span id="ssh-socks"></span><span id="index-50"></span><h2>Как настроить виртуальный SOCKS туннель через SSH?<a class="headerlink" href="#socks-ssh" title="Permalink to this heading">¶</a></h2>
  500. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>ssh user@example.org -D 127.0.0.1:8080 -N -f
  501. </pre></div>
  502. </div>
  503. <p>Здесь <strong>user&#64;example.org</strong> – данные для подключения к серверу, т.е. имя пользователя на удалённом сервере и хост, а <strong>8080</strong> – локальный порт, на котором будет запущен SSH клиент в режиме эмуляции SOCKS5 сервера. Параметры <code class="docutils literal notranslate"><span class="pre">-N</span> <span class="pre">-f</span></code> заставляют SSH клиент сразу вернуть управление, уйти в фоновый режим и продолжать поддерживать соединение до своего завершения.</p>
  504. <p>После запуска необходимо настроить браузер и другие приложения на работу через данный SOCKS5 прокси.</p>
  505. </section>
  506. <section id="ssh-sftp">
  507. <span id="index-51"></span><span id="id40"></span><h2>Можно ли разрешить доступ посредством SSH только к файлам, без возможности выполнения команд?<a class="headerlink" href="#ssh-sftp" title="Permalink to this heading">¶</a></h2>
  508. <p>Да. Для этого создадим специальную группу (например <strong>sftp</strong>):</p>
  509. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo groupadd sftp
  510. </pre></div>
  511. </div>
  512. <p>Создадим собственный файл конфигурации, в который будем вносить изменения:</p>
  513. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo touch /etc/ssh/sshd_config.d/01-sftp.conf
  514. sudo chmod 0600 /etc/ssh/sshd_config.d/01-sftp.conf
  515. </pre></div>
  516. </div>
  517. <p>Откроем конфиг <code class="docutils literal notranslate"><span class="pre">/etc/ssh/sshd_config.d/01-sftp.conf</span></code> в текстовом редакторе:</p>
  518. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudoedit /etc/ssh/sshd_config.d/01-sftp.conf
  519. </pre></div>
  520. </div>
  521. <p>Добавим следующие строки:</p>
  522. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>Subsystem sftp internal-sftp
  523. Match Group sftp
  524. ChrootDirectory %h
  525. AllowTCPForwarding no
  526. ForceCommand internal-sftp
  527. </pre></div>
  528. </div>
  529. <p>Сохраним изменения и перезапустим sshd:</p>
  530. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo systemctl restart sshd.service
  531. </pre></div>
  532. </div>
  533. </section>
  534. <section id="destroy-file">
  535. <span id="index-52"></span><span id="id41"></span><h2>Как безвозвратно уничтожить файл?<a class="headerlink" href="#destroy-file" title="Permalink to this heading">¶</a></h2>
  536. <p>Для уничтожения данных можно использовать штатную утилиту <strong>shred</strong> из пакета GNU Coreutils:</p>
  537. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>shred -u -v /путь/к/файлу.txt
  538. </pre></div>
  539. </div>
  540. <p>Восстановить такой файл будет практически невозможно ибо сектора диска, на которых он располагался, будут многократно перезаписаны случайной последовательностью, а затем заполнены нулями.</p>
  541. </section>
  542. <section id="destroy-disk">
  543. <span id="index-53"></span><span id="id42"></span><h2>Можно лишь уничтожить содержимое всего диска?<a class="headerlink" href="#destroy-disk" title="Permalink to this heading">¶</a></h2>
  544. <p>Да, для этого можно использовать уже упомянутую выше утилиту <strong>shred</strong>:</p>
  545. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo shred -v /dev/sdX
  546. </pre></div>
  547. </div>
  548. <p>Здесь <strong>/dev/sdX</strong> — устройство, которое будет очищено. На больших HDD процесс займёт много времени.</p>
  549. </section>
  550. <section id="ssd">
  551. <span id="destroy-ssd-file"></span><span id="index-54"></span><h2>Как уничтожить файл на SSD?<a class="headerlink" href="#ssd" title="Permalink to this heading">¶</a></h2>
  552. <p>Для безвозвратного удаления файла на SSD накопителе достаточно просто удалить его штатным средством системы и дождаться выполнения процедуры TRIM, которая физически забьёт ячейки, которые им использовались, нулями.</p>
  553. <p>Если не используется TRIM реального времени, принудительно запустить этот процесс на всех твердотельных накопителях можно так:</p>
  554. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo systemctl start fstrim.service
  555. </pre></div>
  556. </div>
  557. </section>
  558. <section id="sata-ssd">
  559. <span id="wipe-ssd"></span><span id="index-55"></span><h2>Как полностью очистить SATA SSD без возможности восстановления?<a class="headerlink" href="#sata-ssd" title="Permalink to this heading">¶</a></h2>
  560. <p>Все модели SATA SSD поддерживают специальную ATA-команду <a class="reference external" href="https://ata.wiki.kernel.org/index.php/ATA_Secure_Erase">Secure Erase</a>, при получении которой контроллер обязан полностью очистить все ячейки диска и вернуть все параметры к настройкам по умолчанию.</p>
  561. <p>Установим утилиту <strong>hdparm</strong>:</p>
  562. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo dnf install hdparm
  563. </pre></div>
  564. </div>
  565. <p>Далее <strong>/dev/sdb</strong> – это устройство SSD накопителя, который мы планируем очистить. Очищать устройство, на котором установлена система, можно только после загрузки с <a class="reference internal" href="installation.html#usb-flash"><span class="std std-ref">Fedora LiveUSB</span></a>.</p>
  566. <p>Убедимся, что UEFI BIOS не блокирует функцию самоуничтожения диска:</p>
  567. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo hdparm -I /dev/sdb
  568. </pre></div>
  569. </div>
  570. <p>Если в выводе присутствует <strong>frozen</strong>, значит диск блокируется и сначала нужно её снять.</p>
  571. <p>В большинстве реализаций UEFI BIOS сбросить блокировку с SATA накопителей можно лишь посредством «горячего» подключения устройства. Необходимо включить компьютер, не подсоединяя SATA-кабель к накопителю, а затем уже после загрузки системы подключить его.</p>
  572. <p>Если всё сделано верно, в выводе обнаружим <strong>not frozen</strong> и сможем продолжить процесс.</p>
  573. <p>Установим специальный пароль блокировки накопителя, т.к. без передачи верного пароля команда ATA Secure Erase будет проигнорирована:</p>
  574. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo hdparm --user-master u --security-set-pass FooBar /dev/sdb
  575. </pre></div>
  576. </div>
  577. <p>Ни в коем случае не следует устанавливать новое значение пароля в виде пустой строки, либо NULL, т.к. на многих материнских платах это приведёт к невозможности загрузки с этого устройства, а равно как и его смены.</p>
  578. <p>Запустим процесс очистки:</p>
  579. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo hdparm --user-master u --security-erase FooBar /dev/sdb
  580. </pre></div>
  581. </div>
  582. <p>Через некоторое время (зависит от объёма и производительности контроллера устройства) диск будет полностью очищен, а все настройки, включая пароль блокировки, сброшены.</p>
  583. <p>В случае <strong>если произошёл сбой</strong> очистки, сбросим установленный пароль вручную:</p>
  584. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo hdparm --user-master u --security-disable FooBar /dev/sdb
  585. </pre></div>
  586. </div>
  587. </section>
  588. <section id="newfile-permissions">
  589. <span id="index-56"></span><span id="id43"></span><h2>Как рассчитываются права доступа для новых файлов и каталогов?<a class="headerlink" href="#newfile-permissions" title="Permalink to this heading">¶</a></h2>
  590. <p>Права доступа (chmod) в GNU/Linux рассчитываются в по формуле <code class="docutils literal notranslate"><span class="pre">$default-chmod</span> <span class="pre">-</span> <span class="pre">$current-umask</span></code>. <code class="docutils literal notranslate"><span class="pre">$default-chmod</span></code> для файлов равен <code class="docutils literal notranslate"><span class="pre">0666</span></code>, а для каталогов – <code class="docutils literal notranslate"><span class="pre">0777</span></code>.</p>
  591. <p>В Fedora umask по умолчанию для пользоватьских учётных записей равен <code class="docutils literal notranslate"><span class="pre">0002</span></code> (ведущий нуль в chmod означает использование восьмеричной системы счисления).</p>
  592. <p>Таким образом, chmod для новых файлов <code class="docutils literal notranslate"><span class="pre">0666</span> <span class="pre">-</span> <span class="pre">0002</span> <span class="pre">=</span> <span class="pre">0664</span></code> (<code class="docutils literal notranslate"><span class="pre">-rw-rw--r--</span></code>), а для каталогов – <code class="docutils literal notranslate"><span class="pre">0777</span> <span class="pre">-</span> <span class="pre">0002</span> <span class="pre">=</span> <span class="pre">0775</span></code> (<code class="docutils literal notranslate"><span class="pre">drwxrwxr-x</span></code>).</p>
  593. </section>
  594. <section id="fedora">
  595. <span id="fedora-gost"></span><span id="index-57"></span><h2>Можно ли включить поддержку российской криптографии в Fedora?<a class="headerlink" href="#fedora" title="Permalink to this heading">¶</a></h2>
  596. <p>См. <a class="reference external" href="https://www.easycoding.org/2018/11/28/dobavlyaem-podderzhku-gost-dlya-openssl-v-fedora.html">здесь</a>.</p>
  597. </section>
  598. <section id="mac-wi-fi-fedora">
  599. <span id="mac-randomize"></span><span id="index-58"></span><h2>Как включить рандомизацию MAC адресов при подключении к Wi-Fi точкам в Fedora?<a class="headerlink" href="#mac-wi-fi-fedora" title="Permalink to this heading">¶</a></h2>
  600. <p>Network Manager поддерживает два сценария рандомизации MAC адресов:</p>
  601. <blockquote>
  602. <div><ol class="arabic simple">
  603. <li><p>генерирование уникального псевдослучайного MAC адреса для каждого соединения при загрузке системы (параметр <code class="docutils literal notranslate"><span class="pre">stable</span></code>). Это избавит от проблем с переподключением к публичным хот-спотам и небходимости повторно проходить аутентификацию в captive-порталах;</p></li>
  604. <li><p>генерирование уникального псевдослучайного MAC адреса для каждого соединения при каждом переподключении (параметр <code class="docutils literal notranslate"><span class="pre">random</span></code>). Наиболее безопасно, но может вызывать описанные выше проблемы.</p></li>
  605. </ol>
  606. </div></blockquote>
  607. <p>Профиль <strong>stable</strong>. Файл <code class="docutils literal notranslate"><span class="pre">00-macrandomize-stable.conf</span></code>:</p>
  608. <div class="highlight-ini notranslate"><div class="highlight"><pre><span></span><span class="k">[device]</span>
  609. <span class="na">wifi.scan-rand-mac-address</span><span class="o">=</span><span class="s">yes</span>
  610. <span class="k">[connection]</span>
  611. <span class="na">wifi.cloned-mac-address</span><span class="o">=</span><span class="s">stable</span>
  612. <span class="na">ethernet.cloned-mac-address</span><span class="o">=</span><span class="s">stable</span>
  613. <span class="na">connection.stable-id</span><span class="o">=</span><span class="s">${CONNECTION}/${BOOT}</span>
  614. </pre></div>
  615. </div>
  616. <p>Профиль <strong>random</strong>. Файл <code class="docutils literal notranslate"><span class="pre">00-macrandomize-random.conf</span></code>:</p>
  617. <div class="highlight-ini notranslate"><div class="highlight"><pre><span></span><span class="k">[device]</span>
  618. <span class="na">wifi.scan-rand-mac-address</span><span class="o">=</span><span class="s">yes</span>
  619. <span class="k">[connection]</span>
  620. <span class="na">wifi.cloned-mac-address</span><span class="o">=</span><span class="s">random</span>
  621. <span class="na">ethernet.cloned-mac-address</span><span class="o">=</span><span class="s">random</span>
  622. </pre></div>
  623. </div>
  624. <p>Для применения одной из конфигураций создадим в каталоге <code class="docutils literal notranslate"><span class="pre">/etc/NetworkManager/conf.d</span></code> файл с выбранным профилем, после чего перезапустим Network Manager:</p>
  625. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo systemctl restart NetworkManager
  626. </pre></div>
  627. </div>
  628. <p>Для отключения рандомизации и возвращения настроек по умолчанию достаточно просто удалить созданный файл и перезапустить Network Manager.</p>
  629. </section>
  630. <section id="add-custom-ca">
  631. <span id="index-59"></span><span id="id44"></span><h2>Как добавить собственный удостоверяющий центр в список доверенных?<a class="headerlink" href="#add-custom-ca" title="Permalink to this heading">¶</a></h2>
  632. <p>Для добавления нового удостоверяющего центра необходимо скопировать файл его сертификата в формате PEM или DER в каталог <code class="docutils literal notranslate"><span class="pre">/etc/pki/ca-trust/source/anchors</span></code>, после чего выполнить:</p>
  633. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo update-ca-trust
  634. </pre></div>
  635. </div>
  636. <p>Следует помнить, что данное действие не будет распространяться на браузер Mozilla Firefox, имеющий собственную базу доверенных корневых УЦ.</p>
  637. </section>
  638. <section id="blackist-ca">
  639. <span id="index-60"></span><span id="id45"></span><h2>Как внести удостоверяющий центр в список запрещённых?<a class="headerlink" href="#blackist-ca" title="Permalink to this heading">¶</a></h2>
  640. <p>Для добавления удостоверяющего центра в список заблокированных необходимо скопировать файл его сертификата в формате PEM или DER в каталог <code class="docutils literal notranslate"><span class="pre">/etc/pki/ca-trust/source/blacklist</span></code>, после чего выполнить:</p>
  641. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo update-ca-trust
  642. </pre></div>
  643. </div>
  644. <p>Следует помнить, что данное действие не будет распространяться на браузер Mozilla Firefox, имеющий собственную базу доверенных корневых УЦ.</p>
  645. </section>
  646. <section id="rsa-openssl">
  647. <span id="openssl-decrypt-key"></span><span id="index-61"></span><h2>Как убрать пароль шифрования закрытого RSA ключа средствами OpenSSL?<a class="headerlink" href="#rsa-openssl" title="Permalink to this heading">¶</a></h2>
  648. <p>Воспользуемся утилитой <strong>openssl</strong> для расшифровки:</p>
  649. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>openssl rsa -in foo-bar.key -out foo-bar-nopass.key
  650. </pre></div>
  651. </div>
  652. <p>Здесь <strong>foo-bar.key</strong> – имя файла с закрытым RSA ключом, который необходимо расшифровать. После ввода верного пароля, результат появится в файле <strong>foo-bar-nopass.key</strong>.</p>
  653. </section>
  654. <section id="openssl-encrypt-key">
  655. <span id="index-62"></span><span id="id46"></span><h2>Как установить или изменить пароль шифрования закрытого RSA ключа средствами OpenSSL?<a class="headerlink" href="#openssl-encrypt-key" title="Permalink to this heading">¶</a></h2>
  656. <p>Воспользуемся утилитой <strong>openssl</strong> для установки или изменения пароля:</p>
  657. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>openssl rsa -aes256 -in foo-bar-nopass.key -out foo-bar.key
  658. </pre></div>
  659. </div>
  660. <p>Здесь <strong>-aes256</strong> – используемый алгоритм шифрования (AES-256), <strong>foo-bar-nokey.key</strong> – имя файла с закрытым RSA ключом, пароль которого нужно задать или изменить. Результат будет сохранён в файле <strong>foo-bar.key</strong>.</p>
  661. </section>
  662. <section id="sudo-multi">
  663. <span id="index-63"></span><span id="id47"></span><h2>Как посредством sudo запустить сразу несколько команд?<a class="headerlink" href="#sudo-multi" title="Permalink to this heading">¶</a></h2>
  664. <p>Команда <a class="reference internal" href="#sudo-access"><span class="std std-ref">sudo</span></a> предназначена для запуска исключительно одной команды от имени другого пользователя, поэтому если необходимо запустить сразу несколько команд, либо осуществлять перенаправление вывода, придётся использовать другой вариант:</p>
  665. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo bash -c &quot;first | seconds &amp;&amp; third&quot;
  666. </pre></div>
  667. </div>
  668. <p>В данном примере все три приложения будут запущены с правами суперпользователя, причём стандартный вывод <em>first</em> перенаправляется в стандартный ввод <em>second</em> через канал (pipe) и при успешном завершении запустится процесс <em>third</em>.</p>
  669. </section>
  670. <section id="wireshark">
  671. <span id="wireshark-no-root"></span><span id="index-64"></span><h2>Как запускать WireShark без предоставления ему прав суперпользователя?<a class="headerlink" href="#wireshark" title="Permalink to this heading">¶</a></h2>
  672. <p>WireShark поддерживает запуска как с правами суперпользователя, так и без них. Добавим свой аккаунт в группу <strong>wireshark</strong>:</p>
  673. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo usermod -a -G wireshark $(whoami)
  674. </pre></div>
  675. </div>
  676. <p>Изменения вступят в силу при следующем входе в систему.</p>
  677. </section>
  678. <section id="password-gen">
  679. <span id="index-65"></span><span id="id48"></span><h2>Как сгенерировать криптостойкий пароль без использования стороннего ПО?<a class="headerlink" href="#password-gen" title="Permalink to this heading">¶</a></h2>
  680. <p>Для того, чтобы сгенерировать криптостойкий пароль не обязательно устанавливать и применять специальные утилиты.</p>
  681. <p>Воспользуемся штатными средствами, входящими в базовый пакет GNU Coreutils:</p>
  682. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>cat /dev/urandom | tr -dc &#39;a-zA-Z0-9&#39; | fold -w 20 | head -n 4
  683. </pre></div>
  684. </div>
  685. <p>Данный пример сгенерирует 4 криптостойких пароля по 20 символов каждый.</p>
  686. </section>
  687. <section id="users-logged">
  688. <span id="index-66"></span><span id="id49"></span><h2>Как получить список вошедших в систему пользователей?<a class="headerlink" href="#users-logged" title="Permalink to this heading">¶</a></h2>
  689. <p>Список вошедших в систему пользователей можно получить посредством утилиты <strong>who</strong>:</p>
  690. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>who
  691. </pre></div>
  692. </div>
  693. </section>
  694. <section id="users-activity">
  695. <span id="index-67"></span><span id="id50"></span><h2>Как получить список вошедших в систему пользователей и информацию об их деятельности?<a class="headerlink" href="#users-activity" title="Permalink to this heading">¶</a></h2>
  696. <p>Список вошедших в систему пользователей и базовую информацию об их действиях можно получить посредством утилиты <strong>w</strong>:</p>
  697. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>w
  698. </pre></div>
  699. </div>
  700. </section>
  701. <section id="users-last">
  702. <span id="index-68"></span><span id="id51"></span><h2>Как получить информацию обо всех входах в систему?<a class="headerlink" href="#users-last" title="Permalink to this heading">¶</a></h2>
  703. <p>Информацию о любых попытках входа в систему можно получить посредством утилиты <strong>last</strong>:</p>
  704. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>last
  705. </pre></div>
  706. </div>
  707. </section>
  708. <section id="com">
  709. <span id="com-dialout"></span><span id="index-69"></span><h2>Как получить доступ к COM портам без наличия прав суперпользователя?<a class="headerlink" href="#com" title="Permalink to this heading">¶</a></h2>
  710. <p>Для того, чтобы получить доступ к <a class="reference internal" href="hardware.html#screen-com"><span class="std std-ref">COM порту (RS-232)</span></a> без наличия прав суперпользователя, необходимо добавить свой аккаунт в группу <strong>dialout</strong>:</p>
  711. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo usermod -a -G dialout $(whoami)
  712. </pre></div>
  713. </div>
  714. <p>Изменения вступят в силу при следующем входе в систему.</p>
  715. </section>
  716. <section id="gnupg-kwallet">
  717. <span id="gpg-kwallet"></span><span id="index-70"></span><h2>Можно ли сохранить пароль GnuPG ключа в связке ключей KWallet?<a class="headerlink" href="#gnupg-kwallet" title="Permalink to this heading">¶</a></h2>
  718. <p>Да. Установим пакет <strong>kwalletcli</strong>:</p>
  719. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo dnf install kwalletcli
  720. </pre></div>
  721. </div>
  722. <p>Откроем файл <code class="docutils literal notranslate"><span class="pre">~/.gnupg/gpg-agent.conf</span></code> в текстовом редакторе и добавим строку:</p>
  723. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>pinentry-program /usr/bin/pinentry-kwallet
  724. </pre></div>
  725. </div>
  726. <p>Выполним выход из системы. При следующем вводе пароля расшифровки закрытого ключа, KWallet предложит сохранить его в связке ключей.</p>
  727. </section>
  728. <section id="gpg-gui">
  729. <span id="index-71"></span><span id="id52"></span><h2>Безопасно ли использовать менеджеры связки ключей GnuPG с графическим интерфейсом?<a class="headerlink" href="#gpg-gui" title="Permalink to this heading">¶</a></h2>
  730. <p>Да.</p>
  731. </section>
  732. <section id="kleopatra-kgpg">
  733. <span id="gpg-kleopatra"></span><span id="index-72"></span><h2>Можно ли одновременно использовать Kleopatra и KGpg?<a class="headerlink" href="#kleopatra-kgpg" title="Permalink to this heading">¶</a></h2>
  734. <p>Нет, не следует использовать одновременно разные графические менеджеры, т.к. настройки, вносимые ими в файл конфигурации GnuPG, будут конфликтовать и приводить к непредсказуемым последствиям.</p>
  735. <p>Пользователям KDE мы рекомендуем Kleopatra, как наиболее современную и функциональную оболочку.</p>
  736. </section>
  737. <section id="gpg-token">
  738. <span id="index-73"></span><span id="id53"></span><h2>Какой токен для безопасного хранения GnuPG ключей вы можете порекомендовать?<a class="headerlink" href="#gpg-token" title="Permalink to this heading">¶</a></h2>
  739. <p>Мы рекомендуем использовать токены <a class="reference external" href="https://www.nitrokey.com/ru">Nitrokey Pro 2</a>, т.к. они имеют как открытое железо, так и софт (спецификации, прошивки, а также программное обеспечение опубликовано под свободными лицензиями).</p>
  740. </section>
  741. <section id="gpg-use-token">
  742. <span id="index-74"></span><span id="id54"></span><h2>Как работать с токеном или смарт-картой из консоли?<a class="headerlink" href="#gpg-use-token" title="Permalink to this heading">¶</a></h2>
  743. <p>Для работы с аппаратным токеном будем использовать утилиту GnuPG2.</p>
  744. <p>Вставим устройство в USB порт компьютера или ноутбука, либо смарт-карту в считыватель, затем выведем его статус:</p>
  745. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>gpg2 --card-status
  746. </pre></div>
  747. </div>
  748. <p>Установим PIN-код:</p>
  749. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>gpg2 --change-pin
  750. </pre></div>
  751. </div>
  752. <p>Перейдём в режим работы с токеном:</p>
  753. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>gpg2 --card-edit
  754. </pre></div>
  755. </div>
  756. <p>Переключимся в режим администратора:</p>
  757. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>admin
  758. </pre></div>
  759. </div>
  760. <p>Сгенерируем новую связку ключей GnuPG на токене:</p>
  761. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>generate
  762. </pre></div>
  763. </div>
  764. <p>GnuPG2 запросит стандартные данные: имя и адрес электронной почты владельца ключевой пары, срок действия, а также указать стойкость шифра. Следует помнить, что размер памяти токена сильно ограничен, поэтому если генерировать исключительно 4096 битные ключи, место быстро закончится (например Nitrokey Pro 2 вмещает лишь 3 ключевых пары со стойкостью шифра 4096 бит).</p>
  765. <p>Также будет предложено сохранить копию секретного ключа на диск. Для максимальной безопасности лучше отказаться от этого.</p>
  766. <p>Проверим сгенерировались ли ключи:</p>
  767. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>list
  768. </pre></div>
  769. </div>
  770. <p>Если всё сделано верно, то новая ключевая пара появится в списке немедленно.</p>
  771. </section>
  772. <section id="gpg-ssh">
  773. <span id="index-75"></span><span id="id55"></span><h2>Как использовать токен для аутентификации SSH?<a class="headerlink" href="#gpg-ssh" title="Permalink to this heading">¶</a></h2>
  774. <p>Сначала нам необходимо добавить в нашу ключевую пару особый ключ для аутентификации. По умолчанию он не создаётся.</p>
  775. <p>Выведем список доступных ключевых пар:</p>
  776. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>gpg2 --list-secret-keys
  777. </pre></div>
  778. </div>
  779. <p>Откроем наш основной ключ в режиме редактирования:</p>
  780. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>gpg2 --edit-key XXXXXXXXX
  781. </pre></div>
  782. </div>
  783. <p>Здесь <strong>XXXXXXXXX</strong> – ID нашего ключа.</p>
  784. <p>Добавим новый подключ:</p>
  785. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>addkey
  786. </pre></div>
  787. </div>
  788. <p>В списке атрибутов оставим только <strong>Authentication</strong> и обязательно отключим <em>Encrypt</em> и <em>Sign</em>.</p>
  789. <p>Выберем созданный подключ и переместим его на токен:</p>
  790. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>key 2
  791. keytocard
  792. </pre></div>
  793. </div>
  794. <p>Экспортируем публичный ключ SSH из созданного подключа для аутентификации:</p>
  795. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>gpg2 --export-ssh-key XXXXXXXXX --output ~/.ssh/id_rsa.pub
  796. </pre></div>
  797. </div>
  798. <p>Здесь <strong>XXXXXXXXX</strong> – ID нашего ключа.</p>
  799. <p>Активируем поддержку SSH агента в GnuPG агенте, добавив в конец файла <code class="docutils literal notranslate"><span class="pre">~/.gnupg/gpg-agent.conf</span></code> следующую строку:</p>
  800. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>enable-ssh-support
  801. </pre></div>
  802. </div>
  803. <p>Настроим автоматический запуск GnuPG агента вместе с системой, создав скрипт <code class="docutils literal notranslate"><span class="pre">~/bin/gpg-agent.sh</span></code>:</p>
  804. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>#!/usr/bin/sh
  805. export GPG_TTY=&quot;$(tty)&quot;
  806. export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
  807. gpgconf --launch gpg-agent
  808. </pre></div>
  809. </div>
  810. <p>Выдадим ему права на выполнение:</p>
  811. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>chmod +x ~/bin/gpg-agent.sh
  812. </pre></div>
  813. </div>
  814. <p>Добавим этот скрипт а автозагрузку используемой DE, либо в <code class="docutils literal notranslate"><span class="pre">~/.bashrc</span></code> и выполним новый вход в систему.</p>
  815. </section>
  816. <section id="gpg-transfer">
  817. <span id="index-76"></span><span id="id56"></span><h2>Можно ли переместить на токен уже имеющуюся ключевую пару GnuPG?<a class="headerlink" href="#gpg-transfer" title="Permalink to this heading">¶</a></h2>
  818. <p>Да. Выведем список доступных ключевых пар:</p>
  819. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>gpg2 --list-secret-keys
  820. </pre></div>
  821. </div>
  822. <p>Откроем наш основной ключ в режиме редактирования:</p>
  823. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>gpg2 --edit-key XXXXXXXXX
  824. </pre></div>
  825. </div>
  826. <p>Здесь <strong>XXXXXXXXX</strong> – ID нашего ключа.</p>
  827. <p>Выберем каждый подключ и переместим его на токен:</p>
  828. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>key 1
  829. keytocard
  830. </pre></div>
  831. </div>
  832. <p>Повторим для всех оставшихся подключей.</p>
  833. <p><strong>Отключим токен от компьютера или ноутбука</strong>, затем выполним удаление локального секретного ключа:</p>
  834. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>gpg2 --delete-secret-key XXXXXXXXX
  835. </pre></div>
  836. </div>
  837. <p>Здесь <strong>XXXXXXXXX</strong> – ID нашего ключа.</p>
  838. </section>
  839. <section id="nmap-scan">
  840. <span id="index-77"></span><span id="id57"></span><h2>Как просканировать хост на наличие работающих сервисов?<a class="headerlink" href="#nmap-scan" title="Permalink to this heading">¶</a></h2>
  841. <p>Стандартное сканирование самых популярных портов:</p>
  842. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>nmap -A -T4 -Pn 127.0.0.1
  843. </pre></div>
  844. </div>
  845. <p>Стандартное сканирование портов в указанном диапазоне (параметр <code class="docutils literal notranslate"><span class="pre">-p</span> <span class="pre">1-100</span></code>):</p>
  846. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>nmap -A -T4 -Pn -p 1-100 127.0.0.1
  847. </pre></div>
  848. </div>
  849. <p>Стандартное сканирование всего диапазона портов (параметр <code class="docutils literal notranslate"><span class="pre">-p-</span></code>):</p>
  850. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>nmap -A -T4 -Pn -p- 127.0.0.1
  851. </pre></div>
  852. </div>
  853. <p>Стандартное сканирование всего диапазона портов, включая UDP (параметр <code class="docutils literal notranslate"><span class="pre">-sU</span></code>):</p>
  854. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo nmap -sU -A -T4 -Pn -p- 127.0.0.1
  855. </pre></div>
  856. </div>
  857. <p>Сканирование UDP требует прав суперпользователя.</p>
  858. </section>
  859. <section id="luks-addkey">
  860. <span id="index-78"></span><span id="id58"></span><h2>Как добавить ключевой файл для разблокировки зашифрованного LUKS раздела?<a class="headerlink" href="#luks-addkey" title="Permalink to this heading">¶</a></h2>
  861. <p>Создадим каталог для хранения ключей <code class="docutils literal notranslate"><span class="pre">/etc/keys</span></code> (может быть любым):</p>
  862. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo mkdir -p /etc/keys
  863. </pre></div>
  864. </div>
  865. <p>Сгенерируем ключевой файл <code class="docutils literal notranslate"><span class="pre">foo-bar.key</span></code> размером 4 КБ на основе системного генератора псевдослучайных чисел:</p>
  866. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo dd if=/dev/urandom of=/etc/keys/foo-bar.key bs=1024 count=4
  867. </pre></div>
  868. </div>
  869. <p>Установим корректные права доступа:</p>
  870. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo chown root:root /etc/keys/foo-bar.key
  871. sudo chmod 0400 /etc/keys/foo-bar.key
  872. </pre></div>
  873. </div>
  874. <p>Добавим ключ в свободный слот LUKS заголовка зашифрованного раздела:</p>
  875. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup luksAddKey /dev/sda2 /etc/keys/foo-bar.key
  876. </pre></div>
  877. </div>
  878. <p>Утилита cryptsetup запросит ввод мастер-пароля.</p>
  879. <p>Здесь <strong>/dev/sda2</strong> – устройство зашифрованного LUKS тома, для которого требуется добавить ключевой файл.</p>
  880. </section>
  881. <section id="luks-removekey">
  882. <span id="index-79"></span><span id="id59"></span><h2>Как удалить ключевой файл разблокировки зашифрованного LUKS раздела?<a class="headerlink" href="#luks-removekey" title="Permalink to this heading">¶</a></h2>
  883. <p>Если разблокировка по ключевому файлу более не требуется, его можно удалить.</p>
  884. <p>Удалим слот с ключом <code class="docutils literal notranslate"><span class="pre">foo-bar.key</span></code> из LUKS заголовка зашифрованного раздела:</p>
  885. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup luksRemoveKey /dev/sda2 /etc/keys/foo-bar.key
  886. </pre></div>
  887. </div>
  888. <p>Надёжно <a class="reference internal" href="#destroy-file"><span class="std std-ref">уничтожим</span></a> ключевой файл:</p>
  889. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo shred -u -v /etc/keys/foo-bar.key
  890. </pre></div>
  891. </div>
  892. <p>Здесь <strong>/dev/sda2</strong> – устройство зашифрованного LUKS тома, у которого требуется удалить слот с ключевым файлом.</p>
  893. </section>
  894. <section id="luks-auto">
  895. <span id="index-80"></span><span id="id60"></span><h2>Как настроить автоматическую расшифровку LUKS разделов при загрузке?<a class="headerlink" href="#luks-auto" title="Permalink to this heading">¶</a></h2>
  896. <p>Откроем файл <code class="docutils literal notranslate"><span class="pre">/etc/crypttab</span></code> в <a class="reference internal" href="using-system.html#editor-selection"><span class="std std-ref">редакторе по умолчанию</span></a>:</p>
  897. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudoedit /etc/crypttab
  898. </pre></div>
  899. </div>
  900. <p>Добавим в конец файла строку вида:</p>
  901. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>foo-bar UUID=XXXXXX /etc/keys/foo-bar.key luks
  902. </pre></div>
  903. </div>
  904. <p>Здесь <strong>foo-bar</strong> – внутреннее имя, которое будет использоваться dev-mapper, <strong>XXXXXX</strong> – <a class="reference internal" href="administration.html#get-uuid"><span class="std std-ref">UUID диска</span></a>, <strong>/etc/keys/foo-bar.key</strong> – полный путь к <a class="reference internal" href="#luks-addkey"><span class="std std-ref">ключевому файлу</span></a>. При шифровании <a class="reference internal" href="administration.html#get-uuid"><span class="std std-ref">SSD накопителя</span></a> вместо параметра <strong>luks</strong> следует использовать <strong>discard</strong>.</p>
  905. <p>Откроем файл <code class="docutils literal notranslate"><span class="pre">/etc/fstab</span></code>:</p>
  906. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudoedit /etc/fstab
  907. </pre></div>
  908. </div>
  909. <p>Добавим в конец строку вида:</p>
  910. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>/dev/mapper/foo-bar /media/data ext4 defaults 1 2
  911. </pre></div>
  912. </div>
  913. <p>Здесь <strong>foo-bar</strong> – внутреннее имя, указанное ранее в crypttab, <strong>/media/data</strong> – точка монтирования, а <strong>ext4</strong> – используемая файловая система.</p>
  914. <p>Если всё сделано верно, то при следующей загрузке раздел будет смонтирован автоматически без запроса пароля.</p>
  915. </section>
  916. <section id="root-reset">
  917. <span id="index-81"></span><span id="id61"></span><h2>Я забыл пароль суперпользователя. Как мне его сбросить?<a class="headerlink" href="#root-reset" title="Permalink to this heading">¶</a></h2>
  918. <p>При наличии доступа к sudo, пароль суперпользователя можно изменить <a class="reference internal" href="#root-password"><span class="std std-ref">в штатном режиме</span></a>.</p>
  919. <p>Если текущий пользователь не может использовать sudo, но есть физический доступ к устройству, см. <a class="reference external" href="https://docs.fedoraproject.org/en-US/quick-docs/reset-root-password/">здесь</a>.</p>
  920. </section>
  921. <section id="luks-noauto">
  922. <span id="index-82"></span><span id="id62"></span><h2>Можно ли отключить автоматическое монтирование устройств LUKS при загрузке?<a class="headerlink" href="#luks-noauto" title="Permalink to this heading">¶</a></h2>
  923. <p>Да. Для этого добавим параметр <code class="docutils literal notranslate"><span class="pre">noauto</span></code> для соответствующей записи в файле <code class="docutils literal notranslate"><span class="pre">/etc/crypttab</span></code>:</p>
  924. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>foo-bar UUID=XXXXXX /etc/keys/foo-bar.key noauto
  925. </pre></div>
  926. </div>
  927. <p>Здесь <strong>foo-bar</strong> – внутреннее имя, которое будет использоваться dev-mapper, <strong>XXXXXX</strong> – <a class="reference internal" href="administration.html#get-uuid"><span class="std std-ref">UUID диска</span></a>, <strong>/etc/keys/foo-bar.key</strong> – полный путь к <a class="reference internal" href="#luks-addkey"><span class="std std-ref">ключевому файлу</span></a>. Параметр <strong>noauto</strong> должен применяться только совместно с ключом.</p>
  928. <p>Данное зашифрованное устройство будет смонтировано и автоматически расшифровано при первой попытке доступа к нему.</p>
  929. </section>
  930. <section id="truecrypt-fedora">
  931. <span id="index-83"></span><span id="id63"></span><h2>Как работать с TrueCrypt контейнерами в Fedora?<a class="headerlink" href="#truecrypt-fedora" title="Permalink to this heading">¶</a></h2>
  932. <p>Из-за <a class="reference internal" href="development.html#fedora-licenses"><span class="std std-ref">несвободной лицензии</span></a> TrueCrypt и все его форки (в т.ч. VeraCrypt) не могут быть добавлены в репозитории Fedora, однако в настоящее время утилита <strong>cryptsetup</strong> полностью поддерживает работу с созданными ими контейнерами.</p>
  933. <p>Cryptsetup поддерживает монтирование как <a class="reference internal" href="#truecrypt-mount"><span class="std std-ref">TrueCrypt</span></a>, так и <a class="reference internal" href="#veracrypt-mount"><span class="std std-ref">VeraCrypt</span></a> томов (файлы и устройства), а также умеет их администрировать (управлять ключами, паролями). Ограничение лишь одно – нельзя создавать новые зашифрованные данными механизмами контейнеры.</p>
  934. </section>
  935. <section id="truecrypt-mount">
  936. <span id="index-84"></span><span id="id64"></span><h2>Как смонтировать TrueCrypt контейнер в Fedora?<a class="headerlink" href="#truecrypt-mount" title="Permalink to this heading">¶</a></h2>
  937. <p>Откроем файл контейнера средствами cryptsetup:</p>
  938. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup --type tcrypt open /path/to/container.tc foo-bar
  939. </pre></div>
  940. </div>
  941. <p>Смонтируем файловую систему:</p>
  942. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo mkdir /media/data
  943. sudo mount -t auto /dev/mapper/foo-bar /media/data
  944. </pre></div>
  945. </div>
  946. <p>По окончании работы произведём размонтирование:</p>
  947. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo umount /media/data
  948. sudo rmdir /media/data
  949. </pre></div>
  950. </div>
  951. <p>Закроем файл контейнера:</p>
  952. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup --type tcrypt close /dev/mapper/foo-bar
  953. </pre></div>
  954. </div>
  955. <p>Здесь <strong>/path/to/container.tc</strong> полный путь к файлу контейнера на диске (либо зашифрованному устройству), а <strong>foo-bar</strong> – внутреннее имя для dev-mapper.</p>
  956. </section>
  957. <section id="veracrypt-fedora">
  958. <span id="veracrypt-mount"></span><span id="index-85"></span><h2>Как смонтировать VeraCrypt контейнер в Fedora?<a class="headerlink" href="#veracrypt-fedora" title="Permalink to this heading">¶</a></h2>
  959. <p>Откроем файл контейнера средствами cryptsetup:</p>
  960. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup --veracrypt --type tcrypt open /path/to/container.hc foo-bar
  961. </pre></div>
  962. </div>
  963. <p>Смонтируем файловую систему:</p>
  964. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo mkdir /media/data
  965. sudo mount -t auto /dev/mapper/foo-bar /media/data
  966. </pre></div>
  967. </div>
  968. <p>По окончании работы произведём размонтирование:</p>
  969. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo umount /media/data
  970. sudo rmdir /media/data
  971. </pre></div>
  972. </div>
  973. <p>Закроем файл контейнера:</p>
  974. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup --veracrypt --type tcrypt close /dev/mapper/foo-bar
  975. </pre></div>
  976. </div>
  977. <p>Здесь <strong>/path/to/container.hc</strong> полный путь к файлу контейнера на диске (либо зашифрованному устройству), а <strong>foo-bar</strong> – внутреннее имя для dev-mapper.</p>
  978. </section>
  979. <section id="veracrypt">
  980. <span id="veracrypt-auto"></span><span id="index-86"></span><h2>Как настроить автоматическое монтирование VeraCrypt томов при загрузке?<a class="headerlink" href="#veracrypt" title="Permalink to this heading">¶</a></h2>
  981. <p>Откроем файл <code class="docutils literal notranslate"><span class="pre">/etc/crypttab</span></code> в <a class="reference internal" href="using-system.html#editor-selection"><span class="std std-ref">редакторе по умолчанию</span></a>:</p>
  982. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudoedit /etc/crypttab
  983. </pre></div>
  984. </div>
  985. <p>Добавим в конец файла строку вида:</p>
  986. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>foo-bar UUID=XXXXXX /etc/keys/foo-bar.key tcrypt-veracrypt
  987. </pre></div>
  988. </div>
  989. <p>Здесь <strong>foo-bar</strong> – внутреннее имя, которое будет использоваться dev-mapper, <strong>XXXXXX</strong> – <a class="reference internal" href="administration.html#get-uuid"><span class="std std-ref">UUID диска</span></a>, либо полный путь к файлу контейнера, <strong>/etc/keys/foo-bar.key</strong> – полный путь к ключевому файлу, либо файлу с паролем (разрыв строки в конце файла не ставится).</p>
  990. <p>Откроем файл <code class="docutils literal notranslate"><span class="pre">/etc/fstab</span></code>:</p>
  991. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudoedit /etc/fstab
  992. </pre></div>
  993. </div>
  994. <p>Добавим в конец строку вида:</p>
  995. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>/dev/mapper/foo-bar /media/data auto defaults,x-systemd.automount 0 0
  996. </pre></div>
  997. </div>
  998. <p>Здесь <strong>foo-bar</strong> – внутреннее имя, указанное ранее в crypttab, а <strong>/media/data</strong> – точка монтирования.</p>
  999. <p>Если всё сделано верно, то при следующей загрузке зашифрованный VeraCrypt том будет смонтирован автоматически.</p>
  1000. </section>
  1001. <section id="bitlocker-fedora">
  1002. <span id="index-87"></span><span id="id65"></span><h2>Как работать с BitLocker контейнерами в Fedora?<a class="headerlink" href="#bitlocker-fedora" title="Permalink to this heading">¶</a></h2>
  1003. <p>Начиная с версии 2.3.0 утилита <strong>cryptsetup</strong> поддерживает работу с зашифрованными BitLocker томами.</p>
  1004. <p>Допускается <a class="reference internal" href="#bitlocker-mount"><span class="std std-ref">монтирование</span></a>, базовые операции с ними, но не создание новых.</p>
  1005. </section>
  1006. <section id="bitlocker-mount">
  1007. <span id="index-88"></span><span id="id66"></span><h2>Как смонтировать BitLocker контейнер в Fedora?<a class="headerlink" href="#bitlocker-mount" title="Permalink to this heading">¶</a></h2>
  1008. <p>Откроем устройство, зашифрованное BitLocker, средствами cryptsetup:</p>
  1009. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup --type bitlk open /dev/sdX1 foo-bar
  1010. </pre></div>
  1011. </div>
  1012. <p>Смонтируем файловую систему:</p>
  1013. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo mkdir /media/data
  1014. sudo mount -t auto /dev/mapper/foo-bar /media/data
  1015. </pre></div>
  1016. </div>
  1017. <p>По окончании работы произведём размонтирование:</p>
  1018. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo umount /media/data
  1019. sudo rmdir /media/data
  1020. </pre></div>
  1021. </div>
  1022. <p>Закроем файл контейнера:</p>
  1023. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup --type bitlk close /dev/mapper/foo-bar
  1024. </pre></div>
  1025. </div>
  1026. <p>Здесь <strong>/dev/sdX1</strong> – зашифрованное BitLocker устройство, а <strong>foo-bar</strong> – внутреннее имя для dev-mapper.</p>
  1027. </section>
  1028. <section id="bitlocker">
  1029. <span id="bitlocker-auto"></span><span id="index-89"></span><h2>Как настроить автоматическое монтирование BitLocker томов при загрузке?<a class="headerlink" href="#bitlocker" title="Permalink to this heading">¶</a></h2>
  1030. <p>Откроем файл <code class="docutils literal notranslate"><span class="pre">/etc/crypttab</span></code> в <a class="reference internal" href="using-system.html#editor-selection"><span class="std std-ref">редакторе по умолчанию</span></a>:</p>
  1031. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudoedit /etc/crypttab
  1032. </pre></div>
  1033. </div>
  1034. <p>Добавим в конец файла строку вида:</p>
  1035. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>foo-bar UUID=XXXXXX /etc/keys/foo-bar.key bitlk
  1036. </pre></div>
  1037. </div>
  1038. <p>Здесь <strong>foo-bar</strong> – внутреннее имя, которое будет использоваться dev-mapper, <strong>XXXXXX</strong> – <a class="reference internal" href="administration.html#get-uuid"><span class="std std-ref">UUID диска</span></a>, <strong>/etc/keys/foo-bar.key</strong> – полный путь к ключевому файлу, либо файлу с паролем (разрыв строки в конце файла не ставится).</p>
  1039. <p>Откроем файл <code class="docutils literal notranslate"><span class="pre">/etc/fstab</span></code>:</p>
  1040. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudoedit /etc/fstab
  1041. </pre></div>
  1042. </div>
  1043. <p>Добавим в конец строку вида:</p>
  1044. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>/dev/mapper/foo-bar /media/data auto defaults,x-systemd.automount 0 0
  1045. </pre></div>
  1046. </div>
  1047. <p>Здесь <strong>foo-bar</strong> – внутреннее имя, указанное ранее в crypttab, а <strong>/media/data</strong> – точка монтирования.</p>
  1048. <p>Если всё сделано верно, то при следующей загрузке зашифрованный BitLocker том будет смонтирован автоматически.</p>
  1049. </section>
  1050. <section id="selinux-local-storage">
  1051. <span id="index-90"></span><span id="id67"></span><h2>Где хранятся установленные пользователем контексты SELinux?<a class="headerlink" href="#selinux-local-storage" title="Permalink to this heading">¶</a></h2>
  1052. <p>Заданные пользователем нестандартные контексты, а также переопределения хранятся внутри каталога <code class="docutils literal notranslate"><span class="pre">/etc/selinux/targeted/contexts/files</span></code> в следующих файлах:</p>
  1053. <blockquote>
  1054. <div><ul class="simple">
  1055. <li><p><code class="docutils literal notranslate"><span class="pre">file_contexts.local</span></code> – текстовый формат;</p></li>
  1056. <li><p><code class="docutils literal notranslate"><span class="pre">file_contexts.local.bin</span></code> – скомпилированный бинарный формат.</p></li>
  1057. </ul>
  1058. </div></blockquote>
  1059. <p>Не следует их править в текстовых, либо шестнадцатиричных редакторах, т.к. это может привести к сбою в политиках SELinux и сбросу настроек по умолчанию. Вместо этого необходимо использовать <a class="reference internal" href="#selinux-local-remove"><span class="std std-ref">инструмент semanage</span></a>.</p>
  1060. </section>
  1061. <section id="selinux-local-list">
  1062. <span id="index-91"></span><span id="id68"></span><h2>Как получить список установленных пользователем контекстов SELinux?<a class="headerlink" href="#selinux-local-list" title="Permalink to this heading">¶</a></h2>
  1063. <p>Выведем полный список нестандартных контекстов, а также переопределений политик SELinux:</p>
  1064. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo semanage fcontext --list -C
  1065. </pre></div>
  1066. </div>
  1067. </section>
  1068. <section id="selinux-local-remove">
  1069. <span id="index-92"></span><span id="id69"></span><h2>Как удалить пользовательские контексты SELinux?<a class="headerlink" href="#selinux-local-remove" title="Permalink to this heading">¶</a></h2>
  1070. <p>Удалим конкретный нестандартный контекст, либо переопределение политик SELinux:</p>
  1071. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo semanage fcontext -d &quot;/foo/bar(/.*)?&quot;
  1072. </pre></div>
  1073. </div>
  1074. <p>Удалим все нестандартный контексты, а также переопределения политик SELinux:</p>
  1075. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo semanage fcontext -D
  1076. </pre></div>
  1077. </div>
  1078. <p>Для полного вступления изменений в силу рекомендуется <a class="reference internal" href="#selinux-boot-error"><span class="std std-ref">сбросить контекст</span></a> SELinux.</p>
  1079. </section>
  1080. <section id="luks-container-create">
  1081. <span id="index-93"></span><span id="id70"></span><h2>Как создать зашифрованный контейнер на диске?<a class="headerlink" href="#luks-container-create" title="Permalink to this heading">¶</a></h2>
  1082. <p>При помощи утилиты <strong>dd</strong> создадим пустой файл для хранения криптоконтейнера размером в 1 ГБ:</p>
  1083. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo dd if=/dev/zero bs=1M count=1024 of=/media/data/foo-bar.dat
  1084. </pre></div>
  1085. </div>
  1086. <p>Минимальный размер создаваемого образа должен быть не меньше 32 МБ, т.к. противном случае возникнет ошибка <em>Requested offset is beyond real size of device</em>.</p>
  1087. <p>Здесь <strong>/media/data/foo-bar.dat</strong> – полный путь к файлу на диске.</p>
  1088. <p>Создадим зашифрованный LUKS контейнер:</p>
  1089. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup --verify-passphrase luksFormat /media/data/foo-bar.dat -c aes-xts-plain64 -s 256 -h sha512
  1090. </pre></div>
  1091. </div>
  1092. <p>Подтвердим процесс создания посредством набора на клавиатуре <strong>YES</strong> в верхнем регистре, затем укажем пароль, который будет использоваться для шифрования.</p>
  1093. <p>Загрузим контейнер и расшифруем содержимое:</p>
  1094. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup luksOpen /media/data/foo-bar.dat foo-bar
  1095. </pre></div>
  1096. </div>
  1097. <p>Создадим файловую систему ext4:</p>
  1098. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo mkfs -t ext4 -m 1 -L foo-bar /dev/mapper/foo-bar
  1099. </pre></div>
  1100. </div>
  1101. <p>Завершим сеанс работы с контейнером:</p>
  1102. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup luksClose /dev/mapper/foo-bar
  1103. </pre></div>
  1104. </div>
  1105. </section>
  1106. <section id="luks-container-mount">
  1107. <span id="index-94"></span><span id="id71"></span><h2>Как смонтировать зашифрованный файловый контейнер?<a class="headerlink" href="#luks-container-mount" title="Permalink to this heading">¶</a></h2>
  1108. <p>Загрузим <a class="reference internal" href="#luks-container-create"><span class="std std-ref">криптоконтейнер</span></a> и расшифруем содержимое:</p>
  1109. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup luksOpen /media/data/foo-bar.dat foo-bar
  1110. </pre></div>
  1111. </div>
  1112. <p>Создадим каталог для точки монтирования:</p>
  1113. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo mkdir /media/foo-bar
  1114. </pre></div>
  1115. </div>
  1116. <p>Смонтируем файловую систему:</p>
  1117. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo mount -t auto /dev/mapper/foo-bar /media/foo-bar
  1118. </pre></div>
  1119. </div>
  1120. <p>По окончании работы произведём размонтирование:</p>
  1121. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo umount /media/foo-bar
  1122. </pre></div>
  1123. </div>
  1124. <p>Удалим каталог точки монтирования:</p>
  1125. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo rmdir /media/foo-bar
  1126. </pre></div>
  1127. </div>
  1128. <p>Завершим сеанс работы с контейнером:</p>
  1129. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup luksClose /dev/mapper/foo-bar
  1130. </pre></div>
  1131. </div>
  1132. </section>
  1133. <section id="luks-erase">
  1134. <span id="index-95"></span><span id="id72"></span><h2>Как быстро уничтожить содержимое LUKS контейнера?<a class="headerlink" href="#luks-erase" title="Permalink to this heading">¶</a></h2>
  1135. <p>Быстро и безопасно уничтожим ключи шифрования заголовка LUKS-контейнера:</p>
  1136. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup luksErase /dev/sdX1
  1137. </pre></div>
  1138. </div>
  1139. <p>Здесь <strong>/dev/sdX1</strong> – зашифрованный раздел диска, данные с которого требуется уничтожить. Он не должен быть смонтирован. Ввод пароля не требуется.</p>
  1140. <p>После выполнения данного действия все ключевые слоты LUKS-контейнера будут заполнены нулями и доступ к данным, хранящимся на данном разделе, станет невозможен даже при знании верного пароля или наличии ключа.</p>
  1141. <p>Внимание! Это действие не затирает содержимое физически, поэтому после его использования рекомендуется <a class="reference internal" href="#destroy-disk"><span class="std std-ref">осуществить эту процедуру</span></a> самостоятельно.</p>
  1142. </section>
  1143. <section id="tpm-luks">
  1144. <span id="luks-tpm"></span><span id="index-96"></span><h2>Можно ли использовать TPM для разблокировки LUKS контейнера?<a class="headerlink" href="#tpm-luks" title="Permalink to this heading">¶</a></h2>
  1145. <p>См. <a class="reference external" href="https://www.easycoding.org/2019/09/24/avtomaticheski-razblokiruem-luks-diski-pri-pomoshhi-tpm.html">здесь</a>.</p>
  1146. </section>
  1147. <section id="samba-selinux">
  1148. <span id="selinux-samba"></span><span id="index-97"></span><h2>Как настроить работу Samba с SELinux?<a class="headerlink" href="#samba-selinux" title="Permalink to this heading">¶</a></h2>
  1149. <p>См. <a class="reference external" href="https://fedoraproject.org/wiki/SELinux/samba">здесь</a>.</p>
  1150. </section>
  1151. <section id="ssh-mitm">
  1152. <span id="ssh-mitm-protection"></span><span id="index-98"></span><h2>Как защитить SSH от возможных MITM-атак?<a class="headerlink" href="#ssh-mitm" title="Permalink to this heading">¶</a></h2>
  1153. <p>Для защиты от MITM-атак в протоколе SSH применяется проверка отпечатков публичного ключа сервера в момент установки рукопожатия с эталоном, сохранённым на клиенте.</p>
  1154. <p>Во время первого подключения пользователю предлагается проверить отпечаток сервера и либо разрешить, либо отклонить соединение.</p>
  1155. <p>После одобрения, они вместе с IP-адресом сохраняются в файле <code class="docutils literal notranslate"><span class="pre">~/.ssh/known_hosts</span></code> и при следующих подключениях проверяется их действительность. В случае изменения, например из-за проведения злоумышленником атаки «человек посередине», соединение не устанавливается, а пользователю выводится соответствующее сообщение об ошибке.</p>
  1156. <p>К сожалению, ручная проверка отпечатка мало кем производится, поэтому был придуман новый, более надёжный способ – размещение публичных ключей в виде особых <strong>SSHFP</strong> записей DNS.</p>
  1157. <p>При использовании данного метода, при подключении будет проверяться соответствие ключей, полученных от сервера, записям из SSHFP для конкретного домена. При этом конечно же необходимо использовать надёжные DNS-резолверы с поддержкой шифрования <a class="reference internal" href="networking.html#dns-crypt"><span class="std std-ref">DNS-over-TLS</span></a>, а также рекомендуется подписать DNS-зону <a class="reference external" href="https://ru.wikipedia.org/wiki/DNSSEC">DNSSEC</a>.</p>
  1158. <p>С помощью утилиты <strong>ssh-keygen</strong>, на сервере сгенерируем DNS-записи для домена <strong>example.org</strong>:</p>
  1159. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>ssh-keygen -r example.org
  1160. </pre></div>
  1161. </div>
  1162. <p>Добавим их в настройки DNS через панель управления регистратора домена или хостера и подождём несколько часов до полной синхронизации между серверами.</p>
  1163. <p>Проверим корректность SSHFP-записей:</p>
  1164. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>dig +nocmd +noquestion +nostats +noheader SSHFP example.org
  1165. </pre></div>
  1166. </div>
  1167. <p>Если всё верно, активируем работу функции на каждом SSH-клиенте, добавив в файл <code class="docutils literal notranslate"><span class="pre">~/.ssh/config</span></code> следующие строки:</p>
  1168. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>Host example
  1169. HostName example.org
  1170. Port 22
  1171. User user
  1172. VerifyHostKeyDNS yes
  1173. </pre></div>
  1174. </div>
  1175. <p>Подключимся к серверу <strong>по доменному имени</strong> (в случае использования прямого IP-адреса, будет выполняться классическая проверка по файлу <strong>known_hosts</strong>):</p>
  1176. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>ssh example
  1177. </pre></div>
  1178. </div>
  1179. </section>
  1180. <section id="luks-version">
  1181. <span id="index-99"></span><span id="id73"></span><h2>Как определить версию LUKS конкретного криптоконтейнера?<a class="headerlink" href="#luks-version" title="Permalink to this heading">¶</a></h2>
  1182. <p>Версия LUKS всегда указана в разделе <strong>Version</strong> <a class="reference internal" href="#luks-info"><span class="std std-ref">информации о шифровании</span></a>.</p>
  1183. </section>
  1184. <section id="luks-header-backup">
  1185. <span id="index-100"></span><span id="id74"></span><h2>Как создать резервную копию заголовка LUKS?<a class="headerlink" href="#luks-header-backup" title="Permalink to this heading">¶</a></h2>
  1186. <p>Загрузим систему с <a class="reference internal" href="installation.html#usb-flash"><span class="std std-ref">LiveUSB</span></a> и создадим резервную копию заголовка тома <strong>/dev/sda2</strong> на внешнем накопителе данных:</p>
  1187. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup luksHeaderBackup /dev/sda2 --header-backup-file /media/foo-bar/luks-header.img
  1188. </pre></div>
  1189. </div>
  1190. </section>
  1191. <section id="luks-header-restore">
  1192. <span id="index-101"></span><span id="id75"></span><h2>Как восстановить резервную копию заголовка LUKS?<a class="headerlink" href="#luks-header-restore" title="Permalink to this heading">¶</a></h2>
  1193. <p>Загрузим систему с <a class="reference internal" href="installation.html#usb-flash"><span class="std std-ref">LiveUSB</span></a> и восстановим резервную копию заголовка тома <strong>/dev/sda2</strong> с внешнего накопителя данных:</p>
  1194. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup luksHeaderRestore /dev/sda2 --header-backup-file /media/foo-bar/luks-header.img
  1195. </pre></div>
  1196. </div>
  1197. </section>
  1198. <section id="luks-upgrade">
  1199. <span id="index-102"></span><span id="id76"></span><h2>Как осуществить апгрейд версии LUKS?<a class="headerlink" href="#luks-upgrade" title="Permalink to this heading">¶</a></h2>
  1200. <p>Загрузим систему с <a class="reference internal" href="installation.html#usb-flash"><span class="std std-ref">LiveUSB</span></a> и создадим <a class="reference internal" href="#luks-header-backup"><span class="std std-ref">резервную копию заголовка</span></a> на внешнем накопителе данных.</p>
  1201. <p>Выведем текущую <a class="reference internal" href="#luks-version"><span class="std std-ref">версию</span></a> и убедимся, что она равна <strong>1</strong>:</p>
  1202. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup luksDump /dev/sda2 | grep &#39;Version&#39;
  1203. </pre></div>
  1204. </div>
  1205. <p>Произведём апгрейд LUKS до версии 2:</p>
  1206. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup convert /dev/sda2 --type luks2
  1207. </pre></div>
  1208. </div>
  1209. </section>
  1210. <section id="luks-upgrade-key">
  1211. <span id="index-103"></span><span id="id77"></span><h2>Как усилить защиту ключа LUKS?<a class="headerlink" href="#luks-upgrade-key" title="Permalink to this heading">¶</a></h2>
  1212. <p>Загрузим систему с <a class="reference internal" href="installation.html#usb-flash"><span class="std std-ref">LiveUSB</span></a> и создадим <a class="reference internal" href="#luks-header-backup"><span class="std std-ref">резервную копию заголовка</span></a> на внешнем накопителе данных.</p>
  1213. <p>Выведем текущую <a class="reference internal" href="#luks-version"><span class="std std-ref">версию LUKS</span></a> и убедимся, что значение не ниже <strong>2</strong> (если это не так, сначала <a class="reference internal" href="#luks-upgrade"><span class="std std-ref">осуществим преобразование</span></a>):</p>
  1214. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup luksDump /dev/sda2 | grep &#39;Version&#39;
  1215. </pre></div>
  1216. </div>
  1217. <p>Выведем текущий <a class="reference external" href="https://ru.wikipedia.org/wiki/PBKDF2">PBKDF</a>:</p>
  1218. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup luksDump /dev/sda2 | grep &#39;PBKDF&#39;
  1219. </pre></div>
  1220. </div>
  1221. <p>Осуществим преобразование в <a class="reference external" href="https://ru.wikipedia.org/wiki/Argon2">Argon2</a>:</p>
  1222. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup luksConvertKey /dev/sda2 --pbkdf argon2id
  1223. </pre></div>
  1224. </div>
  1225. </section>
  1226. <section id="luks-upgrade-cipher">
  1227. <span id="index-104"></span><span id="id78"></span><h2>Как усилить надёжность шифрования LUKS?<a class="headerlink" href="#luks-upgrade-cipher" title="Permalink to this heading">¶</a></h2>
  1228. <p>Загрузим систему с <a class="reference internal" href="installation.html#usb-flash"><span class="std std-ref">LiveUSB</span></a> и создадим полную посекторную копию раздела на внешнем накопителе данных.</p>
  1229. <p>Выведем информацию о шифровании выбранного тома:</p>
  1230. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup luksDump /dev/sda2 | egrep &#39;Version|Cipher|MK bits&#39;
  1231. </pre></div>
  1232. </div>
  1233. <p>Перешифруем весь том в <a class="reference internal" href="#luks-upgrade-key"><span class="std std-ref">формате LUKS2</span></a> с использованием алгоритма <strong>AES-256-XTS-PLAIN64</strong>:</p>
  1234. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup-reencrypt /dev/sda2 --type luks2 --pbkdf argon2id --cipher aes-xts-plain64 --key-size 512 --hash sha512
  1235. </pre></div>
  1236. </div>
  1237. </section>
  1238. <section id="trim-luks">
  1239. <span id="luks-trim-open"></span><span id="index-105"></span><h2>Как активировать TRIM для открытых вручную LUKS-контейнеров?<a class="headerlink" href="#trim-luks" title="Permalink to this heading">¶</a></h2>
  1240. <p>Зашифрованные <a class="reference internal" href="#luks-container-create"><span class="std std-ref">LUKS-контейнеры</span></a>, открытые вручную при помощи <code class="docutils literal notranslate"><span class="pre">cryptsetup</span> <span class="pre">open</span></code>, по умолчанию не будут поддерживать <a class="reference internal" href="installation.html#ssd-trim"><span class="std std-ref">процедуру TRIM</span></a>, поэтому рассмотрим несколько способов исправить это.</p>
  1241. <p><strong>Способ 1.</strong> Передадим <a class="reference internal" href="administration.html#kernelpm-perm"><span class="std std-ref">параметр ядра</span></a> Linux <code class="docutils literal notranslate"><span class="pre">rd.luks.options=discard</span></code>.</p>
  1242. <p>Теперь все контейнеры, открытые утилитой, будут поддерживать TRIM. Однако действие не распространяется на указанные в файле <code class="docutils literal notranslate"><span class="pre">/etc/crypttab</span></code>, т.к. он имеет более высокий приоритет.</p>
  1243. <p><strong>Способ 2.</strong> Воспользуемся параметром командной строки <code class="docutils literal notranslate"><span class="pre">--allow-discards</span></code>.</p>
  1244. <p>LUKS <a class="reference internal" href="#luks-version"><span class="std std-ref">версии 2</span></a> поддерживает возможность принудительно задать использование процедуры TRIM внутри контейнера при любых операциях монтирования. В LUKS1 это не реализовано и поэтому работать не будет.</p>
  1245. <p>Для LUKS1 (вводится при каждом открытии тома):</p>
  1246. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup --allow-discards open /path/to/container foo-bar
  1247. </pre></div>
  1248. </div>
  1249. <p>Для LUKS2 (вводится только один раз):</p>
  1250. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup --allow-discards --persistent open /path/to/container foo-bar
  1251. </pre></div>
  1252. </div>
  1253. <p>Убедимся, что в <a class="reference internal" href="#luks-info"><span class="std std-ref">информации о шифровании</span></a>, в разделе <strong>Flags</strong>, появился <strong>allow-discards</strong>.</p>
  1254. </section>
  1255. <section id="luks-trim-execute">
  1256. <span id="index-106"></span><span id="id79"></span><h2>Как выполнить TRIM для открытых вручную LUKS-контейнеров?<a class="headerlink" href="#luks-trim-execute" title="Permalink to this heading">¶</a></h2>
  1257. <p>Функция автоматической очистки неиспользуемые данных TRIM выполняется либо в <a class="reference internal" href="installation.html#ssd-trim"><span class="std std-ref">реальном времени</span></a>, либо <a class="reference internal" href="installation.html#ssd-timer"><span class="std std-ref">по таймеру</span></a>, но только для автоматически смонтированных и указанных в файле <code class="docutils literal notranslate"><span class="pre">/etc/crypttab</span></code> разделов.</p>
  1258. <p>Для зашифрованных <a class="reference internal" href="#luks-container-create"><span class="std std-ref">LUKS-контейнеров</span></a>, открытых вручную при помощи <code class="docutils literal notranslate"><span class="pre">cryptsetup</span> <span class="pre">open</span></code>, её необходимо сначала <a class="reference internal" href="#luks-trim-open"><span class="std std-ref">активировать</span></a>, а затем периодически запускать утилиту <code class="docutils literal notranslate"><span class="pre">fstrim</span></code>:</p>
  1259. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo fstrim -v /media/foo-bar
  1260. </pre></div>
  1261. </div>
  1262. <p>Здесь <strong>/media/foo-bar</strong> – это точка монтирования.</p>
  1263. </section>
  1264. <section id="app-disable-network">
  1265. <span id="index-107"></span><span id="id80"></span><h2>Как запретить приложению доступ к сети?<a class="headerlink" href="#app-disable-network" title="Permalink to this heading">¶</a></h2>
  1266. <p>Иногда возникает необходимость ограничить какому-либо приложению доступ к сети Интернет.</p>
  1267. <p>Установим ограничение пространствами имён ядра (более подробную информацию о них можно получить в <code class="docutils literal notranslate"><span class="pre">man</span> <span class="pre">namespaces</span></code>) при помощи утилиты <strong>unshare</strong>:</p>
  1268. <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>unshare -r -n foo-bar
  1269. </pre></div>
  1270. </div>
  1271. <p>Здесь вместо <strong>foo-bar</strong> укажем приложение, которое требуется запустить.</p>
  1272. </section>
  1273. <section id="ssh-tpm">
  1274. <span id="index-108"></span><span id="id81"></span><h2>Как настроить хранение SSH ключей в TPM?<a class="headerlink" href="#ssh-tpm" title="Permalink to this heading">¶</a></h2>
  1275. <p>См. <a class="reference external" href="https://www.easycoding.org/2022/02/14/ispolzuem-tpm-dlya-xraneniya-ssh-klyuchej.html">здесь</a>.</p>
  1276. </section>
  1277. </section>
  1278. </div>
  1279. </div>
  1280. </div>
  1281. <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
  1282. <div class="sphinxsidebarwrapper">
  1283. <div id="searchbox" style="display: none" role="search">
  1284. <h3 id="searchlabel">Быстрый поиск</h3>
  1285. <div class="searchformwrapper">
  1286. <form class="search" action="search.html" method="get">
  1287. <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
  1288. <input type="submit" value="Искать" />
  1289. </form>
  1290. </div>
  1291. </div>
  1292. <script>document.getElementById('searchbox').style.display = "block"</script><h3>Навигация</h3>
  1293. <ul class="current">
  1294. <li class="toctree-l1"><a class="reference internal" href="generic-info.html">Основная информация</a></li>
  1295. <li class="toctree-l1"><a class="reference internal" href="installation.html">Установка системы</a></li>
  1296. <li class="toctree-l1"><a class="reference internal" href="package-manager.html">Пакетный менеджер и установка пакетов</a></li>
  1297. <li class="toctree-l1"><a class="reference internal" href="administration.html">Системное администрирование</a></li>
  1298. <li class="toctree-l1"><a class="reference internal" href="networking.html">Сетевое администрирование</a></li>
  1299. <li class="toctree-l1"><a class="reference internal" href="virtualization.html">Виртуализация</a></li>
  1300. <li class="toctree-l1 current"><a class="current reference internal" href="#">Безопасность</a><ul>
  1301. <li class="toctree-l2"><a class="reference internal" href="#selinux">Что такое SELinux?</a></li>
  1302. <li class="toctree-l2"><a class="reference internal" href="#selinux-temp">Как мне временно отключить SELinux?</a></li>
  1303. <li class="toctree-l2"><a class="reference internal" href="#selinux-disable">Как мне навсегда отключить SELinux?</a></li>
  1304. <li class="toctree-l2"><a class="reference internal" href="#selinux-status">Как узнать текущий статус SELinux?</a></li>
  1305. <li class="toctree-l2"><a class="reference internal" href="#selinux-auditd">Как разрешить заблокированные действия SELinux?</a></li>
  1306. <li class="toctree-l2"><a class="reference internal" href="#selinux-httpd">Как настроить SELinux так, чтобы веб-сервер мог создавать файлы и каталоги?</a></li>
  1307. <li class="toctree-l2"><a class="reference internal" href="#selinux-connections">Как настроить SELinux так, чтобы веб-сервер мог осуществлять исходящие сетевые соединения?</a></li>
  1308. <li class="toctree-l2"><a class="reference internal" href="#openvpn-selinux">OpenVPN не может получить доступ к сертификатам из-за SELinux. Что делать?</a></li>
  1309. <li class="toctree-l2"><a class="reference internal" href="#kpti">Можно ли отключить KPTI?</a></li>
  1310. <li class="toctree-l2"><a class="reference internal" href="#spectre-v1">Можно ли отключить защиту от Spectre v1?</a></li>
  1311. <li class="toctree-l2"><a class="reference internal" href="#spectre-v2">Можно ли отключить защиту от Spectre v2?</a></li>
  1312. <li class="toctree-l2"><a class="reference internal" href="#spectre-v4">Можно ли отключить защиту от Spectre v4?</a></li>
  1313. <li class="toctree-l2"><a class="reference internal" href="#l1tf">Можно ли отключить защиту от L1TF?</a></li>
  1314. <li class="toctree-l2"><a class="reference internal" href="#mds">Можно ли отключить защиту от MDS?</a></li>
  1315. <li class="toctree-l2"><a class="reference internal" href="#itlb">Можно ли отключить защиту от iTLB?</a></li>
  1316. <li class="toctree-l2"><a class="reference internal" href="#tsx">Можно ли отключить защиту от TSX?</a></li>
  1317. <li class="toctree-l2"><a class="reference internal" href="#taa">Можно ли отключить защиту от TAA?</a></li>
  1318. <li class="toctree-l2"><a class="reference internal" href="#mitigations-off">Можно ли отключить все виды защит от уязвимостей в процессорах?</a></li>
  1319. <li class="toctree-l2"><a class="reference internal" href="#intel-gpu">Можно ли отключить защиту от уязвимостей в Intel GPU?</a></li>
  1320. <li class="toctree-l2"><a class="reference internal" href="#hardware-vuln">Как узнать защищено ли ядро от известных уязвимостей в процессорах?</a></li>
  1321. <li class="toctree-l2"><a class="reference internal" href="#selinux-boot-error">При загрузке получаю ошибку SELinux. Как исправить?</a></li>
  1322. <li class="toctree-l2"><a class="reference internal" href="#usb">Как можно надёжно зашифровать файлы на USB устройстве?</a></li>
  1323. <li class="toctree-l2"><a class="reference internal" href="#luks-home">Можно ли зашифровать домашний раздел уже установленной системы?</a></li>
  1324. <li class="toctree-l2"><a class="reference internal" href="#luks">Как сменить пароль зашифрованного LUKS раздела?</a></li>
  1325. <li class="toctree-l2"><a class="reference internal" href="#luks-info">Как получить информацию о зашифрованном LUKS устройстве?</a></li>
  1326. <li class="toctree-l2"><a class="reference internal" href="#luks-benchmark">Насколько сильно шифрование LUKS снижает производительность дисковой подсистемы?</a></li>
  1327. <li class="toctree-l2"><a class="reference internal" href="#aes-ni">Как узнать поддерживает ли процессор моего ПК набор инструкций AES-NI?</a></li>
  1328. <li class="toctree-l2"><a class="reference internal" href="#firewalld">Что такое Firewalld?</a></li>
  1329. <li class="toctree-l2"><a class="reference internal" href="#firewalld-configure">Как можно настраивать Firewalld?</a></li>
  1330. <li class="toctree-l2"><a class="reference internal" href="#firewalld-hardened">Как усилить настройки безопасности Firewalld?</a></li>
  1331. <li class="toctree-l2"><a class="reference internal" href="#firewalld-hide-service">Как замаскировать сервис средствами Firewalld?</a></li>
  1332. <li class="toctree-l2"><a class="reference internal" href="#ip">Как запретить подключения с конкретных IP-адресов?</a></li>
  1333. <li class="toctree-l2"><a class="reference internal" href="#gnupg">Как работать с подписями GnuPG?</a></li>
  1334. <li class="toctree-l2"><a class="reference internal" href="#gpg-encrypt">Как зашифровать и расшифровать файлы с определённой маской в текущем каталоге?</a></li>
  1335. <li class="toctree-l2"><a class="reference internal" href="#admin-vs-user">Чем отличается пользователь-администратор от обычного?</a></li>
  1336. <li class="toctree-l2"><a class="reference internal" href="#sudo-run">Как запустить команду с правами суперпользователя?</a></li>
  1337. <li class="toctree-l2"><a class="reference internal" href="#sudo-su">Какие пароли запрашивают sudo и su?</a></li>
  1338. <li class="toctree-l2"><a class="reference internal" href="#root-password">Как мне сменить пароль суперпользователя?</a></li>
  1339. <li class="toctree-l2"><a class="reference internal" href="#sudo">Как мне получить доступ к sudo?</a></li>
  1340. <li class="toctree-l2"><a class="reference internal" href="#sudo-vs-su">Что лучше: sudo или su?</a></li>
  1341. <li class="toctree-l2"><a class="reference internal" href="#sudo-file-manager">Почему я не могу запустить файловый менеджер с правами суперпользователя?</a></li>
  1342. <li class="toctree-l2"><a class="reference internal" href="#sudo-edit-config">Как мне отредактировать конфиг, доступный только суперпользователю?</a></li>
  1343. <li class="toctree-l2"><a class="reference internal" href="#sudoedit">Sudoedit безопаснее прямого запуска текстового редактора с правами суперпользователя?</a></li>
  1344. <li class="toctree-l2"><a class="reference internal" href="#ssh">Как включить и безопасно настроить сервер SSH?</a></li>
  1345. <li class="toctree-l2"><a class="reference internal" href="#ssh-passwords">Допустимо ли использовать парольную аутентификацию для SSH?</a></li>
  1346. <li class="toctree-l2"><a class="reference internal" href="#ssh-port">Следует ли сменить порт SSH на нестандартный?</a></li>
  1347. <li class="toctree-l2"><a class="reference internal" href="#ssh-keys">Безопасна ли аутентификация по ключам в SSH?</a></li>
  1348. <li class="toctree-l2"><a class="reference internal" href="#ssh-keygen">Как сгенерировать ключи для SSH?</a></li>
  1349. <li class="toctree-l2"><a class="reference internal" href="#ssh-transfer">Как безопасно передать публичный ключ SSH на удалённый сервер?</a></li>
  1350. <li class="toctree-l2"><a class="reference internal" href="#ssh-port-forwarding">Как пробросить порт с удалённой машины на локальную через SSH?</a></li>
  1351. <li class="toctree-l2"><a class="reference internal" href="#socks-ssh">Как настроить виртуальный SOCKS туннель через SSH?</a></li>
  1352. <li class="toctree-l2"><a class="reference internal" href="#ssh-sftp">Можно ли разрешить доступ посредством SSH только к файлам, без возможности выполнения команд?</a></li>
  1353. <li class="toctree-l2"><a class="reference internal" href="#destroy-file">Как безвозвратно уничтожить файл?</a></li>
  1354. <li class="toctree-l2"><a class="reference internal" href="#destroy-disk">Можно лишь уничтожить содержимое всего диска?</a></li>
  1355. <li class="toctree-l2"><a class="reference internal" href="#ssd">Как уничтожить файл на SSD?</a></li>
  1356. <li class="toctree-l2"><a class="reference internal" href="#sata-ssd">Как полностью очистить SATA SSD без возможности восстановления?</a></li>
  1357. <li class="toctree-l2"><a class="reference internal" href="#newfile-permissions">Как рассчитываются права доступа для новых файлов и каталогов?</a></li>
  1358. <li class="toctree-l2"><a class="reference internal" href="#fedora">Можно ли включить поддержку российской криптографии в Fedora?</a></li>
  1359. <li class="toctree-l2"><a class="reference internal" href="#mac-wi-fi-fedora">Как включить рандомизацию MAC адресов при подключении к Wi-Fi точкам в Fedora?</a></li>
  1360. <li class="toctree-l2"><a class="reference internal" href="#add-custom-ca">Как добавить собственный удостоверяющий центр в список доверенных?</a></li>
  1361. <li class="toctree-l2"><a class="reference internal" href="#blackist-ca">Как внести удостоверяющий центр в список запрещённых?</a></li>
  1362. <li class="toctree-l2"><a class="reference internal" href="#rsa-openssl">Как убрать пароль шифрования закрытого RSA ключа средствами OpenSSL?</a></li>
  1363. <li class="toctree-l2"><a class="reference internal" href="#openssl-encrypt-key">Как установить или изменить пароль шифрования закрытого RSA ключа средствами OpenSSL?</a></li>
  1364. <li class="toctree-l2"><a class="reference internal" href="#sudo-multi">Как посредством sudo запустить сразу несколько команд?</a></li>
  1365. <li class="toctree-l2"><a class="reference internal" href="#wireshark">Как запускать WireShark без предоставления ему прав суперпользователя?</a></li>
  1366. <li class="toctree-l2"><a class="reference internal" href="#password-gen">Как сгенерировать криптостойкий пароль без использования стороннего ПО?</a></li>
  1367. <li class="toctree-l2"><a class="reference internal" href="#users-logged">Как получить список вошедших в систему пользователей?</a></li>
  1368. <li class="toctree-l2"><a class="reference internal" href="#users-activity">Как получить список вошедших в систему пользователей и информацию об их деятельности?</a></li>
  1369. <li class="toctree-l2"><a class="reference internal" href="#users-last">Как получить информацию обо всех входах в систему?</a></li>
  1370. <li class="toctree-l2"><a class="reference internal" href="#com">Как получить доступ к COM портам без наличия прав суперпользователя?</a></li>
  1371. <li class="toctree-l2"><a class="reference internal" href="#gnupg-kwallet">Можно ли сохранить пароль GnuPG ключа в связке ключей KWallet?</a></li>
  1372. <li class="toctree-l2"><a class="reference internal" href="#gpg-gui">Безопасно ли использовать менеджеры связки ключей GnuPG с графическим интерфейсом?</a></li>
  1373. <li class="toctree-l2"><a class="reference internal" href="#kleopatra-kgpg">Можно ли одновременно использовать Kleopatra и KGpg?</a></li>
  1374. <li class="toctree-l2"><a class="reference internal" href="#gpg-token">Какой токен для безопасного хранения GnuPG ключей вы можете порекомендовать?</a></li>
  1375. <li class="toctree-l2"><a class="reference internal" href="#gpg-use-token">Как работать с токеном или смарт-картой из консоли?</a></li>
  1376. <li class="toctree-l2"><a class="reference internal" href="#gpg-ssh">Как использовать токен для аутентификации SSH?</a></li>
  1377. <li class="toctree-l2"><a class="reference internal" href="#gpg-transfer">Можно ли переместить на токен уже имеющуюся ключевую пару GnuPG?</a></li>
  1378. <li class="toctree-l2"><a class="reference internal" href="#nmap-scan">Как просканировать хост на наличие работающих сервисов?</a></li>
  1379. <li class="toctree-l2"><a class="reference internal" href="#luks-addkey">Как добавить ключевой файл для разблокировки зашифрованного LUKS раздела?</a></li>
  1380. <li class="toctree-l2"><a class="reference internal" href="#luks-removekey">Как удалить ключевой файл разблокировки зашифрованного LUKS раздела?</a></li>
  1381. <li class="toctree-l2"><a class="reference internal" href="#luks-auto">Как настроить автоматическую расшифровку LUKS разделов при загрузке?</a></li>
  1382. <li class="toctree-l2"><a class="reference internal" href="#root-reset">Я забыл пароль суперпользователя. Как мне его сбросить?</a></li>
  1383. <li class="toctree-l2"><a class="reference internal" href="#luks-noauto">Можно ли отключить автоматическое монтирование устройств LUKS при загрузке?</a></li>
  1384. <li class="toctree-l2"><a class="reference internal" href="#truecrypt-fedora">Как работать с TrueCrypt контейнерами в Fedora?</a></li>
  1385. <li class="toctree-l2"><a class="reference internal" href="#truecrypt-mount">Как смонтировать TrueCrypt контейнер в Fedora?</a></li>
  1386. <li class="toctree-l2"><a class="reference internal" href="#veracrypt-fedora">Как смонтировать VeraCrypt контейнер в Fedora?</a></li>
  1387. <li class="toctree-l2"><a class="reference internal" href="#veracrypt">Как настроить автоматическое монтирование VeraCrypt томов при загрузке?</a></li>
  1388. <li class="toctree-l2"><a class="reference internal" href="#bitlocker-fedora">Как работать с BitLocker контейнерами в Fedora?</a></li>
  1389. <li class="toctree-l2"><a class="reference internal" href="#bitlocker-mount">Как смонтировать BitLocker контейнер в Fedora?</a></li>
  1390. <li class="toctree-l2"><a class="reference internal" href="#bitlocker">Как настроить автоматическое монтирование BitLocker томов при загрузке?</a></li>
  1391. <li class="toctree-l2"><a class="reference internal" href="#selinux-local-storage">Где хранятся установленные пользователем контексты SELinux?</a></li>
  1392. <li class="toctree-l2"><a class="reference internal" href="#selinux-local-list">Как получить список установленных пользователем контекстов SELinux?</a></li>
  1393. <li class="toctree-l2"><a class="reference internal" href="#selinux-local-remove">Как удалить пользовательские контексты SELinux?</a></li>
  1394. <li class="toctree-l2"><a class="reference internal" href="#luks-container-create">Как создать зашифрованный контейнер на диске?</a></li>
  1395. <li class="toctree-l2"><a class="reference internal" href="#luks-container-mount">Как смонтировать зашифрованный файловый контейнер?</a></li>
  1396. <li class="toctree-l2"><a class="reference internal" href="#luks-erase">Как быстро уничтожить содержимое LUKS контейнера?</a></li>
  1397. <li class="toctree-l2"><a class="reference internal" href="#tpm-luks">Можно ли использовать TPM для разблокировки LUKS контейнера?</a></li>
  1398. <li class="toctree-l2"><a class="reference internal" href="#samba-selinux">Как настроить работу Samba с SELinux?</a></li>
  1399. <li class="toctree-l2"><a class="reference internal" href="#ssh-mitm">Как защитить SSH от возможных MITM-атак?</a></li>
  1400. <li class="toctree-l2"><a class="reference internal" href="#luks-version">Как определить версию LUKS конкретного криптоконтейнера?</a></li>
  1401. <li class="toctree-l2"><a class="reference internal" href="#luks-header-backup">Как создать резервную копию заголовка LUKS?</a></li>
  1402. <li class="toctree-l2"><a class="reference internal" href="#luks-header-restore">Как восстановить резервную копию заголовка LUKS?</a></li>
  1403. <li class="toctree-l2"><a class="reference internal" href="#luks-upgrade">Как осуществить апгрейд версии LUKS?</a></li>
  1404. <li class="toctree-l2"><a class="reference internal" href="#luks-upgrade-key">Как усилить защиту ключа LUKS?</a></li>
  1405. <li class="toctree-l2"><a class="reference internal" href="#luks-upgrade-cipher">Как усилить надёжность шифрования LUKS?</a></li>
  1406. <li class="toctree-l2"><a class="reference internal" href="#trim-luks">Как активировать TRIM для открытых вручную LUKS-контейнеров?</a></li>
  1407. <li class="toctree-l2"><a class="reference internal" href="#luks-trim-execute">Как выполнить TRIM для открытых вручную LUKS-контейнеров?</a></li>
  1408. <li class="toctree-l2"><a class="reference internal" href="#app-disable-network">Как запретить приложению доступ к сети?</a></li>
  1409. <li class="toctree-l2"><a class="reference internal" href="#ssh-tpm">Как настроить хранение SSH ключей в TPM?</a></li>
  1410. </ul>
  1411. </li>
  1412. <li class="toctree-l1"><a class="reference internal" href="using-system.html">Работа в системе</a></li>
  1413. <li class="toctree-l1"><a class="reference internal" href="using-applications.html">Сторонние приложения</a></li>
  1414. <li class="toctree-l1"><a class="reference internal" href="hardware.html">Оборудование</a></li>
  1415. <li class="toctree-l1"><a class="reference internal" href="development.html">Разработка и сборка пакетов</a></li>
  1416. <li class="toctree-l1"><a class="reference internal" href="tips-and-tricks.html">Оптимизация и тонкая настройка</a></li>
  1417. <li class="toctree-l1"><a class="reference internal" href="legal-info.html">Правовая информация</a></li>
  1418. </ul>
  1419. <div class="relations">
  1420. <h3>Related Topics</h3>
  1421. <ul>
  1422. <li><a href="index.html">Documentation overview</a><ul>
  1423. <li>Previous: <a href="virtualization.html" title="предыдущая глава">Виртуализация</a></li>
  1424. <li>Next: <a href="using-system.html" title="следующая глава">Работа в системе</a></li>
  1425. </ul></li>
  1426. </ul>
  1427. </div>
  1428. </div>
  1429. </div>
  1430. <div class="clearer"></div>
  1431. </div>
  1432. <div class="footer">
  1433. &copy;2018 - 2023, EasyCoding Team and contributors.
  1434. </div>
  1435. <a href="https://github.com/RussianFedora/FAQ" class="github">
  1436. <img style="position: absolute; top: 0; right: 0; border: 0;" src="_static/forkme_right_green.png" alt="Fork me on GitHub" class="github"/>
  1437. </a>
  1438. </body>
  1439. </html>