Подключение от имени root
Первым делом, вам нужно подключиться к серверу по SSH от имени root.
Откройте терминал и выполните команду:
$ ssh root@server_ip
При успешном подключении вы увидите приветствие и краткие сведения о системе.
Создание пользователя
Так как постоянное использование учетной записи root не безопасно, то следующее, что вам нужно будет сделать – добавить нового пользователя и дать ему root привилегии.
Создадите нового пользователя. В данном примере создается пользователь с именем joe. Можете заменить его на любое другое.
# adduser joe
Придумайте пароль, а так же можете указать дополнительную информацию, как, например, настоящее имя.
Далее добавьте пользователя в группу sudo, чтобы он мог выполнять действия с привилегиями root:
# adduser joe sudo
Теперь для дальнейшей работы, вы уже можете использовать новую учетную запись.
Выполните следующую команду, чтобы переключиться на нового пользователя:
# su - joe
Генерация SSH ключа
На данном этапе вам нужно будет сгенерировать SSH ключ. Ключ состоит из 2 файлов: приватный, который находится на вашей машине и публичный, который будет нужно загрузить на сервер.
Если SSH ключа у вас нет – вам необходимо его сгенерировать. В ином случае – пропустите этот шаг и переходите к следующему.
И так, вам необходимо сгенерировать SSH ключ. Для этого выполните следующую команду (заменив joe@example.com на ваш email):
$ ssh-keygen -t rsa -b 4096 -C "joe@example.com"
Далее вас попросят указать путь для сохрания ключа. Тут можно просто нажать Enter (будет выбран путь по умолчанию).
Затем придумайте пароль для вашего ключа. Введите его и на этом создание SSH ключа закончено.
Добавление публичного SSH ключа на сервер
Для того, чтобы сервер смог аутентифицировать пользователя – необходимо скопировать на него публичный SSH ключ, который вы до этого сгенерировали. Сделать это можно двумя способами.
Вариант 1: Используя ssh-copy-id
На локальной машине выполните следующую команду:
$ ssh-copy-id joe@server_ip
После введения пароля вы должны увидеть сообщение о том, что ключ был успешно скопирован на сервер.
Вариант 2: Вручную
1. Создадите в корне вашего пользователя каталог .ssh и задайте необходимые права.
$ mkdir ~/.ssh
$ chmod go-rx ~/.ssh
2. Внутри каталога .ssh
создайте файл authorized_keys
. Например, используя редактор nano:
$ nano ~/.ssh/authorized_keys
Вставьте в него содержимое публичного ключа.
Нажмите CTRL-x
для того, чтобы выйти из редактора, затем y
, чтобы сохранить изменения, затем ENTER
для подтверждения.
Далее установите необходимы права на файл, чтобы доступ к файлу с ключами был только у его владельца. Для этого выполните следующую команду:
$ chmod go-r ~/.ssh/authorized_keys
Теперь вы можете подключаться к серверу, используя SSH ключ.
Настройка SSH сервера
На данном этапе необходимо выполнить несколько изменений в конфигурации SSH сервера, которые сделают его более безопасным.
Для этого откройте файл /etc/ssh/sshd_config
:
$ sudo nano /etc/ssh/sshd_config
1. Изменение стандартного порта.
Первым делом, измените стандартный порт. Чтобы боты не пытались подключиться к вашему серверу и не засоряли тем самым лог.
Для этого измените значение Port
на что-нибудь нестандартное, например:
Port 2222
2. Запрещение удаленного доступа для root.
Так как для работы на сервере вы будете использовать учетную запись обычного пользователя, то подключаться к серверу через SSH от имени root необходимости нет.
Выставите значение для PermitRootLogin
в no
.
PermitRootLogin no
3. Отключение парольной аутентификации.
Так как при использовании SSH ключей у вас нет необходимости в аутентификации по паролям – отключите ее.
Выставите значения для PasswordAuthentication
в no
.
PasswordAuthentication no
Так же убедитесь в том, что ваш сервер использует 2 версию протокола.
Protocol 2
После всех изменений сохраните файл и перезагрузите настройки SSH сервера, чтобы изменения вступили в силу.
$ sudo systemctl reload ssh.service
Если все сделано верно, то при попытке подключиться на стандартный порт 22 вы увидите следующую ошибку:
ssh: connect to host server_ip port 22: Connection refused
А при попытке подключится от имени root (уже на новый порт):
Permission denied (publickey).
Чтобы подключаться к серверу, используя нестандартный порт – укажите номер порта в параметре -p.
$ ssh joe@server_ip -p 2222
Настройка Firewall
UFW (Uncomplicated Firewall) – простой файрволл, который представляет из себя утилиту для более удобного управления iptables.
Если в вашей системе его нет, то установите его командой:
$ sudo apt install ufw
Для начала проверьте статус файрволла:
$ sudo ufw status
Статус должен быть inactive
.
Внимание: не активируйте файрволл до того, как укажете необходимые правила. Иначе вы рискуете потерять доступ к серверу.
Настройте правила таким образом, чтобы по умолчанию были запрещены все входящие запросы. Для этого выполните:
$ sudo ufw default deny incoming
А так же разрешите все исходящие:
$ sudo ufw default allow outgoing
Добавьте новое правило, чтобы были разрешены входящие запросы на SSH порт (в нашем случае 2222).
$ sudo ufw allow 2222/tcp
Далее включите файрволл командой:
$ sudo ufw enable
Проверить статус файрволла и его правил можно командой:
$ sudo ufw status
Для более подробной информации нужно использовать команду:
$ sudo ufw status verbose
Заключение
На этом первоначальная настройка сервера завершена. Теперь вы можете устанавливать любое программное обеспечение, которое вам нужно.