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

Введение

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

Шаг 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_адрес_сервера

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

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

Заключение

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

Источники

--

--

Software Engineer

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store