Centos 7 настройка vps
Впервые заходя на новый виртуальный выделенный сервер, необходимо выполнить несколько действий, которые повысят его безопасность. В данном руководстве речь пойдет о том, как создать нового пользователя, передать ему соответствующие привилегии и настроить SSH.
1: Войдите как root-пользователь
Получив свой IP-адрес и root-пароль, войдите на сервер как главный пользователь (root). Для этого используйте команду (замените выделенный IP своим IP-адресом):
ssh root@ 111.22.33.444
Терминал вернет что-то вроде:
The authenticity of host '111.22.33.444 (111.22.33.444)' can't be established.
ECDSA key fingerprint is 79:95:46:1a:ab:37:11:8e:86:54:36:38:bb:3c:fa:c0.
Are you sure you want to continue connecting (yes/no)?
Выберите yes и введите свой root-пароль.
Примечание: использовать учетную запись root на регулярной основе не рекомендуется; данное руководство поможет создать другого пользователя для постоянной работы.
2: Измените пароль
3: Создайте нового пользователя
Войдя на сервер и изменив root-пароль, нужно снова войти на VPS как root. Данный раздел продемонстрирует, как создать нового пользователя и установить пароль для него.
Итак, создайте нового пользователя; для этого используйте следующую команду (замените demo своим именем пользователя):
Теперь создайте пароль для этого пользователя (опять же, замените demo именем только что созданного пользователя):
4: Root-привилегии
На данный момент все права администратора принадлежат root-пользователю. Чтобы иметь возможность постоянно использовать новую учетную запись, нужно передать новому пользователю (demo) все root-привилегии.
Для выполнения задач с привилегиями root нужно начинать команду с sudo. Эта фраза полезна по двум причинам: 1) она защищает систему от разрушающих ошибок, допущенных пользователем; 2) она хранит все запущенные с sudo команды в файле /var/log/secure, который позже можно просмотреть.
Теперь нужно изменить настройки sudo; для этого используйте текстовый редактор CentOS по умолчанию, который называется vi:
Найдите раздел User privilege specification, который выглядит так:
После строки с привилегиями root внесите следующую строку, которая передаст все привилегии новому пользователю (чтобы начать ввод текста в vi, нажмите i):
demo ALL=(ALL) ALL
Чтобы завершить ввод текста, нажмите Esc; затем введите :, wq, Enter, чтобы сохранить и закрыть файл.
5: Настройте SSH (дополнительно)
Теперь нужно обезопасить сервер. Этот дополнительный раздел расскажет, как защитить сервер путем усложнения процедуры авторизации.
Откройте конфигурационный файл:
sudo vi /etc/ssh/sshd_config
Найдите следующие разделы и внесите в них соответствующие изменения:
Port 25000
PermitRootLogin no
Port: хотя по умолчанию используется порт 22, его номер можно заменить любым другим в диапазоне от 1025 до 65536. В данном руководстве используется SSHD-порт 25000. Обратите внимание: новый номер порта нужно обязательно запомнить/записать, поскольку он понадобится для входа на сервер через SSH.
PermitRootLogin:измените значение yes на no, чтобы отключить вход в систему как root. Теперь войти на сервер можно только при помощи нового пользователя.
Чтобы SSH мог использовать только конкретный пользователь, добавьте эту строку в нижней части документа (замените demo своим именем пользователя):
Затем сохраните изменения и закройте файл.
Перезапуск SSH
Чтобы активировать внесенные изменения, перезапустите сервис SSHD:
sudo systemctl reload sshd.service
Чтобы протестировать новые настройки (пока что не выходите из учетной записи root), откройте терминал и войдите на сервер как новый пользователь (не забудьте указать правильный IP-адрес и порт):
ssh -p 25000 demo @ 111.22.33.444
Должно появиться извещение:
Теперь, когда сервер настроен должным образом, можно установить на него все необходимое ПО. Попробуйте, например, установить группы программ LAMP stack или LEMP stack, которые позволяют размещать сайты.
Подобную статью я писал 4 года назад про тоже самое, но с Ubuntu. Время для ИТ-мира огромное прошло, да и я пересмотрел свои взгляды на дистрибутивы. Сегодня проведем базовую настройку сервера VPS на Centos 7, настроим фаервол, пользователей, доступы. Установим Apache, PHP 7, MySQL, phpMyAdmin и всякие другие штуки :) .
Если вы планируете использовать панель управления сайтами, например Plesk, ISP Manager или cPanel, то вам это руководство не подойдет. Здесь ставим и делаем все только самое нужное, только ручками, не перегружая систему.
Описываю все максимально подробно, но все же нюансы у каждой инсталляции разные. Подразумевается, что вы имеете хотя бы минимальные знания о Linux и умеете более-менее работать с командной строкой (cd, ls, nano, vi, rm и т.п.)
Первые шаги
Итак, у нас имеется свежий VPS на Centos 7, вы получили логин и пароль от root и успешно вошли в систему через SSH, сеть уже настроена и доступ в интернет есть.
Соглашаемся (y) со всеми вопросами.
Где user — меняем на ваш будущий логин.
Устанавливаем у нашего только что созданного юзера пароль, надо будет ввести дважды, символы не показываются при наборе (это нормально).
Добавляем нашего пользователя в группу wheel, что даст ему права исполнять команды от лица администратора.
Далее выходим из системы:
И входим по SSH на сервер снова, с новым пользователем, который мы создали.
Проверяем, что наш пользователь получил повышенные права:
Первый раз выведет предупреждение об осторожности пользования повышенными правами и попросит ввести пароль от вашего пользователя. Если все прошло без ошибок и вы стали root, значит нужные права мы получили.
Возвращаемся обратно в своего пользователя:
Безопасность безопасная
Нам нужно найти строку:
Надеюсь к этому моменту вы уже разобрались как раскомментировать строку и менять значения параметров :) . Нажимаем Enter пару раз, и под этим значением в новой строке пишем новый параметр:
Этой директивой мы разрешаем подключаться по SSH только пользователю, которого мы создали. Рут будет отключен от удаленного доступа совсем. Сохраняем нашу конфигурацию Ctrl+O.
Настроим фаервол. По умолчанию все сетевые порты закрыты, кроме SSH порта 22. Но теперь у нас порт другой, плюс надо открыть 80 и 443, чтобы работал веб-сервер. Добавляем 22222:
Данная команда перезапустит службу SSH и применит настройки. Теперь попасть на сервер может только user. И только по порту 22222. меняем настройки подключения и возвращаемся в консоль.
Ставим ПО
Доставим пакетов, нужных в работе:
Спросит несколько подтверждений, со всеми соглашаемся.
Соглашаемся со всем. Ну вы сами уже поняли, да? :)
Для PHP 7 придется поболее пошаманить, даже в EPEL репозитории нужной версии PHP нет. Добавим еще репозиторий:
Далее отредактируем конфиг нужного нам репозитория, чтобы он заработал:
В этом файле нам нужно изменить:
И сохраняем файл, мы же уже умеем? Ctrl+O. И выход Ctrl+X. Далее, обновляем кэш пакетов:
И ставим пачкой сразу PHP 7.4 (последняя версия на момент написания) с некоторыми модулями:
Настроим ПО
MySQL требует запуски скрипта первоначальной настройки:
Здесь нас интересуют три параметра. Их нужно привести к следущим значениям:
Сохраняем, закрываем. Теперь Apache:
Изменим дополнительные индексные файлы:
Это разрешит серверу исполнять директивы .htaccess для файлов, необходимых для безопасной работы сайтов.
Далее, нам нужно создать наш собственный виртуальный хост для нашего первого домена. Тут мы считаем, что домен у вас есть, и его А запись ведет на айпи-адрес вашего сервера. Создаем конфигурационный файл:
Командой выше мы создаем новый конфиг и сразу открываем редактор, чтобы его напонить. Название конфига может быть любым для вашего удобства, но лучше, конечно, называть именами ваших доменов. Главное, это расширение .conf, иначе апач не посчитает эти файлы конфигурациями. Открывается редактор, и туда мы должны вставить следующий текст:
И также создать тестовую главную страницу нашего нового сайта:
Далее сскачаем архив:
Каталог с менеджером баз данных нужно создавать с нелогичным путем (pma1234 например), чтобы перебором нельзя было на него попасть, и этот адрес знали только вы. Разархивируем архив и переименуем папку:
Подытожим
У нас настроен и готов к работе веб-сервер Apache с PHP 7.4, MySQL и удобным менеджером БД. Мы можем создавать сколько угодно виртуальных хостов и баз данных. Простой хостинг нам такого не позволил бы, затем и нужен VPS.
При развертывании нового VPS-сервера следует выполнить несколько операций, которые позволят повысить его безопасность и функциональность.
Для Linux
Перед началом работы авторизуйтесь на сервере как пользователь root. Чтобы это сделать, Вам понадобится публичный IP-адрес сервера и пароль учетной записи администратора (root). Если они известны, введите в консоли команду, заменив переменную IP-адресом своего сервера:
* IP-адрес дан в качестве примера, на его место нужно подставить актуальный.
Если появится предупреждение о проверке подлинности – примите его. Затем система запросит пароль или приватный ключ. Если вы впервые входите с помощью пароля, система предложит задать новый.
После ввода пароля авторизация пройдет успешно, позволяя настроить сервер на CentOS.
Для Windows
Пользователи Windows также могут удалённо подключиться к серверу. Это удобнее всего сделать с помощью программы Putty, которую нужно предварительно установить на компьютер.
Когда программа будет установлена, достаточно ее запустить и выполнить ряд действий.
1. Открыть раздел «Session» («Сеанс») и в поле «Host Name» («Имя хоста») ввести IP-адрес (или имя хоста сервера). В поле «Порт» следует ввести порт, на котором был запущен сервер.
2. Затем следует нажать «Open» («Соединиться»), после чего программа сделает запрос на добавление ключа сервера в список доверенных. Подтвердите это нажатием «Да».
3. Останется ввести свои логин (в нашем случае root) и пароль. Вставка скопированной информации в Putty осуществляется щелчком правой кнопкой мыши (сочетание Ctrl+V не работает).
4. После успешной авторизации откроется окно терминала, позволяющее выполнять нужные операции на удаленном сервере.
Ограничение прав суперпользователя
Пользователь root в дистрибутивах Linux обладает неограниченными правами. Однако, не стоит работать под ним постоянно.
При наличии больших возможностей достаточно сделать неверное действие, которое приведет к необратимым последствиям. Поэтому стоит создать дополнительный профиль пользователя, для которого можно установить некоторые ограничения.
Новый пользователь
Для начала создадим дополнительный профиль пользователя с именем «demo»:
Назначим для него пароль (в данном примере — «123»):
Далее, вводим новый пароль и повторяем его после следующего запроса.
Представление дополнительных привилегий
Созданный выше аккаунт «demo» получил стандартные права. В то же время, нам часто придется заниматься глубокой настройкой VPS-сервера, для чего понадобятся root-права.
Чтобы не изменять постоянно стандартный аккаунт на профиль администратора, можно сделать из demo «суперпользователя».
Для запуска команд с правами администратора, перед ними достаточно дописать команду sudo .
Далее – добавим профиль demo в группу «wheel». В CentOS пользователи этой группы могут пользоваться командой sudo. Сделать это можно следующей командой:
Все готово – после входа в CentOS как «demo» можно пользоваться расширенными правами, не боясь подвергнуть риску безопасность системы неосторожными действиями.
Как добавить открытый ключ
Чтобы обеспечить улучшенную защиту сервера, можно добавить аутентификацию пользователей с помощью открытого ключа. Это на порядок увеличивает безопасность сервера, поскольку позволяет выполнять авторизацию путем ввода ключа SSH.
Создание пары ключей
Для создания новой пары ключей SSH достаточно ввода команды:
В терминале появится такой результат:
Подтвердите нажатием кнопки Enter принятие этого имени файла и пути к нему (при желании можно ввести другое название).
Система предложит задать пароль для защиты ключа. Впрочем, этот шаг необязательный и можно обойтись без пароля.
Эта процедура сгенерирует закрытый ключ id_rsa и открытый ключ id_rsa.pub во внутреннем каталоге .ssh. Не стоит забывать, что закрытый ключ не следует предоставлять тем, кто не имеет доступ к вашим серверам.
Как скопировать открытый ключ
Когда пара SSH-ключей будет успешно сгенерирована, понадобится скопировать на новый сервер открытый ключ.
Для Linux
Сделать это можно с помощью скрипта ssh-copy-id , который нужно предварительно установить на CentOS 7 или CentOS 8. Он поможет установить открытый ключ каждому авторизованному пользователю.
Запустите в консоли команду:
После ее выполнения введите имя пользователя и IP-адрес сервера, на который вы хотите добавить ключ:
* IP-адрес дан в качестве примера, на его место нужно подставить актуальный.
Когда пароль будет введен, открытый ключ добавится в файл удаленного пользователя по пути .ssh/authorized_keys . Соответствующий закрытый ключ будет использоваться для входа на сервер.
Для Windows
В случае с Windows для облегчения входа можно воспользоваться программой PuTTY, позволяющей подключиться к серверу по ключу SSH.
Для создания ключа потребуется включить инструмент PuTTYgen («Генератор ключей PuTTY»), в котором нужно выполнить следующую последовательность действий.
1. Следует обязательно выбрать тип «SSH-2 RSA». Если в главном окне он отсутствует, его нужно выбрать в меню «Key» («Ключ»). Нажать кнопку «Generate» («Генерировать»). В процессе генерации нужно немного подвигать мышкой, чтобы создалось достаточно энтропии.
2. Когда ключ будет создан, останется нажать кнопки «Save Public Key» («Открытый ключ») и «Save Private Key» («Личный ключ»), чтобы сохранить публичный и приватный ключ.
3. Следующий шаг заключается в передаче открытого ключа на сервер. Понадобится авторизоваться посредством пароля и добавить открытый ключ в файл по пути «.ssh/authorized_keys» (дописать его в конце), c помощью команды:
4. Затем можно запустить PuTTY, выбрать раздел «Connection» («Соединение»), перейти в «SSH» и далее «Auth» («Аутентификация»). В новом поле необходимо нажать «Browse» («Обзор») и вставить в поле приватный ключ.
Теперь если выйти и авторизоваться, подключение будет осуществляться при помощи ключа. Главное сохранять настройку сессии, чтобы ключ не нужно было выбирать постоянно.
Как настроить «демон» SSH
Через созданный профиль «demo» можно защитить сервер, изменив его конфигурацию в Daemon SSH (программе для удаленного входа в систему). Это позволит предотвратить несанкционированный удаленный доступ SSH к корневой учетной записи другим пользователям.
Сначала откройте файл конфигурации из текстового редактора vi как «суперпользователь»:
Здесь предоставляется возможность отключить авторизацию в CentOS как root-пользователь через ключи SSH.
В настройках по умолчанию файла конфигурации прописана функция получения доступа к серверу через учетную запись без дополнительных привилегий. При этом, ее привилегии при желании можно расширить. Следовательно, отключение этой функции существенно повысит безопасность сервера.
В открывшемся файле нужно найти строку:
Это закроет прямой вход пользователя root.
Перезапуск SSH-сервера
После применения изменений необходимо выполнить перезагрузку SSH, чтобы система начала работать с новой конфигурацией. Введите следующую команду, чтобы перезапустить демон SSH:
Перед тем, как покинуть сервер, рекомендуется проверить, правильно ли он настроен.
Закройте и откройте терминал, чтобы в нем создать новое соединение с нашим сервером. Однако, в данном случае вместо входа в профиль «root», используйте уже созданный «demo».
К настроенному удаленному серверу можно подключиться командой (Замените логин и IP-адрес своими):
* IP-адрес дан в качестве примера, на его место нужно подставить актуальный.
Теперь введите пароль своего нового пользователя, чтобы войти систему с его привилегиями. Не забывайте, что перед запуском команды с правами администратора нужно вначале прописывать слово «sudo»:
Если все прошло как нужно, остается завершить сеанс командой:
Что касается входа через Windows, для перезапуска сервера также можно использовать клиент Putty, где после авторизации останется ввести выше предложенные команды.
Таким образом, базовая настройка VPS-сервера с установленной Centos 7 или CentOS 8 завершена успешно.
Конфигурация сервера на CentOS зависит от задач, которые будет решать администратор. Однако есть базовые настройки, которые приходится выполнять вне зависимости от того, как будет в дальнейшем использоваться VDS. Речь идет об установке обновлений и региональных параметров, а также защите сервера.
В качестве примера настроим VDS с CentOS на Timeweb. Провайдер предоставляет удобную панель с консолью, которая поможет установить все необходимые параметры работы сервера.
Обновление системы CentOS
Сразу после установки обновляем систему. Открываем панель управления сервера, переходим на вкладку «Консоль» и авторизируемся под теми данными, которые хостер прислал в письме при создании сервера. Выполняем команду для обновления:
Важно: yum — пакетный менеджер, который используется в CentOS 7. В CentOS 8 вместо него уже dnf, но можно писать и yum — поддержка осталась.
Настройка автоматического обновления CentOS
Чтобы безопасность сервера была на высоком уровне, необходимо постоянно обновлять ядро с системными утилитами и сторонние пакеты. Необязательно ставить обновления в автоматическом режиме, достаточно просто проверять их наличие.
Автоматическая проверка обновления настраивается по-разному в зависимости от версии ОС. В CentsOS 7 используется утилита yum-cron. Устанавливается она из стандартного репозитория.
После установки создается задание на выполнение утилиты в /etc/cron.daily и /etc/cron.hourly. По умолчанию yum-cron скачивает обнаруженные обновления, но не устанавливает их. Администратор получает на локальный почтовый ящик письмо с информацией о наличии апдейтов. Дальше он сам решает, стоит ли их ставить.
На CentOS 8 для настройки обновлений используется утилита dnf-automatic. Первым делом ее нужно установить из стандартного репозитория:
Управляет запуском проверки обновлений по расписанию уже утилита systemd, у которой есть встроенный планировщик. Посмотрим таймеры автоматического запуска:
Если заданий нет, добавим таймер вручную:
По умолчанию таймер настроен на запуск dnf-automatic через час после загрузки VDS и ежедневное повторение процедуры. Конфигурационный файл таймера расположен по адресу /etc/systemd/system/multi-user.target.wants/dnf-automatic.timer.
Посмотреть и отредактировать конфигурационный файл dnf-automatic можно в /etc/dnf/automatic.conf. По умолчанию утилита только скачивает обновления, но не применяет их. Конфиги можно настроить так, как вам удобно.
Настройка времени
Сначала узнаем, какое время настроено на сервере по умолчанию. Для этого выполняем команду
Изменить часовой пояс можно с помощью специальной утилиты, которая входит в состав systemd
Следующий шаг — проверка статуса службы обновления времени. Для этого выполняем команду
В CentOS для синхронизации времени с интернетом есть утилита chrony. В стандартной сборке она установлена по умолчанию, в минимальной конфигурации ОС ее нет.
Как видно из скриншота выше, на этом сервере время не синхронизируется. Установим утилиту chrony вручную:
Затем запускаем chrony и добавляем ее в список автозагрузки.
Проверяем статус утилиты.
Обращаем внимание на следующие строки:
System clock synchronized — должно быть значение «yes».
NTP service — должно быть значение «active».
После запуска утилиты chrony часы будут автоматически синхронизироваться с сервером времени в интернете.
VDS с бесплатным администрированием и поддержкой 24/7. Дарим 200 рублей на тест
Протестируй VDS Timeweb бесплатно: закажи сервер, сообщи поддержке промокод community200 и получи 200 рублей на баланс.
Настройка файрвола
Для защиты сервера от внешних угроз нужно настроить разрешения для входящего и исходящего трафика. Используем для этого iptables. Он запущен по умолчанию. Проверим текущие правила командой
Важно: прежде чем настраивать файрвол, проверяем наличие доступа к консоли сервера. В противном случае ошибка может привести к тому, что вы не сможете подключиться к VDS, так как межсетевой экран закроет порты.
В CentOS 7 для управления межсетевым экраном появилась новая утилита — firewalld. По сути, это надстройка над iptables. Ее можно отключить и воспользоваться файлом с правилами.
Ставим утилиты для iptables:
Создаем новый файл /etc/iptables.sh и добавляем в него следующие правила:
Это один из вариантов самописного скрипта для файрвола CentOS, который сделает использование системы на сервере более безопасным.
Затем делаем файл со скриптом исполняемым:
Проверяем, что правила теперь применяются:
Настройка SSH
Настраивать SSH нужно не только для безопасности, но и для удобства. По умолчанию SSH работает на 22 порту. Если его не поменять, то на сервере будет зафиксированы многочисленные попытки авторизации — это боты сканируют интернет и пытаются подобрать пароли к серверам. В реальности это не так опасно, но все равно отнимает ресурсы VDS, пусть и мизерные. Избавиться от подобной активности помогает простая смена номера порта.
Открываем файл /etc/ssh/sshd_config для редактирования:
В строке Port 22 убираем комментарий и меняем значение — с 22 на 51452 или другое.
Теперь нужно разрешить доступ к этому порту в файрволе. Открываем файл /etc/iptables.sh, находим строку $IPT -A INPUT -i $WAN -p tcp --dport 22 -j ACCEPT и вместо «22» вписываем «51452» или другой номер, который ранее назначили в конфиге SSH.
Для применения изменений перезапускаем sshd:
Подключение репозиториев в CentOS
В стандартной сборке есть не весь софт, который может понадобиться при разработке проекта. Чтобы инсталлировать дополнительное ПО, нужно предварительно подключить репозитории. Самый популярный вариант для CentOS — EPEL. Добавить его можно из стандартного репозитория одной командой
На CentOS 7 также полезным будет репозиторий REMI, который позволяет установить более свежие версии PHP по сравнению с теми, что есть в стандартном репозитории. Выполняем команду
Этих двух репозиториев хватает для выполнения стандартных задач. Другие подключаются уже под конкретные нужды, которые возникают при работе с сервером.
Настройка хранения истории
В стандартных настройках хранения истории команд есть ряд ограничений, которые делают ее использование неудобным:
сохраняется только последняя тысяча команд;
нет дат, только список в порядке выполнения;
файл со списком обновляется после завершения сессии, при параллельных сессиях часть команд может оказаться утерянной;
сохраняются все команды, хотя в хранении некоторых из них нет никакого смысла.
Список выполненных команд хранится в домашней директории в файле .bash_history. Его можно посмотреть через любой редактор. Для вывода списка можно выполнить в консоли следующую команду:
На экране появится пронумерованный список. Быстро перейти к конкретной команде можно с помощью фильтрации, например, так:
Этот запрос выделит все запуски команды yum, которые доступны в истории.
На этом базовую настройку VDS с CentOS на борту можно считать завершенной.
Читайте также: