Контакти

Установка MariaDB в Windows. Перехід з MySQL на MariaDB в Windows. Як налаштувати MariaDB SSL і встановити безпечні з'єднання з різних клієнтів Установка MariaDB в Windows

Я вирішив відмовитися від використання MySQL, а точніше повністю перевести всі свої сервера на її форк - MariaDB. Користуючись нагодою, хочу розповісти про процес установки MariaDB 10.1 в Debian 8. Слід зазначити, що короткий опис установки MariaDB є на офіційній сторінці проекту. Я вирішив виділити цього питання окремий пост, в якому хочу описати необхідні дії після установки MariaDB на сервері.

Перед початком установки MariaDB необхідно додати її репозиторій. На сайті MariaDB рекомендують для цього встановити пакет software-properties-common. Я не бачу в цьому ніякого сенсу і вважаю за краще все робити вручну.

Реєструємо GPG-ключ сховища в системі:

Apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db

Додаємо опис сховища в файл sources.list. Відкриваємо файл в редакторі nano:

Nano /etc/apt/sources.list

Копіюємо в кінець наступні рядки:

Deb http://lon1.mirrors.digitalocean.com/mariadb/repo/10.1/debian jessie main deb-src http://lon1.mirrors.digitalocean.com/mariadb/repo/10.1/debian jessie main

Оновлюємо список доступних пакетів:

Apt-get update

Запускаємо процес установки MariaDB 10.1:

Apt-get install mariadb-server

Під час установки нас попросять ввести пароль для користувача root. На цьому процес установки MariaDB в Debian 8 закінчений. А тепер переходимо до налаштування сервера.

Щоб підвищити надійність нашого сервера, потрібно виконати мінімальні вимоги безпеки. Заборонити авторизацію під користувачем root з віддалених хостів. При наявності бази test і користувача anonymous, потрібно видалити їх з сервера. Щоб полегшити завдання використовуйте скрипт:

Mysql_secure_installation

Тип зберігання даних за замовчуванням

Якщо необхідно змінити тип зберігання даних за замовчуванням, додайте в файл my.cnf наступні рядки:

Default-storage-engine \u003d innodb

Переконайтеся, що MariaDB використовує таблиці InnoDB за замовчуванням. Для цього виконайте команду:

SHOW ENGINES;

Створити користувача і базу MariaDB

Щоб створити користувача в MariaDB використовуйте команду нижче:

CREATE USER "USER_NAME" @ "localhost" IDENTIFIED BY "PASSWORD";

Створюємо нову базу:

CREATE DATABASE database_name;

Даємо повні права користувачеві USER_NAME на базу databasename:

GRANT ALL PRIVILEGES ON database_name. * TO "USER_NAME" @ "localhost";

Тепер потрібно оновити всі привілеї:

FLUSH PRIVILEGES

Для перегляду привілеїв виконайте команду:

SHOW GRANTS FOR "USER_NAME" @ "localhost";

бінарні логи

MariaDB записує всі зміни БД в бінарний журнал, він необхідний для роботи механізму реплікації. Якщо ви не робили бекапов або вони застаріли, бінарні логи можна використовувати для відновлення даних. Втім, немає ніякої гарантії, що дані будуть повністю або частково відновлені. Успіх буде залежати від розміру, часу зберігання бінарних логів, частоти виконання бекапа.

Для відключення бінарних логів, коментуємо рядки в файлі my.cnf:

#log_bin \u003d / var / log / mysql / mariadb-bin #log_bin_index \u003d /var/log/mysql/mariadb-bin.index

Я збираюся встановити MariaDB SSL (Secure Sockets Layer) а також безпечні з'єднання від клієнта MySQL і додатки PHP. Як включити SSL для сервера і клієнта MariaDB, що працює в Linux або Unix-подібної системи?

MariaDB - сервер бази даних, який пропонує функціональні можливості вклинювання для сервера MySQL.

MariaDB був створений деякими з оригінальних авторів MySQL, за допомогою більш широкого штату розробників Free і іншого програмного забезпечення з відкритим вихідним кодом. На додаток до основних функцій MySQL, MariaDB пропонує багатий набір поліпшень функцій, включаючи альтернативні механізми зберігання, оптимізацію серверів і інші виправлення. У цьому керівництві я збираюся розповісти про те, як налаштувати сервер MariaDB за допомогою SSL і як встановити безпечні з'єднання за допомогою консолі і PHP-скриптів.

При створенні сертифікатів SSL важливо використовувати 192.168.1.100 в якості стандартного імені.

Крок 1 - Установка MariaDB

Введіть команду відповідно до вашого варіантом Linux або Unix.

Установка MariaDB сервера / клієнта на Ubuntu / Debian Linux

Введіть одну з наступних команд: apt-get command або apt command:

$ Sudo apt-get install mariadb-server mariadb-client

Установка MariaDB сервера / клієнта на CentOS / RHEL / Fedora Linux

Введіть наступну команду yum:

$ Sudo yum install mariadb-server mariadb

Для користувачів Fedora Linux необхідно ввести команду dnf:

$ Sudo dnf install mariadb-server mariadb

Установка MariaDB сервера / клієнта на Arch Linux

Введіть наступну команду pacman:

$ Sudo pacman -S mariadb

Установка MariaDB сервера / клієнта на FreeBSD unix

Для установки порту запустіть:

# Cd / usr / ports / databases / mariadb100-server / && make install clean # cd / usr / ports / databases / mariadb100-client / && make install clean

Щоб додати бінарний пакет, введіть:

# Pkg install mariadb100-server mariadb100-client

Крок 2 - Забезпечення безпечної установки MariaDB

Введіть наступну команду:

$ mysql_secure_installation

Рісунок.01: Захистіть установку MariaDB

Крок 3 - Створіть CA сертифікат

Створіть директорію під назвою ssl в / etc / mysql / directory:

$ Cd / etc / mysql $ sudo mkdir ssl $ cd ssl

значення: Стандартне значення імені (Common Name), що використовується для сертифікатів / ключів сервера і клієнта, має відрізнятися від стандартного значення імені (Common Name), що використовується для сертифіката CA. Щоб уникнути будь-яких проблем, я встановлюю їх наступним чином:

Стандартне ім'я CA: MariaDB admin
Стандартне ім'я сервера: MariaDB server
Стандартне ім'я клієнта: MariaDB client

Введіть наступну команду для створення нового CA ключа:

$ Sudo openssl genrsa 2048\u003e ca-key.pem

Приклади можливих висновків даних:


Рісунок.02: Створення CA ключа

Введіть наступну команду для створення сертифіката за допомогою цього ключа:

$ Sudo openssl req -new -x509 -nodes -days 365000 -key ca-key.pem -out ca-cert.pem
Рісунок.03: Використовуючи ключ CA, згенеруйте сертифікат CA для MariaDB

Приклади можливих висновків даних:

Тепер у вас повинно бути два наступних файлу ::

  1. /etc/mysql/ssl/ca-cert.pem - Файл сертифіката для Центру сертифікації (Certificate Authority (CA)).
  2. /etc/mysql/ssl/ca-key.pem - Файл ключа для Центру сертифікації (Certificate Authority (CA)).

Я збираюся використовувати обидва файли для створення сертифікатів сервера і клієнта.

Крок 4 - Створення сертифіката сервера

Для створення ключа сервера, запустіть:

$ Sudo openssl req -newkey rsa: 2048 -days 365000 -nodes -keyout server-key.pem -out server-req.pem

Приклади можливих висновків даних:


Малюнок 04: Створення ключа сервера для сервера MariaDB

Потім обробіть ключ RSA сервера, для цього введіть:

$ Sudo openssl rsa -in server-key.pem -out server-key.pem

Приклади можливих висновків даних:

Writing RSA key

Нарешті, підпишіть сертифікат сервера, для цього запустіть:

$ Sudo openssl x509 -req -in server-req.pem -days 365000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem

Приклади можливих висновків даних:

Signature ok subject \u003d / C \u003d AU / ST \u003d Some-State / O \u003d Internet Widgits Pty Ltd / CN \u003d MariaDB server Getting CA Private Key

Тепер у вас повинні з'явитися додаткові файли:

  1. /etc/mysql/ssl/server-cert.pem - MariaDB файл сертифіката сервера.
  2. /etc/mysql/ssl/server-key.pem - MariaDB файл ключа сервера.

Ви повинні використовувати не менше двох файлів на сервері MariaDB і будь-яких інших вузлах, які ви збираєтеся використовувати для трафіку кластера / реплікації. Ці два файли будуть захищати зв'язок на стороні сервера.

Крок 5 - Створення сертифіката клієнта

Клієнт mysql, і додаток PHP / Python / Perl / Ruby буде використовувати сертифікат клієнта для захисту з'єднане клієнта. Ви повинні встановити такі файли на всіх ваших клієнтів, включаючи веб-сервер. Щоб створити клієнтський ключ, запустіть:

$ Sudo openssl req -newkey rsa: 2048 -days 365000 -nodes -keyout client-key.pem -out client-req.pem

Приклади можливих висновків даних:


Рісунок.05: Створення ключа клієнта для сервера MariaDB

Потім обробіть ключ клієнта RSA, для цього введіть

$ Sudo openssl rsa -in client-key.pem -out client-key.pem writing RSA key

Нарешті, підпишіть сертифікат клієнта, для цього запустіть:

$ Sudo openssl x509 -req -in client-req.pem -days 365000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem

Приклади можливих висновків даних:

Signature ok subject \u003d / C \u003d AU / ST \u003d Some-State / O \u003d Internet Widgits Pty Ltd / CN \u003d MariaDB client Getting CA Private Key

Крок 6 - Як перевірити сертифікати?

Введіть наступну команду, щоб перевірити сертифікати, щоб переконатися, що все було створено правильно:

$ Openssl verify -CAfile ca-cert.pem server-cert.pem client-cert.pem

Приклади можливих висновків даних:

Server-cert.pem: OK client-cert.pem: OK

Не повинно бути ніяких помилок, і ви повинні отримати відповідь OK для сертифікатів сервера і клієнта.

Крок 7 - Налаштуйте сервер MariaDB для використання SSL

відредагуйте файл vi /etc/mysql/mariadb.conf.d/50-server.cnf або /etc/mysql/mariadb.cnf наступним чином:

$ Sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf

Додайте в такий спосіб:

### MySQL Server ### ## Securing the Database with ssl option and certificates ## ## There is no control over the protocol level used. ## ## mariadb will use TLSv1.0 or better. ## ssl ssl-ca \u003d / etc / mysql / ssl / ca-cert.pem ssl-cert \u003d / etc / mysql / ssl / server-cert.pem ssl-key \u003d / etc / mysql / ssl / server-key. pem

Збережіть і закрийте файл. Ви можете перезапустити mariadb наступним чином:

$ Sudo /etc/init.d/mysql restart

$ Sudo systemctl restart mysql

Крок 8 - Налаштуйте клієнт MariaDB для використання SSL

Налаштуйте MariaDB клієнт як 192.168.1.200 для використання SSL (додайте в /etc/mysql/mariadb.conf.d/50-mysql-clients.cnf):

$ Sudo vi /etc/mysql/mariadb.conf.d/50-mysql-clients.cnf

Додайте в розділ:

## MySQL Client Configuration ## ssl-ca \u003d / etc / mysql / ssl / ca-cert.pem ssl-cert \u003d / etc / mysql / ssl / client-cert.pem ssl-key \u003d / etc / mysql / ssl / client-key.pem ### This option is disabled by default ### ### ssl-verify-server-cert ###

Збережіть і закрийте файл. Ви повинні скопіювати файли /etc/mysql/ssl/ca-cert.pem, /etc/mysql/ssl/client-cert.pem і /etc/mysql/ssl/client-key.pem для всіх ваших клієнтів. наприклад:

{[Email protected]): Rsync /etc/mysql/ssl/ca-cert.pem /etc/mysql/ssl/client-cert.pem /etc/mysql/ssl/client-key.pem \\ [Email protected]: / Etc / mysql / ssl

Крок 9 - Перевірка

Введіть наступну команду:

$ Mysql -u (User-Name-Here) -h (Server-IP-here) -p (DB-Name-Here) $ mysql -u root -h 192.168.1.100 -p mysql $ mysql -u root -h 127.0 .0.1 -p mysql

Введіть наступну SHOW VARIABLES LIKE '% ssl%'; команду в MariaDB [(none)]\u003e рядку:

MariaDB [(none)]\u003e SHOW VARIABLES LIKE "% ssl%";

АБО виконайте команду status:

MariaDB [(none)]\u003e status;

Приклади можливих висновків даних:

Малюнок 06: Встановлення безпечного з'єднання з консоллю і її перевірка

Перевірте з'єднання SSL і TLS. Наступна команда повинна завершитися невдачею, так як ssl 3 не підтримує і, відповідно, вона не налаштована для використання:

$ Openssl s_client -connect 192.168.1.100:3306 -ssl3 140510572795544: error: 140A90C4: SSL routines: SSL_CTX_new: null ssl method passed: ssl_lib.c: один тисяча вісімсот сімдесят вісім:

Перевірте TLS v 1 / 1.1 / 1.2:

$ Openssl s_client -connect 192.168.1.100:3306 -tls1 $ openssl s_client -connect 192.168.1.100:3306 -tls1_1 $ openssl s_client -connect 192.168.1.100:3306 -tls1_2

Приклади можливих висновків даних:

CONNECTED (00000003) --- no peer certificate available --- No client certificate CA names sent --- SSL handshake has read 5 bytes and written 7 bytes --- New, (NONE), Cipher is (NONE) Secure Renegotiation IS NOT supported Compression: NONE Expansion: NONE No ALPN negotiated SSL-Session: Protocol: TLSv1 Cipher 0000 Session-ID: Session-ID-ctx: Master-Key: Key-Arg: None PSK identity: None PSK identity hint: None SRP username: None Start Time: 1485335036 Timeout 7200 (sec) Verify return code: 0 (ok) ---

Як читати файл захоплення пакета tcpdump для перевірки захищеного зв'язку

Нарешті, ви можете використовувати аналізатор пакетів команд tcpdump, який запускається під командним рядком, щоб подивитися порт 3306:

$ Sudo tcpdump -i eth0 -s 65535 port 3306 -w /tmp/mysql.pcap

Тепер підключіться до вашого додатком PHP / Python / Perl / Ruby mysql або консольного додатку mysql:

$ Mysql -u bar -h 192.168.1.100 -p foo

Використовуйте tcpdump для перевірки того, що ніяка текстова інформація, Включаючи паролі, не обмінюється між сервером і клієнтом. Це робиться в такий спосіб:

$ Tcpdump -r /tmp/mysql.pcap | less

Крок 10 - Добавленіепользователя на MariaDB сервер

Введіть наступну команду:

$ Mysql -u root -p

Створіть базу даних під назвою foo:

CREATE DATABASE foo;

Створіть користувача з маєток bar for для бази даних під назвою foo:

GRANT ALL ON foo. * TO [Email protected] IDENTIFIED BY "mypassword" REQUIRE SSL;

Надання доступу з веб-сервера, розміщеного за адресою 192.168.1.200:

GRANT ALL ON foo. * TO [Email protected] IDENTIFIED BY "mypassword" REQUIRE SSL;

Створіть безпечне з'єднання з оболонки bash

Ви можете увійти в систему з консолі наступним чином:

$ Mysql -u bar -p -h 192.168.1.100 foo

Створіть безпечне з'єднання з Python

Спочатку встановіть інтерфейс Python для MySQL:

$ Sudo apt-get install python-mysql.connector

АБО для Python v3.x

$ Sudo apt-get install python3-mysql.connector

Тут наведено приклад коду Python для безпечного з'єднання з використанням:

#! / Usr / bin / python import MySQLdb ssl \u003d ( "cert": "/etc/mysql/ssl/client-cert.pem", "key": "/etc/mysql/ssl/client-key.pem" ) conn \u003d MySQLdb.connect (host \u003d "192.168.1.100", user \u003d "bar", passwd \u003d "mypassword", ssl \u003d ssl) cursor \u003d conn.cursor () cursor.execute ( "SHOW STATUS LIKE" Ssl_cipher "" ) print cursor.fetchone ()

#! / Usr / bin / python # Note (Example is valid for Python v2 and v3) from __future__ import print_function import sys import mysql.connector from mysql.connector.constants import ClientFlag config \u003d ( "user": "bar", " password ":" mypassword "," host ":" 192.168.1.100 "," client_flags ":," ssl_ca ":" /etc/mysql/ssl/ca-cert.pem "," ssl_cert ":" / etc / mysql /ssl/client-cert.pem "," ssl_key ":" /etc/mysql/ssl/client-key.pem ",) cnx \u003d mysql.connector.connect (** config) cur \u003d cnx.cursor (buffered \u003d True) cur.execute ( "SHOW STATUS LIKE" Ssl_cipher "") print (cur.fetchone ()) cur.close () cnx.close ()

Приклади можливих висновків даних:

( "Ssl_cipher", "DHE-RSA-AES256-SHA")

Сьогодні займемося підняттям однієї з найбільш затребуваних ролей будь-якого linux сервера, які займають в цьому функціональному сегменті лідируючу роль. Налаштування web сервера CentOS 7 на базі зв'язки популярного http сервера apache, інтерпретатора php і сервера баз даних mysql, Або коротко - установка lamp. Дана зв'язка є найпопулярнішою конфігурацією на сьогоднішній день серед веб хостингу. Хоча останнім часом їй на п'яти наступає та сама компанія, але на базі nginx, можливо вже і випередила, точних даних у мене немає на цей рахунок.

Дана стаття є частиною єдиного циклу статтею про сервер.

Web сервер на CentOS 7

Отже, наш веб сервер centos буде складатися з трьох основних компонентів - http сервера apache, Інтерпретатора мови програмування phpі сервера баз даних mysql. Познайомимося трохи з кожним з них:

  1. Apache - http сервер або просто веб сервер апач. Є кросплатформенних ПО, що підтримує практично всі популярні операційні системи, В тому числі і Windows. Цінується насамперед за свою надійність і гнучкість конфігурації, яку можна істотно розширити завдяки підключається модулям, яких існує безліч. З недоліків відзначають велику вимогливість до ресурсів, в порівнянні з іншими серверами. Тримати таку ж навантаження, як, наприклад, nginx, apache не зможе при схожих параметрах заліза.
  2. PHP - мова програмування загального призначення, який найчастіше застосовується в веб розробці. На сьогоднішній день це найбільш популярна мова в цій області застосування. Підтримується практично всіма хостинг-провайдерами.
  3. Mysql - система управління базами даних. Завоювала свою популярність в середовищі малих і середніх додатків, яких дуже багато в інтернеті. Так що, як і php, на сьогоднішній день є найпопулярнішою бд, що використовується на веб сайтах. Підтримується більшістю хостингів. У CentOS замість mysql встановлюється mariadb - відгалуження mysql. Вони повністю сумісні, можливий в будь-який момент перехід з однієї СУБД на іншу і назад. Останнім часом я зустрічав інформацію, що mariadb спритніші працює mysql і люди потихеньку перебираються на неї. На практиці мені не довелось це спостерігати, так як ніколи не працював з навантаженими базами даних. А в звичайних умовах різниця не помітна.

Піддослідним сервером виступатиме, характеристики наступні:

процесор2 ядра
пам'ять8 Gb
Диск150 Gb SSD

Це кастомними настройка параметрів. Вони не оптимальні за ціною, але мені були потрібні саме такі.

Хочу відразу уточнити, що розбираю базову дефолтну настройку. Для поліпшення швидкодії, підвищення надійності та зручності користування потрібно встановити ще кілька інструментів, про що я розповім окремо. У загальному випадку для організації веб сервера буде досить того, що є в цій статті.

Якщо у вас ще немає сервера, то вам треба виконати. А якщо сервер вже встановлено, то не забудьте його. Рекомендую звернути увагу саме на настройку, так як там багато корисної інформації, Яку в рамках цієї статті я не даю - оновлення системи, настройка фаервола, установка редактора і багато іншого.

Налаштування apache в CentOS 7

У CentOS служба apache називається httpd. Коли я тільки почав знайомитися з цим дистрибутивом, мені було незвично. У Freebsd і Debian, з якими я до цього працював служба веб сервера називалася apache, хоча десь я помічав, здається під фрюхе, що файл конфігурації має ім'я httpd.conf. До сих пір я не знаю, чому поширилися обидва ці назви. Був би радий, якби зі мною хтось поділився інформацією з цього приводу в коментарях.

Тепер приступимо до установці apache. У CentOS 7 це робиться дуже просто:

# Yum install -y httpd

Додаємо apache в автозавантаження:

# Systemctl enable httpd

Запускаємо apache в CentOS 7:

# Systemctl start httpd

Перевіряємо, запустився чи сервер:

# Netstat -tulnp | grep httpd tcp6 0 0 ::: 80 ::: * LISTEN 21586 / httpd

Все в порядку, повис на 80-му порту, як і належить. Вже зараз можна зайти за адресою http: // ip-address і побачити картинку:

Тепер займемося налаштуванням apache. Я віддаю перевагу наступну структуру веб хостингу:

Створюємо подібну структуру:

# Mkdir / web && mkdir /web/site1.ru && mkdir /web/site1.ru/www && mkdir /web/site1.ru/logs # chown -R apache. / web

IncludeOptional conf.d / *. Conf

Якщо немає, раскомментіруем і йдемо в каталог /etc/httpd/conf.d. З оздаем там файл site1.ru.conf:

ServerName site1.ru ServerAlias \u200b\u200bwww.site1.ru DocumentRoot /web/site1.ru/www Options FollowSymLinks AllowOverride All Require all granted ErrorLog /web/site1.ru/logs/error.log CustomLog /web/site1.ru/logs/access.log common

Перезапуск apache в centos

Тепер робимо restart apache:

# Systemctl restart httpd

Якщо виникли якісь помилки - дивимося лог apache / var / log / httpd / error_log. Якщо все в порядку, то перевіримо, чи нормально налаштований наш віртуальний хост. Для цього створимо в папці /web/site1.ru/www файл index.html наступного змісту:

# Mcedit /web/site1.ru/www/index.html

Апач налаштований!

# Chown apache. /web/site1.ru/www/index.html

192.168.1.25 site1.ru

де 192.168.1.25 ip адресу нашого веб сервера.

Тепер в браузері набираємо адресу http://site1.ru. Якщо бачимо картинку:

значить все правильно налаштували. Якщо якісь помилки, то йдемо дивитися логи. Причому в даному випадку не загальний лог httpd, а лог помилок конкретного віртуального хоста за адресою /web/site1.ru/logs/error.log.

Відразу ж зверну вашу увагу на налаштування ротації логів віртуальних хостів. Частенько буває, що якщо відразу не настроїш, потім забуваєш. Але якщо сайт з гарною відвідуваністю, то логи будуть рости стрімко і можуть зайняти дуже багато місця. Краще налаштувати ротацію логів веб сервера відразу ж після створення. Зробити це не складно.

Щоб налаштувати ротацію логів віртуальних хостів, необхідно відредагувати файл /etc/logrotate.d/httpd. Він створюється під час установки apache і включає в себе настройку ротації стандартного розташування логів. А так як ми перенесли логи кожного віртуального хоста в індивідуальну папку, необхідно додати ці папки в цей файл:

# Mcedit /etc/logrotate.d/httpd /web/*/logs/*.log / Var / log / httpd / * log (missingok notifempty sharedscripts delaycompress postrotate / bin / systemctl reload httpd.service\u003e / dev / null 2\u003e / dev / null || true endscript)

В принципі, найпростіший веб сервер вже готовий і їм можна користуватися. Але навряд чи зараз знайдуться сайти зі статичним вмістом, яким достатньо підтримки тільки html. Так що продовжимо нашу настройку.

Якщо вам необхідно організувати роботу сайту по протоколу https, То скористайтеся посібником з.

Установка php в CentOS 7

Для підтримки динамічного вмісту сайтів виконаємо наступний крок. встановимо php в CentOS 7:

# Yum install -y php

І слідом ще кілька корисних компонентів. встановимо популярні модулі для php:

# Yum install -y php-mysql php-mbstring php-mcrypt php-devel php-xml php-gd

Виконаємо перезапуск apache:

# Systemctl restart httpd

Створимо файл в директорії віртуального хоста і перевіримо роботу php:

# Mcedit /web/site1.ru/www/index.php # Chown apache. /web/site1.ru/www/index.php

Заходимо за адресою http://site1.ru/index.php

Ви повинні побачити висновок інформації про php. Якщо щось не так, виникли якісь помилки, дивіться лог помилок віртуального хоста, php помилки будуть теж там.

Де лежить php.ini

Після установки часто виникає питання, а де зберігаються настройки php? Традиційно вони знаходяться в єдиному файлі. У CentOS php.ini лежить в / etc, Прямо в корені. Там можна редагувати глобальні настройки для все віртуальних хостів. Персональні налаштування кожного сайту можна зробити окремо в файлі конфігурації віртуального хоста, який ми зробили раніше. Давайте додамо туди кілька корисних налаштувань:

# Mcedit /etc/httpd/conf.d/site1.ru.conf

Додаємо в самий кінець, перед

Php_admin_value date.timezone "Europe / Moscow" php_admin_value max_execution_time 60 php_admin_value upload_max_filesize 30M

Для застосування налаштувань потрібно зробити restart apache. Тепер у висновку phpinfo можна побачити зміна налаштувань.

Оновлення до php 5.6 в CentOS 7

У нашому прикладі ми встановили на CentOS 7 php 5.4 зі стандартного сховища. А що робити, якщо нам потрібна більш нова версія, наприклад php 5.6? У такому випадку потрібно виконати оновлення php.

# Wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm # rpm -Uvh remi-release-7 * .rpm

тепер оновлюємо php 5.4 до php 5.6:

# Yum --enablerepo \u003d remi, remi-php56 install php php-common php-mysql php-mbstring php-mcrypt php-devel php-xml php-gd

Перезапускаємо apache:

# Systemctl restart httpd

І йдемо дивитися висновок phpinfo - http://site1.ru/index.php

Відмінно, ми оновили php до версії 5.6.

Установка MySQL в CentOS 7

Як я вже писав раніше, зараз все більшого поширення набуває форк mysql - mariadb. Вона має повну сумісність з mysql, так що можна сміливо користуватися. Я вважаю за краще використовувати саме її.

встановлюємо mariadb на CentOS 7:

# Yum install -y mariadb mariadb-server

Додаємо mariadb в автозапуск:

# Systemctl enable mariadb.service

Запускаємо mariadb:

# Systemctl start mariadb

Перевіряємо, запустилася чи ні:

# Netstat -tulnp | grep mysqld tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 22276 / mysqld

Звертаю увагу, що вона навіть в системі відображається як сервіс mysqld. Тепер запускаємо стандартний скрипт налаштування безпеки:

# / Usr / bin / mysql_secure_installation

Не буду приводити весь висновок роботи цього скрипта, там все досить просто і зрозуміло. Спочатку ставимо пароль для root (поточний пароль після установки порожній), потім видаляємо анонімних користувачів, відключаємо можливість підключатися root віддалено, видаляємо тестового користувача і базу.

файл налаштувань mysql / mariadb лежить в /etc/my.cnf. Для звичайної роботи достатньо налаштувань за замовчуванням. Але якщо ви вирішите змінити їх, не забудьте перезапустити службу баз даних.

перезапуск mariadb/ Mysql в CentOS 7:

# Systemctl restart mariadb

На цьому все. Базовий функціонал web сервера на CentOS 7 налаштований.

Буду радий зауважень і коментарів по темі статті. Нагадую, що дана стаття є частиною єдиного циклу статтею про сервер.

Практикум по Kali Linux

Курс для тих, хто цікавиться проведенням тестів на проникнення і хоче практично спробувати себе в ситуаціях, близьких до реальних. Курс розрахований на тих, у кого ще немає досвіду в інформаційної безпеки. Навчання триває 3 місяці по 4 години на тиждень. Що дасть вам цей курс:
  • Шукати і експлуатувати вразливості або вади конфігурації в корпоративних мережах, web сайтах, серверах. Упор на пентест ОС Windows і на безпеку корпоративного сегмента.
  • Вивчення таких інструментів, як metasploit, sqlmap, wireshark, burp suite і багато інших.
  • Освоєння інструментарію Kali Linux на практиці - з ним повинен бути знаком будь-який фахівець з ІБ.
Перевірте себе на вступний тест і дивіться докладніше програму по.

Починаючи з версії Debian 9 популярну систему управління базами даних MySQL замінила MariaDB. Дана СУБД є відгалуженням від MySQL створена її початковими розробниками, які виявилися незадоволені ліцензійної політикою Oracle і відчували побоювання, що MySQL може стати більш закритим продуктом. MariaDB є повністю сумісною з MySQL, а це значить, що заміна відбудеться максимально прозоро і всі додатки, які працювали з MySQL також працюватимуть з MariaDB. А ми ж розглянемо деякі особливості цього переходу.

Перш за все скажемо, що всі команди, інструкції, скрипти і т.д. і т.п. які раніше працювали з MySQL будуть також працювати з MariaDB, ніяких змін вносити не потрібно і багато користувачів просто можуть не помітити, що працюють з іншого СУБД.

Але є і відмінності, перш за все вони стосуються безпеки і були внесені командою Debian. Одним з основних відмінностей є те, то MariaDB що входить до складу Debian 9 не запитує пароль root при установці. Після чого користувач залишається в деякій розгубленості, а що робити далі? Масла у вогонь підливає той факт, що більшість інструкцій в мережі інтернет розглядають управління MySQL суто через панель управління phpMyAdmin, і не мають навичок роботи в командному рядку користувачі виявляються в особливо безпорадному стані.

"Як встановити пароль root в MariaDB"В різних варіаціях є одним з популярних пошукових запитів, Пов'язаних з цією СУБД. Але не будемо рубати з плеча, а спочатку розберемося, що зробили розробники Debian і для чого.

Найбільшою проблемою безпеки MySQL є те, що облікові дані для доступу до БД зберігаються в конфігураційних файлах веб-додатків відкритим текстом. З урахуванням того, що багато користувачів не заморочуються і роблять власником всіх баз суперкористувача root - проблема стає досить серйозною. А якщо врахувати, що доступ до файлів веб-додатків може мати досить широке коло осіб, включаючи не тільки співробітників, але і фрілансерів - стає зовсім погано.

Тому в Debian для суперкористувача root в MariaDB передбачена аутентифікація через UNIX-сокет і реалізована вона таким чином, що необмежений доступ до MariaDB може отримати тільки суперпользовтаель системи і лише в режимі командного рядка. З точки зору безпеки це дуже правильно, тому що тепер сторонні користувачі і веб-додатки не зможуть отримати доступ з правами root, навіть якщо вони якимось чином дізналися пароль.

Все це добре, але що робити звичайному користувачеві, який поставив MariaDB на свій сервер і хоче залити на неї дамп бази сайту? Перш за все завести користувача, краще навіть не одного. Для цього піднімемо свої права в системі до root через su або sudo і виконаємо команду:

Mysql -u root

Після чого ви опинитеся в командному рядку MariaDB. Для того, щоб створити нового користувача виконаємо команду:

create user "andrey" @ "localhost" identified by "password";

У нашому прикладі ми створили користувача andrey з паролем password.

Тепер призначимо йому права. Перш за все явно заберемо права на чужі бази:

grant usage on *. * to "andrey" @ "localhost";

І віддам повні права на бази з шаблоном імені andrey_basename, такий підхід дозволить автоматично давати права всім новим баз які буде створювати користувач.

grant all privileges on `andrey \\ _%`. * to "andrey" @ "localhost";

Зверніть увагу, що шаблон обертається символами гравісу ( `), Який знаходиться на клавіші з російською літерою Е.

Залишається тільки перезавантажити привілеї і вийти з консолі MariaDB

flush privileges;
quit;

Після чого можна повернутися до звичних інструментів роботи з MySQL / MariaDB, наприклад, phpMyAdmin:


Зверніть увагу, що даний спосіб, На відміну від поширених рекомендацій "включити root в MariaDB", дозволяє зберегти підвищену безпеку системи, що важливо, якщо доступ до неї матимуть треті особи. Також ми не радимо тримати всі бази під одним користувачем, в ідеалі один сайт (чи іншу програму) - один користувач, це дозволить без зайвих витрат часу і сил змінити пароль в разі його компрометації або її потенційної можливості (скажімо ви залучали для робіт з сайтом фрілансера).

Установка MariaDB з репозиторіїв розробника

Операційна система Debian має багато переваг, одне з них, за яке його найбільше люблять - це стабільність. Налаштував і забув - це якраз про нього, але зворотним боком такого підходу є консервативність, багато пакети мають не настільки свіжі версії, Як іноді хотілося б. На даний момент разом з Debian 9 поставляється MariaDB 10.1, в той час як поточними версіями є 10.2 і 10.3.

Тому якщо вам потрібні якісь нові функції MariaDB або ви просто хочете використовувати останні стабільні версії софта, то можете встановити MariaDB безпосередньо з репозиторіїв розробника. Зробити це нескладно, але перед будь-яким потенційно небезпечним діянням слід зробити повну резервну копію вашого сервера.

Для цього виконайте в консолі сервера з правами суперкористувача наступну команду:

Mysqldump -u root --all-databases\u003e ~ / my_backup.sql

Ця команда збереже всі бази MariaDB, включаючи службові, в файл my_backup.sql в директорії / root і, якщо щось піде не так, ви завжди зможете відновити стан вашого сервера на момент створення копії.

Отримати інструкції по установці можна на спеціальній сторінці офіційного сайту.

Зроблена вона дуже зручно: ви обираєте свій дистрибутив, його випуск, версію СУБД і дзеркало - після чого отримуєте готову інструкцію для установки. Щоб заощадити вам час приведемо її тут (ми будемо встановлювати MariaDB 10.3 на Debian 9):

Apt-get install software-properties-common dirmngr
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xF1656F24C74CD1D8
add-apt-repository "deb http://mirror.mephi.ru/mariadb/repo/10.3/debian stretch main"

Щоб ви розуміли, що робите коротко прокоментуємо ці команди. Перша з них додає в систему потрібні залежності, друга встановлює ключ, яким підписані пакети і третя, нарешті, додає в систему власне сховище.

Тепер оновимо список пакетів:

Apt-get update

і встановимо нову версію MariaDB:

Apt-get install mariadb-server

Зверніть увагу, що пакетний менеджер коректно видалить попередню версію і встановить нову, всі бази даних при цьому збережуться і продовжать працювати з новою версією MariaDB.

Другий момент, при установці MariaDB від розробників інсталятор попросить у вас задати пароль root, так як в цій версії аутентифікація через UNIX-сокет не використовується.

Когось може це і порадує, але якщо ви встигли зрозуміти і оцінити всі переваги методу від розробників Debain, то виникне резонне питання: а чи можна повернути як було? Можна, можливо. Для цього відкрийте конфігураційний файл /etc/mysql/mariadb.conf.d/50-server.cnf і додайте в секцію рядок:

Plugin-load-add \u003d auth_socket.so

Перезапустити СУБД:

Service mysqld restart

Спробуємо увійти з облікового запису звичайного користувача:

Незважаючи на те, що система запитає нас пароль і ми його правильно введемо - в доступі нам буде все одно відмовлено. Повторимо спробу через phpMyAdmin:

І тут успіху у нас не буде. Відмінно! Тепер доступ з правами суперкористувача СУБД має тільки привілейований користувач системи і нам не потрібно турбуватися, що пароль root MariaDB стане відомий комусь.



Сподобалася стаття? поділіться їй