123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- <!doctype html><html lang=ru class=color-toggle-hidden><head><meta charset=UTF-8><meta name=referrer content="no-referrer"><meta name=viewport content="width=device-width,initial-scale=1"><meta name=color-scheme content="light dark"><meta name=generator content="Hugo 0.134.3"><meta name=description content="Исходная статься на Хабрахабре.
- Азбука безопасности Ubuntu В первую очередь Добавляем пользователя Аутентификация по ключу ssh Тестирование пользователя deploy и установка sudo Активируем вход по ключу ssh Установка файрвола Автоматические обновления безопасности Fail2ban Двухфакторная аутентификация Logwatch Всё готово Азбука безопасности Ubuntu «Мои первые 5 минут на сервере» Брайана Кеннеди — отличное введение, как быстро обезопасить сервер от большинства атак. У нас есть несколько исправлений для этой инструкции, чтобы дополнить ею наше полное руководство. Также хочется подробнее объяснить некоторые вещи для более юных инженеров."><title>Первые 10 минут на сервере | Max Wiki Site</title>
- <link rel=icon type=image/svg+xml href=/favicon/favicon.svg><link rel=icon type=image/png sizes=32x32 href=/favicon/favicon-32x32.png><link rel=icon type=image/png sizes=16x16 href=/favicon/favicon-16x16.png><meta property="og:title" content="Первые 10 минут на сервере"><meta property="og:site_name" content="Max Wiki Site"><meta property="og:description" content="Исходная статься на Хабрахабре.
- Азбука безопасности Ubuntu В первую очередь Добавляем пользователя Аутентификация по ключу ssh Тестирование пользователя deploy и установка sudo Активируем вход по ключу ssh Установка файрвола Автоматические обновления безопасности Fail2ban Двухфакторная аутентификация Logwatch Всё готово Азбука безопасности Ubuntu «Мои первые 5 минут на сервере» Брайана Кеннеди — отличное введение, как быстро обезопасить сервер от большинства атак. У нас есть несколько исправлений для этой инструкции, чтобы дополнить ею наше полное руководство. Также хочется подробнее объяснить некоторые вещи для более юных инженеров."><meta property="og:type" content="article"><meta property="og:url" content="https://maxtar.github.io/administration/first-10-min/"><meta property="article:section" content="Administration"><meta property="article:published_time" content="2022-10-09T00:38:39+03:00"><meta property="article:modified_time" content="2022-10-09T00:38:39+03:00"><meta name=twitter:card content="summary"><meta name=twitter:title content="Первые 10 минут на сервере"><meta name=twitter:description content="Исходная статься на Хабрахабре.
- Азбука безопасности Ubuntu В первую очередь Добавляем пользователя Аутентификация по ключу ssh Тестирование пользователя deploy и установка sudo Активируем вход по ключу ssh Установка файрвола Автоматические обновления безопасности Fail2ban Двухфакторная аутентификация Logwatch Всё готово Азбука безопасности Ubuntu «Мои первые 5 минут на сервере» Брайана Кеннеди — отличное введение, как быстро обезопасить сервер от большинства атак. У нас есть несколько исправлений для этой инструкции, чтобы дополнить ею наше полное руководство. Также хочется подробнее объяснить некоторые вещи для более юных инженеров."><script type=application/ld+json>{"@context":"http://schema.org","@type":"TechArticle","articleSection":"Administration","name":"Первые 10 минут на сервере","url":"https://maxtar.github.io/administration/first-10-min/","headline":"Первые 10 минут на сервере","description":"Исходная статься на Хабрахабре.\nАзбука безопасности Ubuntu В первую очередь Добавляем пользователя Аутентификация по ключу ssh Тестирование пользователя deploy и установка sudo Активируем вход по ключу ssh Установка файрвола Автоматические обновления безопасности Fail2ban Двухфакторная аутентификация Logwatch Всё готово Азбука безопасности Ubuntu «Мои первые 5 минут на сервере» Брайана Кеннеди — отличное введение, как быстро обезопасить сервер от большинства атак. У нас есть несколько исправлений для этой инструкции, чтобы дополнить ею наше полное руководство. Также хочется подробнее объяснить некоторые вещи для более юных инженеров.","wordCount":"1680","inLanguage":"ru","isFamilyFriendly":"true","mainEntityOfPage":{"@type":"WebPage","@id":"https://maxtar.github.io/administration/first-10-min/"},"copyrightHolder":"Max Wiki Site","copyrightYear":"2022","dateCreated":"2022-10-09T00:38:39.00Z","datePublished":"2022-10-09T00:38:39.00Z","dateModified":"2022-10-09T00:38:39.00Z","publisher":{"@type":"Organization","name":"Max Wiki Site","url":"https://maxtar.github.io/","logo":{"@type":"ImageObject","url":"https://maxtar.github.io/brand.svg","width":"32","height":"32"}}}</script><script src=/js/colortheme-5cd55a83.bundle.min.js></script><script src=/js/main-09678822.bundle.min.js></script><link rel=preload as=font href=/fonts/Metropolis.woff2 type=font/woff2 crossorigin=anonymous><link rel=preload as=font href=/fonts/LiberationSans.woff2 type=font/woff2 crossorigin=anonymous><link rel=preload href=/main-c93819e1.min.css as=style><link rel=stylesheet href=/main-c93819e1.min.css media=all><link rel=preload href=/mobile-79ddc617.min.css as=style><link rel=stylesheet href=/mobile-79ddc617.min.css media="screen and (max-width: 45rem)"><link rel=preload href=/print-735ccc12.min.css as=style><link rel=stylesheet href=/print-735ccc12.min.css media=print><link rel=preload href=/custom.css as=style><link rel=stylesheet href=/custom.css media=all><link href=https://maxtar.github.io/administration/first-10-min/ rel=canonical type=text/html></head><body itemscope itemtype=https://schema.org/WebPage><svg class="svg-sprite" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><svg viewBox="-7.27 -7.27 38.55 38.55" id="gdoc_arrow_back"><path d="M24 10.526v2.947H5.755l8.351 8.421-2.105 2.105-12-12 12-12 2.105 2.105-8.351 8.421H24z"/></svg><svg viewBox="-7.27 -7.27 38.55 38.55" id="gdoc_arrow_left_alt"><path d="M5.965 10.526V6.035L0 12l5.965 5.965v-4.491H24v-2.947H5.965z"/></svg><svg viewBox="-7.27 -7.27 38.55 38.55" id="gdoc_arrow_right_alt"><path d="M18.035 10.526V6.035L24 12l-5.965 5.965v-4.491H0v-2.947h18.035z"/></svg><svg viewBox="-7.27 -7.27 42.55 42.55" id="gdoc_bitbucket"><path d="M15.905 13.355c.189 1.444-1.564 2.578-2.784 1.839-1.375-.602-1.375-2.784-.034-3.403 1.151-.705 2.818.223 2.818 1.564zm1.907-.361c-.309-2.44-3.076-4.056-5.328-3.042-1.426.636-2.389 2.148-2.32 3.747.086 2.097 2.08 3.815 4.176 3.626s3.729-2.234 3.472-4.331zm4.108-9.315c-.756-.997-2.045-1.169-3.179-1.358-3.214-.516-6.513-.533-9.727.034-1.066.172-2.269.361-2.939 1.323 1.1 1.031 2.664 1.186 4.073 1.358 2.544.327 5.156.344 7.699.017 1.426-.172 3.008-.309 4.073-1.375zm.979 17.788c-.481 1.684-.206 3.953-1.994 4.932-3.076 1.701-6.806 1.89-10.191 1.289-1.787-.327-3.884-.894-4.864-2.578-.43-1.65-.705-3.334-.98-5.018l.103-.275.309-.155c5.121 3.386 12.288 3.386 17.427.0.808.241.206 1.22.189 1.805zM26.01 4.951c-.584 3.764-1.255 7.51-1.908 11.257-.189 1.1-1.255 1.719-2.148 2.183-3.214 1.615-6.96 1.89-10.483 1.512-2.389-.258-4.829-.894-6.771-2.389-.911-.705-.911-1.908-1.083-2.922-.602-3.523-1.289-7.046-1.719-10.604.206-1.547 1.942-2.217 3.231-2.698C6.848.654 8.686.362 10.508.19c3.884-.378 7.854-.241 11.618.859 1.341.395 2.784.945 3.695 2.097.412.533.275 1.203.189 1.805z"/></svg><svg viewBox="-7.27 -7.27 38.55 38.55" id="gdoc_bookmark"><path d="M15.268 4.392q.868.0 1.532.638t.664 1.506v17.463l-7.659-3.268-7.608 3.268V6.536q0-.868.664-1.506t1.532-.638h10.876zm4.34 14.144V4.392q0-.868-.638-1.532t-1.506-.664H6.537q0-.868.664-1.532T8.733.0h10.876q.868.0 1.532.664t.664 1.532v17.412z"/></svg><svg viewBox="-7.27 -7.27 42.55 42.55" id="gdoc_brightness_auto"><path d="M16.846 18.938h2.382L15.22 7.785h-2.44L8.772 18.938h2.382l.871-2.44h3.95zm7.087-9.062L27.999 14l-4.066 4.124v5.809h-5.809L14 27.999l-4.124-4.066H4.067v-5.809L.001 14l4.066-4.124V4.067h5.809L14 .001l4.124 4.066h5.809v5.809zm-11.385 4.937L14 10.282l1.452 4.531h-2.904z"/></svg><svg viewBox="-7.27 -7.27 42.55 42.55" id="gdoc_brightness_dark"><path d="M14 21.435q3.079.0 5.257-2.178T21.435 14t-2.178-5.257T14 6.565q-1.51.0-3.079.697 1.917.871 3.108 2.701T15.22 14t-1.191 4.037-3.108 2.701q1.568.697 3.079.697zm9.933-11.559L27.999 14l-4.066 4.124v5.809h-5.809L14 27.999l-4.124-4.066H4.067v-5.809L.001 14l4.066-4.124V4.067h5.809L14 .001l4.124 4.066h5.809v5.809z"/></svg><svg viewBox="-7.27 -7.27 42.55 42.55" id="gdoc_brightness_light"><path d="M14 21.435q3.079.0 5.257-2.178T21.435 14t-2.178-5.257T14 6.565 8.743 8.743 6.565 14t2.178 5.257T14 21.435zm9.933-3.311v5.809h-5.809L14 27.999l-4.124-4.066H4.067v-5.809L.001 14l4.066-4.124V4.067h5.809L14 .001l4.124 4.066h5.809v5.809L27.999 14z"/></svg><svg viewBox="-7.27 -7.27 42.55 42.55" id="gdoc_check"><path d="M8.885 20.197 25.759 3.323l2.24 2.24L8.885 24.677.0 15.792l2.24-2.24z"/></svg><svg viewBox="-7.27 -7.27 42.55 42.55" id="gdoc_check_circle_outline"><path d="M14 25.239q4.601.0 7.92-3.319T25.239 14 21.92 6.08 14 2.761 6.08 6.08 2.761 14t3.319 7.92T14 25.239zM14 0q5.784.0 9.892 4.108T28 14t-4.108 9.892T14 28t-9.892-4.108T0 14t4.108-9.892T14 0zm6.441 7.822 1.972 1.972-11.239 11.239L4.207 14l1.972-1.972 4.995 4.995z"/></svg><svg viewBox="-7.27 -7.27 42.55 42.55" id="gdoc_cloud_off"><path d="M9.023 10.5H7q-1.914.0-3.281 1.395t-1.367 3.309 1.367 3.281T7 19.852h11.375zM3.5 4.976l1.477-1.477L24.5 23.022l-1.477 1.477-2.352-2.297H6.999q-2.898.0-4.949-2.051t-2.051-4.949q0-2.844 1.969-4.867t4.758-2.133zm19.086 5.578q2.242.164 3.828 1.832T28 16.351q0 3.008-2.461 4.758l-1.695-1.695q1.805-.984 1.805-3.063.0-1.422-1.039-2.461t-2.461-1.039h-1.75v-.602q0-2.68-1.859-4.539t-4.539-1.859q-1.531.0-2.953.711l-1.75-1.695Q11.431 3.5 14.001 3.5q2.953.0 5.496 2.078t3.09 4.977z"/></svg><svg viewBox="-7.27 -7.27 42.55 42.55" id="gdoc_code"><path d="M9.917 24.5a1.75 1.75.0 10-3.501.001 1.75 1.75.0 003.501-.001zm0-21a1.75 1.75.0 10-3.501.001A1.75 1.75.0 009.917 3.5zm11.666 2.333a1.75 1.75.0 10-3.501.001 1.75 1.75.0 003.501-.001zm1.75.0a3.502 3.502.0 01-1.75 3.026c-.055 6.581-4.721 8.039-7.82 9.023-2.898.911-3.846 1.349-3.846 3.117v.474a3.502 3.502.0 011.75 3.026c0 1.932-1.568 3.5-3.5 3.5s-3.5-1.568-3.5-3.5c0-1.294.711-2.424 1.75-3.026V6.526A3.502 3.502.0 014.667 3.5c0-1.932 1.568-3.5 3.5-3.5s3.5 1.568 3.5 3.5a3.502 3.502.0 01-1.75 3.026v9.06c.93-.456 1.914-.766 2.807-1.039 3.391-1.075 5.323-1.878 5.359-5.687a3.502 3.502.0 01-1.75-3.026c0-1.932 1.568-3.5 3.5-3.5s3.5 1.568 3.5 3.5z"/></svg><svg viewBox="-7.27 -7.27 42.55 42.55" id="gdoc_copy"><path d="M23.502 25.438V7.626H9.562v17.812h13.94zm0-20.315q1.013.0 1.787.745t.774 1.757v17.812q0 1.013-.774 1.787t-1.787.774H9.562q-1.013.0-1.787-.774t-.774-1.787V7.625q0-1.013.774-1.757t1.787-.745h13.94zM19.689.0v2.562H4.438v17.812H1.936V2.562q0-1.013.745-1.787T4.438.001h15.251z"/></svg><svg viewBox="-7.27 -7.27 42.55 42.55" id="gdoc_dangerous"><path d="M21.802 19.833 15.969 14l5.833-5.833-1.969-1.969L14 12.031 8.167 6.198 6.198 8.167 12.031 14l-5.833 5.833 1.969 1.969L14 15.969l5.833 5.833zM19.833.0 28 8.167v11.666L19.833 28H8.167L0 19.833V8.167L8.167.0h11.666z"/></svg><svg viewBox="-7.27 -7.27 46.55 46.55" id="gdoc_date"><path d="M27.192 28.844V11.192H4.808v17.652h22.384zm0-25.689q1.277.0 2.253.976t.976 2.253v22.459q0 1.277-.976 2.216t-2.253.939H4.808q-1.352.0-2.291-.901t-.939-2.253V6.385q0-1.277.939-2.253t2.291-.976h1.577V.001h3.23v3.155h12.769V.001h3.23v3.155h1.577zm-3.155 11.267v3.155h-3.23v-3.155h3.23zm-6.46.0v3.155h-3.155v-3.155h3.155zm-6.384.0v3.155h-3.23v-3.155h3.23z"/></svg><svg viewBox="-7.27 -7.27 46.55 46.55" id="gdoc_download"><path d="M2.866 28.209h26.269v3.79H2.866v-3.79zm26.268-16.925L16 24.418 2.866 11.284h7.493V.001h11.283v11.283h7.493z"/></svg><svg viewBox="-7.27 -7.27 46.55 46.55" id="gdoc_email"><path d="M28.845 9.615v-3.23L16 14.422 3.155 6.385v3.23L16 17.577zm0-6.46q1.277.0 2.216.977T32 6.385v19.23q0 1.277-.939 2.253t-2.216.977H3.155q-1.277.0-2.216-.977T0 25.615V6.385q0-1.277.939-2.253t2.216-.977h25.69z"/></svg><svg viewBox="-7.27 -7.27 42.55 42.55" id="gdoc_error_outline"><path d="M14 25.239q4.601.0 7.92-3.319T25.239 14 21.92 6.08 14 2.761 6.08 6.08 2.761 14t3.319 7.92T14 25.239zM14 0q5.784.0 9.892 4.108T28 14t-4.108 9.892T14 28t-9.892-4.108T0 14t4.108-9.892T14 0zm-1.38 6.967h2.761v8.413H12.62V6.967zm0 11.239h2.761v2.826H12.62v-2.826z"/></svg><svg viewBox="-7.27 -7.27 42.55 42.55" id="gdoc_fire"><path d="M17.689 21.998q-.32.32-.8.576t-.864.384q-1.152.384-2.272.032t-1.888-.992q-.128-.128-.096-.256t.16-.192q1.216-.384 1.92-1.216t.96-1.792q.192-.896-.064-1.728t-.384-1.728q-.128-.704-.096-1.376t.288-1.312q0-.128.128-.128t.192.064q.384.832.992 1.472t1.28 1.216 1.216 1.248.672 1.568q.064.384.064.704.064.96-.32 1.92t-1.088 1.536zm3.84-10.944q-.768-.704-1.6-1.28t-1.6-1.344q-1.536-1.536-2.016-3.584t.16-4.16q.128-.32-.096-.544t-.544-.096q-.768.32-1.44.768t-1.312.896q-1.984 1.664-3.136 3.936T8.633 10.51t.8 5.088q0 .128.032.256t.032.256q0 .576-.512.832t-1.024-.192q-.128-.192-.192-.32-1.024-1.28-1.376-2.912t-.096-3.232q.064-.384-.288-.576t-.608.128q-1.28 1.664-1.856 3.68t-.448 4.064q0 .576.096 1.184t.288 1.184q.448 1.536 1.216 2.816 1.216 2.048 3.264 3.424t4.416 1.696q2.496.32 5.024-.256t4.448-2.304q1.408-1.344 2.208-3.104t.864-3.68-.704-3.712q-.064-.128-.096-.224t-.096-.224q-.576-1.088-1.28-1.984-.256-.384-.544-.704t-.672-.64z"/></svg><svg viewBox="-7.27 -7.27 42.55 42.55" id="gdoc_git"><path d="M27.472 12.753 15.247.529a1.803 1.803.0 00-2.55.0l-2.84 2.84 2.137 2.137a2.625 2.625.0 013.501 3.501l3.499 3.499a2.625 2.625.0 11-1.237 1.237l-3.499-3.499c-.083.04-.169.075-.257.106v7.3a2.626 2.626.0 11-1.75.0v-7.3a2.626 2.626.0 01-1.494-3.607L8.62 4.606l-8.09 8.09a1.805 1.805.0 000 2.551l12.225 12.224a1.803 1.803.0 002.55.0l12.168-12.168a1.805 1.805.0 000-2.551z"/></svg><svg viewBox="-7.27 -7.27 46.55 46.55" id="gdoc_gitea"><path d="M5.581 7.229c-2.46-.005-5.755 1.559-5.573 5.48.284 6.125 6.56 6.693 9.068 6.743.275 1.149 3.227 5.112 5.412 5.32h9.573c5.741-.381 10.04-17.363 6.853-17.427-5.271.248-8.395.373-11.073.395v5.3l-.835-.369-.005-4.928c-3.075-.001-5.781-.144-10.919-.397-.643-.004-1.539-.113-2.501-.116zm.348 2.166h.293c.349 3.14.917 4.976 2.067 7.781-2.933-.347-5.429-1.199-5.888-4.38-.237-1.647.563-3.365 3.528-3.401zm11.409 3.087c.2.003.404.04.596.128l.999.431-.716 1.305h-.007a.996.996.0 00-.321.053l.006-.002c-.349.114-.593.406-.593.749.0.097.019.189.055.275l-.002-.006a.767.767.0 00.151.233l-.001-.001-1.235 2.248a.99.99.0 00-.302.052l.006-.002c-.349.114-.593.406-.593.749.0.097.019.189.055.275l-.002-.006c.128.31.457.527.843.527a.987.987.0 00.31-.049l-.006.002c.348-.114.592-.406.592-.749.0-.097-.02-.19-.056-.277l.002.006a.784.784.0 00-.211-.293l1.203-2.189a.999.999.0 00.397-.041l-.006.002a.942.942.0 00.285-.15l-.001.001c.464.195.844.353 1.117.488.411.203.556.337.6.487.044.147-.004.429-.236.925-.173.369-.46.893-.799 1.511h-.02a.991.991.0 00-.321.053l.006-.002c-.349.114-.593.406-.593.749.0.097.019.189.055.275l-.002-.006c.128.31.457.527.843.527a.987.987.0 00.31-.049l-.006.002c.348-.114.592-.406.592-.749a.703.703.0 00-.055-.275l.002.006a.802.802.0 00-.183-.27l.001.001c.335-.611.623-1.136.808-1.531.251-.536.381-.935.267-1.32s-.467-.636-.933-.867c-.307-.151-.689-.311-1.147-.503a.723.723.0 00-.052-.324l.002.006a.792.792.0 00-.194-.279l.704-1.284 3.899 1.684c.704.305.995 1.053.653 1.68l-2.68 4.907c-.343.625-1.184.884-1.888.58l-5.516-2.384c-.704-.304-.996-1.053-.653-1.68l2.68-4.905c.235-.431.707-.687 1.207-.707z"/></svg><svg viewBox="-7.27 -7.27 46.55 46.55" id="gdoc_github"><path d="M16 .394c8.833.0 15.999 7.166 15.999 15.999.0 7.062-4.583 13.062-10.937 15.187-.813.146-1.104-.354-1.104-.771.0-.521.021-2.25.021-4.396.0-1.5-.5-2.458-1.083-2.958 3.562-.396 7.312-1.75 7.312-7.896.0-1.75-.625-3.167-1.646-4.291.167-.417.708-2.042-.167-4.25-1.333-.417-4.396 1.646-4.396 1.646a15.032 15.032.0 00-8 0S8.937 6.602 7.603 7.018c-.875 2.208-.333 3.833-.167 4.25-1.021 1.125-1.646 2.542-1.646 4.291.0 6.125 3.729 7.5 7.291 7.896-.458.417-.875 1.125-1.021 2.146-.917.417-3.25 1.125-4.646-1.333-.875-1.521-2.458-1.646-2.458-1.646-1.562-.021-.104.979-.104.979 1.042.479 1.771 2.333 1.771 2.333.938 2.854 5.396 1.896 5.396 1.896.0 1.333.021 2.583.021 2.979.0.417-.292.917-1.104.771C4.582 29.455-.001 23.455-.001 16.393-.001 7.56 7.165.394 15.998.394zM6.063 23.372c.042-.083-.021-.187-.146-.25-.125-.042-.229-.021-.271.042-.042.083.021.187.146.25.104.062.229.042.271-.042zm.646.709c.083-.062.062-.208-.042-.333-.104-.104-.25-.146-.333-.062-.083.062-.062.208.042.333.104.104.25.146.333.062zm.625.937c.104-.083.104-.25.0-.396-.083-.146-.25-.208-.354-.125-.104.062-.104.229.0.375s.271.208.354.146zm.875.875c.083-.083.042-.271-.083-.396-.146-.146-.333-.167-.417-.062-.104.083-.062.271.083.396.146.146.333.167.417.062zm1.187.521c.042-.125-.083-.271-.271-.333-.167-.042-.354.021-.396.146s.083.271.271.312c.167.062.354.0.396-.125zm1.313.104c0-.146-.167-.25-.354-.229-.187.0-.333.104-.333.229.0.146.146.25.354.229.187.0.333-.104.333-.229zm1.208-.208c-.021-.125-.187-.208-.375-.187-.187.042-.312.167-.292.312.021.125.187.208.375.167s.312-.167.292-.292z"/></svg><svg viewBox="-7.27 -7.27 42.55 42.55" id="gdoc_gitlab"><path d="M1.629 11.034 14 26.888.442 17.048a1.09 1.09.0 01-.39-1.203l1.578-4.811zm7.217.0h10.309l-5.154 15.854zM5.753 1.475l3.093 9.559H1.63l3.093-9.559a.548.548.0 011.031.0zm20.618 9.559 1.578 4.811c.141.437-.016.922-.39 1.203l-13.558 9.84 12.371-15.854zm0 0h-7.216l3.093-9.559a.548.548.0 011.031.0z"/></svg><svg viewBox="-7.27 -7.27 46.55 46.55" id="gdoc_heart"><path d="M16 29.714a1.11 1.11.0 01-.786-.321L4.072 18.643c-.143-.125-4.071-3.714-4.071-8 0-5.232 3.196-8.357 8.535-8.357 3.125.0 6.053 2.464 7.464 3.857 1.411-1.393 4.339-3.857 7.464-3.857 5.339.0 8.535 3.125 8.535 8.357.0 4.286-3.928 7.875-4.089 8.035L16.785 29.392c-.214.214-.5.321-.786.321z"/></svg><svg viewBox="-7.27 -7.27 42.55 42.55" id="gdoc_home"><path d="M24.003 15.695v8.336c0 .608-.504 1.111-1.111 1.111h-6.669v-6.669h-4.446v6.669H5.108a1.119 1.119.0 01-1.111-1.111v-8.336c0-.035.017-.069.017-.104L14 7.359l9.986 8.232a.224.224.0 01.017.104zm3.873-1.198-1.077 1.285a.578.578.0 01-.365.191h-.052a.547.547.0 01-.365-.122L14 5.831 1.983 15.851a.594.594.0 01-.417.122.578.578.0 01-.365-.191L.124 14.497a.57.57.0 01.069-.781L12.679 3.314c.729-.608 1.91-.608 2.64.0l4.237 3.543V3.471c0-.313.243-.556.556-.556h3.334c.313.0.556.243.556.556v7.085l3.803 3.161c.226.191.26.556.069.781z"/></svg><svg viewBox="-7.27 -7.27 42.55 42.55" id="gdoc_info_outline"><path d="M12.62 9.793V6.967h2.761v2.826H12.62zM14 25.239q4.601.0 7.92-3.319T25.239 14 21.92 6.08 14 2.761 6.08 6.08 2.761 14t3.319 7.92T14 25.239zM14 0q5.784.0 9.892 4.108T28 14t-4.108 9.892T14 28t-9.892-4.108T0 14t4.108-9.892T14 0zm-1.38 21.033V12.62h2.761v8.413H12.62z"/></svg><svg viewBox="-7.27 -7.27 42.55 42.55" id="gdoc_keyboard_arrow_down"><path d="M3.281 5.36 14 16.079 24.719 5.36 28 8.641l-14 14-14-14z"/></svg><svg viewBox="-7.27 -7.27 46.55 46.55" id="gdoc_keyboard_arrow_left"><path d="M25.875 28.25 22.125 32 6.126 16.001 22.125.002l3.75 3.75-12.25 12.25z"/></svg><svg viewBox="-7.27 -7.27 46.55 46.55" id="gdoc_keyboard_arrow_right"><path d="M6.125 28.25 18.375 16 6.125 3.75 9.875.0l15.999 15.999L9.875 31.998z"/></svg><svg viewBox="-7.27 -7.27 42.55 42.55" id="gdoc_keyboard_arrow_up"><path d="M24.719 22.64 14 11.921 3.281 22.64.0 19.359l14-14 14 14z"/></svg><svg viewBox="-7.27 -7.27 42.55 42.55" id="gdoc_language"><path d="M20.112 16.826h4.732q.394-1.84.394-2.826t-.394-2.826h-4.732q.197 1.38.197 2.826t-.197 2.826zm-2.497 7.756q1.643-.526 3.418-2.005t2.695-2.991h-4.141q-.657 2.629-1.972 4.995zm-.329-7.756q.197-1.38.197-2.826t-.197-2.826h-6.573q-.197 1.38-.197 2.826t.197 2.826h6.573zM14 25.173q1.84-2.695 2.695-5.587h-5.39q.854 2.892 2.695 5.587zM8.413 8.413q.789-2.826 1.972-4.995-1.643.526-3.451 2.005T4.272 8.414h4.141zM4.272 19.587q.854 1.512 2.662 2.991t3.451 2.005q-1.315-2.366-1.972-4.995H4.272zm-1.117-2.761h4.732Q7.69 15.446 7.69 14t.197-2.826H3.155q-.394 1.84-.394 2.826t.394 2.826zM14 2.826q-1.84 2.695-2.695 5.587h5.39Q15.841 5.521 14 2.826zm9.727 5.587q-.92-1.512-2.695-2.991t-3.418-2.005q1.183 2.169 1.972 4.995h4.141zM14 0q5.784.0 9.892 4.108T28 14t-4.108 9.892T14 28t-9.892-4.108T0 14t4.108-9.892T14 0z"/></svg><svg viewBox="-7.27 -7.27 46.55 46.55" id="gdoc_link"><path d="M24.037 7.963q3.305.0 5.634 2.366T32 16t-2.329 5.671-5.634 2.366h-6.46v-3.08h6.46q2.028.0 3.493-1.465t1.465-3.493-1.465-3.493-3.493-1.465h-6.46v-3.08h6.46zM9.615 17.578v-3.155h12.77v3.155H9.615zM3.005 16q0 2.028 1.465 3.493t3.493 1.465h6.46v3.08h-6.46q-3.305.0-5.634-2.366T0 16.001t2.329-5.671 5.634-2.366h6.46v3.08h-6.46q-2.028.0-3.493 1.465t-1.465 3.493z"/></svg><svg viewBox="-7.27 -7.27 46.55 46.55" id="gdoc_mastodon"><path d="M30.924 10.506c0-6.941-4.548-8.976-4.548-8.976C24.083.477 20.144.034 16.054.001h-.101C11.862.034 7.926.477 5.633 1.53c0 0-4.548 2.035-4.548 8.976.0 1.589-.031 3.491.02 5.505.165 6.79 1.245 13.479 7.522 15.14 2.893.765 5.379.927 7.38.816 3.629-.2 5.667-1.296 5.667-1.296l-.12-2.633s-2.593.817-5.505.719c-2.887-.099-5.932-.311-6.399-3.855a7.069 7.069.0 01-.064-.967v-.028.001s2.833.693 6.423.857c2.195.1 4.253-.129 6.344-.377 4.009-.479 7.5-2.949 7.939-5.207.689-3.553.633-8.676.633-8.676zm-5.366 8.945h-3.329v-8.159c0-1.72-.724-2.592-2.171-2.592-1.6.0-2.403 1.035-2.403 3.083v4.465h-3.311v-4.467c0-2.048-.803-3.083-2.403-3.083-1.447.0-2.171.873-2.171 2.592v8.159H6.441v-8.404c0-1.719.437-3.084 1.316-4.093.907-1.011 2.092-1.528 3.565-1.528 1.704.0 2.995.655 3.848 1.965l.828 1.391.829-1.391c.853-1.311 2.144-1.965 3.848-1.965 1.472.0 2.659.517 3.565 1.528.877 1.009 1.315 2.375 1.315 4.093z"/></svg><svg viewBox="-7.27 -7.27 46.55 46.55" id="gdoc_matrix"><path d="M.843.734v30.532H3.04v.733H0V0h3.04v.733zm9.391 9.68v1.543h.044a4.417 4.417.0 011.489-1.365c.577-.327 1.248-.487 2-.487.72.0 1.377.143 1.975.419.597.277 1.047.776 1.36 1.477.339-.499.8-.941 1.379-1.323.579-.383 1.267-.573 2.061-.573.604.0 1.163.075 1.68.223a3.34 3.34.0 011.324.707c.368.327.652.745.861 1.268.203.523.307 1.151.307 1.889v7.637h-3.132v-6.468c0-.381-.013-.745-.043-1.083a2.315 2.315.0 00-.246-.893l.006.013a1.484 1.484.0 00-.577-.593l-.007-.004c-.259-.147-.609-.221-1.047-.221-.443.0-.8.085-1.071.252-.267.166-.483.39-.635.656l-.005.009a2.558 2.558.0 00-.307.915l-.002.013a7.156 7.156.0 00-.08 1.044v6.359h-3.133v-6.4c0-.339-.005-.671-.024-1.003a2.772 2.772.0 00-.197-.936l.007.019a1.41 1.41.0 00-.548-.667l-.006-.003c-.259-.167-.635-.253-1.139-.253-.148.0-.345.032-.585.099-.24.068-.48.191-.707.376-.228.184-.425.449-.585.793-.16.345-.24.8-.24 1.36v6.621H7.279v-11.42zm20.923 20.852V.734H28.96V.001H32V32h-3.04v-.733z"/></svg><svg viewBox="-7.27 -7.27 46.55 46.55" id="gdoc_menu"><path d="M.001 5.334h31.998v3.583H.001V5.334zm0 12.416v-3.5h31.998v3.5H.001zm0 8.916v-3.583h31.998v3.583H.001z"/></svg><svg viewBox="-7.27 -7.27 42.55 42.55" id="gdoc_notification"><path d="m22.615 19.384 2.894 2.894v1.413H2.49v-1.413l2.894-2.894V12.25q0-3.365 1.716-5.856t4.745-3.231v-1.01q0-.875.606-1.514T13.999.0t1.548.639.606 1.514v1.01q3.029.74 4.745 3.231t1.716 5.856v7.134zM14 27.999q-1.211.0-2.053-.808t-.841-2.019h5.788q0 1.144-.875 1.986T14 27.999z"/></svg><svg viewBox="-7.27 -7.27 42.55 42.55" id="gdoc_path"><path d="M28 12.62h-9.793V8.414h-2.826v11.173h2.826v-4.206H28V26.62h-9.793v-4.206H12.62v-14H9.794v4.206H.001V1.381h9.793v4.206h8.413V1.381H28V12.62z"/></svg><svg viewBox="-7.27 -7.27 46.55 46.55" id="gdoc_person"><path d="M16 20.023q5.052.0 10.526 2.199t5.473 5.754v4.023H0v-4.023q0-3.555 5.473-5.754t10.526-2.199zM16 16q-3.275.0-5.614-2.339T8.047 8.047t2.339-5.661T16 0t5.614 2.386 2.339 5.661-2.339 5.614T16 16z"/></svg><svg viewBox="-7.27 -7.27 46.55 46.55" id="gdoc_search"><path d="M11.925 20.161q3.432.0 5.834-2.402t2.402-5.834-2.402-5.834-5.834-2.402-5.834 2.402-2.402 5.834 2.402 5.834 5.834 2.402zm10.981.0L32 29.255 29.255 32l-9.094-9.094v-1.458l-.515-.515q-3.26 2.831-7.721 2.831-4.976.0-8.45-3.432T.001 11.925t3.474-8.45 8.45-3.474 8.407 3.474 3.432 8.45q0 1.802-.858 4.075t-1.973 3.646l.515.515h1.458z"/></svg><svg viewBox="-7.27 -7.27 42.55 42.55" id="gdoc_shield"><path d="M22.167 15.166V3.5h-8.166v20.726c.93-.492 2.424-1.349 3.883-2.497 1.95-1.531 4.284-3.919 4.284-6.562zm3.499-13.999v14c0 7.674-10.737 12.523-11.192 12.724-.146.073-.31.109-.474.109s-.328-.036-.474-.109c-.456-.201-11.192-5.049-11.192-12.724v-14C2.334.529 2.863.0 3.501.0H24.5c.638.0 1.167.529 1.167 1.167z"/></svg><svg viewBox="-7.27 -7.27 42.55 42.55" id="gdoc_star"><path d="M14 22.052 5.324 27.31l2.3-9.859L0 10.813l10.056-.854L14 .692l3.944 9.267L28 10.813l-7.624 6.638 2.3 9.859z"/></svg><svg viewBox="-7.27 -7.27 42.55 42.55" id="gdoc_tag"><path d="M17.52 17.52v-7.041h-7.041v7.041h7.041zM28 10.479h-7.041v7.041H28v3.439h-7.041V28H17.52v-7.041h-7.041V28H7.04v-7.041H-.001V17.52H7.04v-7.041H-.001V7.04H7.04V-.001h3.439V7.04h7.041V-.001h3.439V7.04H28v3.439z"/></svg><svg viewBox="-7.27 -7.27 46.55 46.55" id="gdoc_timer"><path d="M16 29q4.428.0 7.536-3.143t3.107-7.571-3.107-7.536T16 7.643 8.464 10.75t-3.107 7.536 3.107 7.571T16 29zM26.714 9.786q1.214 1.571 2.107 4.036t.893 4.464q0 5.643-4 9.678T16 32t-9.714-4.036-4-9.678 4-9.678T16 4.572q1.929.0 4.464.929t4.107 2.143l2.143-2.214q1.143.929 2.143 2.143zM14.5 19.857v-9.143h3v9.143h-3zM20.571.001v3.071h-9.143V.001h9.143z"/></svg><svg viewBox="-7.27 -7.27 46.55 46.55" id="gdoc_xmpp"><path d="M31.995 4.237c-.449.175-1.12.433-1.936.745-1.544.591-2.328.891-2.924 1.093-.613.208-1.287.409-2.635.813-.911.272-1.672.495-2.212.651-.031.875.0 2.177-.292 3.635a21.837 21.837.0 01-2.016 5.765c-1.496 2.944-3.236 4.817-3.88 5.476-.056-.059-.112-.117-.168-.179-.707-.763-2.403-2.703-3.815-5.683-1.053-2.223-1.484-4.044-1.605-4.584-.356-1.589-.427-2.955-.427-4.117.0-.075-.036-.129-.101-.149-.721-.223-1.765-.519-2.887-.853-1.271-.379-2.193-.744-3.408-1.2-.493-.185-1.409-.547-2.217-.859C.723 4.499.113 4.236.041 4.236c-.005.0-.015.0-.023.012a.131.131.0 00-.019.076c.009.593.08 1.361.256 2.365.615 3.503 2.688 7.061 4.36 9.244.0.0 3.717 5.035 9.128 8.144l.303.176c-.009.008-.02.015-.028.021-1.717 1.316-3.201 1.977-3.579 2.14a15.71 15.71.0 01-2.219.772v.407a25.31 25.31.0 002.72-.487 26.72 26.72.0 005.075-1.792c.136.067.276.136.42.204 1.527.725 3.571 1.627 6.073 2.048.613.103 1.136.165 1.507.195a.109.109.0 00.115-.091.55.55.0 00.004-.217.107.107.0 00-.063-.073c-.505-.209-1.201-.4-1.983-.719-.935-.381-2.241-1.067-3.648-2.128a13.528 13.528.0 01-.367-.287c4.64-2.656 7.989-6.588 7.989-6.588 1.735-2.036 4.441-5.623 5.431-9.795.349-1.473.539-2.741.5-3.628z"/></svg></defs></svg><div class=wrapper><input type=checkbox class=hidden id=menu-control>
- <input type=checkbox class=hidden id=menu-header-control><header class=gdoc-header><div class="container flex align-center justify-between"><label for=menu-control class=gdoc-nav__control tabindex=0><svg class="gdoc-icon gdoc_menu"><title/><use xlink:href="#gdoc_menu"/></svg><svg class="gdoc-icon gdoc_arrow_back"><title/><use xlink:href="#gdoc_arrow_back"/></svg></label><div><a class="gdoc-brand gdoc-header__link" href=https://maxtar.github.io/><span class="flex align-center"><img class=gdoc-brand__img src=/brand.svg alt>
- <span class=gdoc-brand__title>Max Wiki Site</span></span></a></div><div class=gdoc-menu-header><span class=gdoc-menu-header__items><span id=gdoc-color-theme><svg class="gdoc-icon gdoc_brightness_dark"><title/><use xlink:href="#gdoc_brightness_dark"/></svg>
- <svg class="gdoc-icon gdoc_brightness_light"><title/><use xlink:href="#gdoc_brightness_light"/></svg>
- <svg class="gdoc-icon gdoc_brightness_auto"><title/><use xlink:href="#gdoc_brightness_auto"/></svg>
- </span><span class=gdoc-menu-header__home><a href=https://maxtar.github.io/ class=gdoc-header__link><svg class="gdoc-icon gdoc_home"><title/><use xlink:href="#gdoc_home"/></svg>
- </a></span><span class=gdoc-menu-header__control><label for=menu-header-control><svg class="gdoc-icon gdoc_keyboard_arrow_right"><use xlink:href="#gdoc_keyboard_arrow_right"/><title/></svg>
- </label></span></span><label for=menu-header-control class=gdoc-menu-header__control><svg class="gdoc-icon gdoc_keyboard_arrow_left"><use xlink:href="#gdoc_keyboard_arrow_left"/><title/></svg></label></div></div></header><main class="container flex flex-even"><aside class=gdoc-nav><nav><div class="gdoc-search flex align-center"><svg class="gdoc-icon gdoc_search"><use xlink:href="#gdoc_search"/></svg>
- <input type=text id=gdoc-search-input class=gdoc-search__input placeholder=... aria-label maxlength=64 data-site-base-url=https://maxtar.github.io/ data-site-lang=ru><ul id=gdoc-search-results class=gdoc-search__list></ul></div><section class=gdoc-nav--main><h2></h2><ul class=gdoc-nav__list><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/3d-vfx-video/ class=gdoc-nav__entry>3D, VFX, Видео</a></span></label><ul class=gdoc-nav__list><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/3d-vfx-video/blender/ class=gdoc-nav__entry>Blender</a></span></label><ul class=gdoc-nav__list><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/3d-vfx-video/blender/addons/ class=gdoc-nav__entry>Addons</a></span></label></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/3d-vfx-video/blender/remove-fireflies/ class=gdoc-nav__entry>Как избавиться от светлячков</a></span></label></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/3d-vfx-video/blender/keys/ class=gdoc-nav__entry>Полезные команды и клавиатурные сокращения Blender</a></span></label></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/3d-vfx-video/blender/links/ class=gdoc-nav__entry>Полезные ссылки</a></span></label></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/3d-vfx-video/blender/renderman/ class=gdoc-nav__entry>Разные вопросы по renderman</a></span></label></li></ul></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/3d-vfx-video/video/ class=gdoc-nav__entry>Видео</a></span></label><ul class=gdoc-nav__list><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/3d-vfx-video/video/kdenlive/ class=gdoc-nav__entry>Kdenlive</a></span></label></li></ul></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/3d-vfx-video/textures-and-materials/ class=gdoc-nav__entry>Текстуры и материалы</a></span></label></li></ul></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/administration/ class=gdoc-nav__entry>Администрирование</a></span></label><ul class=gdoc-nav__list><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/administration/curl/ class=gdoc-nav__entry>Curl</a></span></label></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/administration/firefox/ class=gdoc-nav__entry>Firefox</a></span></label></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/administration/linux/ class=gdoc-nav__entry>Linux</a></span></label><ul class=gdoc-nav__list><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/administration/linux/iptables/ class=gdoc-nav__entry>iptables</a></span></label></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/administration/linux/autostart/ class=gdoc-nav__entry>Автозагрузка</a></span></label></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/administration/linux/hibernate/ class=gdoc-nav__entry>Настройка hibernate на linux без использования swap раздела</a></span></label></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/administration/linux/swap/ class=gdoc-nav__entry>Настройка swap</a></span></label></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/administration/linux/kde/ class=gdoc-nav__entry>Оптимизация KDE5</a></span></label></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/administration/linux/useful-commands/ class=gdoc-nav__entry>Очень полезные команды Linux на одном листе</a></span></label></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/administration/linux/useful-information/ class=gdoc-nav__entry>Полезная информация по разным командам Linux</a></span></label></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/administration/linux/settings-after-installing/ class=gdoc-nav__entry>Полезные установки</a></span></label></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/administration/linux/troubleshooting/ class=gdoc-nav__entry>Решение разных проблем</a></span></label></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/administration/linux/commands/ class=gdoc-nav__entry>Список команд POSIX и их описание</a></span></label></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/administration/linux/install-firefox-from-rep/ class=gdoc-nav__entry>Установка Firefox из репозитория</a></span></label></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/administration/linux/install-nvidia/ class=gdoc-nav__entry>Установка проприетарных драйверов NVidia</a></span></label></li></ul></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/administration/mikrotik/ class=gdoc-nav__entry>Mikrotik</a></span></label></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/administration/rapberry-pi/ class=gdoc-nav__entry>Rapberry Pi</a></span></label><ul class=gdoc-nav__list><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/administration/rapberry-pi/raspbian/ class=gdoc-nav__entry>Raspbian</a></span></label></li></ul></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/administration/windows/ class=gdoc-nav__entry>Windows</a></span></label><ul class=gdoc-nav__list><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/administration/windows/useful-programs/ class=gdoc-nav__entry>Полезные программы</a></span></label></li></ul></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/administration/common/ class=gdoc-nav__entry>Общие вопросы</a></span></label></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/administration/first-10-min/ class="gdoc-nav__entry is-active">Первые 10 минут на сервере</a></span></label></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/administration/useful-programs/ class=gdoc-nav__entry>Полезные программы</a></span></label></li></ul></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/games/ class=gdoc-nav__entry>Игры</a></span></label><ul class=gdoc-nav__list><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/games/godot/ class=gdoc-nav__entry>Godot</a></span></label><ul class=gdoc-nav__list><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/games/godot/gdscript/ class=gdoc-nav__entry>GdScript</a></span></label></li></ul></li></ul></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/programming/ class=gdoc-nav__entry>Программирование</a></span></label><ul class=gdoc-nav__list><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/programming/csharp/ class=gdoc-nav__entry>C#</a></span></label><ul class=gdoc-nav__list><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/programming/csharp/useful-libs/ class=gdoc-nav__entry>Полезные библиотеки</a></span></label></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/programming/csharp/useful-func/ class=gdoc-nav__entry>Полезные функции</a></span></label></li></ul></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/programming/docker/ class=gdoc-nav__entry>Docker</a></span></label></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/programming/go/ class=gdoc-nav__entry>Go</a></span></label><ul class=gdoc-nav__list><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/programming/go/i18n-i10n/ class=gdoc-nav__entry>Internationalization (i18n) и Localization (l10n) в Go</a></span></label></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/programming/go/useful-libs/ class=gdoc-nav__entry>Полезные библиотеки</a></span></label></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/programming/go/useful-programs/ class=gdoc-nav__entry>Полезные программы на Go</a></span></label></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/programming/go/useful-func/ class=gdoc-nav__entry>Полезные функции</a></span></label></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/programming/go/time-formatting/ class=gdoc-nav__entry>Форматирование даты/времени</a></span></label></li></ul></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/programming/java/ class=gdoc-nav__entry>Java</a></span></label><ul class=gdoc-nav__list><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/programming/java/useful-libs/ class=gdoc-nav__entry>Полезные библиотеки</a></span></label></li></ul></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/programming/kotlin/ class=gdoc-nav__entry>Kotlin</a></span></label><ul class=gdoc-nav__list><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/programming/kotlin/useful-libs/ class=gdoc-nav__entry>Полезные библиотеки</a></span></label></li></ul></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/programming/python/ class=gdoc-nav__entry>Python</a></span></label></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/programming/rust/ class=gdoc-nav__entry>Rust</a></span></label><ul class=gdoc-nav__list><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/programming/rust/useful-programs/ class=gdoc-nav__entry>Полезные программы на Rust</a></span></label></li></ul></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/programming/sql/ class=gdoc-nav__entry>SQL</a></span></label></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/programming/web/ class=gdoc-nav__entry>Web</a></span></label></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/programming/monitoring/ class=gdoc-nav__entry>Мониторинг</a></span></label></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/programming/useful-git/ class=gdoc-nav__entry>Полезная информация по git</a></span></label></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/programming/useful-links/ class=gdoc-nav__entry>Полезные ссылки</a></span></label></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/programming/regexp/ class=gdoc-nav__entry>Регулярные выражения</a></span></label></li></ul></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/other/ class=gdoc-nav__entry>Разная информация</a></span></label><ul class=gdoc-nav__list><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/other/useful-programs/ class=gdoc-nav__entry>Разные полезные программы</a></span></label></li></ul></li><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/testing/ class=gdoc-nav__entry>Тестирование</a></span></label><ul class=gdoc-nav__list><li><input type=checkbox class=hidden>
- <label><span class=flex><a href=/testing/libraries/ class=gdoc-nav__entry>Библиотеки для автоматизации</a></span></label></li></ul></li></ul></section><section class=gdoc-nav--more><h2></h2><ul class=gdoc-nav__list><li><input type=checkbox class=hidden>
- <label><span class=flex><svg class="gdoc-icon gdoc_tag"><use xlink:href="#gdoc_tag"/></svg>
- <a href=/tags class=gdoc-nav__entry>Tags</a></span></label></li></ul></section></nav></aside><div class=gdoc-page><div class="gdoc-page__header flex flex-wrap
- justify-between
- hidden-mobile" itemprop=breadcrumb><div><svg class="gdoc-icon gdoc_path hidden-mobile"><use xlink:href="#gdoc_path"/></svg><ol class=breadcrumb itemscope itemtype=https://schema.org/BreadcrumbList><li itemprop=itemListElement itemscope itemtype=https://schema.org/ListItem><a itemscope itemtype=https://schema.org/WebPage itemprop=item itemid=/ href=/><span itemprop=name>Тут всё начинается</span></a><meta itemprop=position content='1'></li><li>/</li><li itemprop=itemListElement itemscope itemtype=https://schema.org/ListItem><a itemscope itemtype=https://schema.org/WebPage itemprop=item itemid=/administration/ href=/administration/><span itemprop=name>Администрирование</span></a><meta itemprop=position content='2'></li><li>/</li><li itemprop=itemListElement itemscope itemtype=https://schema.org/ListItem><span itemprop=name>Первые 10 минут на сервере</span><meta itemprop=position content='3'></li></ol></div></div><article class="gdoc-markdown gdoc-markdown__align--left"><h1>Первые 10 минут на сервере</h1><p>Исходная статься на <a href=https://habrahabr.ru/company/rootwelt/blog/303462/ target=_blank>Хабрахабре<svg class="gdoc-icon gdoc_link"><use xlink:href="#gdoc_link"/></svg></a>.</p><div class="gdoc-toc gdoc-toc__level--6"><nav id=TableOfContents><ul><li><a href=#азбука-безопасности-ubuntu>Азбука безопасности Ubuntu</a></li><li><a href=#в-первую-очередь>В первую очередь</a></li><li><a href=#добавляем-пользователя>Добавляем пользователя</a></li><li><a href=#аутентификация-по-ключу-ssh>Аутентификация по ключу ssh</a></li><li><a href=#тестирование-пользователя-deploy-и-установка-sudo>Тестирование пользователя deploy и установка sudo</a></li><li><a href=#активируем-вход-по-ключу-ssh>Активируем вход по ключу ssh</a></li><li><a href=#установка-файрвола>Установка файрвола</a></li><li><a href=#автоматические-обновления-безопасности>Автоматические обновления безопасности</a></li><li><a href=#fail2ban>Fail2ban</a></li><li><a href=#двухфакторная-аутентификация>Двухфакторная аутентификация</a></li><li><a href=#logwatch>Logwatch</a></li><li><a href=#всё-готово>Всё готово</a></li></ul></nav><hr></div><div class="flex align-center gdoc-page__anchorwrap"><h2 id=азбука-безопасности-ubuntu>Азбука безопасности Ubuntu</h2><a data-clipboard-text=https://maxtar.github.io/administration/first-10-min/#азбука-безопасности-ubuntu class="gdoc-page__anchor clip flex align-center" title=" Азбука безопасности Ubuntu" aria-label=" Азбука безопасности Ubuntu" href=#%d0%b0%d0%b7%d0%b1%d1%83%d0%ba%d0%b0-%d0%b1%d0%b5%d0%b7%d0%be%d0%bf%d0%b0%d1%81%d0%bd%d0%be%d1%81%d1%82%d0%b8-ubuntu><svg class="gdoc-icon gdoc_link"><use xlink:href="#gdoc_link"/></svg></a></div><p>«<a href=http://plusbryan.com/my-first-5-minutes-on-a-server-or-essential-security-for-linux-servers target=_blank>Мои первые 5 минут на сервере<svg class="gdoc-icon gdoc_link"><use xlink:href="#gdoc_link"/></svg></a>» Брайана Кеннеди — отличное введение, как быстро обезопасить сервер от большинства атак. У нас есть несколько исправлений для этой инструкции, чтобы дополнить ею наше <a href=https://github.com/codelittinc/incubator-resources target=_blank>полное руководство<svg class="gdoc-icon gdoc_link"><use xlink:href="#gdoc_link"/></svg></a>. Также хочется подробнее объяснить некоторые вещи для более юных инженеров.</p><p>Каждое утро я проверяю почтовые уведомления logwatch и получаю основательное удовольствие, наблюдая несколько сотен (иногда тысяч) безуспешных попыток получить доступ. (Многие довольно прозаичны — попытки авторизоваться как <code>root</code> с паролем <code>1234</code> снова и снова). Приведённая здесь общая методика подходит для серверов Debian/Ubuntu, которые лично мы предпочитаем всем остальным. Они обычно служат только хостами для контейнеров Docker, но принципы те же.</p><p>На больших масштабах лучше использовать полностью автоматические установки с инструментами вроде <a href=https://github.com/ansible/ansible target=_blank>Ansible<svg class="gdoc-icon gdoc_link"><use xlink:href="#gdoc_link"/></svg></a> или <a href=https://shipyard-project.com/ target=_blank>Shipyard<svg class="gdoc-icon gdoc_link"><use xlink:href="#gdoc_link"/></svg></a>, но иногда вы просто поднимаете единственный сервер или подбираете задачи для Ansible — для таких ситуаций предназначена инструкция.</p><p><strong>Примечание: Эта справка создана как базовая азбука. Её следует расширить и дополнить в соответствие с вашими потребностями.</strong></p><div class="flex align-center gdoc-page__anchorwrap"><h2 id=в-первую-очередь>В первую очередь</h2><a data-clipboard-text=https://maxtar.github.io/administration/first-10-min/#в-первую-очередь class="gdoc-page__anchor clip flex align-center" title=" В первую очередь" aria-label=" В первую очередь" href=#%d0%b2-%d0%bf%d0%b5%d1%80%d0%b2%d1%83%d1%8e-%d0%be%d1%87%d0%b5%d1%80%d0%b5%d0%b4%d1%8c><svg class="gdoc-icon gdoc_link"><use xlink:href="#gdoc_link"/></svg></a></div><p>У нас ещё даже нет пароля для рута. Хотелось бы выбрать что-нибудь случайное и сложное. Используем генератор менеджера паролей с настройками максимальной сложности. Менеджер паролей сохраняет пароль и шифрует его, доступ к нему возможен только по длинному мастер-паролю. Здесь предусмотрена пара избыточных мер защиты (длинный, сложный случайный пароль + защита пароля шифрованием и другим длинным паролем). Используете вы парольный менеджер или другие инструменты, сохраняйте пароль в безопасности, применяя какую-нибудь форму шифрования. Вам понадобится только этот рутовый пароль в случае потери пароля sudo.</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-bash data-lang=bash><span class=line><span class=cl><span class=c1># passwd</span>
- </span></span></code></pre></div><blockquote class="gdoc-hint note"><div class="gdoc-hint__title flex align-center"><i class="fa note" title=Примечание></i></div><div class=gdoc-hint__text>На <a href="https://news.ycombinator.com/item?id=11909543" target=_blank>HN<svg class="gdoc-icon gdoc_link"><use xlink:href="#gdoc_link"/></svg></a> и <a href=https://www.reddit.com/r/netsec/comments/4o7wpo/my_first_10_minutes_on_a_server/ target=_blank>Reddit<svg class="gdoc-icon gdoc_link"><use xlink:href="#gdoc_link"/></svg></a> развернулась интересная дискуссия о рутовых паролях. Её стоит почитать.</div></blockquote><p>Теперь следует обновить репозитории и накатить последние патчи. Далее будет отдельный раздел по автоматизации установки обновлений безопасности.</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-bash data-lang=bash><span class=line><span class=cl>apt-get update
- </span></span><span class=line><span class=cl>apt-get upgrade
- </span></span></code></pre></div><div class="flex align-center gdoc-page__anchorwrap"><h2 id=добавляем-пользователя>Добавляем пользователя</h2><a data-clipboard-text=https://maxtar.github.io/administration/first-10-min/#добавляем-пользователя class="gdoc-page__anchor clip flex align-center" title=" Добавляем пользователя" aria-label=" Добавляем пользователя" href=#%d0%b4%d0%be%d0%b1%d0%b0%d0%b2%d0%bb%d1%8f%d0%b5%d0%bc-%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d1%82%d0%b5%d0%bb%d1%8f><svg class="gdoc-icon gdoc_link"><use xlink:href="#gdoc_link"/></svg></a></div><p>Вам никогда не следует заходить на сервер как рут. Мы следуем тем же правилам при создании пользователей, которые установил Брайан Кеннеди, но вы можете использовать собственные. У нашей маленькой команды не было проблем с использованием единственного пользователя для авторизации, но в больших командах лучше создать разных пользователей с разными уровнями привилегий, где только избранные получают привилегии sudo.</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-bash data-lang=bash><span class=line><span class=cl>useradd deploy
- </span></span><span class=line><span class=cl>mkdir /home/deploy
- </span></span><span class=line><span class=cl>mkdir /home/deploy/.ssh
- </span></span><span class=line><span class=cl>chmod <span class=m>700</span> /home/deploy/.ssh
- </span></span></code></pre></div><p>Устанавливаем предчтительную оболочку для пользователя deploy, мы используем bash:</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-bash data-lang=bash><span class=line><span class=cl>usermod -s /bin/bash deploy
- </span></span></code></pre></div><p>Помните: <code>chmod 700</code> означает, что владелец аккаунта обладает правами на чтение, запись и запуск программ. Мы всё ещё находимся с правами рута, но через минуту мы запустим команду chown рекурсивно на этой папке для пользователя deploy и группы deploy. Только этот пользователь должен иметь право работать с папкой .ssh.</p><div class="flex align-center gdoc-page__anchorwrap"><h2 id=аутентификация-по-ключу-ssh>Аутентификация по ключу ssh</h2><a data-clipboard-text=https://maxtar.github.io/administration/first-10-min/#аутентификация-по-ключу-ssh class="gdoc-page__anchor clip flex align-center" title=" Аутентификация по ключу ssh" aria-label=" Аутентификация по ключу ssh" href=#%d0%b0%d1%83%d1%82%d0%b5%d0%bd%d1%82%d0%b8%d1%84%d0%b8%d0%ba%d0%b0%d1%86%d0%b8%d1%8f-%d0%bf%d0%be-%d0%ba%d0%bb%d1%8e%d1%87%d1%83-ssh><svg class="gdoc-icon gdoc_link"><use xlink:href="#gdoc_link"/></svg></a></div><p>Мы стараемся не использовать пароли для входа на сервер. Насчёт этого было много споров после того как вышла инструкция Брайана, но я тоже склонен согласиться с такой позицией. Вот несколько замечаний на этот счёт:</p><ol><li>Ключи ssh лучше паролей только потому, что они содержат и требуют больше информации.</li><li>Пароли можно подобрать брутфорсом. Гадать по публичному ключу по существу невозможно, так что их можно считать полностью безопасными.</li><li>Что насчёт кражи компьютера? Да, там ваши секретные ключи, но отозвать ssh-key легко, достаточно просто удалить открытый ключ из authorized_keys. Вам следует также защитить секретный ключ безопасной и длинной парольной фразой. См. следующий пункт.</li><li>Всё это работает ТОЛЬКО ПРИ УСЛОВИИ БЕЗОПАСНОЙ И ДЛИННОЙ ПАРОЛЬНОЙ ФРАЗЫ, ЗАЩИЩАЮЩЕЙ КЛЮЧ. Повторяем второй раз, потому что это критически важно.</li></ol><p>Итак, оставим в прошлом аутентификацию по паролю. Скопируйте содержимое id_rsa.pub<sup id=fnref:1><a href=#fn:1 class=footnote-ref role=doc-noteref>1</a></sup> со своей локальной машины на серверы в файл authorized_keys.</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-bash data-lang=bash><span class=line><span class=cl>vim /home/deploy/.ssh/authorized_keys
- </span></span></code></pre></div><p>Установим правильные привилегии, руководствуясь принципом безопасности Linux, известным как <a href=https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B8%D0%BD%D1%86%D0%B8%D0%BF_%D0%BC%D0%B8%D0%BD%D0%B8%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D0%BF%D1%80%D0%B8%D0%B2%D0%B8%D0%BB%D0%B5%D0%B3%D0%B8%D0%B9 target=_blank>принцип минимальных привилегий<svg class="gdoc-icon gdoc_link"><use xlink:href="#gdoc_link"/></svg></a>:</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-bash data-lang=bash><span class=line><span class=cl>chmod <span class=m>400</span> /home/deploy/.ssh/authorized_keys
- </span></span><span class=line><span class=cl>chown deploy:deploy /home/deploy -R
- </span></span></code></pre></div><p><code>chmod 400</code> устанавливает разрешения, так что файл может прочитать только владелец. Другая команда <code>chown</code> делает пользователя deploy и группу deploy владельцами (рекурсивно) их домашней директории. Мы упоминали об этом ранее, когда устанавливали разрешения на чтение, запись и исполнение для владельца этой директории.</p><p>Вернёмся к этому чуть позже, когда правильно протестируем нашего пользователя deploy и sudo для отключения авторизации рута и установки авторизации только по ключу ssh.</p><div class="flex align-center gdoc-page__anchorwrap"><h2 id=тестирование-пользователя-deploy-и-установка-sudo>Тестирование пользователя deploy и установка sudo</h2><a data-clipboard-text=https://maxtar.github.io/administration/first-10-min/#тестирование-пользователя-deploy-и-установка-sudo class="gdoc-page__anchor clip flex align-center" title=" Тестирование пользователя deploy и установка sudo" aria-label=" Тестирование пользователя deploy и установка sudo" href=#%d1%82%d0%b5%d1%81%d1%82%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d1%82%d0%b5%d0%bb%d1%8f-deploy-%d0%b8-%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-sudo><svg class="gdoc-icon gdoc_link"><use xlink:href="#gdoc_link"/></svg></a></div><p>Мы собираемся проверить, как происходит авторизация пользователя deploy, в то же время сохраняя открытым соединение по ssh для рута на всякий случай. Если всё работает нормально, мы используем наше открытое подключение рута, чтобы установить пароль для deploy. Поскольку мы отключаем авторизацию по паролю, то этот пароль будет использован при применении sudo. Снова мы запускаем парольный менеджер для генерации сложного и случайного пароля, сохраняем его в зашифрованном виде и сообщаем коллегам (синхронизация зашифрованного файла с паролем).</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-bash data-lang=bash><span class=line><span class=cl>passwd deploy
- </span></span></code></pre></div><p>Установка sudo простая. Открываем файл sudo:</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-bash data-lang=bash><span class=line><span class=cl>visudo
- </span></span></code></pre></div><p>Добавляем группу <code>%sudo</code> под рутовым пользователем, как показано ниже. Убедитесь, что все остальные пользователи и группы отбиты комментариями с символом <code>#</code> (у пользователей нет префиксов, а группы начинаются с %). На большинстве свежих установок там ничего нет, но на всякий случай.</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-bash data-lang=bash><span class=line><span class=cl>root <span class=nv>ALL</span><span class=o>=(</span>ALL<span class=o>)</span> ALL
- </span></span><span class=line><span class=cl>%sudo <span class=nv>ALL</span><span class=o>=(</span>ALL:ALL<span class=o>)</span> ALL
- </span></span></code></pre></div><p>Теперь добавим пользователя <code>deploy</code> в группу <code>sudo</code>.</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-bash data-lang=bash><span class=line><span class=cl>usermod -a -G sudo deploy
- </span></span></code></pre></div><p>Это предоставит пользователю deploy доступ к sudo после введения пароля, который мы только что создали.</p><blockquote class="gdoc-hint note"><div class="gdoc-hint__title flex align-center"><i class="fa note" title="Замечание к исправлению"></i></div><div class=gdoc-hint__text>Спасибо пользователю <a href=https://www.reddit.com/r/netsec/comments/4o7wpo/my_first_10_minutes_on_a_server/d4aeajf target=_blank>ackackacksyn<svg class="gdoc-icon gdoc_link"><use xlink:href="#gdoc_link"/></svg></a> на Reddit за верное замечание, что не следует добавлять пользователей напрямую в список sudo.</div></blockquote><div class="flex align-center gdoc-page__anchorwrap"><h2 id=активируем-вход-по-ключу-ssh>Активируем вход по ключу ssh</h2><a data-clipboard-text=https://maxtar.github.io/administration/first-10-min/#активируем-вход-по-ключу-ssh class="gdoc-page__anchor clip flex align-center" title=" Активируем вход по ключу ssh" aria-label=" Активируем вход по ключу ssh" href=#%d0%b0%d0%ba%d1%82%d0%b8%d0%b2%d0%b8%d1%80%d1%83%d0%b5%d0%bc-%d0%b2%d1%85%d0%be%d0%b4-%d0%bf%d0%be-%d0%ba%d0%bb%d1%8e%d1%87%d1%83-ssh><svg class="gdoc-icon gdoc_link"><use xlink:href="#gdoc_link"/></svg></a></div><p>Конфигурация ssh для этой машины хранится здесь:</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-bash data-lang=bash><span class=line><span class=cl>vim /etc/ssh/sshd_config
- </span></span></code></pre></div><p>Вы захотите добавить туда несколько строк. Мне кажется, они довольно понятны сами по себе. Это IP-адрес, который вы используете для подключения. У нас в компании используется VPN-конфигурация с OpenVPN и криптографической аутентификацией, так что для подключения к серверу нужно также пройти аутентификацию и быть подключённым к VPN.</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-bash data-lang=bash><span class=line><span class=cl>PermitRootLogin no
- </span></span><span class=line><span class=cl>PasswordAuthentication no
- </span></span><span class=line><span class=cl>AllowUsers deploy@<span class=o>(</span>your-VPN-or-static-IP<span class=o>)</span>
- </span></span></code></pre></div><p>Активируйте все эти правила, перезапустив службы ssh. Вероятно, придётся переподключиться (делайте это через пользователя deploy!).</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-bash data-lang=bash><span class=line><span class=cl>service ssh restart
- </span></span></code></pre></div><div class="flex align-center gdoc-page__anchorwrap"><h2 id=установка-файрвола>Установка файрвола</h2><a data-clipboard-text=https://maxtar.github.io/administration/first-10-min/#установка-файрвола class="gdoc-page__anchor clip flex align-center" title=" Установка файрвола" aria-label=" Установка файрвола" href=#%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-%d1%84%d0%b0%d0%b9%d1%80%d0%b2%d0%be%d0%bb%d0%b0><svg class="gdoc-icon gdoc_link"><use xlink:href="#gdoc_link"/></svg></a></div><p>Обычно здесь два лагеря. Одни используют IPtables напрямую, а другие применяют удобный интерфейс под названием <code>ufw</code>, который представляет собой слой над IPtables для упрощения процесса настройки. Более простой вариант обычно предпочтительнее с точки зрения безопасности. <a href=https://www.digitalocean.com/community/tutorials/how-to-setup-a-firewall-with-ufw-on-an-ubuntu-and-debian-cloud-server target=_blank>ufw от DigitalOcean<svg class="gdoc-icon gdoc_link"><use xlink:href="#gdoc_link"/></svg></a> действительно неплох и помогает в основных вещах.</p><p><code>ufw</code> установлен по умолчанию на Ubuntu, а на Debian достаточно запустить команду <code>apt-get install ufw</code>.</p><p>По умолчанию <code>ufw</code> должен отказывать во всех входящих подключениях и разрешать все исходящие, однако, он не будет запущен (потому что иначе как бы вы подключились?). Мы пройдёмся и явно разрешим соединения, которые считаются нормальными.</p><p>Во-первых, следует убедиться в поддержке IPv6. Откройте конфигурационный файл.</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-bash data-lang=bash><span class=line><span class=cl>sudo vim /etc/default/ufw
- </span></span></code></pre></div><p>Установите IPv6 в значение <strong>yes</strong>.</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-bash data-lang=bash><span class=line><span class=cl><span class=nv>IPV6</span><span class=o>=</span>yes
- </span></span></code></pre></div><p>Для остальных портов, которые мы собираемся открыть, можно просто использовать инструмент <code>ufw</code> из командной строки, что очень удобно.</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-bash data-lang=bash><span class=line><span class=cl>sudo ufw allow from <span class=o>{</span>your-ip<span class=o>}</span> to any port <span class=m>22</span>
- </span></span><span class=line><span class=cl>sudo ufw allow <span class=m>80</span>
- </span></span><span class=line><span class=cl>sudo ufw allow <span class=m>443</span>
- </span></span><span class=line><span class=cl>sudo ufw disable
- </span></span><span class=line><span class=cl>sudo ufw <span class=nb>enable</span>
- </span></span></code></pre></div><p>Первое — это избыточная мера, которая гарантирует, что только соединения с нашего IP-адреса могут соединяться по SSH (стандартный порт SSH)<sup id=fnref:2><a href=#fn:2 class=footnote-ref role=doc-noteref>2</a></sup> Вторая и третья команда открывают трафик http и https.</p><blockquote class="gdoc-hint note"><div class="gdoc-hint__title flex align-center"><i class="fa note" title=Примечание></i></div><div class=gdoc-hint__text>Спасибо <a href="https://news.ycombinator.com/item?id=11910341" target=_blank>chrisfosterelli<svg class="gdoc-icon gdoc_link"><use xlink:href="#gdoc_link"/></svg></a> за замечание, что если вы собираетесь установить первое правило (а вам следует это сделать), то убедитесь, что у вас статичный IP-адрес или безопасный VPN, к которому вы подключаетесь. Динамический IP-адрес оставит вас без доступа к серверу когда-нибудь в будущем.</div></blockquote><div class="flex align-center gdoc-page__anchorwrap"><h2 id=автоматические-обновления-безопасности>Автоматические обновления безопасности</h2><a data-clipboard-text=https://maxtar.github.io/administration/first-10-min/#автоматические-обновления-безопасности class="gdoc-page__anchor clip flex align-center" title=" Автоматические обновления безопасности" aria-label=" Автоматические обновления безопасности" href=#%d0%b0%d0%b2%d1%82%d0%be%d0%bc%d0%b0%d1%82%d0%b8%d1%87%d0%b5%d1%81%d0%ba%d0%b8%d0%b5-%d0%be%d0%b1%d0%bd%d0%be%d0%b2%d0%bb%d0%b5%d0%bd%d0%b8%d1%8f-%d0%b1%d0%b5%d0%b7%d0%be%d0%bf%d0%b0%d1%81%d0%bd%d0%be%d1%81%d1%82%d0%b8><svg class="gdoc-icon gdoc_link"><use xlink:href="#gdoc_link"/></svg></a></div><p>Мне они нравятся. Они не идеальны, но это лучше, чем пропустить патчи после их выхода.</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-bash data-lang=bash><span class=line><span class=cl>sudo apt-get install unattended-upgrades
- </span></span><span class=line><span class=cl>vim /etc/apt/apt.conf.d/10periodic
- </span></span></code></pre></div><p>Обновите этот файл следующим образом:</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-bash data-lang=bash><span class=line><span class=cl>APT::Periodic::Update-Package-Lists <span class=s2>"1"</span><span class=p>;</span>
- </span></span><span class=line><span class=cl>APT::Periodic::Download-Upgradeable-Packages <span class=s2>"1"</span><span class=p>;</span>
- </span></span><span class=line><span class=cl>APT::Periodic::AutocleanInterval <span class=s2>"7"</span><span class=p>;</span>
- </span></span><span class=line><span class=cl>APT::Periodic::Unattended-Upgrade <span class=s2>"1"</span><span class=p>;</span>
- </span></span></code></pre></div><p>Я в целом согласен с Брайаном, что лучше отключить обычные обновления, а оставить только обновления безопасности. Идея в том, что будет не очень хорошо, если приложение внезапно перестанет работать из-за обновления какого-то пакета с зависимостями, в то время как обновления безопасности очень редко создают проблемы с зависимостями на уровне приложения.</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-bash data-lang=bash><span class=line><span class=cl>sudo vim /etc/apt/apt.conf.d/50unattended-upgrades
- </span></span></code></pre></div><p>Отредактируйте файл следующим образом:</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-bash data-lang=bash><span class=line><span class=cl>Unattended-Upgrade::Allowed-Origins <span class=o>{</span>
- </span></span><span class=line><span class=cl><span class=s2>"Ubuntu lucid-security"</span><span class=p>;</span>
- </span></span><span class=line><span class=cl>//<span class=s2>"Ubuntu lucid-updates"</span><span class=p>;</span>
- </span></span><span class=line><span class=cl><span class=o>}</span><span class=p>;</span>
- </span></span></code></pre></div><p>Всё готово.</p><div class="flex align-center gdoc-page__anchorwrap"><h2 id=fail2ban>Fail2ban</h2><a data-clipboard-text=https://maxtar.github.io/administration/first-10-min/#fail2ban class="gdoc-page__anchor clip flex align-center" title=" Fail2ban" aria-label=" Fail2ban" href=#fail2ban><svg class="gdoc-icon gdoc_link"><use xlink:href="#gdoc_link"/></svg></a></div><p><img src=https://hsto.org/files/1f7/093/035/1f7093035bcb4e34888c55ba9a696639.png alt=Fail2ban></p><p>fail2ban — отличный пакет, который проактивно блокирует подозрительную активность, как только она обнаружена. В их <a href=http://www.fail2ban.org/wiki/index.php/Main_Page target=_blank>вики<svg class="gdoc-icon gdoc_link"><use xlink:href="#gdoc_link"/></svg></a> сказано, что fail2ban сканирует файлы логов (например, <code>/var/log/apache/error_log</code>) и банит IP-адреса, которые проявляют подозрительные признаки — слишком много попыток ввода неправильного пароля, поиск эксплоитов и проч… Сразу после установки Fail2Ban оснащён фильтрами для различных сервисов (apache, courier, ssh и др.).</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-bash data-lang=bash><span class=line><span class=cl>sudo apt-get install fail2ban
- </span></span></code></pre></div><div class="flex align-center gdoc-page__anchorwrap"><h2 id=двухфакторная-аутентификация>Двухфакторная аутентификация</h2><a data-clipboard-text=https://maxtar.github.io/administration/first-10-min/#двухфакторная-аутентификация class="gdoc-page__anchor clip flex align-center" title=" Двухфакторная аутентификация" aria-label=" Двухфакторная аутентификация" href=#%d0%b4%d0%b2%d1%83%d1%85%d1%84%d0%b0%d0%ba%d1%82%d0%be%d1%80%d0%bd%d0%b0%d1%8f-%d0%b0%d1%83%d1%82%d0%b5%d0%bd%d1%82%d0%b8%d1%84%d0%b8%d0%ba%d0%b0%d1%86%d0%b8%d1%8f><svg class="gdoc-icon gdoc_link"><use xlink:href="#gdoc_link"/></svg></a></div><p>Двухфакторная аутентификация обязательна, если мы проектируем систему, которая соответствует нормам безопасности. Теоретически, если вы активируете двухфакторную аутентификацию поверх всех остальных защитных мер, то тогда для получения доступа к серверу (через вскрытие уязвимостей в приложениях), нападающим придётся также иметь:</p><ol><li>Доступ к вашему сертификату и ключу для доступа к VPN.</li><li>Доступ к вашему компьютеру, чтобы получить секретный ключ.</li><li>Доступ к вашей парольной фразе для секретного ключа.</li><li>Доступ к вашему телефону для двухфакторной аутентификации.</li></ol><p>Это немало барьеров (четыре), которые придётся преодолеть. Даже если они получат рутовый доступ через sudo, им придётся найти пароль deploy, который защищён шифрованием AES (пятый барьер).</p><p>Устанавливаем пакет.</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-bash data-lang=bash><span class=line><span class=cl>sudo apt-get install libpam-google-authenticator
- </span></span></code></pre></div><p>Для установки запускаем команду и следуем инструкциям:</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-bash data-lang=bash><span class=line><span class=cl>su deploy
- </span></span><span class=line><span class=cl>google-authenticator
- </span></span></code></pre></div><p>Двухфакторная аутентификация устанавливается очень легко и добавляет хороший дополнительный уровень безопасности.</p><div class="flex align-center gdoc-page__anchorwrap"><h2 id=logwatch>Logwatch</h2><a data-clipboard-text=https://maxtar.github.io/administration/first-10-min/#logwatch class="gdoc-page__anchor clip flex align-center" title=" Logwatch" aria-label=" Logwatch" href=#logwatch><svg class="gdoc-icon gdoc_link"><use xlink:href="#gdoc_link"/></svg></a></div><p>Этот инструмент скорее для удовольствия и мониторинга постфактум. Logwatch отслеживает логи и в соответствии с настройками высылает по почте ежедневную красиво структурированную сводку. Это довольно занимательные данные, и вы удивитесь, как много попыток доступа к серверу происходит каждый день. Я установил его только для того, чтобы продемонстрировать коллегам, насколько важно иметь хорошую безопасность.</p><p>У DigitalOcean есть <a href=https://www.digitalocean.com/community/tutorials/how-to-install-and-use-logwatch-log-analyzer-and-reporter-on-a-vps target=_blank>отличное описание установки и настройки Logwatch<svg class="gdoc-icon gdoc_link"><use xlink:href="#gdoc_link"/></svg></a>, но если мы хотим уложиться в 10 минут, то просто установим его и сделаем задание cron для ежедневного запуска и отправки письма по электронной почте.</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-bash data-lang=bash><span class=line><span class=cl>sudo apt-get install logwatch
- </span></span></code></pre></div><p>Добавляем задание cron.</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-bash data-lang=bash><span class=line><span class=cl>sudo vim /etc/cron.daily/00logwatch
- </span></span></code></pre></div><p>Добавьте следующую строку в файл cron:</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-bash data-lang=bash><span class=line><span class=cl>sudo /usr/sbin/logwatch --output mail --mailto you@example.com --detail high
- </span></span></code></pre></div><div class="flex align-center gdoc-page__anchorwrap"><h2 id=всё-готово>Всё готово</h2><a data-clipboard-text=https://maxtar.github.io/administration/first-10-min/#всё-готово class="gdoc-page__anchor clip flex align-center" title=" Всё готово" aria-label=" Всё готово" href=#%d0%b2%d1%81%d1%91-%d0%b3%d0%be%d1%82%d0%be%d0%b2%d0%be><svg class="gdoc-icon gdoc_link"><use xlink:href="#gdoc_link"/></svg></a></div><p>Ну вот. После завершения всего вышеперечисленного вашей основной заботой и точкой сбоя станет ваше приложение и сервисы. Это совершенно другая область.</p><p>Мы пытаемся максимально формализовать и описать наши лучшие практики и процессы, если хотите узнать больше, изучите наш <a href=https://github.com/codelittinc/incubator-resources target=_blank>репозиторий<svg class="gdoc-icon gdoc_link"><use xlink:href="#gdoc_link"/></svg></a>. Всё в открытом доступе, и мы продолжаем пополнять его.</p><div class=footnotes role=doc-endnotes><hr><ol><li id=fn:1><p>Убедитесь, что указан именно <code>.pub</code>. Это кажется очень простым, но я встречал двух товарищей (оба <strong>не</strong> работают в нашей компании — они бы быстро прекратили здесь работать) за свою карьеру, которые прислали мне свои секретные ключи (<code>id_rsa</code> без расширения .pub), когда я попросил прислать открытый ключ. <a href=#fnref:1 class=footnote-backref role=doc-backlink>↩︎</a></p></li><li id=fn:2><p>Мнения расходятся, назначать ли для соединений SSH стандартный или нестандартный порт. См. <a href=https://www.adayinthelifeof.nl/2012/03/12/why-putting-ssh-on-another-port-than-22-is-bad-idea/ target=_blank>здесь<svg class="gdoc-icon gdoc_link"><use xlink:href="#gdoc_link"/></svg></a> и <a href=https://major.io/2013/05/14/changing-your-ssh-servers-port-from-the-default-is-it-worth-it/ target=_blank>здесь<svg class="gdoc-icon gdoc_link"><use xlink:href="#gdoc_link"/></svg></a> аргументы обеих сторон. <a href=#fnref:2 class=footnote-backref role=doc-backlink>↩︎</a></p></li></ol></div></article><div class="gdoc-page__footer flex flex-wrap justify-between"><span class=gdoc-page__nav><a class="gdoc-page__nav--prev flex align-center" href=/administration/common/ title="Общие вопросы"><i class=gdoc-icon>gdoc_arrow_left_alt</i>
- Общие вопросы
- </a></span><span class=gdoc-page__nav><a class="gdoc-page__nav--next flex align-center" href=/administration/useful-programs/ title="Полезные программы">Полезные программы
- <i class=gdoc-icon>gdoc_arrow_right_alt</i></a></span></div></div></main><footer class=gdoc-footer><nav class="container flex"><div><section class="flex flex-wrap align-center"><span class="gdoc-footer__item gdoc-footer__item--row"></span></section></div><div class="flex flex-25 justify-end"><span class="gdoc-footer__item text-right"><a class="gdoc-footer__link fake-link" href=# aria-label><svg class="gdoc-icon gdoc_keyboard_arrow_up"><use xlink:href="#gdoc_keyboard_arrow_up"/></svg>
- <span class=hidden-mobile></span></a></span></div></nav></footer></div><script defer src=/js/search-49cf88d4.bundle.min.js></script></body></html>
|