The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]



"Раздел полезных советов: Первоначальная настройка VPS сервера на базе CentOS 8"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Первоначальная настройка VPS сервера на базе CentOS 8"  +/
Сообщение от auto_tips (?), 13-Сен-20, 16:01 
В наши дни многие информационные сервисы работают на
виртуальных машинах. На рынке появляется огромное количество поставщиков услуг виртуализации, у которых можно получить VPS по вполне вменяемым ценам.

В этой статье я хотел бы поделиться своим вариантом первоначальной настройки виртуалки на базе [[https://www.centos.org/ CentOS]] 8 и принять рекомендации по её улучшению.

Предполагается, что VPS предназначена для разработки/тестирования/презентации WEB-приложения в общем случае, т.е. не ориентируясь на какие-либо специфические особенности и среды программирования.

++ Первые шаги

Во-первых, после установки необходимо создать непривилегированного пользователя:

   # groupadd user
   # useradd -m -d /home/user -s /bin/bash -g user -G wheel user
   # passwd user

Затем задать более безопасные настройки для демона sshd.
Под X.X.X.X понимается IP-адрес клиента, с которого будет происходить соединение на VPS.

   # sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
   # echo "AllowUsers user@X.X.X.X user@X.X.X.*" >> /etc/ssh/sshd_config
   # systemctl restart sshd.service
   # exit

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

   $ sudo firewall-cmd --zone=internal --add-source=X.X.X.X/32 --add-source=X.X.X.0/24
   $ sudo firewall-cmd --zone=internal --add-service=ssh
   $ sudo firewall-cmd --zone=public --remove-service=ssh
   $ sudo firewall-cmd --zone=public --add-service=http --add-service=https
   $ sudo firewall-cmd --get-active-zones

   internal
     sources: X.X.X.X/32 X.X.X.0/24
   public
     interfaces: ens3

   $ sudo firewall-cmd --runtime-to-permanent
   $ sudo firewall-cmd --reload

Опять же, под X.X.X.X понимается IP-адрес клиента, с которого будет происходить соединение на VPS.

++ Установка программного обеспечения

Прежде всего следует обновить систему до актуального состояния и перезагрузиться:

   $ sudo dnf upgrade --refresh
   $ sudo reboot

Затем установим необходимое для разработки программы:

   $ sudo dnf groupinstall "Development tools"
   $ sudo dnf install clang

Clang устанавливаю, как дополнение к GCC для кроссплатформенной компиляции разработок.

++ Установка и настройка СУБД

Из основного репозитория качаем клиент, сервер и заголовки [[https://mariadb.org/ MariaDB]].
Запускаем, проверяем, и настраиваем СУБД

   $ sudo dnf install mariadb mariadb-server mariadb-devel
   $ sudo systemctl start mariadb
   $ sudo systemctl status mariadb

   Active: active (running)

   $ sudo systemctl enable mariadb

   Created symlink /etc/systemd/system/mysql.service > /usr/lib/systemd/system/mariadb.service.
   Created symlink /etc/systemd/system/mysqld.service > /usr/lib/systemd/system/mariadb.service.
   Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service > /usr/lib/systemd/system/mariadb.service.

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

   $ sudo mysql_secure_installation
   $ mysql -u root -p
   mysql> CREATE DATABASE `mydb`;
   mysql> GRANT USAGE ON *.* TO 'user'@localhost IDENTIFIED BY 'mypassword';
   mysql> GRANT ALL privileges ON `mydb`.* TO 'user'@localhost;
   mysql> FLUSH PRIVILEGES;
   mysql> SHOW GRANTS FOR 'user'@localhost;

Первоначальная настройка MariaDB завершена.

++ Установка и настройка HTTPD apache2

Ниже следует установка сервера [[https://httpd.apache.org/ httpd]].
В качестве менеджера SSL-сертификатов будем использовать certbot из репозитория EPEL:

   $ sudo dnf install httpd
   $ sudo dnf install epel-release
   $ sudo dnf install certbot python3-certbot-apache mod_ssl

Добавляем виртуальный хост в конфиг сервера. Предполагается, что DNS имя сервера уже
зарегистрировано и делегировано, создана A-запись на IP VPS.

   $ vi /etc/httpd/conf.d/vhosts.conf

   <VirtualHost *:80>
     ServerAdmin webmaster@example.ru
     ServerName example.ru
     ServerAlias www.example.ru
     DocumentRoot /var/www/html/example.ru/
     <Directory "/var/www/cgi-bin">
       AllowOverride None
       Options +ExecCGI
       AddHandler cgi-script .cgi .sh
       Require all granted
     </Directory>
   </VirtualHost>

Эта конфигурация так же включает выполнение CGI-скриптов на стороне сервера, так что
можно приступать к разработке WEB-приложений после перезагрузки сервиса:

   $ sudo systemctl enable httpd
   $ sudo systemctl start httpd

Не забываем получить сертификаты в центре сертификации [[https://letsencrypt.org/ru/ Let`s Encrypt]]:

   $ sudo certbot -d example.ru -d www.example.ru

Вышеизложенный порядок действий не обязательно каждый раз делать вручную.
Можно написать и отладить простой shell-скрипт, который проделает все
операции в автоматическом режиме и первоначальная настройка VPS сервера займёт незначительное время.


URL:
Обсуждается: http://www.opennet.ru/tips/info/3162.shtml

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. Сообщение от димон (?), 13-Сен-20, 16:01   +/
и что бы на локаль не ругалось  dnf install glibc-langpack-uk.x86_64 glibc-langpack-ru.x86_64 langpacks-en
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #38, #39, #40, #45, #47

2. Сообщение от джюджа (?), 13-Сен-20, 18:54   +/
а хде авторизация ssh по ключам онли? или из "доверенной" сети и так покатит?

like so:

PasswordAuthentication no
PubkeyAuthentication yes

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #5, #6, #22

3. Сообщение от 79 (?), 13-Сен-20, 20:39   +/
А где сценарий для ансимбля?

Вы там все команды копипастите как в 2004?
А если что-нибудь не то скопипастите а если опечатаетесь? Ужас ужас

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #4, #7, #10, #11, #43

4. Сообщение от Аноним (5), 14-Сен-20, 05:18   +/
Сценарий для чего??? Можно поподробнее с этого места?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3

5. Сообщение от Аноним (5), 14-Сен-20, 05:26   +/
> а хде авторизация ssh по ключам онли? или из "доверенной" сети и
> так покатит?
> like so:
> PasswordAuthentication no
> PubkeyAuthentication yes

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #15

6. Сообщение от Аноним (5), 14-Сен-20, 05:54   +/
> а хде авторизация ssh по ключам онли?

Хорошо, по вопросу ключей ssh... Вы на работе... Завели виртуалку, сгенерили ключи, захотелось из дома поработать или еще откуда-то.. Как будете закрытый ключ передавать? По почте? Телегой? Голубями? Через ТОР? На флешке понесете (а если в метро потеряете?)... В любом случае есть фактор потери или перехвата ключа.
То ли дело.. Завел неприв. пользователя, поставил ему пароль 123, закрыл рута по ssh, отфильтровал доверенные подсетки и лег спать спокойно.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #8, #14

7. Сообщение от Аноним (8), 14-Сен-20, 06:43   +/
+1

Когда увидел что это не сценарий для ансибля, дальше даже читать не стал.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3 Ответы: #12

8. Сообщение от Аноним (8), 14-Сен-20, 06:46   +/
>> а хде авторизация ssh по ключам онли?
> Хорошо, по вопросу ключей ssh... Вы на работе... Завели виртуалку, сгенерили ключи,
> захотелось из дома поработать или еще откуда-то.. Как будете закрытый ключ
> передавать? По почте? Телегой? Голубями? Через ТОР? На флешке понесете (а
> если в метро потеряете?)... В любом случае есть фактор потери или
> перехвата ключа.
> То ли дело.. Завел неприв. пользователя, поставил ему пароль 123, закрыл рута
> по ssh, отфильтровал доверенные подсетки и лег спать спокойно.

Из дома доверенные сетки ? Хм.

Если что то закрытый ключ таскаем с собой на флешке и да к нему еще пасс-фраза есть если что.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6 Ответы: #9

9. Сообщение от Аноним (9), 14-Сен-20, 07:08   +/
Сомнительное удовольствие - таскать ключи на флешке. Ну если уж вы считаете, что это более секурный метод, то пожалуйста. Лично мне достаточно фильтра по белому IP или подсети прова (Но это Лично мне, опять же)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8

10. Сообщение от Аноним (9), 14-Сен-20, 07:20   +/
> А где сценарий для ансимбля?
> Вы там все команды копипастите как в 2004?

Кому не понятно, вот ссылка на Ansimble -> https://ru.wikipedia.org/wiki/Ansible

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3 Ответы: #23

11. Сообщение от Аноним (9), 14-Сен-20, 07:27   +/
Вот документашка, если что https://docs.ansible.com/ansible/latest/user_guide/intro_get...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3

12. Сообщение от Аноним (9), 14-Сен-20, 08:41   +/
Вообще заметки не читаете, если дело не касается Ansimble?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #7 Ответы: #13

13. Сообщение от Аноним (8), 14-Сен-20, 09:03   +/
Ага читаем, особенно что внизу статьи написано:
---
Вышеизложенный порядок действий не обязательно каждый раз делать вручную.
Можно написать и отладить простой shell-скрипт, который проделает все
операции в автоматическом режиме и первоначальная настройка VPS сервера займёт
незначительное время.
---

:(

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #12 Ответы: #16, #18

14. Сообщение от LeNiN (ok), 14-Сен-20, 09:36   +/
Если вам из дома нужно (и можно) ходить на рабочую виртуалку, то пропишите на неё также свои домашние публичные SSH ключи.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6 Ответы: #17

15. Сообщение от LeNiN (ok), 14-Сен-20, 09:49   +/
`PasswordAuthentication no` это не про сверхбезопасность, это необходимый минимум для 2020 года. Т.к. вы пишите статью для начинающих, то и напишите: генерируем ключ командой X, копируем на сервер командой Y, потом выключаем вход по паролю с помощью Z.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #5 Ответы: #25, #27

16. Сообщение от Аноним (5), 14-Сен-20, 10:31   +/
Грустно то, что не удалось оправдать ваших ожиданий... Который год ждете на статью с готовым плейбуком ансимбля, а тут на тебе.. простой шелл скрипт. Как обухом. аж читать расхотелось.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #13

17. Сообщение от Аноним (5), 14-Сен-20, 10:36   +/
> Если вам из дома нужно (и можно) ходить на рабочую виртуалку, то
> пропишите на неё также свои домашние публичные SSH ключи.

А если я не хочу этого делать? И мне удобнее по паролю?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #14 Ответы: #24, #26

18. Сообщение от Аноним (5), 14-Сен-20, 10:45   +/
> Ага читаем, особенно что внизу статьи написано:
> ---
> Вышеизложенный порядок действий не обязательно каждый раз делать вручную.
> Можно написать и отладить простой shell-скрипт, который проделает все
> операции в автоматическом режиме и первоначальная настройка VPS сервера займёт
> незначительное время.
> ---
> :(

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #13 Ответы: #19, #20

19. Сообщение от Аноним (8), 14-Сен-20, 13:23   +/
раньше таких называли : админ локалхоста.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18 Ответы: #21

20. Сообщение от Аноним (8), 14-Сен-20, 13:27   +/
> Просто вы одного не можете понять, автору доставляет удовольствие набивать комманды ручками.
> Ну это, типа как пешочком прогуляться до магазина, подышать.. ежу понятно,
> что на авто быстрее и безопаснее.

Кстати давно до ансибля я такую штуку делал чисто на кикстартах.
Разные ks файлы, а что удобно вирталка поднимается и тут же настраивается ... эх давно это был :(

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18 Ответы: #46

21. Сообщение от Аноним (9), 14-Сен-20, 14:24   +/
> раньше таких называли : админ локалхоста.

А сейчас? Админ одной VPS`ки?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #19

22. Сообщение от zomg (?), 14-Сен-20, 18:09   +/
ключ можно положить в keepass(xc), чтобы дальше передавать. там встроенное замедление перебора паролей.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2

23. Сообщение от Дима (??), 16-Сен-20, 10:37   +/
Ansible, а НЕ Ansimble и НЕ ансимбль
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10

24. Сообщение от Аноним (24), 16-Сен-20, 21:31   +1 +/
> И мне удобнее по паролю?

нам тоже удобнее по паролю

PS: по секрету скажу, что чем короче пароль, тем он удобнее и проще запоминается

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #17

25. Сообщение от Anonn (?), 17-Сен-20, 07:49   +/
> это необходимый минимум для 2020 года

Абсолютно верно.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #15 Ответы: #28

26. Сообщение от Аноним (26), 17-Сен-20, 10:20   +1 +/
Это уже не к нам, это к психиатру.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #17

27. Сообщение от Аноним (28), 22-Сен-20, 09:31   +/
Хорошо. Благодарю за замечание.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #15

28. Сообщение от Аноним (28), 22-Сен-20, 10:26   +/
В общем:

на клиентской машине генерируем ключи командой:

$ ssh-keygen

Оболочка спросит путь к файлу нового закрытого ключа, пассфразу и сгенерирует пару.
После этого нужно перенести ключ на VPS командой:

$ ssh-copy-id user@example.ru

Программа запросит пароль пользователя и скопирует открытый ключ в ~/.ssh/authorized_keys

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #25 Ответы: #44

29. Сообщение от Vitaliy (??), 26-Сен-20, 23:01   +/
апач? не - не нужно.
вообще вариант для совсем новичков... прям зеленых со школьной статьи.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #30

30. Сообщение от Vitaliy (??), 26-Сен-20, 23:01   +/
... скамьи
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #29 Ответы: #32

32. Сообщение от Анонимы (?), 01-Окт-20, 05:11   +/
ну вот вам не школьникам: правила firewall которые, сейчас через iptables -L не отображаются, по этому по привычке дебага connection refused побыстрому правила просмотреть через iptables не получится...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #30 Ответы: #34

33. Сообщение от TheFotoMag (ok), 04-Окт-20, 18:27   +/
Певрое что я делаю, меня  порты.

SSH на порт 13812

FTP на порт 46129

Все веб-админки тоже по разным портам и их человеко читаемые адресв в KJHulHJGF

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #36

34. Сообщение от onanim (?), 04-Окт-20, 21:39   +1 +/
iptables-save
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #32

35. Сообщение от vakaemail (?), 05-Окт-20, 22:27   +/
параноики детектед.

виртуалка с рождения вообще public-ip не должна иметь

Ответить | Правка | Наверх | Cообщить модератору

36. Сообщение от Аноним (36), 08-Окт-20, 04:48   +1 +/
Найти там сервис-дело времени. Есть мнение, что даже port-knoking небезопасен. Все равно надо генерить ключи и прикрывать файрволлом.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #33

37. Сообщение от Аноним (38), 08-Окт-20, 13:38   +/
Особенности для Ubuntu 20.04:

- Создание нового пользователя:
# groupadd user
# useradd -m -d /home/user -s /bin/bash -g user -G sudo user
# passwd user

- Настройка файрволла:
# vi /etc/default/ufw

DEFAULT_INPUT_POLICY="DROP"

# ufw allow https
# ufw allow http
# ufw allow from X.X.X.X to any port 22
# ufw allow from X.X.X.0/24 to any port 22
# ufw enable

Ответить | Правка | Наверх | Cообщить модератору

38. Сообщение от Аноним (38), 08-Окт-20, 13:46   +/
Особенности для Ubuntu 20.04:
- Создание нового пользователя:
# groupadd user
# useradd -m -d /home/user -s /bin/bash -g user -G sudo user
# passwd user

- Настройка файрволла:
# vi /etc/default/ufw

DEFAULT_INPUT_POLICY="DROP"

# ufw allow https
# ufw allow http
# ufw allow from X.X.X.X to any port 22
# ufw allow from X.X.X.0/24 to any port 22
# ufw enable

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1

39. Сообщение от Аноним (38), 08-Окт-20, 13:50   +/
Инструментарий разработчика:

$ sudo apt-get update
$ sudo apt-get install build-essential

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1

40. Сообщение от Аноним (38), 08-Окт-20, 14:59   +/
- Установка mysql:
sudo apt-get install mysql-server libmysqlclient-dev
sudo mysql_secure_installation

- Установка apache2:
sudo apt-get install apache2
sudo apt-get install certbot python3-certbot-apache
sudo ufw allow 'Apache'

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1

41. Сообщение от Вася (??), 12-Окт-20, 07:11   +1 +/
замена root на user - это шило на мыло, нужно делать учётку с уникальным именем!
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #42

42. Сообщение от Аноним (36), 12-Окт-20, 17:11   +/
Это шаблон.. Типа %user%. Подставляй что хочешь по вкусу. Ясно же должно быть..
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #41

43. Сообщение от DeadMustdieemail (??), 15-Окт-20, 13:06   +/
> А где сценарий для ансимбля?

<troll mode on>
Не, что не на операторах OpenShift, то не годно.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3

44. Сообщение от Аноним (44), 15-Окт-20, 13:36   +/
>$ ssh-keygen

Если мы говорим про 2020 год, то тогда команда такая:

ssh-keygen -a 100 -t ed25519

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #28

45. Сообщение от Аноним (45), 19-Окт-20, 08:44   +/
$ sudo ln -s /etc/apache2/mods-available/cgi.load /etc/apache2/mods-enabled/

Скрипты по-умолчанию располагаются в /usr/lib/cgi-bin/

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1

46. Сообщение от Аноним (46), 20-Окт-20, 05:25   +/
Сейчас для этого юзают cloud-init который уже пинает либо любой шелл-скрипт, либо ansible какой-нибудь. А что, удобно, можно прямо в момент создания виртуалки вписать, что именно её будет инициализировать. Гипервизор передаст конфиг в виртуалку, а cloud-init его выполнит.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #20

47. Сообщение от Аноним (45), 20-Окт-20, 07:00   +/
Более кошерный метод включения CGI:

$ sudo a2enmod cgi
$ sudo systemctl restart apache2

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2020 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру