123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467 |
- <!DOCTYPE html>
- <html lang="ru">
- <head>
- <meta charset="utf-8" />
- <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
- <title>Безопасность — Неофициальный FAQ по Fedora (версия 2023.05.30)</title>
- <link rel="stylesheet" type="text/css" href="_static/pygments.css" />
- <link rel="stylesheet" type="text/css" href="_static/alabaster.css" />
- <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
- <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
- <script src="_static/doctools.js"></script>
- <script src="_static/sphinx_highlight.js"></script>
- <script src="_static/translations.js"></script>
- <script defer="defer" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
- <script defer="defer" src="_static/search.js"></script>
- <link rel="icon" href="_static/faq-icon.ico"/>
- <link rel="index" title="Алфавитный указатель" href="genindex.html" />
- <link rel="search" title="Поиск" href="search.html" />
- <link rel="next" title="Работа в системе" href="using-system.html" />
- <link rel="prev" title="Виртуализация" href="virtualization.html" />
-
- <link rel="stylesheet" href="_static/custom.css" type="text/css" />
-
- <link rel="apple-touch-icon" href="_static/faq-icon.png" />
-
-
- <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
- </head><body>
-
- <div class="document">
- <div class="documentwrapper">
- <div class="bodywrapper">
-
- <div class="body" role="main">
-
- <section id="security">
- <span id="id1"></span><h1>Безопасность<a class="headerlink" href="#security" title="Permalink to this heading">¶</a></h1>
- <section id="selinux">
- <span id="index-0"></span><span id="id2"></span><h2>Что такое SELinux?<a class="headerlink" href="#selinux" title="Permalink to this heading">¶</a></h2>
- <p>SELinux – это мандатная система контроля доступа, ограничивающая доступ ряду сервисов к файлам и каталогам.</p>
- <p>Более подробная информация может быть получена <a class="reference external" href="https://ru.wikipedia.org/wiki/SELinux">здесь</a>.</p>
- </section>
- <section id="selinux-temp">
- <span id="index-1"></span><span id="id3"></span><h2>Как мне временно отключить SELinux?<a class="headerlink" href="#selinux-temp" title="Permalink to this heading">¶</a></h2>
- <p>Мы настоятельно не рекомендуем этого делать, однако если это необходимо, то для временного однократного отключения SELinux, передадим ядру Linux специальный <a class="reference internal" href="administration.html#kernelpm-once"><span class="std std-ref">параметра ядра</span></a>:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>SELINUX=0
- </pre></div>
- </div>
- </section>
- <section id="selinux-disable">
- <span id="index-2"></span><span id="id4"></span><h2>Как мне навсегда отключить SELinux?<a class="headerlink" href="#selinux-disable" title="Permalink to this heading">¶</a></h2>
- <p>Для постоянного отключения SELinux, откроем его главный файл файл конфигурации <code class="docutils literal notranslate"><span class="pre">/etc/selinux/config</span></code> в текстовом редакторе:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudoedit /etc/selinux/config
- </pre></div>
- </div>
- <p>Изменить значение директивы <code class="docutils literal notranslate"><span class="pre">SELINUX</span></code> на одно из допустимых значений:</p>
- <blockquote>
- <div><ul class="simple">
- <li><p><code class="docutils literal notranslate"><span class="pre">enforcing</span></code> — включён и блокирует всё, что явно не разрешено;</p></li>
- <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>
- <li><p><code class="docutils literal notranslate"><span class="pre">disabled</span></code> — полностью отключён.</p></li>
- </ul>
- </div></blockquote>
- <p>Изменения вступят в силу при следующей загрузке системы.</p>
- </section>
- <section id="selinux-status">
- <span id="index-3"></span><span id="id5"></span><h2>Как узнать текущий статус SELinux?<a class="headerlink" href="#selinux-status" title="Permalink to this heading">¶</a></h2>
- <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>
- </section>
- <section id="selinux-auditd">
- <span id="index-4"></span><span id="id6"></span><h2>Как разрешить заблокированные действия SELinux?<a class="headerlink" href="#selinux-auditd" title="Permalink to this heading">¶</a></h2>
- <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>
- <p>Очистим журнал аудита для того, чтобы избавиться от предыдущих ошибок и случайно не позволить лишние действия, накопившиеся с момента его прошлой ротации:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo bash -c "cat /dev/null > /var/log/audit/audit.log"
- </pre></div>
- </div>
- <p>Запустим приложение, модуль ядра и т.д., который вызывает срабатывание SELinux и блокировку доступа к ресурсу (файлу, каталогу, сокету). Как только это произойдёт, воспользуемся утилитой <strong>audit2allow</strong> для анализа журнала аудита, облегчающей создание новых разрешающих правил для SELinux:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo bash -c "cat /var/log/audit/audit.log | audit2allow -M foo-bar"
- </pre></div>
- </div>
- <p>В результате работы данной утилиты будет создан новый модуль <code class="docutils literal notranslate"><span class="pre">foo-bar.te</span></code>, в котором разрешаются действия, записи о запрещении которых были внесены в журнал auditd ранее.</p>
- <p>Перед применением этого файла и созданием политики SELinux обязательно загрузим его в текстовый редактор и проверим корректность, т.к. в нем может содержаться больше разрешающих правил, чем требуется, а также присутствуют подсказки о том, как правильно настроить SELinux.</p>
- <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>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>getsebool -a
- </pre></div>
- </div>
- <p>Описание переменных SELinux, относящихся к работе веб-сервера, можно найти <a class="reference external" href="https://dwalsh.fedorapeople.org/SELinux/httpd_selinux.html">здесь</a>.</p>
- </section>
- <section id="selinux-httpd">
- <span id="index-5"></span><span id="id7"></span><h2>Как настроить SELinux так, чтобы веб-сервер мог создавать файлы и каталоги?<a class="headerlink" href="#selinux-httpd" title="Permalink to this heading">¶</a></h2>
- <p>Если при работе веб-сервера в журналах появляются сообщения вида:</p>
- <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
- 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
- </pre></div>
- </div>
- <p>Они означают, что процесс веб-сервера (или интерпретатора языка программирования) не может получить доступ на запись. Если права доступа (chmod и chown) при этом установлены верно, значит доступ блокирует <a class="reference internal" href="#selinux"><span class="std std-ref">SELinux</span></a>.</p>
- <p>Установим правильный контекст безопасности для всех каталогов внутри <code class="docutils literal notranslate"><span class="pre">document_root/foo-bar</span></code>:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/foo-bar(/.*)?"
- </pre></div>
- </div>
- <p>Сбросим контекст безопасности для всех файлов внутри document_root рекурсивно:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo restorecon -Rv /var/www/html
- </pre></div>
- </div>
- <p>Для отмены произведённых изменений контекста выполним:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo semanage fcontext -d "/var/www/html/foo-bar(/.*)?"
- </pre></div>
- </div>
- <p>Получим список контекстов для httpd:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo semanage fcontext -l | grep httpd
- </pre></div>
- </div>
- <p>Если предудущая команда выводит очень много информации, осуществим фильтрацию вывода:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo semanage fcontext -l | grep /var/www/html
- </pre></div>
- </div>
- <p>Получим список файлов и каталогов с установленным контекстом SELinux:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>ls -laZ /var/www/html/foo-bar
- </pre></div>
- </div>
- <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>
- <p>Откроем текстовый редактор и создадим новый модуль <code class="docutils literal notranslate"><span class="pre">httpd_wr.te</span></code>:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>module httpd_wr 1.0;
- require {
- type httpd_t;
- type httpd_sys_rw_content_t;
- class file { create write setattr rename unlink };
- class dir { create write setattr add_name remove_name rmdir };
- }
- allow httpd_t httpd_sys_rw_content_t:file { create write setattr rename unlink };
- allow httpd_t httpd_sys_rw_content_t:dir { create write setattr add_name remove_name rmdir };
- </pre></div>
- </div>
- <p>Проверим, скомпилируем и установим его:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo checkmodule -M -m httpd_wr.te -o httpd_wr.mod
- sudo semodule_package -o httpd_wr.pp -m httpd_wr.mod
- sudo semodule -i httpd_wr.pp
- </pre></div>
- </div>
- <p>Больше полезной информации о модулях:</p>
- <blockquote>
- <div><ul class="simple">
- <li><p><a class="reference external" href="https://habr.com/ru/company/pt/blog/142423/">создание модулей SELinux</a>;</p></li>
- <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>
- <li><p><a class="reference external" href="https://dwalsh.fedorapeople.org/SELinux/httpd_selinux.html">информация о контекстах и настройках для веб-сервера</a>.</p></li>
- </ul>
- </div></blockquote>
- </section>
- <section id="selinux-connections">
- <span id="index-6"></span><span id="id8"></span><h2>Как настроить SELinux так, чтобы веб-сервер мог осуществлять исходящие сетевые соединения?<a class="headerlink" href="#selinux-connections" title="Permalink to this heading">¶</a></h2>
- <section id="nsl-first">
- <span id="id9"></span><h3>Первый вариант (самый правильный):<a class="headerlink" href="#nsl-first" title="Permalink to this heading">¶</a></h3>
- <p>Откроем текствый редактор и создадим новый модуль <code class="docutils literal notranslate"><span class="pre">httpd_network.te</span></code>:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>module httpd_connect 1.0;
- require {
- type httpd_t;
- type ephemeral_port_t;
- class tcp_socket name_connect;
- }
- allow httpd_t ephemeral_port_t:tcp_socket name_connect;
- </pre></div>
- </div>
- <p>Проверим, скомпилируем и установим его:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo checkmodule -M -m httpd_network.te -o httpd_network.mod
- sudo semodule_package -o httpd_network.pp -m httpd_network.mod
- sudo semodule -i httpd_network.pp
- </pre></div>
- </div>
- <p>Получим названия диапазонов портов:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo semanage port -l
- </pre></div>
- </div>
- <p>Добавим порт в диапазон:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>semanage port -a -t ephemeral_port_t -p tcp 80-88
- </pre></div>
- </div>
- <p>Удалим порт из диапазона:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>semanage port -d -t ephemeral_port_t -p tcp 80-88
- </pre></div>
- </div>
- <p>Здесь <strong>ephemeral_port_t</strong> – название диапазона, <strong>tcp</strong> – используемый протокол, а <strong>80-88</strong> – диапазон разрешаемых портов.</p>
- </section>
- <section id="nsl-second">
- <span id="id10"></span><h3>Второй вариант (быстрый, но менее безопасный)<a class="headerlink" href="#nsl-second" title="Permalink to this heading">¶</a></h3>
- <p>Разрешим любые исходящие соединения для веб-сервера:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo setsebool -P httpd_can_network_connect on
- </pre></div>
- </div>
- </section>
- </section>
- <section id="openvpn-selinux">
- <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>
- <p>Это нормально ибо запущенные сервисы не могут получать доступ к каталогам пользователя, однако для OpenVPN сделано исключение в виде каталога <code class="docutils literal notranslate"><span class="pre">~/.cert</span></code>.</p>
- <p>По умолчанию он не существует, поэтому его нужно создать и задать для него контекст безопасности SELinux:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>mkdir ~/.cert
- restorecon -Rv ~/.cert
- </pre></div>
- </div>
- <p>Теперь в нём можно размещать сертификаты и приватные ключи.</p>
- </section>
- <section id="kpti">
- <span id="index-8"></span><span id="id12"></span><h2>Можно ли отключить KPTI?<a class="headerlink" href="#kpti" title="Permalink to this heading">¶</a></h2>
- <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>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>nopti
- </pre></div>
- </div>
- <p>Параметр <code class="docutils literal notranslate"><span class="pre">pti=off</span></code> также поддерживается в полной мере.</p>
- </section>
- <section id="spectre-v1">
- <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>
- <p>Программные заплатки могут быть отключены при помощи <a class="reference internal" href="administration.html#kernelpm-perm"><span class="std std-ref">параметра ядра</span></a>:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>nospectre_v1
- </pre></div>
- </div>
- </section>
- <section id="spectre-v2">
- <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>
- <p>Да, при помощи <a class="reference internal" href="administration.html#kernelpm-perm"><span class="std std-ref">параметра ядра</span></a>:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>nospectre_v2
- </pre></div>
- </div>
- </section>
- <section id="spectre-v4">
- <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>
- <p>Да, при помощи <a class="reference internal" href="administration.html#kernelpm-perm"><span class="std std-ref">параметра ядра</span></a>:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>nospec_store_bypass_disable
- </pre></div>
- </div>
- </section>
- <section id="l1tf">
- <span id="index-12"></span><span id="id13"></span><h2>Можно ли отключить защиту от L1TF?<a class="headerlink" href="#l1tf" title="Permalink to this heading">¶</a></h2>
- <p>Да, при помощи <a class="reference internal" href="administration.html#kernelpm-perm"><span class="std std-ref">параметра ядра</span></a>:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>l1tf=off
- </pre></div>
- </div>
- </section>
- <section id="mds">
- <span id="index-13"></span><span id="id14"></span><h2>Можно ли отключить защиту от MDS?<a class="headerlink" href="#mds" title="Permalink to this heading">¶</a></h2>
- <p>Да, при помощи <a class="reference internal" href="administration.html#kernelpm-perm"><span class="std std-ref">параметра ядра</span></a>:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>mds=off
- </pre></div>
- </div>
- </section>
- <section id="itlb">
- <span id="index-14"></span><span id="id15"></span><h2>Можно ли отключить защиту от iTLB?<a class="headerlink" href="#itlb" title="Permalink to this heading">¶</a></h2>
- <p>Да, при помощи <a class="reference internal" href="administration.html#kernelpm-perm"><span class="std std-ref">параметра ядра</span></a>:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>nx_huge_pages=off
- </pre></div>
- </div>
- </section>
- <section id="tsx">
- <span id="index-15"></span><span id="id16"></span><h2>Можно ли отключить защиту от TSX?<a class="headerlink" href="#tsx" title="Permalink to this heading">¶</a></h2>
- <p>Да, при помощи <a class="reference internal" href="administration.html#kernelpm-perm"><span class="std std-ref">параметра ядра</span></a>:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>tsx=on
- </pre></div>
- </div>
- <p>Для полной деактивации должен использоваться совместно с <a class="reference internal" href="#taa"><span class="std std-ref">TAA</span></a>.</p>
- </section>
- <section id="taa">
- <span id="index-16"></span><span id="id17"></span><h2>Можно ли отключить защиту от TAA?<a class="headerlink" href="#taa" title="Permalink to this heading">¶</a></h2>
- <p>Да, при помощи <a class="reference internal" href="administration.html#kernelpm-perm"><span class="std std-ref">параметра ядра</span></a>:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>tsx_async_abort=off
- </pre></div>
- </div>
- </section>
- <section id="mitigations-off">
- <span id="index-17"></span><span id="id18"></span><h2>Можно ли отключить все виды защит от уязвимостей в процессорах?<a class="headerlink" href="#mitigations-off" title="Permalink to this heading">¶</a></h2>
- <p>Да. Начиная с версии ядра Linux 5.1.2, появился особый <a class="reference internal" href="administration.html#kernelpm-perm"><span class="std std-ref">параметр ядра</span></a>, отключающий все виды программных защит:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>mitigations=off
- </pre></div>
- </div>
- </section>
- <section id="intel-gpu">
- <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>
- <p>Да. Начиная с версии ядра Linux 5.12, появился особый <a class="reference internal" href="administration.html#kernelpm-perm"><span class="std std-ref">параметр ядра</span></a>, отключающий все виды программных защит интегрированных видеокарт Intel:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>i915.mitigations=off
- </pre></div>
- </div>
- </section>
- <section id="hardware-vuln">
- <span id="index-19"></span><span id="id19"></span><h2>Как узнать защищено ли ядро от известных уязвимостей в процессорах?<a class="headerlink" href="#hardware-vuln" title="Permalink to this heading">¶</a></h2>
- <p>Ранее для этого применялись сторонние утилиты, но в современных версиях ядра для этого есть штатный механизм, который можно использовать:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>grep . /sys/devices/system/cpu/vulnerabilities/*
- </pre></div>
- </div>
- </section>
- <section id="selinux-boot-error">
- <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>
- <p>Такое бывает если по какой-то причине сбился контекст безопасности SELinux. Исправить это можно двумя различными способами.</p>
- <p><em>Способ первый</em>:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo touch /.autorelabel
- sudo systemctl reboot
- </pre></div>
- </div>
- <p>Внимание! Следующая загрузка системы займёт много времени из-за переустановки контекста для всех файлов и каталогов. Ни в коем случае не следует её прерывать. По окончании система автоматически перезагрузится ещё один раз.</p>
- <p><em>Способ второй</em>:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo restorecon -Rv /
- sudo systemctl reboot
- </pre></div>
- </div>
- <p>После перезагрузки все ошибки, связанные с SELinux, должны исчезнуть.</p>
- </section>
- <section id="usb">
- <span id="luks-usb"></span><span id="index-21"></span><h2>Как можно надёжно зашифровать файлы на USB устройстве?<a class="headerlink" href="#usb" title="Permalink to this heading">¶</a></h2>
- <p>См. <a class="reference external" href="https://www.easycoding.org/2016/11/14/shifruem-vneshnij-nakopitel-posredstvom-luks.html">здесь</a>.</p>
- </section>
- <section id="luks-home">
- <span id="index-22"></span><span id="id21"></span><h2>Можно ли зашифровать домашний раздел уже установленной системы?<a class="headerlink" href="#luks-home" title="Permalink to this heading">¶</a></h2>
- <p>См. <a class="reference external" href="https://www.easycoding.org/2016/12/09/shifruem-domashnij-razdel-ustanovlennoj-sistemy.html">здесь</a>.</p>
- </section>
- <section id="luks">
- <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>
- <p>Сменить пароль достаточно просто. Достаточно выполнить следующую команду:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup luksChangeKey /dev/sda1 -S 0
- </pre></div>
- </div>
- <p>Здесь <strong>/dev/sda1</strong> – зашифрованный раздел диска, а <strong>0</strong> – порядковый номер LUKS слота для пароля.</p>
- <p>Для успешной смены пароля раздел не должен быть смонтирован, поэтому если это корневой или домашний, то придётся выполнять загрузку с <a class="reference internal" href="installation.html#usb-flash"><span class="std std-ref">LiveUSB</span></a>.</p>
- </section>
- <section id="luks-info">
- <span id="index-24"></span><span id="id22"></span><h2>Как получить информацию о зашифрованном LUKS устройстве?<a class="headerlink" href="#luks-info" title="Permalink to this heading">¶</a></h2>
- <p>Если требуется получить подробную информацию о зашифрованном LUKS разделе (алгоритм шифрование, тип хеша и количество итераций и т.д.), можно воспользоваться утилитой <strong>cryptsetup</strong>:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup luksDump /dev/sda1
- </pre></div>
- </div>
- <p>Здесь <strong>/dev/sda1</strong> – зашифрованный раздел диска.</p>
- </section>
- <section id="luks-benchmark">
- <span id="index-25"></span><span id="id23"></span><h2>Насколько сильно шифрование LUKS снижает производительность дисковой подсистемы?<a class="headerlink" href="#luks-benchmark" title="Permalink to this heading">¶</a></h2>
- <p>На современных процессорах с аппаратной поддержкой набора инструкций AES-NI снижение производительности практически незаметно даже на самых производительных NVMe SSD накопителях.</p>
- <p>Для того, чтобы оценить скорость работы на реальном оборудовании, в <strong>cryptsetup</strong> присутствует встроенный бенчмарк для тестирования разных алгоритмов шифрования и типа сцепления блоков шифротекста:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>cryptsetup benchmark
- </pre></div>
- </div>
- </section>
- <section id="aes-ni">
- <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>
- <p>Если в выводе <code class="docutils literal notranslate"><span class="pre">/proc/cpuinfo</span></code> присутствует строка <strong>aes</strong>, значит поддерживает:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>grep -Eq 'aes' /proc/cpuinfo && echo Yes || echo No
- </pre></div>
- </div>
- </section>
- <section id="firewalld">
- <span id="firewalld-about"></span><span id="index-27"></span><h2>Что такое Firewalld?<a class="headerlink" href="#firewalld" title="Permalink to this heading">¶</a></h2>
- <p>Firewalld – это современный динамически управляемый брандмауэр с поддержкой зон для интерфейсов.</p>
- </section>
- <section id="firewalld-configure">
- <span id="index-28"></span><span id="id24"></span><h2>Как можно настраивать Firewalld?<a class="headerlink" href="#firewalld-configure" title="Permalink to this heading">¶</a></h2>
- <p>Для настройки применяется либо графическая утилита <strong>firewall-config</strong>, либо консольная <strong>firewall-cmd</strong>.</p>
- <p>Документацию можно <a class="reference external" href="https://fedoraproject.org/wiki/FirewallD/ru">найти в Wiki</a>.</p>
- </section>
- <section id="firewalld-hardened">
- <span id="index-29"></span><span id="id25"></span><h2>Как усилить настройки безопасности Firewalld?<a class="headerlink" href="#firewalld-hardened" title="Permalink to this heading">¶</a></h2>
- <p>По умолчанию в Fedora Workstation применяется зона брандмауэра <strong>FedoraWorkstation</strong>, для которой разрешены входящие соединения на порты из диапазона 1025-65535, как по TCP, так и UDP.</p>
- <p>Если необходимо запретить все входящие подключения, кроме явно разрешённых, переключим зону на <strong>public</strong>:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo firewall-cmd --set-default-zone=public
- </pre></div>
- </div>
- </section>
- <section id="firewalld-hide-service">
- <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>
- <p>См. <a class="reference external" href="https://www.easycoding.org/2017/06/22/maskiruem-opredelyonnyj-servis-sredstvami-firewalld.html">здесь</a>.</p>
- </section>
- <section id="ip">
- <span id="firewalld-block"></span><span id="index-31"></span><h2>Как запретить подключения с конкретных IP-адресов?<a class="headerlink" href="#ip" title="Permalink to this heading">¶</a></h2>
- <p>Достаточно добавить их в специально созданную зону <strong>drop</strong> файрвола:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo firewall-cmd --permanent --zone=drop --add-source=1.2.3.4
- </pre></div>
- </div>
- <p>Здесь вместо <strong>1.2.3.4</strong> нужно указать необходимый IP-адрес или подсеть (<strong>1.2.3.0/24</strong>).</p>
- </section>
- <section id="gnupg">
- <span id="gpg-signatures"></span><span id="index-32"></span><h2>Как работать с подписями GnuPG?<a class="headerlink" href="#gnupg" title="Permalink to this heading">¶</a></h2>
- <p>См. <a class="reference external" href="https://www.easycoding.org/2018/01/11/rabotaem-s-cifrovymi-podpisyami-gpg.html">здесь</a>.</p>
- </section>
- <section id="gpg-encrypt">
- <span id="index-33"></span><span id="id27"></span><h2>Как зашифровать и расшифровать файлы с определённой маской в текущем каталоге?<a class="headerlink" href="#gpg-encrypt" title="Permalink to this heading">¶</a></h2>
- <p>Шифрование всех файлов с маской <em>.7z.</em> (многотомные архивы 7-Zip):</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>find . -maxdepth 1 -type f -name "*.7z.*" -exec gpg2 --out "{}.asc" --recipient "example@example.org" --encrypt "{}" \;
- </pre></div>
- </div>
- <p>Расшифровка:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>find . -maxdepth 1 -type f -name "*.asc" -exec gpg2 --out "$(basename {})" --decrypt "{}" \;
- </pre></div>
- </div>
- </section>
- <section id="admin-vs-user">
- <span id="index-34"></span><span id="id28"></span><h2>Чем отличается пользователь-администратор от обычного?<a class="headerlink" href="#admin-vs-user" title="Permalink to this heading">¶</a></h2>
- <p>Администратор (в терминологии программы установки Anaconda) имеет доступ к sudo.</p>
- </section>
- <section id="sudo-run">
- <span id="index-35"></span><span id="id29"></span><h2>Как запустить команду с правами суперпользователя?<a class="headerlink" href="#sudo-run" title="Permalink to this heading">¶</a></h2>
- <p>Для запуска чего-либо с правами суперпользователя необходимо использовать sudo:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo foo-bar
- </pre></div>
- </div>
- <p>Здесь вместо <strong>foo-bar</strong> следует указать команду, путь к исполняемому файлу, скрипту и т.д.</p>
- </section>
- <section id="sudo-su">
- <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>
- <p>Утилита sudo запрашивает текущий пароль пользователя, а su – рутовый.</p>
- </section>
- <section id="root-password">
- <span id="index-37"></span><span id="id30"></span><h2>Как мне сменить пароль суперпользователя?<a class="headerlink" href="#root-password" title="Permalink to this heading">¶</a></h2>
- <p>Для смены или установки пароля суперпользователя при наличии доступа к sudo, можно выполнить:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo passwd root
- </pre></div>
- </div>
- </section>
- <section id="sudo">
- <span id="sudo-access"></span><span id="index-38"></span><h2>Как мне получить доступ к sudo?<a class="headerlink" href="#sudo" title="Permalink to this heading">¶</a></h2>
- <p>Если при установке Fedora, при создании пользователя, не был установлен флажок в чекбокс <strong>Создать администратора</strong>, то необходимо самостоятельно добавить пользовательский аккаунт в группу <strong>wheel</strong>:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>su -c "usermod -a -G wheel $(whoami)"
- </pre></div>
- </div>
- </section>
- <section id="sudo-vs-su">
- <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>
- <p>Sudo ибо позволяет гибко настраивать права доступа, включая список разрешённых команд, а также ведёт полный журнал её использования.</p>
- </section>
- <section id="sudo-file-manager">
- <span id="index-40"></span><span id="id32"></span><h2>Почему я не могу запустить файловый менеджер с правами суперпользователя?<a class="headerlink" href="#sudo-file-manager" title="Permalink to this heading">¶</a></h2>
- <p>Это сделано из соображений безопасности. Более подробная информация доступна <a class="reference external" href="https://blog.martin-graesslin.com/blog/2017/02/editing-files-as-root/">здесь</a>.</p>
- </section>
- <section id="sudo-edit-config">
- <span id="index-41"></span><span id="id33"></span><h2>Как мне отредактировать конфиг, доступный только суперпользователю?<a class="headerlink" href="#sudo-edit-config" title="Permalink to this heading">¶</a></h2>
- <p>Необходимо использовать <strong>sudoedit</strong>:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudoedit /путь/к/файлу/конфигурации.conf
- </pre></div>
- </div>
- </section>
- <section id="sudoedit">
- <span id="sudoedit-info"></span><span id="index-42"></span><h2>Sudoedit безопаснее прямого запуска текстового редактора с правами суперпользователя?<a class="headerlink" href="#sudoedit" title="Permalink to this heading">¶</a></h2>
- <p>Да, намного ибо sudoedit копирует нужный файл во временный каталог и загружает в выбранном по умолчанию текстовом редакторе с обычными правами, а по завершении редактирования копирует на прежнее место.</p>
- </section>
- <section id="ssh">
- <span id="ssh-install"></span><span id="index-43"></span><h2>Как включить и безопасно настроить сервер SSH?<a class="headerlink" href="#ssh" title="Permalink to this heading">¶</a></h2>
- <p>Сначала установим и активируем sshd:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo dnf install openssh-server
- sudo systemctl enable --now sshd.service
- </pre></div>
- </div>
- <p>Создадим собственный файл конфигурации, в который будем вносить изменения:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo touch /etc/ssh/sshd_config.d/00-foobar.conf
- sudo chmod 0600 /etc/ssh/sshd_config.d/00-foobar.conf
- </pre></div>
- </div>
- <p>Имя файла начинается с <strong>00</strong>, т.к., согласно документации OpenSSH, приоритет среди всех файлов конфигурации имеет та директива, которая была указана раньше.</p>
- <p>Отредактируем созданный файл для внесения своих изменений:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudoedit /etc/ssh/sshd_config.d/00-foobar.conf
- </pre></div>
- </div>
- <p>Отключим вход суперпользователем:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>PermitRootLogin no
- </pre></div>
- </div>
- <p>Запретим вход по паролям (будет доступна лишь аутентификация по ключам):</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>PasswordAuthentication no
- PermitEmptyPasswords no
- </pre></div>
- </div>
- <p>Сохраним изменения и перезапустим sshd:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo systemctl restart sshd.service
- </pre></div>
- </div>
- </section>
- <section id="ssh-passwords">
- <span id="index-44"></span><span id="id34"></span><h2>Допустимо ли использовать парольную аутентификацию для SSH?<a class="headerlink" href="#ssh-passwords" title="Permalink to this heading">¶</a></h2>
- <p>В настоящее время мы настоятельно не рекомендуем эксплуатировать SSH серверы с включённой парольной аутентификацией (настройки по умолчанию), т.к. он станет постоянной целью для атак заражённых устройств, которые будут пытаться подобрать пароль по словарям, а также полным перебором, создавая тем самым лишнюю нагрузку на SSH сервер.</p>
- <p>Автоматическая блокировка средствами fail2ban также не особо поможет, т.к. современные ботнеты умеют координировать свои атаки посредством мастер-сервера и знают стандартные настройки данных утилит.</p>
- </section>
- <section id="ssh-port">
- <span id="index-45"></span><span id="id35"></span><h2>Следует ли сменить порт SSH на нестандартный?<a class="headerlink" href="#ssh-port" title="Permalink to this heading">¶</a></h2>
- <p>Это никак не поможет скрыть сервер от крупных бот-сетей, сканирующих весь допустимый диапазон портов, и лишь создаст дополнительные неудобства для самих пользователей.</p>
- </section>
- <section id="ssh-keys">
- <span id="index-46"></span><span id="id36"></span><h2>Безопасна ли аутентификация по ключам в SSH?<a class="headerlink" href="#ssh-keys" title="Permalink to this heading">¶</a></h2>
- <p>Да. В настоящее время это самый безопасный метод аутентификации. Если во время рукопожатия SSH клиент не предоставил серверу разрешённый ключ, последний немедленно закроет соединение.</p>
- </section>
- <section id="ssh-keygen">
- <span id="index-47"></span><span id="id37"></span><h2>Как сгенерировать ключи для SSH?<a class="headerlink" href="#ssh-keygen" title="Permalink to this heading">¶</a></h2>
- <p>Для создания ключевой пары из открытого и закрытого ключей, необходимо воспользоваться утилитой <strong>ssh-keygen</strong>:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>ssh-keygen -t rsa -C "user@example.org"
- </pre></div>
- </div>
- <p>Здесь в качестве параметра <strong>-t</strong> указывается тип ключа: RSA, DSA, ecdsa или ed25519. Рекомендуется использовать либо RSA, либо ed25519.</p>
- <p>Для RSA можно добавить параметр <strong>-b</strong> и указать длину в битах, например <strong>-b 4096</strong>.</p>
- </section>
- <section id="ssh-transfer">
- <span id="index-48"></span><span id="id38"></span><h2>Как безопасно передать публичный ключ SSH на удалённый сервер?<a class="headerlink" href="#ssh-transfer" title="Permalink to this heading">¶</a></h2>
- <p>Для простой, быстрой и безопасной передачи можно использовать утилиту <strong>ssh-copy-id</strong>:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>ssh-copy-id user@example.org
- </pre></div>
- </div>
- <p>Здесь <strong>user@example.org</strong> – данные для подключения к серверу, т.е. имя пользователя на удалённом сервере и хост.</p>
- </section>
- <section id="ssh-port-forwarding">
- <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>
- <p>Для примера пробросим с удалённого сервера на локальную машину порт MySQL/MariaDB:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>ssh user@example.org -L 3306:127.0.0.1:3306 -N -f
- </pre></div>
- </div>
- <p>Здесь <strong>user@example.org</strong> – данные для подключения к серверу, т.е. имя пользователя на удалённом сервере и хост, а <strong>3306</strong> – порт. Параметры <code class="docutils literal notranslate"><span class="pre">-N</span> <span class="pre">-f</span></code> заставляют SSH клиент сразу вернуть управление, уйти в фоновый режим и продолжать поддерживать соединение до своего завершения.</p>
- </section>
- <section id="socks-ssh">
- <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>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>ssh user@example.org -D 127.0.0.1:8080 -N -f
- </pre></div>
- </div>
- <p>Здесь <strong>user@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>
- <p>После запуска необходимо настроить браузер и другие приложения на работу через данный SOCKS5 прокси.</p>
- </section>
- <section id="ssh-sftp">
- <span id="index-51"></span><span id="id40"></span><h2>Можно ли разрешить доступ посредством SSH только к файлам, без возможности выполнения команд?<a class="headerlink" href="#ssh-sftp" title="Permalink to this heading">¶</a></h2>
- <p>Да. Для этого создадим специальную группу (например <strong>sftp</strong>):</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo groupadd sftp
- </pre></div>
- </div>
- <p>Создадим собственный файл конфигурации, в который будем вносить изменения:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo touch /etc/ssh/sshd_config.d/01-sftp.conf
- sudo chmod 0600 /etc/ssh/sshd_config.d/01-sftp.conf
- </pre></div>
- </div>
- <p>Откроем конфиг <code class="docutils literal notranslate"><span class="pre">/etc/ssh/sshd_config.d/01-sftp.conf</span></code> в текстовом редакторе:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudoedit /etc/ssh/sshd_config.d/01-sftp.conf
- </pre></div>
- </div>
- <p>Добавим следующие строки:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>Subsystem sftp internal-sftp
- Match Group sftp
- ChrootDirectory %h
- AllowTCPForwarding no
- ForceCommand internal-sftp
- </pre></div>
- </div>
- <p>Сохраним изменения и перезапустим sshd:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo systemctl restart sshd.service
- </pre></div>
- </div>
- </section>
- <section id="destroy-file">
- <span id="index-52"></span><span id="id41"></span><h2>Как безвозвратно уничтожить файл?<a class="headerlink" href="#destroy-file" title="Permalink to this heading">¶</a></h2>
- <p>Для уничтожения данных можно использовать штатную утилиту <strong>shred</strong> из пакета GNU Coreutils:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>shred -u -v /путь/к/файлу.txt
- </pre></div>
- </div>
- <p>Восстановить такой файл будет практически невозможно ибо сектора диска, на которых он располагался, будут многократно перезаписаны случайной последовательностью, а затем заполнены нулями.</p>
- </section>
- <section id="destroy-disk">
- <span id="index-53"></span><span id="id42"></span><h2>Можно лишь уничтожить содержимое всего диска?<a class="headerlink" href="#destroy-disk" title="Permalink to this heading">¶</a></h2>
- <p>Да, для этого можно использовать уже упомянутую выше утилиту <strong>shred</strong>:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo shred -v /dev/sdX
- </pre></div>
- </div>
- <p>Здесь <strong>/dev/sdX</strong> — устройство, которое будет очищено. На больших HDD процесс займёт много времени.</p>
- </section>
- <section id="ssd">
- <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>
- <p>Для безвозвратного удаления файла на SSD накопителе достаточно просто удалить его штатным средством системы и дождаться выполнения процедуры TRIM, которая физически забьёт ячейки, которые им использовались, нулями.</p>
- <p>Если не используется TRIM реального времени, принудительно запустить этот процесс на всех твердотельных накопителях можно так:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo systemctl start fstrim.service
- </pre></div>
- </div>
- </section>
- <section id="sata-ssd">
- <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>
- <p>Все модели SATA SSD поддерживают специальную ATA-команду <a class="reference external" href="https://ata.wiki.kernel.org/index.php/ATA_Secure_Erase">Secure Erase</a>, при получении которой контроллер обязан полностью очистить все ячейки диска и вернуть все параметры к настройкам по умолчанию.</p>
- <p>Установим утилиту <strong>hdparm</strong>:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo dnf install hdparm
- </pre></div>
- </div>
- <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>
- <p>Убедимся, что UEFI BIOS не блокирует функцию самоуничтожения диска:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo hdparm -I /dev/sdb
- </pre></div>
- </div>
- <p>Если в выводе присутствует <strong>frozen</strong>, значит диск блокируется и сначала нужно её снять.</p>
- <p>В большинстве реализаций UEFI BIOS сбросить блокировку с SATA накопителей можно лишь посредством «горячего» подключения устройства. Необходимо включить компьютер, не подсоединяя SATA-кабель к накопителю, а затем уже после загрузки системы подключить его.</p>
- <p>Если всё сделано верно, в выводе обнаружим <strong>not frozen</strong> и сможем продолжить процесс.</p>
- <p>Установим специальный пароль блокировки накопителя, т.к. без передачи верного пароля команда ATA Secure Erase будет проигнорирована:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo hdparm --user-master u --security-set-pass FooBar /dev/sdb
- </pre></div>
- </div>
- <p>Ни в коем случае не следует устанавливать новое значение пароля в виде пустой строки, либо NULL, т.к. на многих материнских платах это приведёт к невозможности загрузки с этого устройства, а равно как и его смены.</p>
- <p>Запустим процесс очистки:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo hdparm --user-master u --security-erase FooBar /dev/sdb
- </pre></div>
- </div>
- <p>Через некоторое время (зависит от объёма и производительности контроллера устройства) диск будет полностью очищен, а все настройки, включая пароль блокировки, сброшены.</p>
- <p>В случае <strong>если произошёл сбой</strong> очистки, сбросим установленный пароль вручную:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo hdparm --user-master u --security-disable FooBar /dev/sdb
- </pre></div>
- </div>
- </section>
- <section id="newfile-permissions">
- <span id="index-56"></span><span id="id43"></span><h2>Как рассчитываются права доступа для новых файлов и каталогов?<a class="headerlink" href="#newfile-permissions" title="Permalink to this heading">¶</a></h2>
- <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>
- <p>В Fedora umask по умолчанию для пользоватьских учётных записей равен <code class="docutils literal notranslate"><span class="pre">0002</span></code> (ведущий нуль в chmod означает использование восьмеричной системы счисления).</p>
- <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>
- </section>
- <section id="fedora">
- <span id="fedora-gost"></span><span id="index-57"></span><h2>Можно ли включить поддержку российской криптографии в Fedora?<a class="headerlink" href="#fedora" title="Permalink to this heading">¶</a></h2>
- <p>См. <a class="reference external" href="https://www.easycoding.org/2018/11/28/dobavlyaem-podderzhku-gost-dlya-openssl-v-fedora.html">здесь</a>.</p>
- </section>
- <section id="mac-wi-fi-fedora">
- <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>
- <p>Network Manager поддерживает два сценария рандомизации MAC адресов:</p>
- <blockquote>
- <div><ol class="arabic simple">
- <li><p>генерирование уникального псевдослучайного MAC адреса для каждого соединения при загрузке системы (параметр <code class="docutils literal notranslate"><span class="pre">stable</span></code>). Это избавит от проблем с переподключением к публичным хот-спотам и небходимости повторно проходить аутентификацию в captive-порталах;</p></li>
- <li><p>генерирование уникального псевдослучайного MAC адреса для каждого соединения при каждом переподключении (параметр <code class="docutils literal notranslate"><span class="pre">random</span></code>). Наиболее безопасно, но может вызывать описанные выше проблемы.</p></li>
- </ol>
- </div></blockquote>
- <p>Профиль <strong>stable</strong>. Файл <code class="docutils literal notranslate"><span class="pre">00-macrandomize-stable.conf</span></code>:</p>
- <div class="highlight-ini notranslate"><div class="highlight"><pre><span></span><span class="k">[device]</span>
- <span class="na">wifi.scan-rand-mac-address</span><span class="o">=</span><span class="s">yes</span>
- <span class="k">[connection]</span>
- <span class="na">wifi.cloned-mac-address</span><span class="o">=</span><span class="s">stable</span>
- <span class="na">ethernet.cloned-mac-address</span><span class="o">=</span><span class="s">stable</span>
- <span class="na">connection.stable-id</span><span class="o">=</span><span class="s">${CONNECTION}/${BOOT}</span>
- </pre></div>
- </div>
- <p>Профиль <strong>random</strong>. Файл <code class="docutils literal notranslate"><span class="pre">00-macrandomize-random.conf</span></code>:</p>
- <div class="highlight-ini notranslate"><div class="highlight"><pre><span></span><span class="k">[device]</span>
- <span class="na">wifi.scan-rand-mac-address</span><span class="o">=</span><span class="s">yes</span>
- <span class="k">[connection]</span>
- <span class="na">wifi.cloned-mac-address</span><span class="o">=</span><span class="s">random</span>
- <span class="na">ethernet.cloned-mac-address</span><span class="o">=</span><span class="s">random</span>
- </pre></div>
- </div>
- <p>Для применения одной из конфигураций создадим в каталоге <code class="docutils literal notranslate"><span class="pre">/etc/NetworkManager/conf.d</span></code> файл с выбранным профилем, после чего перезапустим Network Manager:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo systemctl restart NetworkManager
- </pre></div>
- </div>
- <p>Для отключения рандомизации и возвращения настроек по умолчанию достаточно просто удалить созданный файл и перезапустить Network Manager.</p>
- </section>
- <section id="add-custom-ca">
- <span id="index-59"></span><span id="id44"></span><h2>Как добавить собственный удостоверяющий центр в список доверенных?<a class="headerlink" href="#add-custom-ca" title="Permalink to this heading">¶</a></h2>
- <p>Для добавления нового удостоверяющего центра необходимо скопировать файл его сертификата в формате PEM или DER в каталог <code class="docutils literal notranslate"><span class="pre">/etc/pki/ca-trust/source/anchors</span></code>, после чего выполнить:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo update-ca-trust
- </pre></div>
- </div>
- <p>Следует помнить, что данное действие не будет распространяться на браузер Mozilla Firefox, имеющий собственную базу доверенных корневых УЦ.</p>
- </section>
- <section id="blackist-ca">
- <span id="index-60"></span><span id="id45"></span><h2>Как внести удостоверяющий центр в список запрещённых?<a class="headerlink" href="#blackist-ca" title="Permalink to this heading">¶</a></h2>
- <p>Для добавления удостоверяющего центра в список заблокированных необходимо скопировать файл его сертификата в формате PEM или DER в каталог <code class="docutils literal notranslate"><span class="pre">/etc/pki/ca-trust/source/blacklist</span></code>, после чего выполнить:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo update-ca-trust
- </pre></div>
- </div>
- <p>Следует помнить, что данное действие не будет распространяться на браузер Mozilla Firefox, имеющий собственную базу доверенных корневых УЦ.</p>
- </section>
- <section id="rsa-openssl">
- <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>
- <p>Воспользуемся утилитой <strong>openssl</strong> для расшифровки:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>openssl rsa -in foo-bar.key -out foo-bar-nopass.key
- </pre></div>
- </div>
- <p>Здесь <strong>foo-bar.key</strong> – имя файла с закрытым RSA ключом, который необходимо расшифровать. После ввода верного пароля, результат появится в файле <strong>foo-bar-nopass.key</strong>.</p>
- </section>
- <section id="openssl-encrypt-key">
- <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>
- <p>Воспользуемся утилитой <strong>openssl</strong> для установки или изменения пароля:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>openssl rsa -aes256 -in foo-bar-nopass.key -out foo-bar.key
- </pre></div>
- </div>
- <p>Здесь <strong>-aes256</strong> – используемый алгоритм шифрования (AES-256), <strong>foo-bar-nokey.key</strong> – имя файла с закрытым RSA ключом, пароль которого нужно задать или изменить. Результат будет сохранён в файле <strong>foo-bar.key</strong>.</p>
- </section>
- <section id="sudo-multi">
- <span id="index-63"></span><span id="id47"></span><h2>Как посредством sudo запустить сразу несколько команд?<a class="headerlink" href="#sudo-multi" title="Permalink to this heading">¶</a></h2>
- <p>Команда <a class="reference internal" href="#sudo-access"><span class="std std-ref">sudo</span></a> предназначена для запуска исключительно одной команды от имени другого пользователя, поэтому если необходимо запустить сразу несколько команд, либо осуществлять перенаправление вывода, придётся использовать другой вариант:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo bash -c "first | seconds && third"
- </pre></div>
- </div>
- <p>В данном примере все три приложения будут запущены с правами суперпользователя, причём стандартный вывод <em>first</em> перенаправляется в стандартный ввод <em>second</em> через канал (pipe) и при успешном завершении запустится процесс <em>third</em>.</p>
- </section>
- <section id="wireshark">
- <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>
- <p>WireShark поддерживает запуска как с правами суперпользователя, так и без них. Добавим свой аккаунт в группу <strong>wireshark</strong>:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo usermod -a -G wireshark $(whoami)
- </pre></div>
- </div>
- <p>Изменения вступят в силу при следующем входе в систему.</p>
- </section>
- <section id="password-gen">
- <span id="index-65"></span><span id="id48"></span><h2>Как сгенерировать криптостойкий пароль без использования стороннего ПО?<a class="headerlink" href="#password-gen" title="Permalink to this heading">¶</a></h2>
- <p>Для того, чтобы сгенерировать криптостойкий пароль не обязательно устанавливать и применять специальные утилиты.</p>
- <p>Воспользуемся штатными средствами, входящими в базовый пакет GNU Coreutils:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 20 | head -n 4
- </pre></div>
- </div>
- <p>Данный пример сгенерирует 4 криптостойких пароля по 20 символов каждый.</p>
- </section>
- <section id="users-logged">
- <span id="index-66"></span><span id="id49"></span><h2>Как получить список вошедших в систему пользователей?<a class="headerlink" href="#users-logged" title="Permalink to this heading">¶</a></h2>
- <p>Список вошедших в систему пользователей можно получить посредством утилиты <strong>who</strong>:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>who
- </pre></div>
- </div>
- </section>
- <section id="users-activity">
- <span id="index-67"></span><span id="id50"></span><h2>Как получить список вошедших в систему пользователей и информацию об их деятельности?<a class="headerlink" href="#users-activity" title="Permalink to this heading">¶</a></h2>
- <p>Список вошедших в систему пользователей и базовую информацию об их действиях можно получить посредством утилиты <strong>w</strong>:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>w
- </pre></div>
- </div>
- </section>
- <section id="users-last">
- <span id="index-68"></span><span id="id51"></span><h2>Как получить информацию обо всех входах в систему?<a class="headerlink" href="#users-last" title="Permalink to this heading">¶</a></h2>
- <p>Информацию о любых попытках входа в систему можно получить посредством утилиты <strong>last</strong>:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>last
- </pre></div>
- </div>
- </section>
- <section id="com">
- <span id="com-dialout"></span><span id="index-69"></span><h2>Как получить доступ к COM портам без наличия прав суперпользователя?<a class="headerlink" href="#com" title="Permalink to this heading">¶</a></h2>
- <p>Для того, чтобы получить доступ к <a class="reference internal" href="hardware.html#screen-com"><span class="std std-ref">COM порту (RS-232)</span></a> без наличия прав суперпользователя, необходимо добавить свой аккаунт в группу <strong>dialout</strong>:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo usermod -a -G dialout $(whoami)
- </pre></div>
- </div>
- <p>Изменения вступят в силу при следующем входе в систему.</p>
- </section>
- <section id="gnupg-kwallet">
- <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>
- <p>Да. Установим пакет <strong>kwalletcli</strong>:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo dnf install kwalletcli
- </pre></div>
- </div>
- <p>Откроем файл <code class="docutils literal notranslate"><span class="pre">~/.gnupg/gpg-agent.conf</span></code> в текстовом редакторе и добавим строку:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>pinentry-program /usr/bin/pinentry-kwallet
- </pre></div>
- </div>
- <p>Выполним выход из системы. При следующем вводе пароля расшифровки закрытого ключа, KWallet предложит сохранить его в связке ключей.</p>
- </section>
- <section id="gpg-gui">
- <span id="index-71"></span><span id="id52"></span><h2>Безопасно ли использовать менеджеры связки ключей GnuPG с графическим интерфейсом?<a class="headerlink" href="#gpg-gui" title="Permalink to this heading">¶</a></h2>
- <p>Да.</p>
- </section>
- <section id="kleopatra-kgpg">
- <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>
- <p>Нет, не следует использовать одновременно разные графические менеджеры, т.к. настройки, вносимые ими в файл конфигурации GnuPG, будут конфликтовать и приводить к непредсказуемым последствиям.</p>
- <p>Пользователям KDE мы рекомендуем Kleopatra, как наиболее современную и функциональную оболочку.</p>
- </section>
- <section id="gpg-token">
- <span id="index-73"></span><span id="id53"></span><h2>Какой токен для безопасного хранения GnuPG ключей вы можете порекомендовать?<a class="headerlink" href="#gpg-token" title="Permalink to this heading">¶</a></h2>
- <p>Мы рекомендуем использовать токены <a class="reference external" href="https://www.nitrokey.com/ru">Nitrokey Pro 2</a>, т.к. они имеют как открытое железо, так и софт (спецификации, прошивки, а также программное обеспечение опубликовано под свободными лицензиями).</p>
- </section>
- <section id="gpg-use-token">
- <span id="index-74"></span><span id="id54"></span><h2>Как работать с токеном или смарт-картой из консоли?<a class="headerlink" href="#gpg-use-token" title="Permalink to this heading">¶</a></h2>
- <p>Для работы с аппаратным токеном будем использовать утилиту GnuPG2.</p>
- <p>Вставим устройство в USB порт компьютера или ноутбука, либо смарт-карту в считыватель, затем выведем его статус:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>gpg2 --card-status
- </pre></div>
- </div>
- <p>Установим PIN-код:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>gpg2 --change-pin
- </pre></div>
- </div>
- <p>Перейдём в режим работы с токеном:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>gpg2 --card-edit
- </pre></div>
- </div>
- <p>Переключимся в режим администратора:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>admin
- </pre></div>
- </div>
- <p>Сгенерируем новую связку ключей GnuPG на токене:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>generate
- </pre></div>
- </div>
- <p>GnuPG2 запросит стандартные данные: имя и адрес электронной почты владельца ключевой пары, срок действия, а также указать стойкость шифра. Следует помнить, что размер памяти токена сильно ограничен, поэтому если генерировать исключительно 4096 битные ключи, место быстро закончится (например Nitrokey Pro 2 вмещает лишь 3 ключевых пары со стойкостью шифра 4096 бит).</p>
- <p>Также будет предложено сохранить копию секретного ключа на диск. Для максимальной безопасности лучше отказаться от этого.</p>
- <p>Проверим сгенерировались ли ключи:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>list
- </pre></div>
- </div>
- <p>Если всё сделано верно, то новая ключевая пара появится в списке немедленно.</p>
- </section>
- <section id="gpg-ssh">
- <span id="index-75"></span><span id="id55"></span><h2>Как использовать токен для аутентификации SSH?<a class="headerlink" href="#gpg-ssh" title="Permalink to this heading">¶</a></h2>
- <p>Сначала нам необходимо добавить в нашу ключевую пару особый ключ для аутентификации. По умолчанию он не создаётся.</p>
- <p>Выведем список доступных ключевых пар:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>gpg2 --list-secret-keys
- </pre></div>
- </div>
- <p>Откроем наш основной ключ в режиме редактирования:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>gpg2 --edit-key XXXXXXXXX
- </pre></div>
- </div>
- <p>Здесь <strong>XXXXXXXXX</strong> – ID нашего ключа.</p>
- <p>Добавим новый подключ:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>addkey
- </pre></div>
- </div>
- <p>В списке атрибутов оставим только <strong>Authentication</strong> и обязательно отключим <em>Encrypt</em> и <em>Sign</em>.</p>
- <p>Выберем созданный подключ и переместим его на токен:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>key 2
- keytocard
- </pre></div>
- </div>
- <p>Экспортируем публичный ключ SSH из созданного подключа для аутентификации:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>gpg2 --export-ssh-key XXXXXXXXX --output ~/.ssh/id_rsa.pub
- </pre></div>
- </div>
- <p>Здесь <strong>XXXXXXXXX</strong> – ID нашего ключа.</p>
- <p>Активируем поддержку SSH агента в GnuPG агенте, добавив в конец файла <code class="docutils literal notranslate"><span class="pre">~/.gnupg/gpg-agent.conf</span></code> следующую строку:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>enable-ssh-support
- </pre></div>
- </div>
- <p>Настроим автоматический запуск GnuPG агента вместе с системой, создав скрипт <code class="docutils literal notranslate"><span class="pre">~/bin/gpg-agent.sh</span></code>:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>#!/usr/bin/sh
- export GPG_TTY="$(tty)"
- export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
- gpgconf --launch gpg-agent
- </pre></div>
- </div>
- <p>Выдадим ему права на выполнение:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>chmod +x ~/bin/gpg-agent.sh
- </pre></div>
- </div>
- <p>Добавим этот скрипт а автозагрузку используемой DE, либо в <code class="docutils literal notranslate"><span class="pre">~/.bashrc</span></code> и выполним новый вход в систему.</p>
- </section>
- <section id="gpg-transfer">
- <span id="index-76"></span><span id="id56"></span><h2>Можно ли переместить на токен уже имеющуюся ключевую пару GnuPG?<a class="headerlink" href="#gpg-transfer" title="Permalink to this heading">¶</a></h2>
- <p>Да. Выведем список доступных ключевых пар:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>gpg2 --list-secret-keys
- </pre></div>
- </div>
- <p>Откроем наш основной ключ в режиме редактирования:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>gpg2 --edit-key XXXXXXXXX
- </pre></div>
- </div>
- <p>Здесь <strong>XXXXXXXXX</strong> – ID нашего ключа.</p>
- <p>Выберем каждый подключ и переместим его на токен:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>key 1
- keytocard
- </pre></div>
- </div>
- <p>Повторим для всех оставшихся подключей.</p>
- <p><strong>Отключим токен от компьютера или ноутбука</strong>, затем выполним удаление локального секретного ключа:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>gpg2 --delete-secret-key XXXXXXXXX
- </pre></div>
- </div>
- <p>Здесь <strong>XXXXXXXXX</strong> – ID нашего ключа.</p>
- </section>
- <section id="nmap-scan">
- <span id="index-77"></span><span id="id57"></span><h2>Как просканировать хост на наличие работающих сервисов?<a class="headerlink" href="#nmap-scan" title="Permalink to this heading">¶</a></h2>
- <p>Стандартное сканирование самых популярных портов:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>nmap -A -T4 -Pn 127.0.0.1
- </pre></div>
- </div>
- <p>Стандартное сканирование портов в указанном диапазоне (параметр <code class="docutils literal notranslate"><span class="pre">-p</span> <span class="pre">1-100</span></code>):</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>nmap -A -T4 -Pn -p 1-100 127.0.0.1
- </pre></div>
- </div>
- <p>Стандартное сканирование всего диапазона портов (параметр <code class="docutils literal notranslate"><span class="pre">-p-</span></code>):</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>nmap -A -T4 -Pn -p- 127.0.0.1
- </pre></div>
- </div>
- <p>Стандартное сканирование всего диапазона портов, включая UDP (параметр <code class="docutils literal notranslate"><span class="pre">-sU</span></code>):</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo nmap -sU -A -T4 -Pn -p- 127.0.0.1
- </pre></div>
- </div>
- <p>Сканирование UDP требует прав суперпользователя.</p>
- </section>
- <section id="luks-addkey">
- <span id="index-78"></span><span id="id58"></span><h2>Как добавить ключевой файл для разблокировки зашифрованного LUKS раздела?<a class="headerlink" href="#luks-addkey" title="Permalink to this heading">¶</a></h2>
- <p>Создадим каталог для хранения ключей <code class="docutils literal notranslate"><span class="pre">/etc/keys</span></code> (может быть любым):</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo mkdir -p /etc/keys
- </pre></div>
- </div>
- <p>Сгенерируем ключевой файл <code class="docutils literal notranslate"><span class="pre">foo-bar.key</span></code> размером 4 КБ на основе системного генератора псевдослучайных чисел:</p>
- <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
- </pre></div>
- </div>
- <p>Установим корректные права доступа:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo chown root:root /etc/keys/foo-bar.key
- sudo chmod 0400 /etc/keys/foo-bar.key
- </pre></div>
- </div>
- <p>Добавим ключ в свободный слот LUKS заголовка зашифрованного раздела:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup luksAddKey /dev/sda2 /etc/keys/foo-bar.key
- </pre></div>
- </div>
- <p>Утилита cryptsetup запросит ввод мастер-пароля.</p>
- <p>Здесь <strong>/dev/sda2</strong> – устройство зашифрованного LUKS тома, для которого требуется добавить ключевой файл.</p>
- </section>
- <section id="luks-removekey">
- <span id="index-79"></span><span id="id59"></span><h2>Как удалить ключевой файл разблокировки зашифрованного LUKS раздела?<a class="headerlink" href="#luks-removekey" title="Permalink to this heading">¶</a></h2>
- <p>Если разблокировка по ключевому файлу более не требуется, его можно удалить.</p>
- <p>Удалим слот с ключом <code class="docutils literal notranslate"><span class="pre">foo-bar.key</span></code> из LUKS заголовка зашифрованного раздела:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup luksRemoveKey /dev/sda2 /etc/keys/foo-bar.key
- </pre></div>
- </div>
- <p>Надёжно <a class="reference internal" href="#destroy-file"><span class="std std-ref">уничтожим</span></a> ключевой файл:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo shred -u -v /etc/keys/foo-bar.key
- </pre></div>
- </div>
- <p>Здесь <strong>/dev/sda2</strong> – устройство зашифрованного LUKS тома, у которого требуется удалить слот с ключевым файлом.</p>
- </section>
- <section id="luks-auto">
- <span id="index-80"></span><span id="id60"></span><h2>Как настроить автоматическую расшифровку LUKS разделов при загрузке?<a class="headerlink" href="#luks-auto" title="Permalink to this heading">¶</a></h2>
- <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>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudoedit /etc/crypttab
- </pre></div>
- </div>
- <p>Добавим в конец файла строку вида:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>foo-bar UUID=XXXXXX /etc/keys/foo-bar.key luks
- </pre></div>
- </div>
- <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>
- <p>Откроем файл <code class="docutils literal notranslate"><span class="pre">/etc/fstab</span></code>:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudoedit /etc/fstab
- </pre></div>
- </div>
- <p>Добавим в конец строку вида:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>/dev/mapper/foo-bar /media/data ext4 defaults 1 2
- </pre></div>
- </div>
- <p>Здесь <strong>foo-bar</strong> – внутреннее имя, указанное ранее в crypttab, <strong>/media/data</strong> – точка монтирования, а <strong>ext4</strong> – используемая файловая система.</p>
- <p>Если всё сделано верно, то при следующей загрузке раздел будет смонтирован автоматически без запроса пароля.</p>
- </section>
- <section id="root-reset">
- <span id="index-81"></span><span id="id61"></span><h2>Я забыл пароль суперпользователя. Как мне его сбросить?<a class="headerlink" href="#root-reset" title="Permalink to this heading">¶</a></h2>
- <p>При наличии доступа к sudo, пароль суперпользователя можно изменить <a class="reference internal" href="#root-password"><span class="std std-ref">в штатном режиме</span></a>.</p>
- <p>Если текущий пользователь не может использовать sudo, но есть физический доступ к устройству, см. <a class="reference external" href="https://docs.fedoraproject.org/en-US/quick-docs/reset-root-password/">здесь</a>.</p>
- </section>
- <section id="luks-noauto">
- <span id="index-82"></span><span id="id62"></span><h2>Можно ли отключить автоматическое монтирование устройств LUKS при загрузке?<a class="headerlink" href="#luks-noauto" title="Permalink to this heading">¶</a></h2>
- <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>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>foo-bar UUID=XXXXXX /etc/keys/foo-bar.key noauto
- </pre></div>
- </div>
- <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>
- <p>Данное зашифрованное устройство будет смонтировано и автоматически расшифровано при первой попытке доступа к нему.</p>
- </section>
- <section id="truecrypt-fedora">
- <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>
- <p>Из-за <a class="reference internal" href="development.html#fedora-licenses"><span class="std std-ref">несвободной лицензии</span></a> TrueCrypt и все его форки (в т.ч. VeraCrypt) не могут быть добавлены в репозитории Fedora, однако в настоящее время утилита <strong>cryptsetup</strong> полностью поддерживает работу с созданными ими контейнерами.</p>
- <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>
- </section>
- <section id="truecrypt-mount">
- <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>
- <p>Откроем файл контейнера средствами cryptsetup:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup --type tcrypt open /path/to/container.tc foo-bar
- </pre></div>
- </div>
- <p>Смонтируем файловую систему:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo mkdir /media/data
- sudo mount -t auto /dev/mapper/foo-bar /media/data
- </pre></div>
- </div>
- <p>По окончании работы произведём размонтирование:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo umount /media/data
- sudo rmdir /media/data
- </pre></div>
- </div>
- <p>Закроем файл контейнера:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup --type tcrypt close /dev/mapper/foo-bar
- </pre></div>
- </div>
- <p>Здесь <strong>/path/to/container.tc</strong> полный путь к файлу контейнера на диске (либо зашифрованному устройству), а <strong>foo-bar</strong> – внутреннее имя для dev-mapper.</p>
- </section>
- <section id="veracrypt-fedora">
- <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>
- <p>Откроем файл контейнера средствами cryptsetup:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup --veracrypt --type tcrypt open /path/to/container.hc foo-bar
- </pre></div>
- </div>
- <p>Смонтируем файловую систему:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo mkdir /media/data
- sudo mount -t auto /dev/mapper/foo-bar /media/data
- </pre></div>
- </div>
- <p>По окончании работы произведём размонтирование:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo umount /media/data
- sudo rmdir /media/data
- </pre></div>
- </div>
- <p>Закроем файл контейнера:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup --veracrypt --type tcrypt close /dev/mapper/foo-bar
- </pre></div>
- </div>
- <p>Здесь <strong>/path/to/container.hc</strong> полный путь к файлу контейнера на диске (либо зашифрованному устройству), а <strong>foo-bar</strong> – внутреннее имя для dev-mapper.</p>
- </section>
- <section id="veracrypt">
- <span id="veracrypt-auto"></span><span id="index-86"></span><h2>Как настроить автоматическое монтирование VeraCrypt томов при загрузке?<a class="headerlink" href="#veracrypt" title="Permalink to this heading">¶</a></h2>
- <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>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudoedit /etc/crypttab
- </pre></div>
- </div>
- <p>Добавим в конец файла строку вида:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>foo-bar UUID=XXXXXX /etc/keys/foo-bar.key tcrypt-veracrypt
- </pre></div>
- </div>
- <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>
- <p>Откроем файл <code class="docutils literal notranslate"><span class="pre">/etc/fstab</span></code>:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudoedit /etc/fstab
- </pre></div>
- </div>
- <p>Добавим в конец строку вида:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>/dev/mapper/foo-bar /media/data auto defaults,x-systemd.automount 0 0
- </pre></div>
- </div>
- <p>Здесь <strong>foo-bar</strong> – внутреннее имя, указанное ранее в crypttab, а <strong>/media/data</strong> – точка монтирования.</p>
- <p>Если всё сделано верно, то при следующей загрузке зашифрованный VeraCrypt том будет смонтирован автоматически.</p>
- </section>
- <section id="bitlocker-fedora">
- <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>
- <p>Начиная с версии 2.3.0 утилита <strong>cryptsetup</strong> поддерживает работу с зашифрованными BitLocker томами.</p>
- <p>Допускается <a class="reference internal" href="#bitlocker-mount"><span class="std std-ref">монтирование</span></a>, базовые операции с ними, но не создание новых.</p>
- </section>
- <section id="bitlocker-mount">
- <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>
- <p>Откроем устройство, зашифрованное BitLocker, средствами cryptsetup:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup --type bitlk open /dev/sdX1 foo-bar
- </pre></div>
- </div>
- <p>Смонтируем файловую систему:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo mkdir /media/data
- sudo mount -t auto /dev/mapper/foo-bar /media/data
- </pre></div>
- </div>
- <p>По окончании работы произведём размонтирование:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo umount /media/data
- sudo rmdir /media/data
- </pre></div>
- </div>
- <p>Закроем файл контейнера:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup --type bitlk close /dev/mapper/foo-bar
- </pre></div>
- </div>
- <p>Здесь <strong>/dev/sdX1</strong> – зашифрованное BitLocker устройство, а <strong>foo-bar</strong> – внутреннее имя для dev-mapper.</p>
- </section>
- <section id="bitlocker">
- <span id="bitlocker-auto"></span><span id="index-89"></span><h2>Как настроить автоматическое монтирование BitLocker томов при загрузке?<a class="headerlink" href="#bitlocker" title="Permalink to this heading">¶</a></h2>
- <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>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudoedit /etc/crypttab
- </pre></div>
- </div>
- <p>Добавим в конец файла строку вида:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>foo-bar UUID=XXXXXX /etc/keys/foo-bar.key bitlk
- </pre></div>
- </div>
- <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>
- <p>Откроем файл <code class="docutils literal notranslate"><span class="pre">/etc/fstab</span></code>:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudoedit /etc/fstab
- </pre></div>
- </div>
- <p>Добавим в конец строку вида:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>/dev/mapper/foo-bar /media/data auto defaults,x-systemd.automount 0 0
- </pre></div>
- </div>
- <p>Здесь <strong>foo-bar</strong> – внутреннее имя, указанное ранее в crypttab, а <strong>/media/data</strong> – точка монтирования.</p>
- <p>Если всё сделано верно, то при следующей загрузке зашифрованный BitLocker том будет смонтирован автоматически.</p>
- </section>
- <section id="selinux-local-storage">
- <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>
- <p>Заданные пользователем нестандартные контексты, а также переопределения хранятся внутри каталога <code class="docutils literal notranslate"><span class="pre">/etc/selinux/targeted/contexts/files</span></code> в следующих файлах:</p>
- <blockquote>
- <div><ul class="simple">
- <li><p><code class="docutils literal notranslate"><span class="pre">file_contexts.local</span></code> – текстовый формат;</p></li>
- <li><p><code class="docutils literal notranslate"><span class="pre">file_contexts.local.bin</span></code> – скомпилированный бинарный формат.</p></li>
- </ul>
- </div></blockquote>
- <p>Не следует их править в текстовых, либо шестнадцатиричных редакторах, т.к. это может привести к сбою в политиках SELinux и сбросу настроек по умолчанию. Вместо этого необходимо использовать <a class="reference internal" href="#selinux-local-remove"><span class="std std-ref">инструмент semanage</span></a>.</p>
- </section>
- <section id="selinux-local-list">
- <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>
- <p>Выведем полный список нестандартных контекстов, а также переопределений политик SELinux:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo semanage fcontext --list -C
- </pre></div>
- </div>
- </section>
- <section id="selinux-local-remove">
- <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>
- <p>Удалим конкретный нестандартный контекст, либо переопределение политик SELinux:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo semanage fcontext -d "/foo/bar(/.*)?"
- </pre></div>
- </div>
- <p>Удалим все нестандартный контексты, а также переопределения политик SELinux:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo semanage fcontext -D
- </pre></div>
- </div>
- <p>Для полного вступления изменений в силу рекомендуется <a class="reference internal" href="#selinux-boot-error"><span class="std std-ref">сбросить контекст</span></a> SELinux.</p>
- </section>
- <section id="luks-container-create">
- <span id="index-93"></span><span id="id70"></span><h2>Как создать зашифрованный контейнер на диске?<a class="headerlink" href="#luks-container-create" title="Permalink to this heading">¶</a></h2>
- <p>При помощи утилиты <strong>dd</strong> создадим пустой файл для хранения криптоконтейнера размером в 1 ГБ:</p>
- <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
- </pre></div>
- </div>
- <p>Минимальный размер создаваемого образа должен быть не меньше 32 МБ, т.к. противном случае возникнет ошибка <em>Requested offset is beyond real size of device</em>.</p>
- <p>Здесь <strong>/media/data/foo-bar.dat</strong> – полный путь к файлу на диске.</p>
- <p>Создадим зашифрованный LUKS контейнер:</p>
- <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
- </pre></div>
- </div>
- <p>Подтвердим процесс создания посредством набора на клавиатуре <strong>YES</strong> в верхнем регистре, затем укажем пароль, который будет использоваться для шифрования.</p>
- <p>Загрузим контейнер и расшифруем содержимое:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup luksOpen /media/data/foo-bar.dat foo-bar
- </pre></div>
- </div>
- <p>Создадим файловую систему ext4:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo mkfs -t ext4 -m 1 -L foo-bar /dev/mapper/foo-bar
- </pre></div>
- </div>
- <p>Завершим сеанс работы с контейнером:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup luksClose /dev/mapper/foo-bar
- </pre></div>
- </div>
- </section>
- <section id="luks-container-mount">
- <span id="index-94"></span><span id="id71"></span><h2>Как смонтировать зашифрованный файловый контейнер?<a class="headerlink" href="#luks-container-mount" title="Permalink to this heading">¶</a></h2>
- <p>Загрузим <a class="reference internal" href="#luks-container-create"><span class="std std-ref">криптоконтейнер</span></a> и расшифруем содержимое:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup luksOpen /media/data/foo-bar.dat foo-bar
- </pre></div>
- </div>
- <p>Создадим каталог для точки монтирования:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo mkdir /media/foo-bar
- </pre></div>
- </div>
- <p>Смонтируем файловую систему:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo mount -t auto /dev/mapper/foo-bar /media/foo-bar
- </pre></div>
- </div>
- <p>По окончании работы произведём размонтирование:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo umount /media/foo-bar
- </pre></div>
- </div>
- <p>Удалим каталог точки монтирования:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo rmdir /media/foo-bar
- </pre></div>
- </div>
- <p>Завершим сеанс работы с контейнером:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup luksClose /dev/mapper/foo-bar
- </pre></div>
- </div>
- </section>
- <section id="luks-erase">
- <span id="index-95"></span><span id="id72"></span><h2>Как быстро уничтожить содержимое LUKS контейнера?<a class="headerlink" href="#luks-erase" title="Permalink to this heading">¶</a></h2>
- <p>Быстро и безопасно уничтожим ключи шифрования заголовка LUKS-контейнера:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup luksErase /dev/sdX1
- </pre></div>
- </div>
- <p>Здесь <strong>/dev/sdX1</strong> – зашифрованный раздел диска, данные с которого требуется уничтожить. Он не должен быть смонтирован. Ввод пароля не требуется.</p>
- <p>После выполнения данного действия все ключевые слоты LUKS-контейнера будут заполнены нулями и доступ к данным, хранящимся на данном разделе, станет невозможен даже при знании верного пароля или наличии ключа.</p>
- <p>Внимание! Это действие не затирает содержимое физически, поэтому после его использования рекомендуется <a class="reference internal" href="#destroy-disk"><span class="std std-ref">осуществить эту процедуру</span></a> самостоятельно.</p>
- </section>
- <section id="tpm-luks">
- <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>
- <p>См. <a class="reference external" href="https://www.easycoding.org/2019/09/24/avtomaticheski-razblokiruem-luks-diski-pri-pomoshhi-tpm.html">здесь</a>.</p>
- </section>
- <section id="samba-selinux">
- <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>
- <p>См. <a class="reference external" href="https://fedoraproject.org/wiki/SELinux/samba">здесь</a>.</p>
- </section>
- <section id="ssh-mitm">
- <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>
- <p>Для защиты от MITM-атак в протоколе SSH применяется проверка отпечатков публичного ключа сервера в момент установки рукопожатия с эталоном, сохранённым на клиенте.</p>
- <p>Во время первого подключения пользователю предлагается проверить отпечаток сервера и либо разрешить, либо отклонить соединение.</p>
- <p>После одобрения, они вместе с IP-адресом сохраняются в файле <code class="docutils literal notranslate"><span class="pre">~/.ssh/known_hosts</span></code> и при следующих подключениях проверяется их действительность. В случае изменения, например из-за проведения злоумышленником атаки «человек посередине», соединение не устанавливается, а пользователю выводится соответствующее сообщение об ошибке.</p>
- <p>К сожалению, ручная проверка отпечатка мало кем производится, поэтому был придуман новый, более надёжный способ – размещение публичных ключей в виде особых <strong>SSHFP</strong> записей DNS.</p>
- <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>
- <p>С помощью утилиты <strong>ssh-keygen</strong>, на сервере сгенерируем DNS-записи для домена <strong>example.org</strong>:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>ssh-keygen -r example.org
- </pre></div>
- </div>
- <p>Добавим их в настройки DNS через панель управления регистратора домена или хостера и подождём несколько часов до полной синхронизации между серверами.</p>
- <p>Проверим корректность SSHFP-записей:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>dig +nocmd +noquestion +nostats +noheader SSHFP example.org
- </pre></div>
- </div>
- <p>Если всё верно, активируем работу функции на каждом SSH-клиенте, добавив в файл <code class="docutils literal notranslate"><span class="pre">~/.ssh/config</span></code> следующие строки:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>Host example
- HostName example.org
- Port 22
- User user
- VerifyHostKeyDNS yes
- </pre></div>
- </div>
- <p>Подключимся к серверу <strong>по доменному имени</strong> (в случае использования прямого IP-адреса, будет выполняться классическая проверка по файлу <strong>known_hosts</strong>):</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>ssh example
- </pre></div>
- </div>
- </section>
- <section id="luks-version">
- <span id="index-99"></span><span id="id73"></span><h2>Как определить версию LUKS конкретного криптоконтейнера?<a class="headerlink" href="#luks-version" title="Permalink to this heading">¶</a></h2>
- <p>Версия LUKS всегда указана в разделе <strong>Version</strong> <a class="reference internal" href="#luks-info"><span class="std std-ref">информации о шифровании</span></a>.</p>
- </section>
- <section id="luks-header-backup">
- <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>
- <p>Загрузим систему с <a class="reference internal" href="installation.html#usb-flash"><span class="std std-ref">LiveUSB</span></a> и создадим резервную копию заголовка тома <strong>/dev/sda2</strong> на внешнем накопителе данных:</p>
- <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
- </pre></div>
- </div>
- </section>
- <section id="luks-header-restore">
- <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>
- <p>Загрузим систему с <a class="reference internal" href="installation.html#usb-flash"><span class="std std-ref">LiveUSB</span></a> и восстановим резервную копию заголовка тома <strong>/dev/sda2</strong> с внешнего накопителя данных:</p>
- <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
- </pre></div>
- </div>
- </section>
- <section id="luks-upgrade">
- <span id="index-102"></span><span id="id76"></span><h2>Как осуществить апгрейд версии LUKS?<a class="headerlink" href="#luks-upgrade" title="Permalink to this heading">¶</a></h2>
- <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>
- <p>Выведем текущую <a class="reference internal" href="#luks-version"><span class="std std-ref">версию</span></a> и убедимся, что она равна <strong>1</strong>:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup luksDump /dev/sda2 | grep 'Version'
- </pre></div>
- </div>
- <p>Произведём апгрейд LUKS до версии 2:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup convert /dev/sda2 --type luks2
- </pre></div>
- </div>
- </section>
- <section id="luks-upgrade-key">
- <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>
- <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>
- <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>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup luksDump /dev/sda2 | grep 'Version'
- </pre></div>
- </div>
- <p>Выведем текущий <a class="reference external" href="https://ru.wikipedia.org/wiki/PBKDF2">PBKDF</a>:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup luksDump /dev/sda2 | grep 'PBKDF'
- </pre></div>
- </div>
- <p>Осуществим преобразование в <a class="reference external" href="https://ru.wikipedia.org/wiki/Argon2">Argon2</a>:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup luksConvertKey /dev/sda2 --pbkdf argon2id
- </pre></div>
- </div>
- </section>
- <section id="luks-upgrade-cipher">
- <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>
- <p>Загрузим систему с <a class="reference internal" href="installation.html#usb-flash"><span class="std std-ref">LiveUSB</span></a> и создадим полную посекторную копию раздела на внешнем накопителе данных.</p>
- <p>Выведем информацию о шифровании выбранного тома:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup luksDump /dev/sda2 | egrep 'Version|Cipher|MK bits'
- </pre></div>
- </div>
- <p>Перешифруем весь том в <a class="reference internal" href="#luks-upgrade-key"><span class="std std-ref">формате LUKS2</span></a> с использованием алгоритма <strong>AES-256-XTS-PLAIN64</strong>:</p>
- <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
- </pre></div>
- </div>
- </section>
- <section id="trim-luks">
- <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>
- <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>
- <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>
- <p>Теперь все контейнеры, открытые утилитой, будут поддерживать TRIM. Однако действие не распространяется на указанные в файле <code class="docutils literal notranslate"><span class="pre">/etc/crypttab</span></code>, т.к. он имеет более высокий приоритет.</p>
- <p><strong>Способ 2.</strong> Воспользуемся параметром командной строки <code class="docutils literal notranslate"><span class="pre">--allow-discards</span></code>.</p>
- <p>LUKS <a class="reference internal" href="#luks-version"><span class="std std-ref">версии 2</span></a> поддерживает возможность принудительно задать использование процедуры TRIM внутри контейнера при любых операциях монтирования. В LUKS1 это не реализовано и поэтому работать не будет.</p>
- <p>Для LUKS1 (вводится при каждом открытии тома):</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup --allow-discards open /path/to/container foo-bar
- </pre></div>
- </div>
- <p>Для LUKS2 (вводится только один раз):</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo cryptsetup --allow-discards --persistent open /path/to/container foo-bar
- </pre></div>
- </div>
- <p>Убедимся, что в <a class="reference internal" href="#luks-info"><span class="std std-ref">информации о шифровании</span></a>, в разделе <strong>Flags</strong>, появился <strong>allow-discards</strong>.</p>
- </section>
- <section id="luks-trim-execute">
- <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>
- <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>
- <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>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>sudo fstrim -v /media/foo-bar
- </pre></div>
- </div>
- <p>Здесь <strong>/media/foo-bar</strong> – это точка монтирования.</p>
- </section>
- <section id="app-disable-network">
- <span id="index-107"></span><span id="id80"></span><h2>Как запретить приложению доступ к сети?<a class="headerlink" href="#app-disable-network" title="Permalink to this heading">¶</a></h2>
- <p>Иногда возникает необходимость ограничить какому-либо приложению доступ к сети Интернет.</p>
- <p>Установим ограничение пространствами имён ядра (более подробную информацию о них можно получить в <code class="docutils literal notranslate"><span class="pre">man</span> <span class="pre">namespaces</span></code>) при помощи утилиты <strong>unshare</strong>:</p>
- <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>unshare -r -n foo-bar
- </pre></div>
- </div>
- <p>Здесь вместо <strong>foo-bar</strong> укажем приложение, которое требуется запустить.</p>
- </section>
- <section id="ssh-tpm">
- <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>
- <p>См. <a class="reference external" href="https://www.easycoding.org/2022/02/14/ispolzuem-tpm-dlya-xraneniya-ssh-klyuchej.html">здесь</a>.</p>
- </section>
- </section>
- </div>
-
- </div>
- </div>
- <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
- <div class="sphinxsidebarwrapper">
- <div id="searchbox" style="display: none" role="search">
- <h3 id="searchlabel">Быстрый поиск</h3>
- <div class="searchformwrapper">
- <form class="search" action="search.html" method="get">
- <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
- <input type="submit" value="Искать" />
- </form>
- </div>
- </div>
- <script>document.getElementById('searchbox').style.display = "block"</script><h3>Навигация</h3>
- <ul class="current">
- <li class="toctree-l1"><a class="reference internal" href="generic-info.html">Основная информация</a></li>
- <li class="toctree-l1"><a class="reference internal" href="installation.html">Установка системы</a></li>
- <li class="toctree-l1"><a class="reference internal" href="package-manager.html">Пакетный менеджер и установка пакетов</a></li>
- <li class="toctree-l1"><a class="reference internal" href="administration.html">Системное администрирование</a></li>
- <li class="toctree-l1"><a class="reference internal" href="networking.html">Сетевое администрирование</a></li>
- <li class="toctree-l1"><a class="reference internal" href="virtualization.html">Виртуализация</a></li>
- <li class="toctree-l1 current"><a class="current reference internal" href="#">Безопасность</a><ul>
- <li class="toctree-l2"><a class="reference internal" href="#selinux">Что такое SELinux?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#selinux-temp">Как мне временно отключить SELinux?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#selinux-disable">Как мне навсегда отключить SELinux?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#selinux-status">Как узнать текущий статус SELinux?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#selinux-auditd">Как разрешить заблокированные действия SELinux?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#selinux-httpd">Как настроить SELinux так, чтобы веб-сервер мог создавать файлы и каталоги?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#selinux-connections">Как настроить SELinux так, чтобы веб-сервер мог осуществлять исходящие сетевые соединения?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#openvpn-selinux">OpenVPN не может получить доступ к сертификатам из-за SELinux. Что делать?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#kpti">Можно ли отключить KPTI?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#spectre-v1">Можно ли отключить защиту от Spectre v1?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#spectre-v2">Можно ли отключить защиту от Spectre v2?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#spectre-v4">Можно ли отключить защиту от Spectre v4?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#l1tf">Можно ли отключить защиту от L1TF?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#mds">Можно ли отключить защиту от MDS?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#itlb">Можно ли отключить защиту от iTLB?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#tsx">Можно ли отключить защиту от TSX?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#taa">Можно ли отключить защиту от TAA?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#mitigations-off">Можно ли отключить все виды защит от уязвимостей в процессорах?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#intel-gpu">Можно ли отключить защиту от уязвимостей в Intel GPU?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#hardware-vuln">Как узнать защищено ли ядро от известных уязвимостей в процессорах?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#selinux-boot-error">При загрузке получаю ошибку SELinux. Как исправить?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#usb">Как можно надёжно зашифровать файлы на USB устройстве?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#luks-home">Можно ли зашифровать домашний раздел уже установленной системы?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#luks">Как сменить пароль зашифрованного LUKS раздела?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#luks-info">Как получить информацию о зашифрованном LUKS устройстве?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#luks-benchmark">Насколько сильно шифрование LUKS снижает производительность дисковой подсистемы?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#aes-ni">Как узнать поддерживает ли процессор моего ПК набор инструкций AES-NI?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#firewalld">Что такое Firewalld?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#firewalld-configure">Как можно настраивать Firewalld?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#firewalld-hardened">Как усилить настройки безопасности Firewalld?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#firewalld-hide-service">Как замаскировать сервис средствами Firewalld?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#ip">Как запретить подключения с конкретных IP-адресов?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#gnupg">Как работать с подписями GnuPG?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#gpg-encrypt">Как зашифровать и расшифровать файлы с определённой маской в текущем каталоге?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#admin-vs-user">Чем отличается пользователь-администратор от обычного?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#sudo-run">Как запустить команду с правами суперпользователя?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#sudo-su">Какие пароли запрашивают sudo и su?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#root-password">Как мне сменить пароль суперпользователя?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#sudo">Как мне получить доступ к sudo?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#sudo-vs-su">Что лучше: sudo или su?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#sudo-file-manager">Почему я не могу запустить файловый менеджер с правами суперпользователя?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#sudo-edit-config">Как мне отредактировать конфиг, доступный только суперпользователю?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#sudoedit">Sudoedit безопаснее прямого запуска текстового редактора с правами суперпользователя?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#ssh">Как включить и безопасно настроить сервер SSH?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#ssh-passwords">Допустимо ли использовать парольную аутентификацию для SSH?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#ssh-port">Следует ли сменить порт SSH на нестандартный?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#ssh-keys">Безопасна ли аутентификация по ключам в SSH?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#ssh-keygen">Как сгенерировать ключи для SSH?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#ssh-transfer">Как безопасно передать публичный ключ SSH на удалённый сервер?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#ssh-port-forwarding">Как пробросить порт с удалённой машины на локальную через SSH?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#socks-ssh">Как настроить виртуальный SOCKS туннель через SSH?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#ssh-sftp">Можно ли разрешить доступ посредством SSH только к файлам, без возможности выполнения команд?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#destroy-file">Как безвозвратно уничтожить файл?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#destroy-disk">Можно лишь уничтожить содержимое всего диска?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#ssd">Как уничтожить файл на SSD?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#sata-ssd">Как полностью очистить SATA SSD без возможности восстановления?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#newfile-permissions">Как рассчитываются права доступа для новых файлов и каталогов?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#fedora">Можно ли включить поддержку российской криптографии в Fedora?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#mac-wi-fi-fedora">Как включить рандомизацию MAC адресов при подключении к Wi-Fi точкам в Fedora?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#add-custom-ca">Как добавить собственный удостоверяющий центр в список доверенных?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#blackist-ca">Как внести удостоверяющий центр в список запрещённых?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#rsa-openssl">Как убрать пароль шифрования закрытого RSA ключа средствами OpenSSL?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#openssl-encrypt-key">Как установить или изменить пароль шифрования закрытого RSA ключа средствами OpenSSL?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#sudo-multi">Как посредством sudo запустить сразу несколько команд?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#wireshark">Как запускать WireShark без предоставления ему прав суперпользователя?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#password-gen">Как сгенерировать криптостойкий пароль без использования стороннего ПО?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#users-logged">Как получить список вошедших в систему пользователей?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#users-activity">Как получить список вошедших в систему пользователей и информацию об их деятельности?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#users-last">Как получить информацию обо всех входах в систему?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#com">Как получить доступ к COM портам без наличия прав суперпользователя?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#gnupg-kwallet">Можно ли сохранить пароль GnuPG ключа в связке ключей KWallet?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#gpg-gui">Безопасно ли использовать менеджеры связки ключей GnuPG с графическим интерфейсом?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#kleopatra-kgpg">Можно ли одновременно использовать Kleopatra и KGpg?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#gpg-token">Какой токен для безопасного хранения GnuPG ключей вы можете порекомендовать?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#gpg-use-token">Как работать с токеном или смарт-картой из консоли?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#gpg-ssh">Как использовать токен для аутентификации SSH?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#gpg-transfer">Можно ли переместить на токен уже имеющуюся ключевую пару GnuPG?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#nmap-scan">Как просканировать хост на наличие работающих сервисов?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#luks-addkey">Как добавить ключевой файл для разблокировки зашифрованного LUKS раздела?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#luks-removekey">Как удалить ключевой файл разблокировки зашифрованного LUKS раздела?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#luks-auto">Как настроить автоматическую расшифровку LUKS разделов при загрузке?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#root-reset">Я забыл пароль суперпользователя. Как мне его сбросить?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#luks-noauto">Можно ли отключить автоматическое монтирование устройств LUKS при загрузке?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#truecrypt-fedora">Как работать с TrueCrypt контейнерами в Fedora?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#truecrypt-mount">Как смонтировать TrueCrypt контейнер в Fedora?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#veracrypt-fedora">Как смонтировать VeraCrypt контейнер в Fedora?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#veracrypt">Как настроить автоматическое монтирование VeraCrypt томов при загрузке?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#bitlocker-fedora">Как работать с BitLocker контейнерами в Fedora?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#bitlocker-mount">Как смонтировать BitLocker контейнер в Fedora?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#bitlocker">Как настроить автоматическое монтирование BitLocker томов при загрузке?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#selinux-local-storage">Где хранятся установленные пользователем контексты SELinux?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#selinux-local-list">Как получить список установленных пользователем контекстов SELinux?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#selinux-local-remove">Как удалить пользовательские контексты SELinux?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#luks-container-create">Как создать зашифрованный контейнер на диске?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#luks-container-mount">Как смонтировать зашифрованный файловый контейнер?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#luks-erase">Как быстро уничтожить содержимое LUKS контейнера?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#tpm-luks">Можно ли использовать TPM для разблокировки LUKS контейнера?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#samba-selinux">Как настроить работу Samba с SELinux?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#ssh-mitm">Как защитить SSH от возможных MITM-атак?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#luks-version">Как определить версию LUKS конкретного криптоконтейнера?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#luks-header-backup">Как создать резервную копию заголовка LUKS?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#luks-header-restore">Как восстановить резервную копию заголовка LUKS?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#luks-upgrade">Как осуществить апгрейд версии LUKS?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#luks-upgrade-key">Как усилить защиту ключа LUKS?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#luks-upgrade-cipher">Как усилить надёжность шифрования LUKS?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#trim-luks">Как активировать TRIM для открытых вручную LUKS-контейнеров?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#luks-trim-execute">Как выполнить TRIM для открытых вручную LUKS-контейнеров?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#app-disable-network">Как запретить приложению доступ к сети?</a></li>
- <li class="toctree-l2"><a class="reference internal" href="#ssh-tpm">Как настроить хранение SSH ключей в TPM?</a></li>
- </ul>
- </li>
- <li class="toctree-l1"><a class="reference internal" href="using-system.html">Работа в системе</a></li>
- <li class="toctree-l1"><a class="reference internal" href="using-applications.html">Сторонние приложения</a></li>
- <li class="toctree-l1"><a class="reference internal" href="hardware.html">Оборудование</a></li>
- <li class="toctree-l1"><a class="reference internal" href="development.html">Разработка и сборка пакетов</a></li>
- <li class="toctree-l1"><a class="reference internal" href="tips-and-tricks.html">Оптимизация и тонкая настройка</a></li>
- <li class="toctree-l1"><a class="reference internal" href="legal-info.html">Правовая информация</a></li>
- </ul>
- <div class="relations">
- <h3>Related Topics</h3>
- <ul>
- <li><a href="index.html">Documentation overview</a><ul>
- <li>Previous: <a href="virtualization.html" title="предыдущая глава">Виртуализация</a></li>
- <li>Next: <a href="using-system.html" title="следующая глава">Работа в системе</a></li>
- </ul></li>
- </ul>
- </div>
- </div>
- </div>
- <div class="clearer"></div>
- </div>
- <div class="footer">
- ©2018 - 2023, EasyCoding Team and contributors.
-
- </div>
-
- <a href="https://github.com/RussianFedora/FAQ" class="github">
- <img style="position: absolute; top: 0; right: 0; border: 0;" src="_static/forkme_right_green.png" alt="Fork me on GitHub" class="github"/>
- </a>
-
-
- </body>
- </html>
|