После того как вы получили доступ к заказанному серверу, стоит провести первичную настройку. Предлагаем список действий, которые помогут настроить сервер и защитить его от попыток несанкционированного доступа.
Подключение по SSH
Для работы с сервером используем SSH-доступ к серверу. SSH (Secure SHell, «защищенная оболочка») — протокол удаленного доступа, который позволяет выполнять команды на сервере.
Чтобы подключиться к серверу по SSH, установите SSH-клиент на компьютер. В личном кабинете вы найдете ссылки на популярные клиенты для Windows и Linux (PuTTY и Open SSH соответственно), но вы можете использовать любой другой SSH-клиент для доступа к серверу.
Чтобы подключиться, введите команду SSH-подключения, которую видите в таблице Доступ по SSH в личном кабинете.
В инструкции мы рассматриваем настройку сервера под управлением Ubuntu, но все шаги актуальны и для других операционных систем — будут отличаться только конкретные команды.
Смена пароля root-пользователя
После заказа сервера вы получите сгенерированный пароль, который доступен в личном кабинете. Рекомендуем сменить этот пароль на более надежный, известный только вам. На актуальных версиях Ubuntu система сама потребует сменить пароль при первом входе.
В этом случае просто следуйте инструкциям: введите актуальный пароль, а после дважды введите новый. Обратите внимание, что при вводе паролей символы не отображаются.
Чтобы сменить пароль при последующих входах, зайдите по SSH как пользователь root и введите команду passwd
. Если потребуется, подтвердите актуальный пароль, а после введите новый.
Чтобы дополнительно усилить безопасность сервера, можно отказаться от парольной идентификации, заменив ее подключением по ключу. Подробнее о том, как это сделать: Настройка входа по SSH-ключу
Обновление пакетов ПО
Рекомендуем использовать пакеты программного обеспечения актуальной версии. Чтобы обновить их на своем сервере, выполните две команды:
apt update
apt upgrade
Первая обновит списки доступных пакетов, вторая — обновит сами пакеты до актуальной версии.
Процесс обновления займет несколько минут.
Установка Fail2Ban
Чтобы усилить защиту сервера от подбора пароля и ограничить обращения злоумышленников, рекомендуем установить 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
Обратите внимание, что это примерные команды, а не готовый набор настроек для вашего сервера. Используйте их, только убедившись, что они не нарушат работу проекта.
Настройка входа по SSH-ключу
Доступ к серверу по паролю — не самый надежный метод, поэтому рекомендуем настроить аутентификацию по ключу.
Если вы не хотите использовать аутентификацию по ключу, защитите учетную запись 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 и вставьте публичный ключ в соответствующее поле.
Второй способ — команда 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, чтобы проверить, что эта возможность заблокирована.