Начальная настройка сервера с Ubuntu

Совместимо с версиями 14–22

Peter Bazov
6 min readJan 23, 2018

Введение

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

Шаг 1 — первое подключение

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

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

Вы можете подключиться к серверу по SSH, если выполните указанную ниже команду, заменив USER на имя вашего пользователя и IP_ADDRESS на IP адрес вашего сервера:

ssh USER@IP_ADDRESS

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

The authenticity of host '203.0.113.0 (203.0.113.0)' can't be established.
ECDSA key fingerprint is SHA256:IcLk6dLi+0yTOB6d7x1GMgExamplewZ2BuMn5/I5Jvo.
Are you sure you want to continue connecting (yes/no)? yes

Напечатайте yes и нажмите Enter.

Далее система предложит вам ввести пароль учетной записи, используемой при подключении. Введите его и нажмите Enter. После успешного подключения вы увидите приветствие системы, а поле ввода в интерпретаторе команд будет начинаться со строки root@ServerName:~$. Это очень удобно, так как при выполнении команд вы всегда видите имя сервера, а не имя своего домашнего или рабочего компьютера, и всегда можете убедиться, что ничего не сломаете.

Шаг 2 — смена пароля root

Сразу после первого подключения стоит изменить стандартный пароль учетной записи root. Для этого выполните команду:

passwd

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

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

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

head /dev/urandom | tr -dc A-Za-z0-9 | head -c 24 ; echo ''

Шаг 3 — создание нового пользователя

Учетная запись root является администратором ОС Linux. От его имени следует выполнять только самые важные задачи, которые требуют особых привилегий. Из-за того, что он обладает неограниченными правами, следует обезопасить себя и создать специального пользователя для подключения к серверу. При этом доступ к серверу через SSH под root следует запретить.

Нового пользователя можно создать командой:

adduser ИМЯ_ПОЛЬЗОВАТЕЛЯ_СИСТЕМЫ

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

Вводить дополнительную информацию не обязательно. Можно просто нажать Enter в любом поле.

Шаг 4 — привилегии пользователя

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

Чтобы выполнить команду с повышенными привилегиями, нужно сделать это в режиме “супер-пользователя”, добавив к началу команды слово sudo. Однако, по умолчанию пользователи не обладают таким правом.

Чтобы предоставить возможность использовать команду sudo в Ubuntu есть несколько способов.

Первый способ — добавить пользователя в группу sudo. В Ubuntu все пользователи, находящиеся в данной группе могут выполнять команды в режиме “супер-пользователя”. Для этого выполните команду:

usermod -aG sudo ИМЯ_ПОЛЬЗОВАТЕЛЯ_СИСТЕМЫ

Второй способ — выдать пользователю права на выполнение команды sudo по его имени.

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

Разрешения на команду sudo находятся в файле /etc/sudoers. Для просмотра и редактирования файлов я предпочитаю использовать программу vim, которую можно установить указанной ниже командой, но вы можете воспользоваться любым другим удобным вам способом.

apt-get install vim

Итак, в файле /etc/sudoers уже должна быть такая строчка:

root        ALL=(ALL)  ALL

Ее присутствие позволяет пользователю или группе root (первый параметр), исполнять на любой машине (второй параметр) команды, указанные в третьем параметре (после знака равно).

Аналогичным способом нужно наделить нового пользователя правом на команду sudo, добавив в файл следующую строку:

ИМЯ_ПОЛЬЗОВАТЕЛЯ_СИСТЕМЫ ALL=(ALL) ALL

Если внимательно посмотреть содержание файла /etc/sudoers, то в нем можно увидеть строчку sudo ALL=(ALL:ALL) ALL, которая дает права группе sudo на использование соответствующей команды.

Шаг 5 — запрет подключения через SSH под root

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

Так как мы создали специального пользователя для управления сервером, который наделен всеми необходимыми правами, то доступ под root к SSH там больше не нужен.

Изменим настройки ssh сервера. Запретим логин под root, доступ по доменному имени и разрешим логин только под нашим новым пользователем.

Для этого нужно внести в файл /etc/ssh/sshd_config следующие изменения:

PermitRootLogin no
UseDNS no
AllowUsers ИМЯ_ПОЛЬЗОВАТЕЛЯ_СИСТЕМЫ

Возможно, директивы PermitRootLogin и UseDNS уже присутствуют в файле, и необходимо просто задать им нужное значение.

Если вы используете Ubuntu 14, то перезапустите ssh сервер командой:

reload ssh

Или для Ubuntu ≥ 16:

service ssh restart

Шаг 6 — смена порта для SSH

Для дополнительной защиты можно сменить порт SSH, который по умолчанию имеет значение 22:

Port 50683

Выбирайте значение между 49152 и 65535, это диапазон динамических портов (частных). Можно воспользоваться командой shuf для случайного выбора в этом диапазоне:

shuf -i 49152-65535 -n 1

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

sudo lsof -i :22

Если вы используете Ubuntu 14, то перезапустите ssh сервер командой:

reload ssh

Или для Ubuntu ≥ 16:

service ssh restart

Шаг 7— Настройка авторизации по открытому ключу (Рекомендуется)

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

Для начала проверьте, существует ли на вашем локальном компьютере папка /home/ВАШ_ПОЛЬЗОВАТЕЛЬ/.ssh. Если нет, то создайте ее командой:

mkdir ~/.ssh

Для генерации ключа выполните команду:

ssh-keygen -t rsa -f ~/.ssh/myrsakey

Если не указать имя файла, то по умолчанию он будет создан в каталоге ~/.ssh с именем id_rsa.

После выполнения команды система предложит вам ввести кодовую фразу для ключа и повторить ее для минимизации опечаток. Если ее указать, то в момент подключения по SSH вместо введения пароля вам нужно будет ввести эту самую фразу. Кодовой фразой может быть любое короткое запоминающееся предложение. Если при создании ключа фразу не указывать, то и при подключении вводить ее не придется. Более защищенным вариантом будет подключение с кодовой фразой, но и подключение без нее будет лучше, чем подключение по паролю:

Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

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

Your identification has been saved in /home/ВАШ_ПОЛЬЗОВАТЕЛЬ/.ssh/myrsakey.
Your public key has been saved in /home/ВАШ_ПОЛЬЗОВАТЕЛЬ/.ssh/myrsakey.pub

Отобразите на экране содержание файла myrsakey.pub:

cat ~/.ssh/myrsakey.pub

Вы должны увидеть примерно следующее:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBGTO0tsVejssuaYR5R3Y/i73SppJAhme1dH7W2c47d4gOqB4izP0+fRLfvbz/tnXFz4iOP/H6eCV05hqUhF+KYRxt9Y8tVMrpDZR2l75o6+xSbUOMu6xN+uVF0T9XzKcxmzTmnV7Na5up3QM3DoSRYX/EP3utr2+zAqpJIfKPLdA74w7g56oYWI9blpnpzxkEd3edVJOivUkpZ4JoenWManvIaSdMTJXMy3MtlQhva+j9CgguyVbUkdzK9KKEuah+pFZvaugtebsU+bllPTB0nlXGIJk98Ie9ZtxuY3nCKneB+KjKiXrAvXUPCI9mWkYS/1rggpFmu3HbXBnWSUdf localuser@machine.local

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

mkdir ~/.ssh
chmod 700 ~/.ssh

Теперь создайте или откройте файл в директории .ssh с названием authorized_keys в текстовом редакторе и добавьте в его конец содержание файла ~/.ssh/myrsakey.pub с вашего локального компьютера. Только убедитесь, что владельцем файла authorized_keys является пользователь, под которым вы осуществляете подключение к серверу.

Далее ограничьте права на доступ к файлу authorized_keys при помощи следующей команды:

chmod 600 ~/.ssh/authorized_keys

Теперь вы можете заходить на сервер по SSH с учетной записью вашего нового пользователя, используя закрытый ключ для авторизации:

ssh -i ~/.ssh/myrsakey ИМЯ_ПОЛЬЗОВАТЕЛЯ_СИСТЕМЫ@IP_адрес_сервера

Если при создании ключа вы указали кодовую фразу, то ее необходимо будет ввести.

Если при подключении по ключу выдаётся ошибка “authentication error”, добавьте в файл /etc/ssh/sshd_config следующие строки:

PubkeyAcceptedKeyTypes=+ssh-rsa

Итак, вход по ключу настроен. Если вы хотите отключить доступ по паролю, то добавьте строчку PasswordAuthentication no в файл /etc/ssh/sshd_config и перезапустить ssh сервер.

Заключение

Теперь ваш сервер имеет удобный доступ и минимальную защиту, с которыми можно начинать работу.

Источники

--

--