Настройка VPS-сервера с нуля

Настройка VPS-сервера с нуля

Если поднятие и настройка VPS-серверов (Virtual Private Server) не является вашей ежедневной деятельностью, то эта шпаргалка может оказаться полезной. Не претендую на полноту этого руководства по настройке, так что если есть что добавить — комментируйте.

Зачем что-то настраивать?

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

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

Поехали, первый вход

  1. Обновляем систему
apt-get update && apt-get dist-upgrade -y

2. Cоздаем нового пользователя, под которым будем работать (работать под пользователем root — нехорошо):

adduser user

user — это имя вашего пользователя.

Потом указываем сложный пароль (записывая его в менеджер паролей), заполняем остальные данные, если хотим и жмем Enter. Пользователь создан.

3. Разрешаем нашему пользователю user выполнение sudo, добавляем user в специальную группу sudo:

usermod -a -G sudo user

Всё, теперь выходим и логинимся под пользователь user. Если понадобятся привилегии рута (установка ПО, обновление системы или настроек) — просто используем sudo

Защищаем SSH

SSH — протокол, по которому управляется ваш новенький VPS. Как входная дверь на ваш сервер. Поэтому делаем следующее:

  1. Меняем порт по умолчанию, а по умолчанию SSH слушает порт 22. Открываем файл конфигурации с помощью текстового редактора nano:
sudo nano /etc/ssh/sshd_config

находим строку Port 22 и меняем порт на любое число от 1 до 65535, например на 23232.

Главное чтобы новый порт не использовался стандартными приложениями (во избежание конфликтов), поэтому предварительно погуглите свой выбор порта.

5-значные номера портов скорее всего подойдут

  1. Если вы не будете использовать IPv6 или даже не представляете что это, то дописываем в конфиг SSH (если там такого еще нет):
AddressFamily inet
  1. Запрещаем заходить на сервер под рутом. Ищем в нашем конфиге параметр PermitRootLogin и
    выставляем no. Если такого параметра нет, то дописываем его:
PermitRootLogin no
  1. Разрешаем подключаться к серверу только определенным пользователям, указываем список логинов (через пробел) в файле конфигурации /etc/ssh/sshd_config:
AllowUsers user
  1. Запрещаем вход с пустым паролем. За это отвечает параметр PermitEmptyPasswords:
PermitEmptyPasswords no

Перезапускаем SSH и логинимся заново (на новый порт):

sudo /etc/init.d/ssh restart

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

Защищаем SSH. Доступ по ключу

Сейчас мы хотим для доступа к нашему серверу вместо логина и пароля использовать аутентификацию по открытому ключу. Идея в том, что вы создаете пару ключей: открытого и закрытого, закрытый ключ (private key) храните у себя на компе в секрете, а открытый (public key) лежит на вашем сервере.

На клиентской машине генерим ключ:

ssh-keygen

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

user@linux:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): my_key_id
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in my_key_id
Your public key has been saved in my_key_id.pub
The key fingerprint is:
SHA256:5w3TTzIvaBW+32CA6PP/xYLj5q+QJU7dT7gIoUY03VY user@linux
The key's randomart image is:
+---[RSA 3072]----+
|        .... . .E|
|       . .o.. o  |
|        o o. ..  |
|       . o = + o |
|        S R * O o|
|         = X B X |
|          = S B =|
|           +.+ =o|
|           o+oo.+|
+----[SHA256]-----+
user@linux:~$

В итоге в текущей директории у нас два ключа — my_key_id и my_key_id.pub. Оба ключа закидываем в папку

1
/домашний_каталог/.ssh/

Открытый ключ необходимо скопировать на сервер в файл  

1
/домашний_каталог_сервера/.ssh/authorized_key
. Одной строкой:

ssh-copy-id -i ~/.ssh/my_key_id.pub user@

Теперь идем на сервер и меняем конфиг:

nano /etc/ssh/sshd_config

PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
RhostsRSAAuthentication no
HostbasedAuthentication no

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

UseLogin no

Устанавливаем права:

chmod 700 ~/.ssh/
chmod 600 ~/.ssh/authorized_keys

Перезапустим ssh сервер для применения настроек.

service sshd restart

На этом настройка сервера закончена, далее переходим к настройке клиента.

создаем или добавляем в конфиг строки

Host my_srv
HostName 1.2.3.4
User user
Port 23232
IdentityFile ~/.ssh/my_key_id

Подключаемся по ключу используя алиас

ssh my_srv

Добавить комментарий