Если поднятие и настройка VPS-серверов (Virtual Private Server) не является вашей ежедневной деятельностью, то эта шпаргалка может оказаться полезной. Не претендую на полноту этого руководства по настройке, так что если есть что добавить — комментируйте.
Зачем что-то настраивать?
Здесь надо расписать о хакерах, которые ломают такие сервера пачками и от вашего имени взламывают банки и фальсифицируют выборы в США, обязательно рассылают спам, подменяют содержимое сайтов и вообще творят что угодно.
В любом случае, если у вас вдруг есть выделенный сервер, то никто кроме вас не будет заботиться о его стабильной и безопасной работе. Если вы не являетесь опытным линукс-администратором, то сделайте хотя бы то, что указано ниже
Поехали, первый вход
- Обновляем систему
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. Как входная дверь на ваш сервер. Поэтому делаем следующее:
- Меняем порт по умолчанию, а по умолчанию SSH слушает порт 22. Открываем файл конфигурации с помощью текстового редактора nano:
sudo nano /etc/ssh/sshd_config
находим строку Port 22 и меняем порт на любое число от 1 до 65535, например на 23232.
Главное чтобы новый порт не использовался стандартными приложениями (во избежание конфликтов), поэтому предварительно погуглите свой выбор порта.
5-значные номера портов скорее всего подойдут
- Если вы не будете использовать IPv6 или даже не представляете что это, то дописываем в конфиг SSH (если там такого еще нет):
AddressFamily inet
- Запрещаем заходить на сервер под рутом. Ищем в нашем конфиге параметр PermitRootLogin и
выставляем no. Если такого параметра нет, то дописываем его:
PermitRootLogin no
- Разрешаем подключаться к серверу только определенным пользователям, указываем список логинов (через пробел) в файле конфигурации /etc/ssh/sshd_config:
AllowUsers user
- Запрещаем вход с пустым паролем. За это отвечает параметр 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