Ubuntu Server - это дистрибутив Linux для установки на серверы. Он не содержит графической оболочки, по умолчанию доступны только консольные утилиты. После завершения установки вы получаете голую систему Ubuntu и прежде чем она станет способна выполнять свои функции сервера, вам предстоит потратить еще немного времени на ее настройку.
В этой статье мы разберем как выполняется настройка Ubuntu Server 18.04 после установки, рассмотрим настройку пользователей, SSH, а также настройку брандмауэра.
Содержание статьи
Настройка Ubuntu Server 18.04 после установки
Начнем с обновления системы. Я предполагаю, что сеть у вас уже настроена автоматически. Если это не так, то воспользуйтесь статьей про настройку сети с помощью Netplan.
1. Обновление системы
Первым делом, после завершения установки любой операционной системы ее необходимо обновить. Для этого выполните такие команды:
sudo apt update
sudo apt list --upgradable
sudo apt upgrade
Чем больше времени прошло с момента релиза установочного образа Ubuntu Server, тем больше времени займет обновление системы, но это необходимая операция. После обновления перезагрузите систему:
sudo reboot
2. Настройка SSH
Поскольку это серверная система, то получать к ней доступ мы будем удаленно. Поэтому сразу же после обновления следует настроить SSH и использовать этот протокол для дальнейшей настройки.
Сначала необходимо сменить порт SSH на удаленном сервере, иначе рано или поздно кто-то попытается его перебрать. Откройте файл /etc/ssh/sshd.conf, найдите строчку Port 22 и измените значение порта на другое число, например, на 2323:
sudo vi /etc/ssh/sshd_config
Для запуска службы SSH и добавления ее в автозагрузку выполните:
sudo systemctl start sshd
sudo systemctl enable sshd
Теперь вы можете авторизоваться на вашем сервере с другой машины. Но каждый раз вводить пароль при входе не очень удобно. Настроем авторизацию по ключу. Для этого на вашей рабочей машине выполните команду для генерации ключа:
ssh-keygen
Программа спросит вас путь, куда нужно сохранить ключ, не оставляйте по умолчанию, используйте например, ~/.ssh/id_rsa_ubuntu. Затем утилита предложит ввести пароль для ключа. Если вы не хотите вводить этот пароль каждый раз при входе по SSH, то его задавать не нужно. Но в целях безопасности очень не рекомендуется использовать ключи без паролей.
Затем отправьте только что созданный ключ на свой сервер:
ssh-copy-id -i ~/.ssh/id_rsa_ubuntu.pub имя_пользователя@хост
Теперь вы сможете авторизоваться на этом сервере без ввода пароля:
ssh имя_пользователя@хост
Дальнейшую настройку сервера можно проводить через SSH.
3. Настройка брандмауэра ufw
Сервер будет находиться в сети, а поэтому к нему будет иметь доступ множество пользователей. Необходимо спрятать все запущенные на сервере службы с помощью брандмауэра и оставить только разрешенные. В Ubuntu для управления брандмауэром используется надстройка над iptables - ufw.
По умолчанию, после запуска брандмауэр закрывает доступ ко всем не разрешенным службам извне. Мы сейчас работаем на сервере по SSH, поэтому нужно разрешить эту службу:
sudo ufw allow OpenSSH
Если вы изменили стандартный порт SSH на втором шаге, необходимо разрешать именно тот порт, который вы указали:
sudo ufw allow 2323/tcp
Затем выполните такую команду для включения ufw:
sudo ufw enable
Далее нужно нажать y для подтверждения. Брандмауэр будет запущен и добавлен в автозагрузку. Вы можете посмотреть его состояние командой:
sudo ufw status
4. Настройка времени
Установщик не предлагает вам выбрать часовой пояс и по умолчанию остается UTC. Таким образом, вы получаете время по Гринвичу. Вы можете проверить какое время показывает ваш сервер с помощью команды:
date
Чтобы это изменить нужно добавить свой часовой пояс. Посмотреть доступные часовые пояса можно командой:
timedatectl list-timezones
А для выбора нужного выполните:
sudo timedatectl set-timezone Europe/Kiev
Также желательно настроить NTP сервер, чтобы время автоматически синхронизировалось с серверами в интернете. Для установки NTP выполните:
sudo apt install ntp
А затем добавьте его в автозагрузку:
sudo systemctl enable ntp
5. Разблокировка пользователя root
В Ubuntu по умолчанию пароль для суперпользователя не задан, поэтому войти от его имени вы не сможете. Если вы хотите иметь возможность логиниться в системе от суперпользователя, или он нужен для системы управления конфигурацией то вы можете задать для него пароль:
sudo passwd root
И введите новый пароль. Затем вы сможете авторизоваться от имени этого пользователя.
su - root
Выводы
В этой статье мы разобрали как выполняется настройка Ubuntu Server после установки. Мы сделали только основные шаги, и для того чтобы эта система переварилась в полноценный веб-сервер, сервер баз данных или приложений нужно установить еще много программ. Но обо всем этом уже есть отдельные статьи на Losst.
Я не понял, самого главного, зачем это? Админ который не может настроить время не админ, про фаервол я промолчу, а это мы еще ничего не настраивали. Для чего статья?
Видимо для начинающих - их большинство, но с сервером познакомиться полезно. Применительно к домашнему использованию, а в частности поднятию NAS, была-бы интересна статься с настройкой в ubuntu server: raid 5, dlna, samba и мониторинг дисков SMART. Всякие настройки веб-сервера и почтового сервера не интересны, ввиду того , что общедоступными и бесплатными пользоваться намного удобнее.
Меня это тоже улыбает, но дело в том, что не у всех есть стабильное интернет-подключение, поэтому нужна реконфигурация ntp-service, фаерволл - для проброса порта, а openssh - для удаленного доступа из терминала с прописью соответствующих конфига и порта. Насчет команды активации root-account's я тоже посмеялся - но это дело привычки... а в остальном все верно... так обычно настраивается сервер с залоченным извне доступа в интрасеть...
для начала следовало бы посмотреть статус службы, весьма вероятно, что она уже в автозагрузке и уже запущена. сколько раз устанавливал сервер, ни разу ручками sshd не запускал.
не следует пренебрегать типом ключа, потому что ваша команда создаст тот ключ, который идёт в дефолте, скорей всего это будет RSA. текущая тенденция показывает, что ключи ed25519 выгодней, удобней и надёжней. но это IMHO...
всегда задавайте пароль для ключа. всегда! вы не можете предугадать, где окажется ваш клиентский компьютер с парой ключей без пароля... его могут украсть, он может потребовать ремонта в мастерской, он наконец просто окажется в публичном пространстве. если на ключе не будет пароля, вы в довесок ко всем проблемам получите ещё и скомпрометированный сервер.
настройкой демона sshd автор статьи видимо пренебрегает... после настройки подключения по ключу очень рекомендуется поменять порт, отключить возможность входить по паролю. ну и вижу в конце статьи автор советует настроить пароль root - сосем не знает и не умеет пользоваться Linux... жуть какая. на демоне sshd вход root желательно тоже отключать. но про рута ниже поругаюсь.
очень рекомендуется кроме часового пояса настраивать ещё и службу ntp...
чушь. в Ubuntu по умолчанию у root не задан пароль, и как следствие отсутствует возможность залогиниться. но первый настроенный в программе установки пользователь автоматически является sudoer-ом. читайте man sudo по поводу опции -s и не ломайте Ubuntu назначением пароля root-у. мало того, что SSH у вас настроен с дырами, вы ещё одну дыру открываете. зайдите в терминал, и вбейте последовательно две команды:
sudo -s
whoami
и поймёте, что пароль root на сервере не нужен, есть sudoer.
сервер у вас получился дырявый... но это полбеды. беда в том, что все новички, которые будут учиться по вашей статье, будут впоследствии иметь большие проблемы...
ну и последнее, что хотелось бы отметить... Ubuntu-server не подходит новичкам. если хочется научиться поднимать сервер, лучше всего подойдёт mini.iso - он позволяет поднять базовый сервер и настроить SSH, разница в действиях с Debian будет минимальной. но после настройки базового сервера начинается всё самое интересное... поэтому учиться следует на эмуляторах компьютеров, там можно всё сломать без возможных осложнений. а на боевой сервер следует идти, когда все действия понятны, отработаны и спланированы.
в общем так как-то... ссылки на статьи дал. не просто голословно выругал. если администратор ссылки удалит - на его совести...
Я понимаю, что вы очень-очень хотите прорекламировать здесь свой проект, но нет, ничего не выйдет. Это так не работает. Никаких ссылок на тот сайт здесь не будет. Теперь по замечаниям:
- SSH запущен - полностью правы. Сначала написал, потом проверил и уже не хотел удалять. Пусть будет на всякий случай.
- Пароль для ключа задавать не нужно - если мы делаем это для безопасности, пароль задавать нужно, но если мы хотим авторизоваться без ввода пароля - пароль задавать не нужно, уточню в статье.
- В Ubuntu по умолчанию суперпользователь отключен - отключен/не задан пароль... залогиниться то одинаково нельзя. Мне тоже не нравиться этот пункт потому что это не безопасно и новичкам лучше привыкать использовать sudo. Но это уже дело удобства за счет снижения безопасности.
- очень рекомендуется поменять порт - да, действительно, забыл добавить, на стандартном порту сразу же начинается перебор пароля. А вот вход по паролю для новичков лучше оставить. Ключ потеряется или не будет его под рукой в нужный момент и все. Достаточно поменять порт и смотреть время от времени все ли нормально.
- очень рекомендуется кроме часового пояса настраивать ещё и службу ntp - да, нужно добавить.
сам статьи по ссылкам читаешь, другим не даёшь, хитрый перец.
я объясню вам, почему ваш поступок является жлобским... сайт на который я даю ссылки без рекламы. он не приносит денег и делается для людей. только для людей. читатели losst могли бы на нём найти полезное и интересное. но не найдут, благодаря вам. оставляю на вашей совести... живите с этим.
в Ubuntu root есть, и он активен всегда, но залогиниться рутом нет возможности. рутом можно стать только sudo -s. на снимке экрана, который вы тоже забанил, я вам это показал.
пароль для ключа задаётся для того, чтобы злоумышленник стыривший ваш ключ с клиентской машины не смог зайти на ваш сервер. если ключ будет запаролен, злоумышленник стыривший ваш ключ обломается при попытке подключиться. заблудился сам, и помогаешь заблудиться другим? ню-ню...
вход по паролю на сервер закрывать нужно обязательно... - это реальная дыра. при потере ключа либо прямой доступ к серверу, либо, если сервер удалённый - подключение по VNC. но лучше ключ не терять, не девочки чай и не в бирюльки играете. а если вход по паролю оставить, вас рано или поздно сломают...
всё больше не спорю... плавайте.
"вход по паролю на сервер закрывать нужно обязательно... - это реальная дыра. при потере ключа"
"очень рекомендуется поменять порт"
Мы строим домашний сервер 😀 он за NAT-ом роутера или провайдера, ему даже файервол не нужен, впрочем, как и смена портов 🙂
И к Вам вопрос: смысл юзать брандмауэр ufw или иной брандмауэр, если средств iptables вполне достаточно? Чтоб GUI с картинками был? Или это для тех, кому лень man iptables читать?
Мужик, ты мне не нравишься...очень! Если мне что то не понятно - я перерываю кучу инфы, просматриваю кучу роликов, спрашиваю на форумах и нахожу правильное решение. Это нормальная реакция на все новое. А читать твои комментарии изложенные в пренебрежительно-презрительном тоне мне как то не айс.
ссылки на статьи дал. не просто голословно выругал. если администратор ссылки удалит - на его совести...
Пожалуй, и я умываю руки: не есть хорошо использовать чужой труд не ссылаясь на него (это я про ваш труд)...а все дальнейшие статьи на losst, полетели от вашей ссылки, если не ошибаюсь, ибо мог найти неверное соответствие...но, благодаря здешнему владельцу/админу - сравнить не могу, так что, пока, Вы правы: если администратор ссылки удалит - на его совести...
Где я использую чужой труд и что и куда полетело?
Зачем автора так раскатывать? У меня домашний nas файлопомойка + посмотреть кино на плексе, углубляться в настройки фаера и даже ключей ssh для себя смысла не вижу. Для новичков статья будет интересной, каждый когда чему то учится делает свои ошибки. У меня одна только проблема скорость на linux раза в 3 ниже скорости под windows, мат. плата имеет 2 гигабинтных сетевых карт, в любой из них низкая скорость(( Может кто то подскажет как быть
Включите ручками:
sudo ethtool -s имя_сетевого_интерфейса speed 1000 duplex full autoneg on
+ перезагрузить или передёрнуть кабель
Добрый день!
А не подскажите, как можно оптимизировать Ubuntu Server? У Вас уже ранее рассматривалась оптимизация, но там в основном шла речь о GUIне. Здесь же всего этого нет, однако, можно, например, отключить pti в grub или дополнительно настроить кэширование. Возможно отключить какие-нибудь фоновые процессы, хотя их и так по минимуму по умолчанию, также попробовать поиграть с параметром vfs_cache_pressure и т.д. В основном меня интересует ускорение доступа к куче и запись в файл на SSD. Хотелось бы знать, как настройкой ОС можно ускорить работу своего приложения.
Тут, собственно, всё зависит от машины, на которой этот самый сервер установлен: физическая, виртуальная, размер RAM, про SSD уже понял.
Если в общих чертах, ибо это потянет на целую статью:
_всё, по-максимуму, в RAM (tmpfs никто не отменял)
_TRIM для SSD (не знаю, может в Ubuntu он и по умолчанию включен, но во FreeBSD и в Debian - точно нет)
_"поиграться" размерами кешей - настройки ядра под те или иные надобности: файловый сервер - это одно, а DNS-сервер - это другое
_возможно SWAP в zRAM заюзать вместо или впридачу к SWAP на SSD (от размера RAM зависит)
P.S.: слишком мало исходных данных, чтоб предложить, что-то конкретное...да и не форум здесь, а растянется на ура...
Попробую конкретизировать. Торговый робот на колокации (виртуальный сервер) получает маркетдату по UDP multicast. Должен максимально быстро обрабатывать данные (tick-to-trade < 10 мкс) и записывать их в файл. Оперативка там особо не нужна. Думаю дополнительно выделить память в стек через setrlimit(), т.к. через кучу быстро работать наверное не получится. Может еще отключение IPv6 поможет. Но надо учитывать, что сервер виртуальный, а основные задержки будут в сетевой карте, на выбор которой я повлиять не могу. Буду благодарен за любую помощь.
и записывать их в файл. Оперативка там особо не нужна
В вашем вопросе содержится и ответ: запихайте файл в tmpfs и пишите в него, ну очень быстро, а на диск будете его скидывать медленно, скриптом, например. Есть, конечно, доля вероятности потери данных или переполнения RAM этим самым файлом - но тут уже надо точно знать сколько данных поступает в еденицу времени и скорость записи этого файла на SSD - из этого уже можно и расчёт делать. И да - целиком из RAM на SSD файл переносить не надо, можно дозаписывать.
В общем, если нагрузка не постоянна, можно заюзать mknod или mkfifo, а уже с них писать на SSD и вся эта очередь данных, что не будет успевать писаться в файл на SSD, будет висеть в RAM или скидываться в SWAP, при переполнении оной, так что SWAP здесь будет - зло, а размер RAM - лучше больше 😉
В своё время решал подобную задачу, но быстродействие не было в приоритете, в приоритете было:
_GPS-приёмник выдаёт данные
_данные должны попадать в основной, стандартный канал девайса
_данные должны подаваться на парсер, который их обрабатывает нужным образом и передаёт некой программе или девайсу (уж не помню - куда)
На Си я писал делитель на два файла устройства и парсер, т.к. BASH не выдавал нужного быстродействия, на BASH-е писал mknod и управление (запуск нужного и в нужном порядке), а может и парсер тоже на BASH-е писал - не помню, остальное - человек делал сам. И да, девайс был на Android, но там тоже Линукс-ядро с некоторыми изменениями.
Попробую поконкретнее. Торговый робот в зоне колокации (виртуальный сервер) по UDP multicast принимает маркетдату. Оперативная память 2 Гб (больше в принципе и не надо). Должен очень быстро обрабатывать данные (tick-to-trade < 10 мкс) и потом записывать в файл. Скорее всего от работы с кучей откажусь, т.к. через Linux API можно увеличить размер стека в самой программе, что даст выигрыш в производительности. Конечно, я понимаю, что основная задержка будет в сетевой карте, на выбор которой я повлиять не могу, но тем не менее, хотелось бы свести к минимуму "настраиваемые" задержки.
Забыл про pti и spectre добавить: не вижу смысла в их отключении, ибо безопасность сервера - превыше всего 🙂 и на моём двухъядерном, четырёхпотоковом i7-640M, LMDE 3 64bit - отключение (pti=off spectre_v2=off) почти не даёт прироста производительности CPU: всего 0.1%...а не 30%, как многие пишут...
P.S.: я бы выложил ссылки на тесты Geekbench и LinPack, но в свете последних событий, admin режет сообщения с сылками...придёться Вам тестить самому или поверить мне на слово 😉
Да, модерастия страшная вещь! Написал Вам ответ на предыдущий комментарий, а его до сих пор нет. Куда подевался? Непонятно.
Можно еще попробовать IPv6 вырубить. Но не знаю имеет ли смысл. Буду пробовать.
Если не используется - можно и вырубить. Надо всё лишнее вырубить, а по-хорошему и ядро пересобрать с минимумом необходимого.
Можно ещё и микрокоды CPU обновить, ибо со старыми, как пишут, патчи pti и spectre действительно просаживают производительность, но я не пробовал, у моей машинки микрокоды обновлены.
Вообще, под вашу биржевую задачу, нужна отдельная железка, но...раз виртуалка, так виртуалка...
Я вот только не понимаю, если у Вас нет доступа к "железкам" и машинка виртуальная, как Вы собирались отключать pti и spectre? Или это удалённо администрируемый сервер?
Так всё-таки, кто-нибудь знает ответ на мой вопрос:
Какой смысл юзать файервол ufw или иной файервол, если средств iptables вполне достаточно? Чтоб GUI с картинками был? Или это для тех, кому лень man iptables читать?
P.S.: я имею в виду не только серверные дистрибутивы.
Администратору, который постоянно имеет дело с настройками брандмауэра действительно лучше iptables, а мне, человеку, который пользуется им от случая до случая проще запомнить ufw allow/deny, чем длинное правило iptables.
Статься написана по дырявому мануалу х-какого-то года. копипаст лютый.
- ключ+пароль - стандарт даже на роутерах типа Cisco и HP. А тут - ОС. это по-любому нужно!!!
- "домашний сервер за Nat" (из комментов) - что за лютый бред ребята? это СЕРВЕР. Ubuntu 18.04 и не важно где он стоит. надо настраивать ПРАВИЛЬНО.
мне изначально НЕ понравились скрины. на сервере мы видим что? UNITY???
консольный сервер - это сервер. ставится из Mini-iso с опцией "Простой Ubuntu-server". До кучи можете накрутить опции . (Open SSH, dns и тп. если надо)
Не обозначено что именно хочет делать ADMIN с этим серваком
закрыть вход по стандартным портам - вообще сам Бог велел.
Если товарищ админ хочет написать нормальный "мануал" - пусть спросит у тех кто умеет, сделает сам, а потом на основе СВОЕГО опыта напишет мануал и итоговый результат (мы получили "то то" и "то то")
P.S.: работать надо cтрого sudo su и не выёживаться. никаких рутов напрямую
Собрались тут профи...
Автору спасибо за статью. Для нубов самое оно.
Как в Windows перекинуть ssh ключ на Ubuntu?
Гайд косой как и весь этот сайт, хз нахера автор этот треш в сети держит. Толи устаревший на 20.04 не катит, толи изначально не правильный. Я любитель и по началу бился страшно, веря, что тут всё верно, всё таки первый в выдаче. Оказалось ошибки в инструкции. АВТОР СДЕЛАЙ ДОБРОЕ ДЕЛО. СНЕСИ СВОЁ ДЕРЬМИЩЕ!!! не вводи людей в заблуждение!!! 5 из 5 статей с лютыми ошибками.