Первые шаги после покупки сервера

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

 

Для работы с сервером используем SSH-доступ к серверу. SSH (Secure SHell, «защищенная оболочка») — протокол удаленного доступа, который позволяет выполнять команды на сервере.

 

Чтобы подключиться к серверу по SSH, установите SSH-клиент на компьютер. В личном кабинете вы найдете ссылки на популярные клиенты для Windows и Linux (PuTTY и Open SSH соответственно), но вы можете использовать любой другой SSH-клиент для доступа к серверу.

 

Чтобы подключиться, введите команду SSH-подключения, которую видите в таблице Доступ по SSH в личном кабинете.

 

Интерфейс личного кабинета сервера, пункт меню Доступы — DDoS-Guard

 

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

 

 

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

 

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

 

Чтобы сменить пароль при последующих входах, зайдите по SSH как пользователь root и вве­дите коман­ду passwd. Если потребуется, подтвердите актуальный пароль, а после введите новый.

 

Чтобы дополнительно усилить безопасность сервера, можно отказаться от парольной идентификации, заменив ее подключением по ключу. Подробнее о том, как это сделать: Настройка входа по SSH-ключу

 

 

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

 

apt update

 

apt upgrade

 

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

 

Процесс обновления займет несколько минут.

 

 

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

 

apt install fail2ban

 

Программа по умолчанию будет блокировать IP после 5 неудачных попыток входа. По умолчанию время блокировки — 10 минут. Проверить, что Fail2Ban активен, можно с помощью

 

systemctl status fail2ban.service

 

Логи работы Fail2Ban хранятся в /var/log/fail2ban.log.

 

Заблокированные в данный момент IP отображаются в iptables — чтобы посмотреть их, выполните команду iptables -S. Если пакет iptables еще не установлен, установите его (apt install iptables) для корректной работы Fail2Ban.

 

Если вы хотите изменить количество попыток входа, время блокировки и другие параметры, в директории /etc/fail2ban создайте копию jail.conf с названием jail.local и работайте в этом файле. Файлы .local имеют приоритет над .conf, поэтому Fail2Ban будет использовать ваши настройки.

 

Чтобы еще надежнее защитить сервер, выполните шаги ниже.

 

 

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

 

Можно настроить фаервол, работая с iptables. Однако проще сделать это через UFW (Uncomplicated FireWall) — упрощенный интерфейс для настройки таблиц iptables. Если UFW еще не установлен, установите его командой

 

apt install ufw

 

Важно: не включайте UFW до того, как разрешите подключение по SSH. Стандартный порт SSH — 22, если вы меняли порт для SSH, укажите ваш порт.

 

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

 

Чтобы разрешить подключение SSH по стандартному порту, используйте команду

 

sudo ufw allow ssh

 

Чтобы открыть любой другой порт — команды вида

 

sudo ufw allow 0000 (по протоколам UDP и TCP)

 

sudo ufw allow 0000/tcp (по протоколу TCP)

 

sudo ufw allow 0000/ucp (по протоколу UCP)

 

где 0000 — номер нужного порта.

 

Подробнее о работе UFW можно почитать в инструкции:

UFW | Ubuntu Manpage Repository

 

Мы рекомендуем запретить подключения к целевому серверу с любых адресов, кроме адресов DDoS-Guard, с которых осуществляется проксирование запросов. Для этого следует в фаерволе создать правила на drop любых запросов, кроме запросов из доверенных сетей DDoS-Guard.

 

Вот сети, которые необходимо добавить в белый список фаервола:

77.220.207.0/24
45.10.240.0/24
45.10.241.0/24
45.10.242.0/24
186.2.160.0/24
186.2.164.0/24
186.2.167.0/24
186.2.168.0/24
185.178.209.197/32
190.115.30.44/32

 

Пример соответствующих настроек UFW:

 

sudo ufw allow from 77.220.207.0/24 to any port 80 proto tcp
sudo ufw allow from 77.220.207.0/24 to any port 443 proto tcp
sudo ufw allow from 45.10.240.0/24 to any port 80 proto tcp
sudo ufw allow from 45.10.240.0/24 to any port 443 proto tcp
sudo ufw allow from 45.10.241.0/24 to any port 80 proto tcp
sudo ufw allow from 45.10.241.0/24 to any port 443 proto tcp
sudo ufw allow from 45.10.242.0/24 to any port 80 proto tcp
sudo ufw allow from 45.10.242.0/24 to any port 443 proto tcp
sudo ufw allow from 186.2.160.0/24 to any port 80 proto tcp
sudo ufw allow from 186.2.160.0/24 to any port 443 proto tcp
sudo ufw allow from 186.2.164.0/24 to any port 80 proto tcp
sudo ufw allow from 186.2.164.0/24 to any port 443 proto tcp
sudo ufw allow from 186.2.167.0/24 to any port 80 proto tcp
sudo ufw allow from 186.2.167.0/24 to any port 443 proto tcp
sudo ufw allow from 186.2.168.0/24 to any port 80 proto tcp
sudo ufw allow from 186.2.168.0/24 to any port 443 proto tcp
sudo ufw allow from 185.178.209.197 to any port 80 proto tcp
sudo ufw allow from 185.178.209.197 to any port 443 proto tcp
sudo ufw allow from 190.115.30.44 to any port 80 proto tcp
sudo ufw allow from 190.115.30.44 to any port 443 proto tcp
sudo ufw deny 80 proto tcp
sudo ufw deny 443 proto tcp

 

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

 

 

Доступ к серверу по паролю — не самый надежный метод, поэтому рекомендуем настроить аутен­тифика­цию по клю­чу.

 

Если вы не хотите использовать аутентификацию по ключу, защитите учетную запись root: см. пункт «Создание нового пользователя с правами администратора»

 

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

 

 

Как сгенерировать SSH-ключ

 

Если на вашем компьютере установлен Linux или MacOS, вы можете сгенерировать SSH-ключ прямо из терминала. Откройте терминал компьютера (не сервера) и выполните

 

ssh-keygen -t rsa

 

В ответ на

 

Enter file in which to save the key (/home/user/.ssh/id_rsa):

 

укажите путь, по которому хотите сохранить ключ. Лучше не менять стандартный путь — именно там ключ будет по умолчанию искать SSH-клиент. Оставьте поле пустым и нажмите Enter.

 

Если на вашем устройстве уже генерировали SSH-ключ, помните, что, указывая стандартный путь, вы можете перезаписать предыдущий ключ

 

Далее вы можете дополнительно защитить ключ паролем.

Enter passphrase (empty for no passphrase):

 

Если вы не хотите использовать пароль, оставьте поле пустым и нажмите Enter.

 

Вы получите сообщение о том что ваши ключи сохранены. Строка

 

Your identification has been saved in /home/user/.ssh/id_rsa.

 

показывает расположение приватного ключа, а

 

Your public key has been saved in /home/user/.ssh/id_rsa.pub

 

указывает на публичный ключ.

 

 

Как загрузить SSH-ключ на сервер

 

Публичный ключ из пары сгенерированных ранее необходимо разместить на сервере. Это можно сделать несколькими способами. Самый простой — добавить публичный ключ на шаге Авторизация по SSH-ключу во время покупки выделенного сервера.


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

 

ds.ssh.ru.png

 

Второй способ — команда ssh-copy-id. Ее можно использовать в любой момент.

 

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

 

ssh-copy-id username@remote_host

 

где вместо remote_host — публичный IP-адрес вашего сервера.

 

В ответ на нее вы получите сообщение

The authenticity of host 'remote_host (192.168.1.2)' can't be established. 
ECDSA key fingerprint is SHA256:XWs1o1TlMocXzKDb6VBFPeGUz2VRZtKRSpLFEMzkBv 
Are you sure you want to continue connecting (yes/no)?

 

Это значит, что ваш компьютер еще не обменивался параметрами соединения с сервером. Ответьте yes.

 

Содер­жимое вашего клю­ча /home/user/.ssh/id_rsa.pub будет ско­пиро­вано в ~/.ssh/authorized_keys на сервере.

 

 

Вход по публичному ключу

 

На сто­роне кли­ента вой­ти по клю­чу на SSH-сер­вер мож­но так:

 

ssh -i ~/.ssh/id_rsa.pub username@remote_host

 

 

Запрет входа по паролю

 

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

 

Откройте файл конфигурации SSH

 

sudo nano /etc/ssh/sshd_config

 

Раскомментируйте (убрав # в начале строки) параметр PasswordAuthentication и укажите значение no, получив строку вида

 

PasswordAuthentication no

 

Сохраните файл и перезапустите службу SSH командой

 

sudo service ssh restart

 

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

 

 

В этом шаге нет необходимости в случае, если вы будете использовать доступ по SSH-ключу

 

Работать с сервером как пользователь root не стоит. Root — общеизвестное имя учетной записи, поэтому злоумышленники в первую очередь будут пытаться подобрать пароль именно для нее.

 

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

 

Некоторое серверное ПО (например, cPanel) работает исключительно под учетной записью root. Если вы собираетесь использовать такие программы, пропустите этот шаг и настройте безопасный доступ к root с помощью SSH-ключей.

 

Создайте пользователя (выберите сложное имя, не используйте user или admin) и задайте пароль для него.

 

Добавить пользователя можно командой 

 

adduser user

 

Изменить его пароль — 

 

passwd user

 

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

 

Введите команду visudo

 

В открывшемся файле добавьте строчку

 

user ALL=(ALL) ALL

 

Теперь попробуйте отключиться от сервера (Ctrl+D или командой exit) и зайти, используя установленное имя пользователя и пароль.

 

Проверьте наличие прав администратора, снова вызвав visudo. Вы теперь работаете не как root-пользователь, поэтому выполните команду с правами суперпользователя:

 

sudo visudo

 

Чтобы не вводить sudo для каждой операции, которая требует права администратора, вы можете использовать

 

sudo bash

 

Приг­лашение коман­дной стро­ки изменится с $ на #. Это значит, что ваш пользователь может вводить команды от имени root без исполь­зования sudo.

 

 

Запрет входа в root по SSH

 

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

 

sudo nano /etc/ssh/sshd_config

 

и добавьте строку

 

PermitRootLogin no

 

Сохраните файл и перезагрузите SSH

 

sudo /etc/init.d/ssh restart

 

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