Уязвимости неуязвимого linux

Шаг 4 — Загрузка WordPress

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

Перейдите в директорию с возможностью записи (мы рекомендуем временную, например ) и загрузите сжатый релиз.

Извлеките сжатый файл для создания структуры директории WordPress:

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

Создайте файл, введя следующую команду:

Мы также заменим имя примера файла конфигурации на имя файла, который использует WordPress:

Также мы создадим директорию , чтобы WordPress не испытывал проблем с разрешениями при попытке сделать это самостоятельно после обновления программного обеспечения:

Теперь мы можем скопировать все содержимое директории в корневую директорию. Мы используем точку в конце директории источника, чтобы указать, что все находящиеся в директории файлы должны быть скопированы, включая скрытые файлы (например, созданный нами файл ):

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

Шаг 4 — Тестирование обработки PHP на вашем веб-сервере

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

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

В Ubuntu 18.04 этот каталог находится по адресу . Создайте файл в этом месте, запустив:

Это откроет пустой файл. Добавьте следующий текст:

Когда вы закончите, сохраните и закройте файл.

Теперь вы можете проверить, может ли ваш веб-сервер правильно отображать контент, сгенерированный этим PHP-скриптом.

Посетите эту страницу в своем веб-браузере:

Эта страница содержит основную информацию о вашем сервере с точки зрения PHP. Если вы видите эту страницу в своем браузере, значит ваш PHP работает как положено.

Возможно, вы захотите удалить этот файл после этого теста, потому что он может дать информацию о вашем сервере злоумышленникам. Для этого выполните следующую команду:

Шаг 3 — Установка PHP

Мы установили Apache для обслуживания вашего контента и MySQL для хранения и управления вашими данными. PHP — это элемент нашей настройки, который будет обрабатывать код для отображения динамического контента конечному пользователю. Помимо пакета вам потребуется , модуль PHP, который позволяет PHP взаимодействовать с базами данных MySQL. Также вам потребуется для активации Apache для обработки файлов PHP. Ключевые пакеты PHP автоматически будут установлены в качестве зависимостей.

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

После завершения установки вы можете использовать следующую команду для подтверждения вашей версии PHP:

Теперь комплект LAMP полностью работоспособен. Однако, прежде чем тестировать настройку с помощью скрипта PHP, лучше всего настроить виртуальный хост Apache для хранения файлов и папок вашего сайта. Мы сделаем это на следующем шаге.

Шаг 4 — Тестирование работы PHP на вашем веб-сервере

Чтобы проверить, что наша система сконфигурирована должным образом, мы можем создать простой PHP скрипт. Назовём этот скрипт . Чтобы Apache нашел и обработал файл корректно, он должен быть сохранен в специальной директории, которая называется “web root”.

В Ubuntu 18.04 данная директория находится по адресу . Мы можем создать там файл введя следующую команду:

Откроется пустой файл. Введём в файл следующий текст, который является корректным PHP кодом:

info.php

После внесения изменений сохраните и закройте файл.

Теперь мы можем проверить, может ли веб-сервер корректно отображать контент, сгенерированный PHP скриптом. Для проверки нам просто нужно открыть данную страницу в веб-браузере. Вам снова потребуется публичный IP-адрес сервера.

Откроем этот адрес:

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

Данная страница содержит информацию о вашем сервере с точки зрения PHP. Она полезна для отладки и чтобы удостовериться в корректности применения настроек.

Если все прошло успешно, значит ваш PHP работает корректно.

Вы, возможно, захотите удалить этот файл после теста, т.к. он может дать информацию о вашем сервере неавторизованным пользователям. Для удаления файла введите команду:

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

Step 3: Install PHP

PHP is the component of our setup that will process code to display dynamic content. It can run scripts, connect to our MySQL databases to get information, and hand the processed content over to our web server to display.

We can once again leverage the system to install our components. We’re going to include some helper packages as well, so that PHP code can run under the Apache server and talk to our MySQL database:

This should install PHP without any problems. We’ll test this in a moment.

In most cases, we’ll want to modify the way that Apache serves files when a directory is requested. Currently, if a user requests a directory from the server, Apache will first look for a file called . We want to tell our web server to prefer PHP files, so we’ll make Apache look for an file first.

To do this, type this command to open the file in a text editor with root privileges:

It will look like this:

/etc/apache2/mods-enabled/dir.conf

We want to move the PHP index file highlighted above to the first position after the specification, like this:

/etc/apache2/mods-enabled/dir.conf

When you are finished, save and close the file by pressing Ctrl-X. You’ll have to confirm the save by typing Y and then hit Enter to confirm the file save location.

After this, we need to restart the Apache web server in order for our changes to be recognized. You can do this by typing this:

We can also check on the status of the service using :

Install PHP Modules

To enhance the functionality of PHP, we can optionally install some additional modules.

To see the available options for PHP modules and libraries, you can pipe the results of into , a pager which lets you scroll through the output of other commands:

Use the arrow keys to scroll up and down, and q to quit.

The results are all optional components that you can install. It will give you a short description for each:

To get more information about what each module does, you can either search the internet, or you can look at the long description of the package by typing:

There will be a lot of output, with one field called which will have a longer explanation of the functionality that the module provides.

For example, to find out what the module does, we could type this:

Along with a large amount of other information, you’ll find something that looks like this:

If, after researching, you decide you would like to install a package, you can do so by using the command like we have been doing for our other software.

If we decided that is something that we need, we could type:

If you want to install more than one module, you can do that by listing each one, separated by a space, following the command, like this:

At this point, your LAMP stack is installed and configured. We should still test out our PHP though.

Step 4: Install PHP7.4

At the the time of this writing, PHP7.4 is the latest stable version of PHP and has a minor performance edge over PHP7.3. Enter the following command to install PHP7.4 and some common PHP modules.

sudo apt install php7.4 libapache2-mod-php7.4 php7.4-mysql php-common php7.4-cli php7.4-common php7.4-json php7.4-opcache php7.4-readline

Enable the Apache php7.4 module then restart Apache Web server.

sudo a2enmod php7.4

sudo systemctl restart apache2

Check PHP version information.

php --version

Output:

PHP 7.4.3 (cli) (built: Mar 26 2020 20:24:23) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies

To test PHP scripts with Apache server, we need to create a  file in the document root directory.

sudo nano /var/www/html/info.php

Paste the following PHP code into the file.

<?php phpinfo(); ?>

To save a file in Nano text editor, press , then press Enter to confirm. To exit, press .  Now in the browser address bar, enter . Replace  with your actual IP. If you follow this tutorial on your local computer, then type  or .

You should see your server’s PHP information. This means PHP scripts can run properly with Apache web server.

Installing Apache Web Server on Ubuntu

To setup LAMP stack on your Ubuntu machine, the first step is installing and configuring Apache Web server. To do so, you need to perform the following steps:

Execute the following commands to update the existing packages and install the Apache packages.

sudo apt-get update -y
sudo apt-get install apache2 -y

Ensure that apache service is running properly. If not, start it manually by executing the following commands:

sudo service apache2 status
sudo service apache2 restart

Once you have installed the Apache server and tested that the service is running properly, type the following URL on a Web browser to test that Web server is functioning properly.

http://server-ip-address

The default page of Apache web server should be displayed as shown in the following figure.

You also need to make sure that ports 80 and 443 are allowed publically through the firewall.

Шаг 3 — Установка PHP

Используйте для установки PHP. Кроме того, на этот раз включите несколько вспомогательных пакетов, чтобы код PHP мог работать на сервере с Apache и взаимодействовать с вашей базой данных MySQL:

В большинстве случаев вы захотите изменить способ, которым Apache обслуживает файлы при запросе каталога. Сейчас если пользователь запрашивает каталог с сервера, Apache сначала будет искать файл с именем . Мы хотим указать веб-серверу, чтобы он предпочитал файлы PHP другим.

Введите команду, чтобы открыть файл в текстовом редакторе с правами root:

Содержимое будет выглядеть так:

Измените этот файл следующим образом:

Когда вы закончите, сохраните и закройте файл, нажав . Подтвердите сохранение, набрав , а затем нажмите .

После этого перезапустите веб-сервер Apache:

Вы также можете проверить статус , используя :

Нажмите чтобы выйти.

Для расширения функциональности PHP у вас есть возможность установить некоторые дополнительные модули. Чтобы увидеть доступные опции для модулей и библиотек PHP:

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

Результатом являются все дополнительные компоненты, которые вы можете установить:

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

В качестве альтернативы, посмотрите на полное описание пакета, набрав:

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

Вы найдете:

Если вы решите установить пакет, то выполните:

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

На этом этапе ваш стек LAMP установлен и настроен. Однако перед внесением каких-либо изменений или развертыванием приложения было бы полезно предварительно протестировать конфигурацию PHP на случай возникновения проблем.

Шаг 2. Установка Apache.

Пакеты веб-сервера Apache доступны в официальных репозиториях Ubuntu 20.04. Мы будем устанавливать Apache с помощью apt, который является менеджером пакетов по умолчанию для ubuntu:

sudo apt install apache2 apache2-utils

После установки Apache2 следующие команды можно использовать для остановки, запуска и включения службы Apache2, чтобы она всегда запускалась с загрузкой сервера:

sudo systemctl enable apache2
sudo systemctl start apache2
sudo systemctl status apache2

Вы можете убедиться, что Apache действительно запущен, открыв свой любимый веб-браузер и введя URL-адрес , если он установлен, вы увидите следующее:

Установка Kubernetes

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

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add —

Создадим файл с настройкой репозитория:

vi /etc/apt/sources.list.d/kubernetes.list

deb https://apt.kubernetes.io/ kubernetes-xenial main

Обновим список пакетов:

apt-get update

Устанавливаем пакеты: 

apt-get install kubelet kubeadm kubectl

* где:

  • kubelet — сервис, который запускается и работает на каждом узле кластера. Следит за работоспособностью подов.
  • kubeadm — утилита для управления кластером Kubernetes.
  • kubectl — утилита для отправки команд кластеру Kubernetes.

Нормальная работа кластера сильно зависит от версии установленных пакетов. Поэтому бесконтрольное их обновление может привести к потере работоспособности всей системы. Чтобы этого не произошло, запрещаем обновление установленных компонентов:

apt-mark hold kubelet kubeadm kubectl

Установка завершена — можно запустить команду:

kubectl version —client

… и увидеть установленную версию программы: 

Client Version: version.Info{Major:»1″, Minor:»20″, GitVersion:»v1.20.2″, GitCommit:»faecb196815e248d3ecfb03c680a4507229c2a56″, GitTreeState:»clean», BuildDate:»2021-01-13T13:28:09Z», GoVersion:»go1.15.5″, Compiler:»gc», Platform:»linux/amd64″}

Наши серверы готовы к созданию кластера.

Confirm partitions

With the target drive selected, the installer will calculate what partitions to create and present this information…

If this isn’t what you expected to see (e.g., you have selected the wrong drive), you should use the arrow keys and enter to select from the options at the bottom of the screen. This will take you back to the previous menu where you can select a different drive.

It is also possible to manually change the partitions here, by selecting . Obviously you should only select this if you are familiar with how partitions work.

When you are happy with the disk layout displayed, select to continue.

Настройка файрвола UFW

Файрвол UFW (брэндмауэр) это функциональный и в то же время очень простой в настройке файрвол, который позволяет разрешать или ограничивать доступ к вашему серверу.

Если UFW не установлен, то вы можете установить его из штатных репозиториев Ubuntu, выполнив команду:

Некоторые приложения создают для UFW готовые профили с настройками. Это очень удобно, так как пользователю достаточно всего лишь включить нужный профиль.

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

Выведем список доступных профилей:

Нам нужно включить профиль OpenSSH. Для этого выполняем команду:

Включаем файрвол:

Скорее всего, появится следующее предупреждение, информирующее о том, что SSH-соединение может прерваться. Но так как мы разрешили использование SSH, то вводим y и нажимаем Enter.

Если все прошло успешно, то вы по прежнему должны будете иметь SSH доступ. Выведем текущий статус UFW:

5: Тестирование стека LAMP

Сейчас нужно убедиться в том, что веб-сервер взаимодействует с PHP. Для этого нужно создать простой сценарий PHP, info.php.

Создайте этот файл в корневом каталоге веб-сервера:

На экране появится пустой файл. Поместите в него такой код:

Сохраните и закройте файл.

Теперь попробуйте открыть его в браузере:

На экране появится веб-страница, содержащая информацию о сервере (она также может пригодиться вам при отладке). Если такая страница появилась, веб-сервер обслуживает файлы PHP.

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

В случае необходимости вы сможете быстро создать эту страницу снова.

Закажите у нас готовый стек LAMP или VPS c Ubuntu 20.04 и получите надежный сервис в придачу!

ApacheLAMP stackMySQLPHPUbuntuUbuntu 20.04

Services

Службы позволяют обеспечить сетевую доступность для развертываний. Существует несколько типов сервисов:

  • ClusterIP — сопоставление адреса с deployments для подключений внутри кластера Kubernetes.
  • NodePort — для внешней публикации развертывания.
  • LoadBalancer — сопоставление через внешний балансировщик.
  • ExternalName — сопоставляет службу по имени (возвращает значение записи CNAME).

Мы рассмотрим первые два варианта.

Привязка к Deployments

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

kubectl expose deploy web-deploy —type=ClusterIP —port=80

* где web-deploy — deployment, который мы развернули с помощью манифеста. Публикация ресурса происходит на внутреннем порту 80. Обращаться к контейнерам можно внутри кластера Kubernetes.

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

kubectl expose deploy web-deploy —type=NodePort —port=80

* данная команда отличается от команды выше только типом NodePort — для данному deployment будет сопоставлен порт для внешнего подключения, который будет вести на внутренний (в нашем примере, 80).

Просмотр

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

kubectl get services

Мы можем увидеть что-то на подобие:

NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
web-deploy   NodePort    10.111.229.132   <none>        80:30929/TCP   21s

* в данном примере указано, что у нас есть служба типа NodePort, а к сервису можно подключиться по порту 30929.

Можно попробовать открыть браузер и ввести http://<IP-адрес мастера>:30929 — мы должны увидеть нужную нам страницу (в наших примерах, либо NGINX, либо Apache).

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

kubectl get services -o wide

Удаление

Удаляем созданную службу командой:

kubectl delete services web-deploy

* в данном примере будет удалена служба для развертывания web-deploy.

Удалить все службы можно командой:

kubectl delete services —all

Манифест

Как в случае с подами и развертываниями, мы можем использовать манифест-файлы. Рассмотрим небольшой пример.

vi manifest_service.yaml

apiVersion: v1
kind: Service
metadata:
  name: web-service
  labels:
    app: web_server
    owner: dmosk
    description: web_server_for_site
spec:
  selector:
    project: myweb
  type: NodePort
  ports:
    — name: app-http
      protocol: TCP
      port: 80
      targetPort: 80
    — name: app-smtp
      protocol: TCP
      port: 25
      targetPort: 25

* в данном примере мы создадим службу, которая будем связываться с развертыванием по лейболу project: myweb.

Step 5 — Configuring the WordPress Directory

Before we do the web-based WordPress setup, we need to adjust some items in our WordPress directory.

Adjusting the Ownership and Permissions

An important step that we need to accomplish is setting up reasonable file permissions and ownership.

We’ll start by giving ownership of all the files to the www-data user and group. This is the user that the Apache web server runs as, and Apache will need to be able to read and write WordPress files in order to serve the website and perform automatic updates.

Update the ownership with the command which allows you to modify file ownership. Be sure to point to your server’s relevant directory.

Next we’ll run two commands to set the correct permissions on the WordPress directories and files:

These permissions should get you working effectively with WordPress, but note that some plugins and procedures may require additional tweaks.

Setting Up the WordPress Configuration File

Now, we need to make some changes to the main WordPress configuration file.

When we open the file, our first task will be to adjust some secret keys to provide a level of security for our installation. WordPress provides a secure generator for these values so that you do not have to try to come up with good values on your own. These are only used internally, so it won’t hurt usability to have complex, secure values here.

To grab secure values from the WordPress secret key generator, type:

You will get back unique values that resemble output similar to the block below.

Warning! It is important that you request unique values each time. Do NOT copy the values below!

These are configuration lines that we can paste directly in our configuration file to set secure keys. Copy the output you received now.

Next, open the WordPress configuration file:

Find the section that contains the example values for those settings.

/var/www/wordpress/wp-config.php

Delete those lines and paste in the values you copied from the command line:

/var/www/wordpress/wp-config.php

Next, we are going to modify some of the database connection settings at the beginning of the file. You need to adjust the database name, the database user, and the associated password that you configured within MySQL.

The other change we need to make is to set the method that WordPress should use to write to the filesystem. Since we’ve given the web server permission to write where it needs to, we can explicitly set the filesystem method to “direct”. Failure to set this with our current settings would result in WordPress prompting for FTP credentials when we perform some actions.

This setting can be added below the database connection settings, or anywhere else in the file:

/var/www/wordpress/wp-config.php

Save and close the file when you are finished.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: