Регистрация на DigitalOcean.com и создание дроплета (виртуального сервера).

Подробно рассмотрена регистрация на "DigitalOcean.com" и создание дроплета (виртуального сервера). На виртуальном сервере будет установлен "SoftEther VPN" сервер. В результате получим собственный VPN сервер для безопасного хождения по интернет-ресурсам. Для вашего провайдера, весь ваш трафик будет неотличим от обычного https трафика. Итак, идем на "digitalocean.com"


Главная страница DigitalOcean


Для регистрации заполняем форму в левой части страницы, или нажимаем кнопку "Sing Up" в верху справа.

Страница регистрации


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

Информация для билинга


Тут нужно выбрать способ оплаты за дроплет, который будет создан чуть позже. Возморжны два варианта, оплата банковской картой или через PayPal. Выберем оплату банковской картой. Я например, пользуюсь для этого виртуальной картой MasterCard. Практически все банки предоставляют возможность выпустить виртуальную карту для оплаты товаров и услуг в интернете. Заполняем необходимые поля формы. Если все заполнено верно, то кнопка "Save Card" станет активной. Нажимаем. Если с картой все в порядке, с нее снимут 1 доллар, и вернут его обратно, карта будет добавлена.

Карта добавлена


Теперь можно создавать дроплет. Нажимаем "Create a New Droplet". Первым делом, нужно выбрать имидж системы, из которого будет создан наш дроплет. Выбрать можно из Ubuntu, FreeBSD, Fedora, Debian, CoreOS, CentOS. Так же можно выбрать разрядность 32 или 64 бит, а также версию.

Выбрать образ


Выбираем Debian 8.9 x64, самую последнюю версию Debian 9.1 на текущий момент, пока выбирать не стоит, так как  туда SoftEther VPN нормально не ставится. Затем выбираем размер, 512 МБ память, 1 ЦПУ, 20 ГБ SSD диск, 1000 ГБ трафик. Стоить это будет 5$ в месяц или 0.007$ в час.

Выбрать объем памяти и размер диска


Теперь выберем датацентр, в котором будет размещен дроплет. Датацентры есть в Нью-Йорке, Сан-Франциско, Амстердаме, Сингапуре, Лондоне, Франкфурте, Торонто и Бангалоре.  В первых трех городах имеется несколько датацентров, в остальных по одному датацентру.

Выбрать датацентр

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

Создать дроплет


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

Дроплет готов


На емейл указанный при регистрации вышлют письмо с ip адресом и рутовым паролем для удаленного доступа к дроплету по ssh. Подключтся к серверу можно прямо в браузере, для этого щелкним мышкой по выпадающему списку "More" в левой части. В списке выберем "Access console". Откроется новое окно браузера, если вы не увидите никаких надписей, нажмите несколько раз на клавишу "Enter". Вы увидите стандартное консольное окно Linux, так как будто бы вы подключены непосредственнок серверу.

Консоль


Введите логин "root" и пароль полученный по почте. Если вы входите через браузер, то имейте ввиду, что "Copy/Paste" не работает и нужно пароль вводить вручную. Если пароль удалось ввести правильно, то увидите такую строчку "(current) UNIX password:" нужно будет ввести пароль еще раз и дважды ввести новый пароль. На этом смена пароля завершена. Вы в консоли только что созданного дроплета. Если вам не удалось правильно ввести пароль, то попробуйте это сделать подключившись по ssh. Для встаки пароля скопируйте его из письма как обычно, а вот всталять нужно просто нажав правую кнопку мышки, это если у вас PuTTY. Если ваша основная рабочая система Windows, то надо установить PuTTY. Если у вас Windows 10, то можно воспользоваться нативной поддержкой оболочки Bash в окружении дистрибутива Ubuntu. Как это сделать, легко найти в любом поисковике. Мы же будем использовать PuTTY. Качаем тут и устанавливаем. Запускаем PuTTY.

Конфигураци PuTTY


В поле "Host Name (or IP address)" вписываем ip адрес нашего дроплета, в "Saved Sessions" впишем например "mydroplet" и нажмем кнопку "Save". В следующий раз будет достаточно два раза кликнуть по "mydroplet" для подключения к дроплету. Подключаемся к дроплету, вводим логин "root" и пароль установленный при первом подключении.

Подключение к серверу по ssh


В свежеустановленном дроплете, перед его использованием нужно обязательно сделать следующее:
1. Обновить систему.
2. Создать своп файл.
3. Добавить обычного пользователя для удаленного входа.
4. Запретить удаленный вход для пользователя "root".

Делаем.

1. Обновляем систему.

    root@debian-512mb-ams2-01:~# apt-get update
    root@debian-512mb-ams2-01:~# apt-get upgrade

 

2. Создаем своп файл.

Так как у нас объем оперативной памяти 512 МБ, то размер своп файла рекомендуется создать в пределах 512-1024 МБ.

    root@debian-512mb-ams2-01:~# dd if=/dev/zero of=/swapfile bs=1024k count=1000
    1000+0 records in
    1000+0 records out
    1048576000 bytes (1.0 GB, 1000 MiB) copied, 5.17721 s, 203 MB/s
    root@debian-512mb-ams2-01:~# chmod 600 /swapfile
    root@debian-512mb-ams2-01:~#

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

    root@debian-512mb-ams2-01:~# mkswap /swapfile
    Setting up swapspace version 1, size = 1000 MiB (1048571904 bytes)
    no label, UUID=74c00d37-8ae5-44ea-80fa-a1cb409d779d
    root@debian-512mb-ams2-01:~#

Чтобы система использовала своп его нужно включить, Делается это с помощью команды "swapon", проверить можно с помощью команды "free". отключается командой "swapoff".

    root@debian-512mb-ams2-01:~# free
                  total        used        free      shared  buff/cache   available
    Mem:         504404       34492       15164        6984      454748      450040
    Swap:             0           0           0

    root@debian-512mb-ams2-01:~# swapon /swapfile
    root@debian-512mb-ams2-01:~# free
                  total        used        free      shared  buff/cache   available
    Mem:         504404       35052       14600        6984      454752      449480
    Swap:       1023996           0     1023996
    root@debian-512mb-ams2-01:~#

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

    root@debian-512mb-ams2-01:~# echo "/swapfile    none    swap    sw    0    0" >> /etc/fstab

Теперь систему можно перегрузить и проверить наличие свопа с помощью команды "free". Перегрузим дроплет с помощью команды "init 6".

    root@debian-512mb-ams2-01:~# init 6

3. Добавим пользователя для удаленного входа в систему.

    root@debian-512mb-ams2-01:~# useradd -s /bin/bash -m barion

Установим пароль

    root@debian-512mb-ams2-01:~# passwd barion
    Enter new UNIX password:
    Retype new UNIX password:
    passwd: password updated successfully
    root@debian-512mb-ams2-01:~#

Добавим пользователя barion в группу sudo, для того чтобы выполнять команды от суперпользователя (от пользователя "root").

    root@debian-512mb-ams2-01:~# adduser barion sudo

Теперь нет необходимости заходить на сервер под пользователем "root". Зайдем на сервер под пользователем "barion" и отключим возможность удаленного входа на сервер пользователю "root". Таким образом мы повысим безопасность сервера, так как исключим возможность подбора пароля пользователя "root".

4. Запретим пользователю "root" удаленный вход по ssh.

Для этого откроем в редакторе файл "/etc/ssh/sshd_config".

    barion@debian-512mb-ams2-01:~$ sudo nano /etc/ssh/sshd_config

найдем строку содержащую "PermitRootLogin yes" заменим "yes" на "no". Сохраним нажав комбинацию "Ctrl+O" и выйдем из редактора с помощью комбинации "Ctrl+X". Перезапустим ssh.

    barion@debian-512mb-ams2-01:~$ sudo service ssh restart


То что сделать желательно, но не обязательно.
1. Установить русскую локализацию.
2. Установить свой часовой пояс.
3. Установить Midnight Commander

Делаем.

1. Устанавливаем русскую локализацию.

    barion@debian-512mb-ams2-01:~$ sudo dpkg-reconfigure locales

Выбираем "ru_RU.UTF8 UTF8" и нажимаем "OK".

Выбираем "ru_RU.UTF8 UTF8"

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

Выбираем "ru_RU.UTF8 UTF8" для системного окружения

2. Устанавливаем часовой пояс для своего региона.

Смотрим список доступных часовых поясов:

    barion@debian-512mb-ams2-01:~$ timedatectl list-timezones | less

Находим в списке название своего часового пояса, пусть например это будет "Europe/Rome". Устанавливаем свой часовой пояс:

    barion@debian-512mb-ams2-01:~$ timedatectl
          Local time: Пт 2017-08-25 07:12:20 UTC
      Universal time: Пт 2017-08-25 07:12:20 UTC
           RTC time: Пт 2017-08-25 07:12:20
          Time zone: Etc/UTC (UTC, +0000)
     Network time on: yes
    NTP synchronized: yes
     RTC in local TZ: no

    barion@debian-512mb-ams2-01:~$ sudo timedatectl set-timezone Europe/Rome
    [sudo] пароль для barion:
    barion@debian-512mb-ams2-01:~$ timedatectl
          Local time: Пт 2017-08-25 09:14:45 CEST
      Universal time: Пт 2017-08-25 07:14:45 UTC
            RTC time: Пт 2017-08-25 07:14:45
           Time zone: Europe/Rome (CEST, +0200)
     Network time on: yes
    NTP synchronized: yes
     RTC in local TZ: no

3. Установим Midnight Commander (Мощный файловый менеджер работающий в текстовой консоли).

    barion@debian-512mb-ams2-01:~$ sudo apt-get install mc

После установки запускаем

    barion@debian-512mb-ams2-01:~$ mc

Midnight Commander. Мощный файловый менеджер

Теперь все готово, чтобы установить свой собственный VPN как это описано здесь.

Качаем архив по прямой ссылке:

barion@debian-512mb-ams2-01:~$ wget http://www.softether-download.com/files/softether/v4.22-9634-beta-2016.11.27-tree/Linux/SoftEther_VPN_Server/64bit_-_Intel_x64_or_AMD64/softether-vpnserver-v4.22-9634-beta-2016.11.27-linux-x64-64bit.tar.gz

Распаковываем архив:

    barion@debian-512mb-ams2-01:~$ tar -xzf softether-vpnserver-v4.22-9634-beta-2016.11.27-linux-x64-64bit.tar.gz

Переходим в папку vpnserver:

    barion@debian-512mb-ams2-01:~$ cd vpnserver
    barion@debian-512mb-ams2-01:~/vpnserver$

Для создания vpn сервера нужна команда make, а также компилятор gcc. Установим:

    barion@debian-512mb-ams2-01:~/vpnserver$ sudo apt-get install make

    barion@debian-512mb-ams2-01:~/vpnserver$ sudo apt-get install gcc

Теперь создадим vpn сервер:

    barion@debian-512mb-ams2-01:~/vpnserver$ make

Соглащаемся со всем, для чего три раза выбираем "1". Спустя некоторое время наш vpn сервер готов.

Осталось сделать так, что бы наш vpn сервер стартовал при перезагрузке дроплета. Сделаем это через systemd. Для начала перенесем папку с сервером из домашнего каталога, например в /usr/local

     sudo cp -r ~/vpnserver /usr/local/

Теперь создадим файл softether-vpnserver.service в папке /etc/systemd/system

    sudo touch /etc/systemd/system/softether-vpnserver.service

Откроем файл в редакторе nano:

    sudo nano /etc/systemd/system/softether-vpnserver.service

Поместим туда следующее содержимое:

[Unit]
Description=SoftEther VPN Server
After=network.target auditd.service
ConditionPathExists=!/usr/local/vpnserver/do_not_run

[Service]
Type=forking
EnvironmentFile=-/usr/local/vpnserver
ExecStart=/usr/local/vpnserver/vpnserver start
ExecStop=/usr/local/vpnserver/vpnserver stop
KillMode=process
Restart=on-failure

# Hardening
PrivateTmp=yes
ProtectHome=yes
ProtectSystem=full
ReadOnlyDirectories=/
ReadWriteDirectories=-/usr/local/vpnserver
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_BROADCAST CAP_NET_RAW CAP_SYS_NICE CAP_SYS_ADMIN CAP_SETUID

[Install]
WantedBy=multi-user.target

Обновим информацию systemd:

    barion@debian-512mb-ams2-01:~$ sudo systemctl daemon-reload

Запускаем сервис:

    barion@debian-512mb-ams2-01:~$ sudo systemctl start softether-vpnserver.service

Проверяем статус:

barion@debian-512mb-ams2-01:~$ sudo systemctl status softether-vpnserver.service
● softether-vpnserver.service - SoftEther VPN Server
   Loaded: loaded (/etc/systemd/system/softether-vpnserver.service; disabled)
   Active: active (running) since Сб 2017-08-26 06:40:12 CEST; 41s ago
  Process: 7220 ExecStart=/usr/local/vpnserver/vpnserver start (code=exited, status=0/SUCCESS)
 Main PID: 7222 (vpnserver)
   CGroup: /system.slice/softether-vpnserver.service
           ├─7222 /usr/local/vpnserver/vpnserver execsvc
           └─7223 /usr/local/vpnserver/vpnserver execsvc

авг 26 06:40:12 debian-512mb-ams2-01 vpnserver[7220]: The SoftEther VPN Server service has been started.
авг 26 06:40:12 debian-512mb-ams2-01 systemd[1]: Started SoftEther VPN Server.
barion@debian-512mb-ams2-01:~$

Если все в порядке, добавляем в автозагрузку:

barion@debian-512mb-ams2-01:~$ sudo systemctl enable softether-vpnserver.service
Created symlink from /etc/systemd/system/multi-user.target.wants/softether-vpnserver.service to /etc/systemd/system/softether-vpnserver.service.

Дальнейшая настройка сервера произоводится по упомянутой выше статье.