В этом цикле статей я расскажу как создать свой VPS на Ubuntu 18.04 LTS, на котором будут работать ваш личный VPN, DNS, почтовый и прокси сервер. Также мы разместим сайт.
В первой части цикла мы рассмотрим предварительные требования и первоначальную настройку системы на базе Ubuntu 18.04 LTS. Итак, давайте начнем.
Требования
Итак, для разворачивания своего сервера нам потребуется две вещи:
- VPS хостинг
- Домен
Арендуем VPS у хостера
Нам подойдёт любой VPS с достаточным количеством памяти, на который можно установить серверную Ubuntu. Я разворачивал систему, включая пару сайтов на VPS с 2Gb памяти и все работало стабильно.
В настоящее время достаточно легко найти недорогую и производительную виртуальную машину за небольшие деньги. Этот провайдер, например, предлагает за 3.99 € в месяц такую конфигурацию: 2 ядра с 4Gb RAM, 300Gb SSD и безлимитный трафик на 100Mbit канале. Если вы ограничены в средствах, то рассмотрете вариант от 2.99 €. За эти деньги вы получите 1 ядро, 2GB RAM, 20Gb SSD и трафик 20Tb.
Другой вариант — облачный хостинг от Amazon или Google. Для новых пользователей есть множество бесплатных сервисов на первый год в Amazon и кредит 300$ в Google, чего вполне хватит для разных экспериментов. Если виртуальная машина нужна вам только для обучения, то ее можно включать, когда вы садитесь за компьютер, и выключать после. Тогда затраты будут буквально несколько центов, т.к. оплата начисляется только за время ее работы.
Покупаем домен у регистратора
Тут все проще. Купить можно у любого регистратора доменных имен. Например, nic.ru или reg.ru
На самом деле в настройке собственного сервиса доменных имён нет ничего сложного. Я вам это покажу в дальнейшем.
Устанавливаем серверную Ubuntu 18.04
В консоли управления хостинга установите операционную систему. Я не буду полностью описывать процесс установки, а лишь коснусь моментов, которые важны для меня. Вы можете этого не делать, а выбрать параметры по умолчанию.
Во-первых, я предпочитаю устанавливать операционную систему из официального образа с сайта производителя. Как это сделать, например, для хостинга contabo.com я описал в этой статье.
Во-вторых, я обычно шифрую диск, на который устанавливаю систему, хоть это и создает некоторые неудобства при перезагрузке сервера. Для этого в настройке разметки дисков мы создадим шифрованный раздел и настроим LVM.
Далее нам потребуется задать надежную ключевую фразу.
В процессе дальнейшей установки, не забудьте установить OpenSSH. Он понадобится для удаленного доступа к нашему серверу.
После завершения установки, в процессе перезагрузки нашей виртуальной машины вы должны будете ввести пароль для доступа к зашифрованному разделу.
После этого вы попадете в консоль сервера, где можете ввести логин и пароль, но мы с вами будем настраивать удаленный доступ по SSH
Доступ к серверу по SSH
Итак, если у вас еще не созданы ключи шифрования, то для их создания выполните на своей рабочей станции следующую команду:
ssh-keygen
По умолчанию будет создана ключевая пара RSA. В процессе создания вы можете задать пароль для секретного ключа (я настоятельно рекомендую это сделать).
Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/user/.ssh/id_rsa. Your public key has been saved in /home/user/.ssh/id_rsa.pub. The key fingerprint is: SHA256:9wg3ygtSyc41e7du4qWQFSqePUPdgkMwdm8pTHK6RyU user@host The key's randomart image is: +---[RSA 3072]----+ | = E . | | . X + . | | . = = | | . = * o | | * S B . | | = O @ = | | . * X o + | | . . *.+.. | | ..o+o | +----[SHA256]-----+
После создания ключевой пары нам необходимо скопировать открытый ключ на сервер. Для этого служит утилита ssh-copy-id.
В команде, указанной ниже, user — это пользователь, которого мы создали, а host — ip-адрес сервера, который вам выделил хостер.
ssh-copy-id -i ~/.ssh/id_rsa user@host
В процессе выполнения вам придется подтвердить отпечаток ключа, ответив ‘yes’ и ввести пароль пользователя сервера.
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/user/.ssh/id_rsa.pub" The authenticity of host 'ubuntu1804s (192.168.7.75)' can't be established. ECDSA key fingerprint is SHA256:BROo7rA5DVnzAOUhze/ODbrQ2iH0w+nx16w0QsRVjhk. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys user@ubuntu1804s's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'user@ubuntu1804s'" and check to make sure that only the key(s) you wanted were added.
После этого мы, наконец-то, можем удаленно соединиться с нашим виртуальным сервером по протоколу SSH, выполнив следующую команду:
ssh user@host
Попав на сервер вы увидите на экране нечто подобное:
Welcome to Ubuntu 18.04.4 LTS (GNU/Linux 4.15.0-76-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage System information as of Sun Mar 22 11:49:53 MSK 2020 System load: 0.0 Processes: 105 Usage of /: 17.3% of 10.09GB Users logged in: 0 Memory usage: 6% IP address for ens3: 192.168.7.75 Swap usage: 0% Могут быть обновлены 34 пакета. 29 обновлений касаются безопасности системы. To run a command as administrator (user "root"), use "sudo <command>". See "man sudo_root" for details. user@ubuntu1804s:~$
Нам осталось настроить параметры безопасности sshd. Для этого откройте файл sshd_config
:
sudo vim /etc/ssh/sshd_config
и строку
#PasswordAuthentication yes
замените на
PasswordAuthentication no
Тем самым мы запретим парольную аутентификацию. Вход будет возможен только по ключу.
На этом первая часть цикла подошла к концу. В следующей статье мы займемся настройкой необходимых сервисов.