One place for hosting & domains

      сервера

      Создание сервера Minecraft в Ubuntu 18.04


      Автор выбрал Tech Education Fund для получения пожертвования в рамках программы Write for DOnations.

      Введение

      Minecraft — это популярная видеоигра в жанре Sandbox (песочница). Вышедшая в 2009 году игра позволяет игрокам создавать, изучать, мастерить и выживать в мире из 3D кирпичиков. На конец 2019 года она была второй по популярности видеоигрой всех времен. В этом руководстве вы создадите собственный сервер Minecraft, чтобы вы и ваши друзья могли играть вместе. В частности, вы установите необходимые программные пакеты для запуска Minecraft, настроите сервер для запуска, а затем развернете игру.

      В качестве альтернативы вы можете изучить статью Minecraft в один клик на DigitalOcean: версия для сервера Java, которая описывает другой путь установки.

      В данном руководстве мы используем Java-версию Minecraft. Если вы купили версию Minecraft в Microsoft App Store, вы не сможете подключиться к этому серверу. Большинство версий Minecraft, приобретенных в игровых консолях, например, PlayStation 4, Xbox One или Nintendo Switch, также являются версиями Minecraft под Microsoft. Эти консоли также не смогут подключиться к серверу, который вы создадите с помощью этого руководства. Вы можете получить Java-версию Minecraft здесь.

      Предварительные требования

      Для выполнения этого обучающего руководства вам потребуется следующее:

      Шаг 1 — Установка необходимых пакетов программного обеспечения

      После инициализации сервера вашим первым действием будет установка Java, которая потребуется вам для запуска Minecraft.

      Обновите индекс пакетов для менеджера пакетов APT:

      Затем установите 8 версию OpenJDK для Java, в частности, headless JRE. Это минимальная версия Java, которая не имеет поддержки графического интерфейса приложений. Это делает ее идеальным решением для запуска приложений Java на сервере:

      • sudo apt install openjdk-8-jre-headless

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

      Теперь, когда вы установили Java, загрузите сервер Minecraft с сайта Minecraft.

      Шаг 2 — Загрузка последней версии Minecraft

      Теперь вам нужно загрузить актуальную версию сервера Minecraft. Вы можете сделать это, открыв сайт Minecraft и скопировав ссылку с названием Download minecraft_server. X.X.X.jar, где X — последняя версия сервера.

      Теперь вы можете воспользоваться wget и скопированной ссылкой для загрузки сервера:

      • wget https://launcher.mojang.com/v1/objects/bb2b6b1aefcd70dfd1892149ac3a215f6c636b07/server.jar

      Если вы хотите обновить ваш сервер Minecraft или запускать разные версии Minecraft, переименуйте загруженный server.jar​​​ в minecraft_server_1.15.2.jar, сопоставив выделенные номера версий для версии, которую вы только что загрузили:

      • mv server.jar minecraft_server_1.15.2.jar

      Если вы хотите загрузить более старую версию, воспользуйтесь архивом на сайте mcversions.net​​​. В этом руководстве вы будем рассматривать самую последнюю версию. Теперь, когда вы загрузили нужные файлы, давайте приступим к настройке вашего сервера Minecraft.

      Шаг 3 — Настройка и запуск сервера Minecraft

      Теперь, когда вы загрузили jar-файл Minecraft, вы можете запустить его.

      Сначала запустите сеанс screen, выполнив команду screen:

      После изучения содержания появившегося на экране баннера, нажмите кнопку ПРОБЕЛ. screen отобразит для вас терминальный сеанс как обычный. Теперь этот сеанс является отделяемым, что означает, что вы сможете запустить здесь команду и оставить ее в работающем состоянии.

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

      • java -Xms1024M -Xmx1024M -jar minecraft_server_1.15.2.jar nogui

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

      • Xms1024M — этот аргумент выполняет настройку запуска сервера с 1024 Мб или 1 Гб ОЗУ. Вы можете увеличить этот лимит, если хотите, чтобы ваш сервер запускался с большим объемом оперативной памяти. Аргумент поддерживает как М для мегабайт, так и G для гигабайт. Например, аргумент Xms2G будет запускать сервер с 2 гигабайтами оперативной памяти.

      • Xmx1024M — этот аргумент позволяет серверу использовать не более 1024 Мб оперативной памяти. Вы можете увеличить этот лимит, если хотите, чтобы ваш сервер имел больший размер и принимал больше игроков, либо если ваш сервер работает медленно.

      • jar — этот аргумент указывает, какой jar-файл сервера должен быть запущен.

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

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

      Output

      [22:05:31] [22:05:31] [main/ERROR]: Failed to load properties from file: server.properties [22:05:31] [main/WARN]: Failed to load eula.txt [22:05:31] [main/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.

      Эти ошибки были получены, поскольку сервер не смог найти два необходимых для выполнения файла: EULA (Лицензионное соглашение конечного пользователя) в eula.txt​​ и файл конфигурации server.properties. К счастью, поскольку сервер не смог найти эти файлы, он создал их в текущем рабочем каталоге.

      Сначала откройте eula.txt в nano или предпочитаемом текстовом редакторе:

      Внутри этого файла вы найдете ссылку на EULA Minecraft. Скопируйте URL:

      ~/eula.txt

      #By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula).
      #Tue Mar 24 22:05:31 UTC 2020
      eula=false
      

      Откройте URL в браузере и прочитайте соглашение. Затем вернитесь в текстовый редактор и перейдите к последней строке файла eula.txt​​​. Измените eula=false на eula=true. Сохраните и закройте файл.

      Теперь, когда вы приняли пользовательское соглашение, пришло время настроить сервер согласно вашим требованиям.

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

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

      ~/server.properties

      #Minecraft server properties
      #Thu Apr 30 23:42:29 UTC 2020
      spawn-protection=16
      max-tick-time=60000
      query.port=25565
      generator-settings=
      force-gamemode=false
      allow-nether=true
      enforce-whitelist=false
      gamemode=survival
      broadcast-console-to-ops=true
      enable-query=false
      player-idle-timeout=0
      difficulty=easy
      spawn-monsters=true
      broadcast-rcon-to-ops=true
      op-permission-level=4
      pvp=true
      snooper-enabled=true
      level-type=default
      hardcore=false
      enable-command-block=false
      max-players=20
      network-compression-threshold=256
      resource-pack-sha1=
      max-world-size=29999984
      function-permission-level=2
      rcon.port=25575
      server-port=25565
      server-ip=
      spawn-npcs=true
      allow-flight=false
      level-name=world
      view-distance=10
      resource-pack=
      spawn-animals=true
      white-list=false
      rcon.password=
      generate-structures=true
      online-mode=true
      max-build-height=256
      level-seed=
      prevent-proxy-connections=false
      use-native-transport=true
      motd=A Minecraft Server
      enable-rcon=false
      

      Давайте более внимательно рассмотрим некоторые наиболее важные свойства из этого списка:

      • difficulty (по умолчанию easy — Это свойство задает уровень сложности игры, например, уровень наносимого урона и то, как элементы влияют на вашего игрока. Возможные варианты: peaceful, easy, normal и hard.

      • gamemode (по умолчанию survival​​​) — Это свойство определяет режим игры. Возможные варианты: survival, creative, adventure и spectacor.

      • level-name (по умолчанию world) — Это свойство задает имя вашего сервера, которое будет отображаться в клиенте. Такие символы, как апостроф, возможно, потребуется экранировать с помощью обратной косой черты.

      • motd (по умолчанию A Minecraft Server) — Сообщение, отображаемое в списке серверов клиента Minecraft.

      • pvp (по умолчанию true) — Данное свойство активирует pvp режим. Если установлено значение true, игроки смогут вступать в бой и наносить друг другу урон.

      После настройки нужных опций сохраните и закройте файл.

      Теперь, когда вы установили значение true в EULA и настроили параметры, вы можете успешно запустить сервер.

      Как и в прошлый раз, давайте запустим ваш сервер с 1024 Мб оперативной памяти. Однако в этот раз мы также предоставим Minecraft возможность использовать до 4 Гб оперативной памяти при необходимости. Помните, что вы можете изменить это число согласно ограничениям вашего сервера или потребностям пользователя:

      • java -Xms1024M -Xmx4G -jar minecraft_server_1.15.2.jar nogui

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

      Output

      [21:08:14] [Server thread/INFO]: Starting minecraft server version 1.15.2 [21:08:14] [Server thread/INFO]: Loading properties [21:08:14] [Server thread/INFO]: Default game type: SURVIVAL [21:08:14] [Server thread/INFO]: Generating keypair [21:08:15] [Server thread/INFO]: Starting minecraft server on *:25565

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

      Output

      [21:15:37] [Server thread/INFO]: Done (30.762s)! For help, type "help"

      Ваш сервер запущен, а вы попали в панель управления администратора сервера. Теперь введите команду help:

      Вывод будет выглядеть следующим образом:

      Output

      [21:15:37] [Server thread/INFO]: /advancement (grant|revoke) [21:15:37] [Server thread/INFO]: /ban <targets> [<reason>] [21:15:37] [Server thread/INFO]: /ban-ip <target> [<reason>] [21:15:37] [Server thread/INFO]: /banlist [ips|players] ...

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

      Шаг 4 — Поддержание работы сервера

      Теперь, когда у вас есть работающий сервер, вы можете захотеть, чтобы он продолжал работать даже после вашего отключения от SSH сеанса. Поскольку вы уже использовали screen ранее, вы можете отсоединиться от этого сеанса, нажав Ctrl + A + D. После этого вы вернетесь в первоначальную оболочку:

      Запустите эту команду, чтобы посмотреть все ваши сеансы screen:

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

      Output

      There is a screen on: 26653.pts-0.minecraft (03/25/20 21:18:31) (Detached) 1 Socket in /run/screen/S-root.

      Для возобновления сеанса передайте флаг -r в команду screen, а затем введите идентификатор вашего сеанса:

      Когда вы будете готовы выйти из вашего сервера, обязательно выполните отсоединение от сеанса, нажав Ctrl + A + D, а затем выполните выход.

      Шаг 5 — Подключение к вашему серверу из клиента Minecraft

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

      Запустите вашу копию Java-версии Minecraft и выберите Multiplayer в меню.

      Выбор режима Multiplayer в меню

      Затем вам потребуется добавить сервер для подключения, поэтому нажмите кнопку Add Server (Добавить сервер).

      Нажмите кнопку Add Server (Добавить сервер)

      На экране Edit Server Info (Изменить информацию сервера) укажите имя вашего сервера и введите его IP-адрес. Это тот же IP-адрес, который вы использовали для подключения через SSH.

      Укажите имя и IP-адрес вашего сервера

      После ввода имени и IP-адреса сервера вы вернетесь на экран Multiplayer, где теперь будет указан ваш сервер.

      Выберите сервер и нажмите Join Server (Войти на сервер)

      С этого момента ваш сервер всегда будет отображаться в этом списке. Выберите его и нажмите Join Server (Войти на сервер).

      Наслаждайтесь игрой!

      Вы находитесь на сервере и готовы к игре!

      Заключение

      Теперь у вас есть сервер Minecraft, работающий на Ubuntu 18.04, для вас и всех ваших друзей! Наслаждайтесь исследованиями, оттачивайте мастерство и выживайте в грубом 3D мире. И следите за гриферами.



      Source link

      Установка и настройка сервера OpenVPN в Ubuntu 20.04


      Введение

      Виртуальная частная сеть (VPN) позволит вам работать в незащищенных сетях, как если бы вы находились в частной сети. Она предоставляет возможность получить безопасный и защищенный доступ к сети Интернет со смартфона или ноутбука при подключении к недоверенной сети, например Wi-Fi в отеле или в кафе.

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

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

      Примечание. Если вы планируете настроить сервер OpenVPN на DigitalOcean Droplet, то мы, как и многие поставщики хостинга, будем взимать плату за превышение лимита пропускной способности. По этой причине необходимо следить за объемом трафика, который обрабатывает ваш сервер.

      Дополнительную информацию можно найти на этой странице.

      Предварительные требования

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

      Примечание. Хотя технически возможно использовать ваш сервер OpenVPN или ваш локальный компьютер в качестве центра сертификации, делать это не рекомендуется, поскольку это открывает ваш VPN для ряда уязвимостей. Согласно официальной документации OpenVPN, вы должны разместить ЦС на отдельном компьютере, который будет отвечать за импорт и подписание запросов сертификатов. По этой причине в данном обучающем модуле предполагается, что ваш ЦС располагается на отдельном сервере Ubuntu 20.04, где также имеются пользователь без привилегий root с привилегиями sudo и базовый брандмауэр.

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

      После выполнения всех предварительных требований вы можете начать установку и настройку сервера OpenVPN в Ubuntu 20.04.

      Примечание. Обратите внимание, что если вы отключите аутентификацию с помощью пароля при настройке этих серверов, то можете столкнуться с трудностями при передаче файлов между ними, как предусматривается последующими разделами этого обучающего руководства. Чтобы устранить эту проблему, вам нужно будет заново включить аутентификацию с помощью пароля на каждом сервере. Также вы можете сгенерировать пару ключей SSH для каждого сервера и добавить публичный ключ SSH сервера OpenVPN в файл authorized_keys на компьютере ЦС, и наоборот. Дополнительные инструкции по этим решениям можно найти в обучающем модуле Настройка ключей SSH в Ubuntu 20.04.

      Шаг 1 — Установка OpenVPN и Easy-RSA

      Первый шаг этого руководства подразумевает установку OpenVPN и Easy-RSA. Easy-RSA — это инструмент управления инфраструктурой открытых ключей (PKI), который вы будете использовать на сервере OpenVPN для генерации запроса сертификата, который вы затем будете проверять и подписывать на сервере ЦС.

      Для начала обновите указатель пакетов сервера OpenVPN и установите OpenVPN и Easy-RSA. Оба пакета доступны в репозиториях Ubuntu по умолчанию, и поэтому вы можете использовать apt для установки:

      • sudo apt update
      • sudo apt install openvpn easy-rsa

      Далее вам потребуется создать новую директорию на сервере OpenVPN от имени вашего пользователя без прав root с названием ~/easy-rsa:

      Теперь вам нужно создать символьную ссылку из скрипта easyrsa, установленного пакетом в директории ~/easy-rsa, которую вы только что создали:

      • ln -s /usr/share/easy-rsa/* ~/easy-rsa/

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

      В заключение убедитесь, что владельцем директории является ваш пользователь без прав root с привилегиями sudo, и ограничьте доступ с помощью команды chmod:

      • sudo chown sammy ~/easy-rsa
      • chmod 700 ~/easy-rsa

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

      Шаг 2 — Создание PKI для OpenVPN

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

      Для создания директории PKI на сервере OpenVPN вам нужно указать в файле vars ряд значений по умолчанию. Используйте команду cd для перехода в каталог easy-rsa, а затем создайте и отредактируйте файл vars с помощью nano или другого предпочитаемого текстового редактора:

      После открытия файла вставьте следующие две строки:

      ~/easy-rsa/vars

      set_var EASYRSA_ALGO "ec"
      set_var EASYRSA_DIGEST "sha512"
      

      Эти две строки потребуются вам в файле vars на сервере OpenVPN, поскольку он не будет использоваться в качестве ЦС. Они будут гарантировать, что ваши закрытые ключи и запросы сертификата будут настроены для использования современной криптографии на эллиптических кривых (Elliptic Curve Cryptography, ECC) при генерации ключей и защищенных подписей для ваших клиентов и сервера OpenVPN.

      Под настройкой использования ECC для ваших серверов OpenVPN и ЦС подразумевается, что, когда клиент и сервер будут пытаться установить общий симметричный ключ, они будут использовать алгоритмы эллиптической кривой для обмена. Использование ECC для обмена ключами значительно быстрее, чем использование простого алгоритма Диффи — Хеллмана с классическим алгоритмом RSA, поскольку числа намного меньше, а вычисления выполняются быстрее.

      Справка: когда клиенты подключаются к OpenVPN, они используют асимметричное шифрование (также известное как открытый/закрытый ключ) для выполнения TLS-рукопожатия. Однако при передаче шифрованного VPN-трафика сервер и клиенты используют симметричное шифрование, которое также известно как шифрование общедоступного ключа.

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

      После добавления в файл vars данных вы можете перейти к созданию директории PKI. Для этого воспользуйтесь скриптом easyrsa с опцией init-pki. Хотя вы уже использовали эту команду на сервере ЦС в соответствии с предварительными требованиями, необходимо запустить ее здесь, поскольку сервер OpenVPN и сервер ЦС имеют разные директории PKI.

      Обратите внимание, что на сервере OpenVPN не нужно создавать центр сертификации. Ваш сервер ЦС отвечает за валидацию и подпись сертификатов. PKI на вашем сервере VPN используется только в качестве удобного и централизованного места хранения запросов сертификата и публичных сертификатов.

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

      Шаг 3 — Создание запроса сертификата и закрытого ключа сервера OpenVPN

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

      Для начала перейдите в директорию ~/easy-rsa на сервере OpenVPN, используя вашего пользователя без прав root:

      Теперь вы можете вызвать easyrsa с опцией gen-req, за которой необходимо указать стандартное имя для компьютера. Вы можете использовать любое стандартное имя, но лучше всего выбрать запоминающийся вариант. В этом обучающем руководстве для сервера OpenVPN будет использоваться стандартное имя server. Обязательно добавьте опцию nopass. Без этого файл запроса будет защищен паролем, что впоследствии может привести к проблемам с разрешениями.

      Примечание. Если вы выберете любое другое имя, а не server, вы должны будете следовать некоторым из приведенных ниже инструкций с изменениями. Например, при копировании сгенерированных файлов в директорию /etc/openvpn вам нужно будет указать правильные имена. Позднее вам нужно будет изменить файл etc/openvpn/server.conf, чтобы он указывал на соответствующие файлы .crt и .key.

      • ./easyrsa gen-req server nopass

      Output

      Common Name (eg: your user, host, or server name) [server]: Keypair and certificate request completed. Your files are: req: /home/sammy/easy-rsa/pki/reqs/server.req key: /home/sammy/easy-rsa/pki/private/server.key

      В результате будет создан закрытый ключ для сервера и файл запроса сертификата с именем server.req. Скопируйте ключ сервера в директорию /etc/openvpn/server:

      • sudo cp /home/sammy/easy-rsa/pki/private/server.key /etc/openvpn/server/

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

      Шаг 4 — Подпись запроса сертификата сервера OpenVPN

      На предыдущем шаге вы создали запрос на подпись сертификата (CSR) и закрытый ключ для сервера OpenVPN. Теперь сервер ЦС должен узнать о сертификате server и выполнить его валидацию. После подтверждения сертификата сервером ЦС и его отправки назад на сервер OpenVPN клиенты, которые доверяют вашему ЦС, также смогут доверять серверу OpenVPN.

      На сервере OpenVPN от имени вашего пользователя без прав root воспользуйтесь запросом на передачу или другим методом передачи для копирования запроса сертификата server.req на сервер ЦС для подписи:

      • scp /home/sammy/easy-rsa/pki/reqs/server.req sammy@your_ca_server_ip:/tmp

      Если вы выполнили предварительное требование обучающего модуля Установка и настройка Центра сертификации (ЦС) в Ubuntu 20.04, следующим шагом будет войти на сервер ЦС как пользователь без прав root, которого вы создали для управления ЦС. Вы использовали команду cd для перехода в каталог ~/easy-rsa, где вы создали и импортируйте запрос сертификата с помощью скрипта easyrsa:

      • cd ~/easy-rsa
      • ./easyrsa import-req /tmp/server.req server

      Output

      . . . The request has been successfully imported with a short name of: server You may now use this name to perform signing operations on this request.

      Далее подпишите запрос, запустив скрипт easyrsa с опцией sign-req и указанием типа запроса и стандартного имени. В качестве типа запроса может использоваться client или server. Поскольку мы работаем с запросом сертификата сервера OpenVPN, необходимо использовать тип запроса server:

      • ./easyrsa sign-req server server

      В выводе вам будет нужно подтвердить, что запрос поступил из надежного источника. Введите yes, а затем нажмите ENTER для подтверждения:

      Output

      You are about to sign the following certificate. Please check over the details shown below for accuracy. Note that this request has not been cryptographically verified. Please be sure it came from a trusted source or that you have verified the request checksum with the sender. Request subject, to be signed as a server certificate for 3650 days: subject= commonName = server Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes . . . Certificate created at: /home/sammy/easy-rsa/pki/issued/server.crt

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

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

      Для завершения настройки сертификатов скопируйте файлы server.crt и ca.crt с сервера ЦС на сервер OpenVPN:

      • scp pki/issued/server.crt sammy@your_vpn_server_ip:/tmp
      • scp pki/ca.crt sammy@your_vpn_server_ip:/tmp

      Теперь вернитесь на ваш сервер OpenVPN, скопируйте файлы из /tmp в /etc/openvpn/server:

      • sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/server

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

      Шаг 5 — Настройка криптографических материалов OpenVPN

      В качестве дополнительного уровня безопасности мы добавим дополнительный общий секретный ключ, который будет использовать сервер и все клиенты, с помощью директивы OpenVPN tls-crypt. Эта опция используется, чтобы «затемнить» сертификат TLS, используемый, когда сервер и клиент первоначально подключаются друг к другу. Также она используется сервером OpenVPN для выполнения быстрых проверок входящих пакетов: если пакет подписан с помощью предварительно предоставленного ключа, сервер обрабатывает его, если подпись отсутствует, сервер понимает, что пакет получен из непроверенного источника, и может отклонить его, не выполняя дополнительную работу по расшифровке.

      Эта опция поможет убедиться, что ваш сервер OpenVPN может справляться с неудостоверенным трафиком, сканированием портов и DoS-атаками, которые могут связывать ресурсы сервера. Она также затрудняет выявление сетевого трафика OpenVPN.

      Для получения предварительно предоставленного ключа tls-crypt​​​ запустите следующую команду на сервере OpenVPN в директории ~/easy-rsa:

      • cd ~/easy-rsa
      • openvpn --genkey --secret ta.key

      В результате вы получите файл с именем ta.key. Скопируйте его в директорию /etc/openvpn/server/:

      • sudo cp ta.key /etc/openvpn/server

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

      Шаг 6 — Создание сертификата клиента и пары ключей

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

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

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

      • mkdir -p ~/client-configs/keys

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

      • chmod -R 700 ~/client-configs

      Вернитесь в директорию EasyRSA и запустите скрипт easyrsa с опциями gen-req и nopass, указав обычное имя клиента:

      • cd ~/easy-rsa
      • ./easyrsa gen-req client1 nopass

      Нажмите ENTER, чтобы подтвердить обычное имя. Скопируйте файл client1.key в ранее созданную директорию ~/client-configs/keys/​​​:

      • cp pki/private/client1.key ~/client-configs/keys/

      Затем передайте файл client1.req на сервер ЦС, используя безопасный метод:

      • scp pki/reqs/client1.req sammy@your_ca_server_ip:/tmp

      Теперь выполните вход на ваш сервер ЦС. Затем перейдите в директорию EasyRSA и импортируйте запрос сертификата:

      • cd ~/easy-rsa
      • ./easyrsa import-req /tmp/client1.req client1

      Затем подпишите запрос, как вы делали это для сервера на предыдущем шаге. Однако в этот раз обязательно укажите тип запроса client:

      • ./easyrsa sign-req client client1

      При запросе введите yes, чтобы подтвердить, что вы планируете подписать запрос сертификата и что он поступил из доверенного источника:

      Output

      Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes

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

      В результате будет создан файл клиентского сертификата с именем client1.crt. Переместите этот файл обратно на сервер.

      • scp pki/issued/client1.crt sammy@your_server_ip:/tmp

      Вернитесь на ваш сервер OpenVPN, скопируйте клиентский сертификат в директорию ~/client-configs/keys/​​:

      • cp /tmp/client1.crt ~/client-configs/keys/

      Затем скопируйте файлы ca.crt и ta.key в директорию ~/client-configs/keys/ и предоставьте соответствующие разрешения для вашего пользователя sudo:

      • cp ~/easy-rsa/ta.key ~/client-configs/keys/
      • sudo cp /etc/openvpn/server/ca.crt ~/client-configs/keys/
      • sudo chown sammy.sammy ~/client-configs/keys/*

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

      Шаг 7 — Настройка OpenVPN

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

      Вначале скопируйте файл server.conf в качестве отправной точки для вашего собственного файла конфигурации:

      • sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/server/
      • sudo gunzip /etc/openvpn/server/server.conf.gz

      Откройте новый файл для редактирования в текстовом редакторе по вашему выбору. В нашем случае мы будем использовать nano:

      • sudo nano /etc/openvpn/server/server.conf

      Нам нужно изменить несколько строк в этом файле. Сначала необходимо найти раздел HMAC в конфигурации, выполнив поиск директивы tls-auth. Эта строка должна быть разкомментирована. Закомментируйте ее, добавив ; в начало строки. Затем добавьте после нее новую строку, содержащую только значение tls-crypt ta.key​​​:

      /etc/openvpn/server/server.conf

      ;tls-auth ta.key 0 # This file is secret
      tls-crypt ta.key
      

      Затем найдите раздел криптографических шифров, выполнив поиск строк с текстом cipher. По умолчанию установлено значение AES-256-CBC, однако шифр AES-256-GCM обеспечивает более высокий уровень шифрования, производительности и лучше поддерживается современными клиентами OpenVPN. Мы закомментируем значение по умолчанию, добавив ; в начало этой строки, а затем добавим другую строку после нее, содержащую обновленное значение AES-256-GCM:

      /etc/openvpn/server/server.conf

      ;cipher AES-256-CBC
      cipher AES-256-GCM
      

      Сразу после этой строки добавьте директиву auth для выбора алгоритма выборки сообщений HMAC. Для этого хорошо подойдет SHA256:

      /etc/openvpn/server/server.conf

      auth SHA256
      

      Затем найдите строку с директивой dh, которая определяет параметры алгоритма Диффи — Хеллмана. Поскольку мы настроили все сертификаты для использования криптографии на эллиптических кривых, нет необходимости в использовании файла прототипа Диффи — Хеллмана. Закомментируйте существующую строку dh dh2048.pem​​​ или dh dh.pem. Имя файла для ключа Диффи — Хеллмана может отличаться от того, что перечислено в примере файла конфигурации сервера. Затем добавьте строку после нее с содержанием dh none:

      /etc/openvpn/server/server.conf

      ;dh dh2048.pem
      dh none
      

      Далее нам нужно запустить OpenVPN без привилегий, с которыми он запущен, поэтому нам нужно указать на необходимость запуска с пользователем nobody и группой nogroup. Чтобы активировать эту возможность, найдите и разкомментируйте строки user nobody и group nogroup, удалив ; в начале каждой строки:

      /etc/openvpn/server/server.conf

      user nobody
      group nogroup
      

      (Необязательно) Изменение DNS для перенаправления всего трафика через сеть VPN

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

      Для начала найдите и разкомментируйте строку push "redirect-gateway def1 bypass-dhcp". Она будет сообщать вашему клиенту о необходимости перенаправлять весь трафик через ваш сервер OpenVPN. Обратите внимание, что при активации этой функции могут возникать проблемы с подключением к другим сетевым службам, например SSH:

      /etc/openvpn/server/server.conf

      push "redirect-gateway def1 bypass-dhcp"
      

      Под этой строкой найдите раздел dhcp-option. Удалите ; в начале обеих строк, чтобы разкомментировать эти строки:

      /etc/openvpn/server/server.conf

      push "dhcp-option DNS 208.67.222.222"
      push "dhcp-option DNS 208.67.220.220"
      

      Эти строки будут сообщать вашему клиенту о необходимости использования бесплатных интерпретаторов OpenDNS на перечисленных IP-адресах. Если вы предпочитаете использовать другие интерпретаторы DNS, вставьте их на место выделенных IP-адресов.

      Это поможет клиентам изменить настройки DNS, чтобы туннель VPN использовался как шлюз по умолчанию.

      (Необязательно) Изменение порта и протокола

      По умолчанию сервер OpenVPN использует для подключения клиентов порт 1194 и протокол UDP. Если вам потребуется использовать другой порт из-за ограничений сети клиента, вы можете изменить номер порта. Если вы не храните веб-контент на сервере OpenVPN, вам подойдет порт 443, поскольку его обычно не запрещают правила брандмауэра.

      Чтобы заставить OpenVPN прослушивать порт 443, откройте файл server.conf и найдите строку, которая выглядит следующим образом:

      /etc/openvpn/server/server.conf

      port 1194
      

      Измените ее, указав порт 443:

      /etc/openvpn/server/server.conf

      # Optional!
      port 443
      

      Довольно часто этот порт также ограничивает протокол. В этом случае найдите строку proto под строкой port и измените протокол с udp на tcp:

      /etc/openvpn/server/server.conf

      # Optional!
      proto tcp
      

      Если вы действительно смените протокол на TCP, вам нужно будет изменить значение директивы explicit-exit-notify с 1 на 0, поскольку эта директива используется только протоколом UDP. В противном случае при запуске службы OpenVPN возможны ошибки протокола TCP.

      Найдите строку explicit-exit-notify в конце файла и измените значение на 0:

      /etc/openvpn/server/server.conf

      # Optional!
      explicit-exit-notify 0
      

      Если вам не нужно использовать другие порт и протокол, лучше всего оставить эти настройки без изменений.

      (Необязательно) Указание на учетные данные, отличающиеся от используемых по умолчанию

      Если вы выбрали другое имя при вводе команды ./easyrsa gen-req server ранее, измените строки cert и key​​​ в файле конфигурации server.conf​​, чтобы они указывали на соответствующие файлы .crt и .key. Если вы использовали имя по умолчанию server, можно считать, что все уже настроено корректно:

      /etc/openvpn/server/server.conf

      cert server.crt
      key server.key
      

      После завершения редактирования сохраните и закройте файл.

      Вы успешно завершили настройку общих параметров OpenVPN. На следующем шаге мы настроим сетевые параметры сервера.

      Шаг 8 — Настройка конфигурации сети сервера OpenVPN

      Чтобы OpenVPN мог правильно перенаправлять трафик через сеть VPN, необходимо изменить некоторые параметры конфигурации сети сервера. Прежде всего нужно изменить параметр IP forwarding, который определяет необходимость перенаправления IP-трафика. Это необходимо для реализации функций VPN, обеспечиваемых вашим сервером.

      Чтобы изменить используемые по умолчанию настройки IP-передачи сервера OpenVPN, откройте файл /etc/sysctl.conf с помощью nano или предпочитаемого редактора:

      • sudo nano /etc/sysctl.conf

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

      /etc/sysctl.conf

      net.ipv4.ip_forward = 1
      

      Сохраните файл и закройте его после завершения.

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

      Output

      net.ipv4.ip_forward = 1

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

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

      Шаг 9 — Настройка брандмауэра

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

      Если вы выполнили предварительные требования, указанные в начале этого обучающего модуля, у вас на сервере должен быть установлен и запущен ufw. Чтобы разрешить OpenVPN через брандмауэр, вам нужно будет включить маскировку. Маскировка — это концепция таблиц iptables, на основе которой выполняется автоматическая трансляция сетевых адресов (NAT) для правильной маршрутизации клиентских соединений.

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

      Строка после слова «dev» в этой команде — это ваш публичный интерфейс. Например, в этом результате показан интерфейс с именем eth0, который выделен ниже:

      Output

      default via 159.65.160.1 dev eth0 proto static

      Когда у вас будет интерфейс, связанный с маршрутом по умолчанию, откройте файл /etc/ufw/before.rules, чтобы добавить соответствующую конфигурацию:

      • sudo nano /etc/ufw/before.rules

      Правила UFW обычно добавляются с помощью команды ufw. Правила, перечисленные в файле before.rules, считываются и активируются до загрузки обычных правил UFW. Добавьте в верхнюю часть файла выделенные ниже строки. После этого будет задана политика по умолчанию для цепочки POSTROUTING в таблице nat, и любой трафик из VPN будет маскироваться. Обязательно замените eth0 в строке -A POSTROUTING на интерфейс, определенный с помощью следующей команды:

      /etc/ufw/before.rules

      #
      # rules.before
      #
      # Rules that should be run before the ufw command line added rules. Custom
      # rules should be added to one of these chains:
      #   ufw-before-input
      #   ufw-before-output
      #   ufw-before-forward
      #
      
      # START OPENVPN RULES
      # NAT table rules
      *nat
      :POSTROUTING ACCEPT [0:0]
      # Allow traffic from OpenVPN client to eth0 (change to the interface you discovered!)
      -A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
      COMMIT
      # END OPENVPN RULES
      
      # Don't delete these required lines, otherwise there will be errors
      *filter
      . . .
      

      Сохраните файл и закройте его после завершения.

      Затем вам нужно будет указать UFW разрешать перенаправление пакетов по умолчанию. Для этого откройте файл /etc/default/ufw:

      • sudo nano /etc/default/ufw

      Найдите в файле директиву DEFAULT_FORWARD_POLICY и измените значение с DROP на ACCEPT:

      /etc/default/ufw

      DEFAULT_FORWARD_POLICY="ACCEPT"
      

      Сохраните файл и закройте его после завершения.

      Затем измените настройки брандмауэра, чтобы разрешить трафик OpenVPN. Если вы не изменили порт и протокол в файле /etc/openvpn/server.conf, вам нужно будет открыть трафик UDP на порту 1194. Если вы изменили порт или протокол, замените выбранные здесь значения.

      Если вы забыли добавить порт SSH при выполнении предварительных требований, добавьте его сейчас:

      • sudo ufw allow 1194/udp
      • sudo ufw allow OpenSSH

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

      • sudo ufw disable
      • sudo ufw enable

      Теперь ваш сервер настроен для правильной обработки трафика OpenVPN. После создания правил брандмауэра мы можем запустить службу OpenVPN на сервере.

      Шаг 10 — Запуск OpenVPN

      OpenVPN работает как служба systemd, поэтому мы можем использовать systemctl для управления. Мы настроим для OpenVPN запуск при загрузке, чтобы вы могли подключаться к вашей VPN в любое время, пока ваш сервер работает. Для этого активируйте службу OpenVPN, добавив ее в systemctl:

      • sudo systemctl -f enable openvpn-server@server.service

      Затем запустите службу OpenVPN:

      • sudo systemctl start openvpn-server@server.service

      Еще раз проверьте, что служба OpenVPN активна, воспользовавшись следующей командой. Вы должны увидеть в выводе active (running):

      • sudo systemctl status openvpn-server@server.service

      Output

      ● openvpn-server@server.service - OpenVPN service for server Loaded: loaded (/lib/systemd/system/openvpn-server@.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2020-04-29 15:39:59 UTC; 6s ago Docs: man:openvpn(8) https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage https://community.openvpn.net/openvpn/wiki/HOWTO Main PID: 16872 (openvpn) Status: "Initialization Sequence Completed" Tasks: 1 (limit: 1137) Memory: 1.0M CGroup: /system.slice/system-openvpnx2dserver.slice/openvpn-server@server.service └─16872 /usr/sbin/openvpn --status /run/openvpn-server/status-server.log --status-version 2 --suppress-timestamps --c> . . . . . . Apr 29 15:39:59 ubuntu-20 openvpn[16872]: Initialization Sequence Completed

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

      Шаг 11 — Создание инфраструктуры конфигурации клиентских систем

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

      Для начала создайте новую директорию для хранения файлов конфигурации клиентов в ранее созданной директории client-configs:

      • mkdir -p ~/client-configs/files

      Затем скопируйте файл с образцом конфигурации клиента в директорию client-configs, чтобы использовать ее как базовую конфигурацию:

      • cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf

      Откройте новый файл в nano или предпочитаемом текстовом редакторе:

      • nano ~/client-configs/base.conf

      Найдите в файле директиву remote. Она указывает клиенту адрес сервера OpenVPN, т. е. публичный IP-адрес вашего сервера OpenVPN. Если вы решили изменить порт, который будет прослушивать сервер OpenVPN, вам нужно будет заменить 1194 на выбранный порт:

      ~/client-configs/base.conf

      . . .
      # The hostname/IP and port of the server.
      # You can have multiple remote entries
      # to load balance between the servers.
      remote your_server_ip 1194
      . . .
      

      Протокол должен соответствовать значениям, используемым в конфигурации сервера:

      ~/client-configs/base.conf

      proto udp
      

      Разкомментируйте директивы user и group, удалив символ ; в начале каждой строки:

      ~/client-configs/base.conf

      # Downgrade privileges after initialization (non-Windows only)
      user nobody
      group nogroup
      

      Найдите директивы, задающие ca, cert и key. Поставьте знак комментария перед строками этих директив, поскольку вы вскоре добавите сертификаты и ключи в сам файл:

      ~/client-configs/base.conf

      # SSL/TLS parms.
      # See the server config file for more
      # description. It's best to use
      # a separate .crt/.key file pair
      # for each client. A single ca
      # file can be used for all clients.
      ;ca ca.crt
      ;cert client.crt
      ;key client.key
      

      Затем закомментируйте директиву tls-auth, поскольку вы добавите ta.key прямо в файл конфигурации клиента (а сервер настроен на использование tls-crypt):

      ~/client-configs/base.conf

      # If a tls-auth key is used on the server
      # then every client must also have the key.
      ;tls-auth ta.key 1
      

      Создайте зеркало настроек cipher и auth, заданных в файле /etc/openvpn/server/server.conf​​​:

      ~/client-configs/base.conf

      cipher AES-256-GCM
      auth SHA256
      

      Затем добавьте в файл директиву key-direction. Вы должны задать значение «1», чтобы VPN правильно работала на клиентском компьютере:

      ~/client-configs/base.conf

      key-direction 1
      

      В заключение добавьте несколько закомментированных строк для обработки различных методов, которые клиенты VPN на базе Linux будут использовать для разрешения DNS. Также мы добавим два похожих, но отдельных набора закомментированных строк. Первый набор предназначен для клиентов, которые не используют systemd-resolved для управления DNS. Эти клиенты используют утилиту resolvconf для обновления информации DNS для клиентов Linux.

      ~/client-configs/base.conf

      ; script-security 2
      ; up /etc/openvpn/update-resolv-conf
      ; down /etc/openvpn/update-resolv-conf
      

      Теперь добавьте другой набор строк для клиентов, которые используют systemd-resolved для разрешения DNS:

      ~/client-configs/base.conf

      ; script-security 2
      ; up /etc/openvpn/update-systemd-resolved
      ; down /etc/openvpn/update-systemd-resolved
      ; down-pre
      ; dhcp-option DOMAIN-ROUTE .
      

      Сохраните файл и закройте его после завершения.

      На шаге 13 «Установка конфигурации клиента» этого обучающего модуля вы узнаете, как определять, работает ли разрешение DNS для клиентов Linux, и какой раздел нужно разкомментировать.

      Далее создайте простой скрипт, который скомпилирует базовую конфигурацию с соответствующим сертификатом, ключом и файлами шифрования, и поместите сгенерированную конфигурацию в директорию ~/client-configs/files. Откройте новый файл с именем make_config.sh в директории ~/client-configs:

      • nano ~/client-configs/make_config.sh

      Добавьте в файл следующее:

      ~/client-configs/make_config.sh

      #!/bin/bash
      
      # First argument: Client identifier
      
      KEY_DIR=~/client-configs/keys
      OUTPUT_DIR=~/client-configs/files
      BASE_CONFIG=~/client-configs/base.conf
      
      cat ${BASE_CONFIG} 
          <(echo -e '<ca>') 
          ${KEY_DIR}/ca.crt 
          <(echo -e '</ca>n<cert>') 
          ${KEY_DIR}/${1}.crt 
          <(echo -e '</cert>n<key>') 
          ${KEY_DIR}/${1}.key 
          <(echo -e '</key>n<tls-crypt>') 
          ${KEY_DIR}/ta.key 
          <(echo -e '</tls-crypt>') 
          > ${OUTPUT_DIR}/${1}.ovpn
      

      Сохраните файл и закройте его после завершения.

      Прежде чем продолжить, отметьте этот файл как исполняемый, введя следующую команду:

      • chmod 700 ~/client-configs/make_config.sh

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

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

      Шаг 12 — Создание конфигураций клиентов

      Если вы следовали указаниям руководства, на шаге 6 вы создали клиентский сертификат и ключ с именами client1.crt и client1.key соответственно. Вы можете сгенерировать файл конфигурации для этих учетных данных, перейдя в директорию ~/client-configs и запустив скрипт, созданный в конце предыдущего шага:

      • cd ~/client-configs
      • ./make_config.sh client1

      При этом файл client1.ovpn будет создан в директории ~/client-configs/files:

      • ls ~/client-configs/files

      Output

      client1.ovpn

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

      Хотя конкретные приложения для передачи зависят от операционной системы устройства и ваших предпочтений, один из наиболее надежных и безопасных способов — использовать SFTP (протокол передачи файлов SSH) или SCP (защищенное копирование) на стороне сервера. При этом файлы аутентификации VPN вашего клиента будут передаваться через шифрованное соединение.

      Здесь представлен пример команды SFTP, которую можно запустить с локального компьютера (под управлением macOS или Linux). Она будет копировать файл client1.ovpn, который мы создали на последнем шаге, в вашу домашнюю директорию:

      • sftp sammy@openvpn_server_ip:client-configs/files/client1.ovpn ~/

      Ниже представлено несколько инструментов и обучающих руководств для безопасной передачи файлов с сервера OpenVPN на локальный компьютер:

      Шаг 13 — Установка клиентской конфигурации

      В этом разделе рассказывается о том, как установить клиентский профиль VPN в Windows, macOS, Linux, iOS и Android. Эти инструкции не зависят друг от друга, так что вы можете сразу перейти к той, которая относится к вашему устройству.

      Подключение OpenVPN будет иметь имя, совпадающее с именем файла .ovpn. В этом обучающем руководстве это означает, что соединение будет иметь имя client1.ovpn, что соответствует первому сгенерированному клиентскому файлу.

      Windows

      Установка

      Загрузите клиентское приложение OpenVPN для Windows со страницы загрузки OpenVPN. Выберите подходящую версию программы установки для вашей версии Windows.

      Примечание. Для установки OpenVPN требуются права администратора.

      После установки OpenVPN, скопируйте файл .ovpn в:

      C:Program FilesOpenVPNconfig
      

      При запуске OpenVPN профиль будет автоматически обнаружен и сделан доступным.

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

      Чтобы настроить приложение OpenVPN для запуска от имени администратора при каждом запуске, нажмите правой кнопкой мыши на его ярлык и выберите пункт Свойства. Внизу вкладки Совместимость нажмите кнопку Изменить параметры для всех пользователей. В новом окне установите отметку Запускать эту программу от имени администратора.

      Подключение

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

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

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

      Отключение от VPN выполняется аналогично: перейдите в область задач, нажмите значок приложения OpenVPN правой кнопкой мыши, выберите профиль клиента и нажмите Отключиться.

      macOS

      Установка

      Tunnelblick — бесплатный клиент OpenVPN с открытым исходным кодом для macOS. Вы можете загрузить последний образ этого клиентского приложения со страницы загрузки Tunnelblick. Дважды нажмите загруженный файл .dmg и следуйте указаниям по установке.

      В конце процесса установки Tunnelblick спросит, есть ли у вас файлы конфигурации. Укажите ответ У меня есть файлы конфигурации и дайте Tunnelblick завершить работу. Откройте окно Finder и дважды нажмите client1.ovpn. Tunnelblick установит клиентский профиль. Для этого требуются привилегии администратора.

      Подключение

      Запустите Tunnelblick, дважды щелкнув значок Tunnelblick в папке Приложения. После запуска Tunnelblick в панели меню в правом верхнем углу экрана появится значок Tunnelblick для управления соединениями. Нажмите на значок, а затем нажмите на пункт меню Подключить client1, чтобы создать соединение VPN.

      Linux

      Установка

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

      Однако проще всего будет использовать для этой цели программное обеспечение OpenVPN.

      В Ubuntu или Debian вы можете установить его так же, как и на сервере, введя следующую команду:

      • sudo apt update
      • sudo apt install openvpn

      В CentOS вы можете активировать репозитории EPEL и выполнить установку, введя следующую команду:

      • sudo dnf install epel-release
      • sudo dnf install openvpn

      Настройка клиентов, использующих systemd-resolved

      Вначале определите, использует ли ваша система systemd-resolved для разрешения DNS, проверив файл /etc/resolv.conf:

      Output

      # This file is managed by man:systemd-resolved(8). Do not edit. . . . nameserver 127.0.0.53 options edns0

      Если ваша система настроена для использования systemd-resolved для разрешения DNS, IP-адрес после опции nameserver будет иметь значение 127.0.0.53. Также в файле должны быть комментарии, в частности информация о том, как systemd-resolved управляет файлом. Если у вас отображается не 127.0.0.53, а другой IP-адрес, то есть вероятность, что ваша система не использует systemd-resolved. В этом случае вы можете перейти к следующему разделу, предназначенному для настройки клиентов Linux, использующих скрипт update-resolv-conf.

      Для поддержки этих клиентов нужно предварительно установить пакет openvpn-systemd-resolved. Он содержит скрипты, принудительно запускающие использование systemd-resolved для разрешения DNS сервером VPN.

      • sudo apt install openvpn-systemd-resolved

      После установки пакета настройте клиент для его использования и отправки всех запросов DNS через интерфейс VPN. Откройте файл VPN клиента:

      Разкомментируйте следующие строки, добавленные вами ранее:

      client1.ovpn

      script-security 2
      up /etc/openvpn/update-systemd-resolved
      down /etc/openvpn/update-systemd-resolved
      down-pre
      dhcp-option DOMAIN-ROUTE .
      

      Настройка клиентов, использующих update-resolv-conf

      Если ваша система не использует systemd-resolved для управления DNS, проверьте наличие в вашем дистрибутиве скрипта /etc/openvpn/update-resolv-conf:

      Output

      update-resolv-conf

      Если в вашем клиенте имеется файл update-resolv-conf, измените ранее переданный файл конфигурации клиента OpenVPN:

      Разкомментируйте три добавленные вами строки для изменения настроек DNS:

      client1.ovpn

      script-security 2
      up /etc/openvpn/update-resolv-conf
      down /etc/openvpn/update-resolv-conf
      

      Если вы используете CentOS, измените директиву group с nogroup на nobody для соответствия доступным группам дистрибутива:

      client1.ovpn

      group nobody
      

      Сохраните и закройте файл.

      ** Подключение **

      Теперь для подключения к VPN вы можете просто указать команде openvpn файл конфигурации клиента:

      • sudo openvpn --config client1.ovpn

      Эта команда должна установить подключение к вашей VPN.

      Примечание. Если ваш клиент использует systemd-resolved для управления DNS, проверьте правильность применения настроек, запустив команду systemd-resolve --status:

      • systemd-resolve --status tun0

      Результат будет выглядеть следующим образом:

      Output

      Link 22 (tun0) . . . DNS Servers: 208.67.222.222 208.67.220.220 DNS Domain: ~.

      Если вы видите IP-адреса серверов DNS, настроенные вами на сервере OpenVPN, и настройку ~. для DNS Domain в выводе, это означает, что вы правильно настроили клиент для управления DNS на сервере VPN. Также вы можете проверить отправку запросов DNS через VPN используя сайт DNS leak test.com или другой подобный сайт.

      iOS

      Установка

      Найдите в магазине приложений iTunes App Store приложение OpenVPN Connect, официальный клиент OpenVPN для iOS, и установите его. Чтобы переместить конфигурацию клиента iOS на устройство, подключите его к компьютеру напрямую.

      Здесь описан процесс завершения передачи с помощью iTunes. Откройте iTunes на компьютере и нажмите iPhone > приложения. Прокрутите страницу до раздела Общий доступ к файлам и нажмите на приложение OpenVPN. Пустое окно справа OpenVPN Documents предназначено для общего доступа к файлам. Перетащите файл .ovpn в окно OpenVPN Documents. iTunes, показывающий профиль VPN, готовый к подключению iPhone

      Запустите приложение OpenVPN на iPhone. Вы получите уведомление, что новый профиль готов к импорту. Нажмите зеленый значок плюс, чтобы импортировать его.

      Приложение OpenVPN для iOS показывает, что новый профиль готов к импорту Подключение

      Приложение OpenVPN готово к использованию нового профиля. Установите соединение, передвинув кнопку Подключиться в положение Вкл. Для отключения передвиньте эту же кнопку в положение Выкл.

      Примечание. Переключатель VPN в разделе Настройки нельзя использовать для подключения к VPN. Если вы попробуете сделать это, вы получите уведомление о том, что для подключения нужно использовать приложение OpenVPN.

      Приложение OpenVPN для iOS, подключенное к VPN

      Android

      Установка

      Откройте магазин приложений Google Play Store. Найдите приложение Android OpenVPN Connect, официальное клиентское приложение OpenVPN для Android, и установите его.

      Вы можете переместить профиль .ovpn, подключив устройство Android к вашему компьютеру через интерфейс USB и скопировав файл. Если у вас в компьютере есть разъем для SD-карт, вы можете извлечь SD-карту из устройства, скопировать на нее профиль и вставить карту обратно в устройство Android.

      Запустите приложение OpenVPN и нажмите меню FILE, чтобы импортировать профиль.

      Выбор меню импорта профиля в приложении OpenVPN для Android

      Затем перейдите в местоположение сохраненного профиля (на снимке экрана используется расположение /storage/emulated/0/openvpn) и выберите файл .ovpn​​​. Нажмите кнопку IMPORT, чтобы завершить импорт этого профиля.

      Приложение OpenVPN для Android выбирает профиль VPN для импорта

      Подключение После добавления профиля вы увидите следующий экран:

      Приложение OpenVPN для Android с добавленным новым профилем

      Для подключения нажмите кнопку-переключатель рядом с профилем, который вы хотите использовать. Вы увидите статистические данные вашего подключения в режиме реального времени и трафик, проходящий через ваш сервер OpenVPN: Приложение OpenVPN для Android, подключенное к VPN

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

      Шаг 14 — Тестирование соединения VPN (необязательно)

      Примечание. Этот метод тестирования подключения VPN будет работать только в случае, если вы выбрали перенаправление всего трафика через VPN на шаге 7 при редактировании файла server.conf​​ для OpenVPN.

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

      Сайт покажет IP-адрес, назначенный вашим интернет-провайдером и видный остальному миру. Чтобы проверить настройки DNS через этот же сайт, нажмите Расширенный тест, и вы увидите, какие серверы DNS вы используете.

      Теперь подключите клиент OpenVPN к VPN вашего дроплета и обновите браузер. Вы увидите совершенно другой IP-адрес (адрес вашего сервера VPN), и именно этот адрес будет виден остальному миру. Итак, в приложении DNSLeakTest функция Расширенный тест проверит ваши настройки DNS и подтвердит, что вы используете параметры DNS, заданные вашей VPN.

      Шаг 15 — Отзыв сертификатов клиента

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

      Для этого используйте пример из предварительного обучающего модуля Установка и настройка центра сертификации в Ubuntu 20.04 из раздела Отзыв сертификата.

      После отзыва сертификата для клиента с помощью этих инструкций вам нужно будет скопировать созданный файл crl.pem на ваш сервер OpenVPN в директорию /etc/openvpn/server:

      • sudo cp /tmp/crl.pem /etc/openvpn/server/

      Затем откройте файл конфигурации сервера OpenVPN:

      • sudo nano /etc/openvpn/server/server.conf

      Добавьте в конце файла опцию crl-verify, чтобы сервер OpenVPN проверял созданный нами список отзыва сертификатов при каждой попытке подключения:

      /etc/openvpn/server/server.conf

      crl-verify crl.pem
      

      Сохраните и закройте файл.

      Перезапустите OpenVPN, чтобы завершить отзыв сертификата:

      • sudo systemctl restart openvpn-server@server.service

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

      Чтобы запретить доступ другим клиентам, повторите эту процедуру:

      1. Для отзыва сертификата используется команда ./easyrsa revoke client_name.
      2. Создайте новый список CRL.
      3. Переместите новый файл crl.pem на сервер OpenVPN и скопируйте его в директорию /etc/openvpn/server/, чтобы перезаписать старый список.
      4. Перезапустите службу OpenVPN.

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

      Заключение

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

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

      Для настройки большего числа клиентов вам нужно выполнить шаги 6 и 11–13 для каждого дополнительного устройства. Чтобы запретить доступ клиентским системам, следуйте указаниям в шаге 15.



      Source link

      Мониторинг состояния сервера с помощью Checkmk на Ubuntu 18.04


      Автор выбрал фонд Open Internet/Free Speech для получения пожертвования в рамках программы Write for DOnations.

      Введение

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

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

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

      Однако Checkmk — это решение для мониторинга, которое является надежным и в то же время простым в установке. Это отдельный пакет программного обеспечения, который включает Nagios (популярную систему оповещения с открытым исходным кодом) и дополнительные средства сбора, мониторинга и создания графиков данных. Также есть веб-интерфейс Checkmk — универсальный инструмент для устранения большинства недостатков Nagios. Здесь используется удобная информационная панель, полноценная система уведомлений и хранилище простых в установке агентов мониторинга большинства дистрибутивов Linux. Без веб-интерфейса Checkmk нам бы пришлось использовать разные представления для разных задач и прибегать к сложным файловым модификациям для конфигурации всех этих функций.

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

      Предварительные требования

      Шаг 1 — Установка Checkmk на Ubuntu

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

      Вначале обновим список пакетов, чтобы получить последнюю версию списка репозитория:

      Для просмотра пакетов можно перейти на сайт списка пакетов. Среди прочих можно выбрать Ubuntu 18.04 в меню страницы.

      Теперь загрузите пакет:

      • wget https://checkmk.com/support/1.6.0p8/check-mk-raw-1.6.0p8_0.bionic_amd64.deb

      Затем установите только что загруженный пакет:

      • sudo apt install -y ./check-mk-raw-1.6.0p8_0.bionic_amd64.deb

      Эта команда установит пакет Checkmk со всеми необходимыми зависимостями, включая веб-сервер Apache, который используется для веб-доступа к интерфейсу мониторинга.

      По завершении установки теперь можно получить доступ к команде omd. Попробуйте сделать следующее:

      Эта команда omd выведет следующее:

      Output

      Usage (called as root): omd help Show general help . . . General Options: -V <version> set specific version, useful in combination with update/create omd COMMAND -h, --help show available options of COMMAND

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

      Шаг 2 — Изменение настроек брандмауэра

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

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

      Чтобы предоставить доступ к Apache, воспользуйтесь следующей командой:

      Теперь проверьте изменения:

      Вы увидите, что Apache указан в списке разрешенных служб:

      Output

      Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Apache ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Apache (v6) ALLOW Anywhere (v6)

      Это позволит нам получить доступ к веб-интерфейсу Checkmk.

      В следующем шаге мы создадим первый экземпляр мониторинга Checkmk.

      Шаг 3 — Создание экземпляра мониторинга Checkmk

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

      Сначала необходимо присвоить имя для нового экземпляра, и мы будем использовать monitoring далее по тексту. Для создания экземпляра введите:

      • sudo omd create monitoring

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

      Output

      Adding /opt/omd/sites/monitoring/tmp to /etc/fstab. Creating temporary filesystem /omd/sites/monitoring/tmp...OK Restarting Apache...OK Created new site monitoring with version 1.6.0p8.cre. The site can be started with omd start monitoring. The default web UI is available at http://your_ubuntu_server/monitoring/ The admin user for the web applications is cmkadmin with password: your-default-password (It can be changed with 'htpasswd -m ~/etc/htpasswd cmkadmin' as site user.) Please do a su - monitoring for administration of this site.

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

      • sudo omd start monitoring

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

      Output

      Starting mkeventd...OK Starting rrdcached...OK Starting npcd...OK Starting nagios...OK Starting apache...OK Initializing Crontab...OK

      Экземпляр готов и запущен.

      Для доступа к экземпляру Checkmk откройте http://your_ubuntu_server_ip/monitoring/ в браузере. Вам будет предложено ввести пароль. Используйте учетные данные по умолчанию, напечатанные ранее на экране, позже мы их изменим.

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

      Пустая информационная панель Checkmk

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

      Шаг 4 — Изменение пароля администратора

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

      Сначала откройте страницу Users в меню WATO — Configuration слева. В списке отобразятся все пользователи, у которых сейчас есть доступ к сайту Checkmk. Сразу после установки в нем будет только два пользователя. Первый — automation — предназначен для использования с автоматизированными инструментами, второй — cmkadmin — пользователь для выполнения входа на сайт.

      Список пользователей Checkmk

      Нажмите на значок карандаша возле пользователя cmkadmin, чтобы изменить данные, включая пароль.

      Форма для редактирования пользователя-администратора Checkmk

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

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

      Еще раз откройте страницу Users​​​ в меню WATO — Configuration​​​ слева. Кнопка оранжевого цвета в верхнем левом углу, отмеченная как 1 Change, говорит о том, что выполнены изменения конфигурации Checkmk, которые требуется сохранить и активировать. Это будет происходить при каждом изменении конфигурации нашей системы мониторинга, а не только после изменения учетных данных пользователя. Для сохранения и активации ожидающих изменений необходимо нажать на эту кнопку и дать согласие на активацию указанных изменений с помощью опции Activate affected​​ на следующем экране.

      Список пользователей Checkmk после выполнения измененийЭкран подтверждения активации изменений конфигурацииУспешная активация изменений конфигурации

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

      Установка Checkmk теперь готова к использованию. В следующем шаге мы добавим первый хост в нашу систему мониторинга.

      Шаг 5 — Мониторинг первого хоста

      Теперь мы готовы к мониторингу первого хоста. Для этого сначала установим check-mk-agent на сервер Ubuntu. Затем мы ограничим доступ к данным мониторинга с помощью xinetd.

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

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

      Установка агента

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

      Для начала необходимо установить агент Checkmk. Пакеты для всех основных дистрибутивов, включая Ubuntu, доступны прямо в веб-интерфейсе. Откройте страницу Monitoring Agents в меню WATO — Configuration слева. Вы увидите доступные для загрузки агенты с наиболее популярными пакетами в первом разделе, отмеченном Packaged agents​​​.

      Список доступных пакетов агентов для мониторинга

      Пакет check-mk-agent_1.6.0p8-1_all.deb предназначен для дистрибутивов на базе Debian, включая Ubuntu. Скопируйте ссылку загрузки для этого пакета из браузера и используйте этот адрес для загрузки пакета.

      • wget http://your_ubuntu_server_ip/monitoring/check_mk/agents/check-mk-agent_1.6.0p8-1_all.deb

      После загрузки установите пакет:

      • apt install -y ./check-mk-agent_1.6.0p8-1_all.deb

      Теперь убедитесь в установке агента:

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

      Output

      <<<check_mk>>> Version: 1.6.0p8 AgentOS: linux . . . ["monitoring"] <<<job>>> <<<local>>>

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

      Ограничение доступа к данным мониторинга с помощью xinetd

      По умолчанию данные из check_mk_agent обрабатываются с помощью xinetd, механизма, который выводит данные в определенный сетевой порт после того, как их получит. Это значит, что мы можем получить доступ к check_mk_agent с помощью протокола telnet в порте 6556 (порт по умолчанию для Checkmk) из другого компьютера в Интернете, пока это не будет запрещено конфигурацией нашего брандмауэра.

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

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

      Для ограничения доступа к данным агента необходимо изменить файл конфигурации в /etc/xinetd.d/check_mk. Откройте файл конфигурации в предпочтительном редакторе. Для использования nano введите:

      • sudo nano /etc/xinetd.d/check_mk

      Найдите следующий раздел:

      /etc/xinetd.d/check_mk

      . . .
      # configure the IP address(es) of your Nagios server here:
      #only_from      = 127.0.0.1 10.0.20.1 10.0.20.2
      . . .
      

      Настройка only_from отвечает за ограничение доступа к определенным IP-адресам. Поскольку мы сейчас работаем над мониторингом того же сервера, на котором работает Checkmk, нормальным будет разрешить подключение только к localhost​​​. Раскомментируйте и обновите настройку конфигурации до:

      /etc/xinetd.d/check_mk

      . . .
      # configure the IP address(es) of your Nagios server here:
      only_from      = 127.0.0.1
      . . .
      

      Сохраните и закройте файл.

      Необходимо перезапустить демон xinetd, чтобы изменения вступили в силу. Сделайте это сейчас:

      • sudo systemctl restart xinetd

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

      Конфигурация хоста в веб-интерфейсе Checkmk

      Сначала, чтобы добавить новый хост для мониторинга, необходимо перейти в меню Hosts в меню WATO — Configuration слева. Здесь нажмите Create new host. У нас запросят информацию о хосте.

      Создание нового хоста в Checkmk

      Hostname — это знакомое имя, которое Checkmk будет использовать для мониторинга. Это может быть полностью определенное доменное имя, но не обязательно. В данном примере мы назовем хост monitoring, как само название экземпляра Checkmk. Поскольку monitoring​​​ не разрешим для нашего IP-адреса, необходимо также предоставить IP-адрес нашего сервера. И поскольку мы отслеживаем локальный хост, IP-адрес будет просто 127.0.0.1. Отметьте поле IPv4 Address, чтобы включить ручной ввод IP, и введите значение в текстовом поле.

      Конфигурация по умолчанию раздела Data Sources​​​ полагается на агента Checkmk для предоставления данных мониторинга, что нормально. Настройка Networking Segment используется для обозначения хостов в удаленных сетях, которые характеризуются более длинной задержкой, что не является признаком ошибки. Поскольку это локальный хост, установка по умолчанию также подойдет.

      Для сохранения хоста и настройки серверов для мониторинга нажмите на кнопку Save & go to services.

      Список служб, доступных для мониторинга

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

      Для активации мониторинга всех обнаруженных служб необходимо нажать на кнопку Monitor​​​ в разделе Undecided services (currently not monitored)​​​. Это обновит страницу, но сейчас все службы будут указаны в разделе Monitored services​​​, это послужит индикацией того, что действительно выполняется их мониторинг.

      Как и при изменении пароля пользователя, эти новые изменения необходимо сохранить и активировать, чтобы они начали действовать. Нажмите на кнопку 2 changes и примите изменения с помощью кнопки Activate affected. После этого мониторинг хоста будет готов к работе.

      Теперь вы готовы работать с данными сервера. Посмотрите на главную информационную панель с помощью позиции меню Overview/Main Overview слева.

      Работа с данными мониторинга

      Теперь посмотрим на главную информационную панель с помощью позиции меню Overview/Main Overview​​​ слева:

      Панель мониторинга, когда все службы исправны

      Земной шар теперь полностью окрашен в зеленый цвет, а в таблице указано, что один хост готов и проблемы отсутствуют. Мы можем увидеть полный список хостов, который сейчас включает один хост в представлении Hosts/All hosts (с помощью меню слева).

      Список хостов со всеми исправными службами

      Здесь мы увидим, сколько служб находится в исправном состоянии (отображаются зеленым), сколько неисправных и сколько ожидают проверки. Нажав на имя хоста, мы сможем увидеть список всех служб, их полные статусы и их Perf-O-Meter. Perf-O-Meter показывает производительность отдельной службы относительно параметров исправного состояния, назначенных Checkmk.

      Подробнее о статусе службы хоста

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

      Графики отображения загрузки ЦП на сервере

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

      Информационная панель, когда на одном хосте имеются проблемы

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

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

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

      Шаг 6 — Мониторинг второго хоста CentOS

      Мониторинг очень полезен при наличии нескольких хостов. Теперь мы добавим второй сервер в наш экземпляр Checkmk, в этот раз запустив CentOS 7.

      Как и в случае с нашим сервером Ubuntu, необходимо установить агент Checkmk для сбора данных мониторинга на CentOS. Однако в этот раз нам потребуется пакет rpm со страницы Monitoring Agents​​​ в веб-интерфейсе под названием check-mk-agent-1.6.0p8-1.noarch.rpm​​​.

      Однако сначала необходимо установить программу xinetd, которая недоступна по умолчанию при установке CentOS​​​. Xinetd, как мы помним, является демоном, отвечающим за доступность данных мониторинга, предоставленных check_mk_agent​​​​​​ в сети.

      На своем сервере CentOS сначала установите xinetd:

      • sudo yum install -y xinetd

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

      • sudo yum install -y http://your_ubuntu_server_ip/monitoring/check_mk/agents/check-mk-agent-1.6.0p8-1.noarch.rpm

      Как и ранее, мы можем проверить корректность работы агента, запустив check_mk_agent​​​:

      Вывод будет выглядеть примерно так же, как и с сервера Ubuntu. Теперь мы ограничим доступ к агенту.

      Ограничение доступа

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

      • sudo vi /etc/xinetd.d/check_mk

      Здесь вы увидите конфигурацию службы check_mk с указаниями, как можно получить доступ к агенту Checkmk с помощью демона xinetd. Найдите следующие две прокомментированные строки:

      /etc/xinetd.d/check_mk

      . . .
      # configure the IP address(es) of your Nagios server here:
      #only_from      = 127.0.0.1 10.0.20.1 10.0.20.2
      . . .
      

      Теперь раскомментируйте вторую строку и замените локальные IP-адреса на your_ubuntu_server_ip​​​:

      /etc/xinetd.d/check_mk

      . . .
      # configure the IP address(es) of your Nagios server here:
      only_from      = your_ubuntu_server_ip
      . . .
      

      Сохраните и закройте файл, введя :x, а затем ENTER. Перезапустите службу xinetd с помощью:

      • sudo systemctl restart xinetd

      Теперь мы можем перейти к конфигурации Checkmk для мониторинга нашего хоста CentOS 7.

      Конфигурация нового хоста в Checkmk

      Для добавления дополнительных хостов в Checkmk мы используем меню Hosts, как и ранее. В этот раз мы назовем хост centos, настроим его IP-адрес и выберем WAN (high-latency) в поле выбора Networking Segment, поскольку хост находится в другой сети. Если бы мы пропустили это и оставили локальный адрес, Checkmk вскоре бы предупредил нас, что хост неисправен, так как хост должен был отвечать на запросы агента гораздо быстрее, чем это возможно по сети Интернет.

      Создание экрана конфигурации второго хоста

      Нажмите Save & go to services, после чего отобразятся доступные службы для мониторинга на сервере CentOS. Список будет очень похож на список из первого хоста. И в этот раз необходимо нажать Monitor, а затем активировать изменения с помощью оранжевой кнопки в левом верхнем углу.

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

      Список хостов, когда выполняется мониторинг двух хостов

      Теперь вы выполняете мониторинг сервера Ubuntu и сервера CentOS с помощью Checkmk. Можно отслеживать и большее количество хостов. Фактически их количество зависит исключительно от мощности сервера, но и она не должна стать проблемой, если число хостов не измеряется сотнями. Более того, для других хостов процедура аналогична. Агенты Checkmk в пакетах deb и rpm работают на Ubuntu, CentOS и на большинстве других дистрибутивов Linux.

      Заключение

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

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

      Для получения дополнительной информации о Checkmk посетите официальную документацию.



      Source link