Поиск по сайту:

Первоначальная настройка сервера с Ubuntu 20.04/18.04 и 16.04


Из этого руководства вы узнаете, как выполнить первые основные шаги по настройке нового установленного сервера Ubuntu, чтобы повысить безопасность и надежность вашего сервера.

Конфигурации, описанные в этом разделе, практически одинаковы для всех серверных систем Ubuntu в зависимости от базовой платформы ОС, независимо от того, установлен ли Ubuntu на чистом сервере, в частной виртуальной машине или виртуальной машине. развернут в публичном облаке VPS.

Требования

  • Установка сервера Ubuntu 20.04
  • Установка сервера Ubuntu 18.04
  • Установка сервера Ubuntu 16.04

Обновление и обновление системы Ubuntu

Первый шаг, о котором вам необходимо позаботиться в случае новой установки сервера Ubuntu или нового развернутого Ubuntu VPS, — это убедиться, что система и все системные компоненты, такие как ядро, менеджер пакетов apt и все другие установленные пакеты обновлены последними выпущенными версиями и исправлениями безопасности.

Чтобы обновить сервер Ubuntu, войдите в консоль сервера с учетной записью с правами root или непосредственно как root и выполните приведенные ниже команды, чтобы выполнить процесс обновления и обновления.

sudo apt update 

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

sudo apt list --upgradable

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

sudo apt upgrade

Чтобы удалить все локально загруженные пакеты deb и все другие кеши apt-get, выполните команду ниже.

sudo apt autoremove
sudo apt clean

Создать новую учетную запись в Ubuntu

По умолчанию в целях безопасности учетная запись root в Ubuntu полностью отключена. Чтобы создать новую учетную запись в системе, войдите в систему под учетной записью пользователя с правами root и создайте новую учетную запись с помощью приведенной ниже команды.

Этой новой учетной записи будут предоставлены права root с помощью команды sudo, и она будет использоваться для выполнения административных задач в системе. Обязательно установите надежный пароль для защиты этой учетной записи. Следуйте инструкциям adduser, чтобы настроить данные пользователя и пароль.

sudo adduser ubuntu_user

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

sudo chage -d0 ubuntu_user

На данный момент новый добавленный пользователь не может выполнять административные задачи с помощью утилиты sudo. Чтобы предоставить этой новой учетной записи пользователя права администратора, вам следует добавить пользователя в системную группу «sudo», выполнив приведенную ниже команду.

sudo usermod -a -G sudo ubuntu_user

По умолчанию всем пользователям, принадлежащим к группе «sudo», разрешено выполнять команды с правами root с помощью утилиты sudo. Команду Sudo необходимо использовать перед написанием команды, необходимой для выполнения, как показано в примере ниже.

sudo apt install package_name

Проверьте, есть ли у нового пользователя права root, войдя в систему и выполнив команду apt update с префиксом sudo.

su - ubuntu_user
sudo apt update

Настройте имя хоста системы в Ubuntu

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

В крупной компании машинам присваиваются имена по сложным схемам именования, чтобы их можно было легко идентифицировать в стойках центра обработки данных. Например, если на вашей машине с Ubuntu будет работать почтовый сервер, имя машины должно отражать этот факт, и вы можете настроить имя хоста машины, например, как mx01.mydomain.lan.

Чтобы просмотреть подробную информацию об имени хоста вашего компьютера, выполните следующую команду.

hostnamectl

Чтобы изменить имя вашего компьютера, введите командуhostnamectl с новым именем, которое вы настроите для своего компьютера, как показано в приведенном ниже фрагменте.

sudo hostnamectl set-hostname tecmint

Подтвердите новое имя вашей системы с помощью одной из приведенных ниже команд.

hostname
hostname -s
cat /etc/hostname 

Настройка SSH с аутентификацией по открытому ключу в Ubuntu

Чтобы повысить степень безопасности системы сервера Ubuntu, вам следует настроить аутентификацию по открытому ключу SSH для локальной учетной записи. Чтобы сгенерировать пару ключей SSH, открытый и закрытый ключ, с указанием длины ключа, например 2048 бит, выполните следующую команду на консоли вашего сервера.

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

su - ubuntu_user
ssh-keygen -t RSA -b 2048

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

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

ssh-copy-id remote_user@remote_server

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

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

Введите в консоли выход, чтобы закрыть удаленный сеанс SSH.

ssh remote_user@remote_server
w
exit

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

cat ~/.ssh/id_rsa.pub

Безопасный SSH-сервер в Ubuntu

Чтобы защитить демон SSH, вам следует изменить номер порта SSH по умолчанию с 22 на случайный порт, превышающий 1024, и запретить удаленный доступ SSH к учетной записи root через пароль или ключ, открыв основной файл конфигурации SSH-сервера и внося следующие изменения.

sudo vi /etc/ssh/sshd_config

Сначала найдите строку с комментариями #Port22 и добавьте под ней новую строку (соответственно замените номер порта прослушивания):

Port 2345

Не закрывайте файл, прокрутите вниз и найдите строку #PermitRootLogin yes, раскомментируйте строку, удалив знак # (хэштег) из начала строки и измените строку, чтобы она выглядела так, как показано в приведенном ниже отрывке.

PermitRootLogin no

После этого перезапустите SSH-сервер, чтобы применить новые настройки, и протестируйте конфигурацию, попытавшись войти на этот сервер с удаленного компьютера с учетной записью root через новый номер порта. Доступ к учетной записи root через SSH должен быть ограничен.

sudo systemctl restart sshd

Кроме того, запустите netstat или команду ss и отфильтруйте вывод с помощью команды grep, чтобы отобразить новый номер порта прослушивания для SSH-сервера.

sudo ss -tlpn| grep ssh
sudo netstat -tlpn| grep ssh

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

Чтобы включить эту функцию, выполните приведенную ниже команду, которая добавит переменную bash TMOUT в скрытый файл .bashrc вашей учетной записи и принудительно установит каждое SSH-соединение с именем пользователь будет отключен или отключен после 5 минут бездействия.

echo 'TMOUT=300' >> .bashrc

Запустите команду Tail, чтобы проверить, правильно ли добавлена переменная в конец файла .bashrc. С этого момента все последующие SSH-соединения будут автоматически закрываться через 5 минут бездействия.

tail .bashrc

На снимке экрана ниже время удаленного сеанса SSH с компьютера Drupal на сервер Ubuntu через учетную запись ubuntu_user истекло, и через 5 минут произошел автоматический выход.

Настройте брандмауэр Ubuntu UFW

Каждому серверу необходим хорошо настроенный брандмауэр для защиты системы на сетевом уровне. Сервер Ubuntu использует приложение UFW для управления правилами iptables на сервере.

Проверьте состояние приложения брандмауэра UFW в Ubuntu, выполнив приведенные ниже команды.

sudo systemctl status ufw
sudo ufw status

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

sudo ufw allow 2345/tcp

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

sudo ufw enable
sudo ufw status

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

sudo ufw allow http  #allow http traffic
sudo ufw allow proto tcp from any to any port 25,443  # allow https and smtp traffic

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

sudo ufw status verbose

Установите время сервера Ubuntu

Чтобы контролировать или запрашивать часы сервера Ubuntu и другие связанные настройки времени, выполните команду timedatectl без аргументов.

Чтобы изменить настройки часового пояса вашего сервера, сначала выполните команду timedatectl с аргументом list-timezones, чтобы вывести список всех доступных часовых поясов, а затем установите часовой пояс вашей системы, как показано в приведенном ниже фрагменте.

sudo timedatectl 
sudo timedatectl list-timezones 
sudo timedatectl set-timezone Europe/Vienna

Новый клиент-демон systemd-timesyncd systemd можно использовать в Ubuntu, чтобы обеспечить точное время для вашего сервера в сети и синхронизировать время с сервером верхнего уровня.

Чтобы применить эту новую функцию Systemd, измените файл конфигурации демона systemd-timesyncd и добавьте ближайшие географически NTP-серверы в строку оператора NTP, как показано в приведенном ниже фрагменте файла:

sudo nano /etc/systemd/timesyncd.conf

Добавьте следующую конфигурацию в файл timesyncd.conf:

[Time]
NTP=0.pool.ntp.org 1.pool.ntp.org
FallbackNTP=ntp.ubuntu.com

Чтобы добавить ближайшие географически NTP-серверы, обратитесь к списку серверов проекта пула NTP по следующему адресу: http://www.pool.ntp.org/en/

После этого перезапустите демон Systemd timesync, чтобы отразить изменения, и проверьте состояние демона, выполнив приведенные ниже команды. После перезапуска демон начнет синхронизировать время с новым одноранговым сервером ntp.

sudo systemctl restart systemd-timesyncd.service 
sudo systemctl status systemd-timesyncd.service

Отключите и удалите ненужные службы в Ubuntu

Чтобы получить список всех сетевых служб TCP и UDP, которые по умолчанию работают на вашем сервере Ubuntu, выполните команду ss или netstat.

sudo netstat -tulpn
OR
sudo ss -tulpn

Начиная с версии Ubuntu 16.10, распознаватель DNS по умолчанию теперь контролируется службой systemd-resolved, о чем свидетельствуют выходные данные netstat или . >ss-команды.

Вам также следует проверить состояние службы systemd-resolved, выполнив следующую команду.

sudo systemctl status systemd-resolved.service

Служба systemd-resolved привязывается ко всем включенным сетевым интерфейсам и прослушивает порты 53 и 5355 TCP и UDP.

Запуск демона DNS-кэширования system-resolved на рабочем сервере может быть опасным из-за большого количества DDOS-атак, совершаемых злоумышленниками на незащищенные DNS-серверы.

Чтобы остановить и отключить эту службу, выполните следующие команды.

sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved

Убедитесь, что служба остановлена и отключена, введя команду ss или netstat. Порты прослушивания, разрешенные systemd, 53 и 5355 TCP и UDP, не должны быть указаны в выводе команд netstat или ss, как показано ниже.

Вам также следует перезагрузить компьютер, чтобы полностью отключить все службы демонов, разрешенные systemd, и восстановить файл /etc/resolv.conf по умолчанию.

sudo ss -tulpn
sudo netstat -tulpn
sudo systemctl reboot

Хотя вы отключили запуск некоторых нежелательных сетевых служб на своем сервере, в вашей системе установлены и работают другие службы, такие как процесс lxc и служба snapd. Эти службы можно легко обнаружить с помощью команд ps, top или pstree.

sudo ps aux
sudo top
sudo pstree

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

sudo apt autoremove --purge lxc-common lxcfs
sudo apt autoremove --purge snapd

Вот и все! Теперь сервер Ubuntu готов к установке дополнительного программного обеспечения, необходимого для пользовательских сетевых служб или приложений, таких как установка и настройка веб-сервера, сервера базы данных, службы общего доступа к файлам или других конкретных приложений.