Связаться по:
vkarabedyants Telegram Viber
+7 (499) 350-10-69

Блог о системном администрировании серверов и сайтов

Установка, настройка программного обеспечения Linux, Windows операционных систем

Как включить TLS/SSL-шифрование Glusterfs

В предыдущих статьях мы уже упоминали установку кластер GlusterFS на Ubuntu Linux. Теперь поговорим о том как включить сетевое шифрование с использованием TLS / SSL для кластера хранения Glusterfs в Linux по соображениям безопасности при использовании через небезопасную сеть, такую как глобальная сеть (WAN) или Интернет? Как настроить шифрование ввода-вывода и шифрование управления с помощью Glusterfs?

Круглосуточная поддержка сервера и сайта, настройка серверов, кластеров, репликации и др., обращайтесь [email protected]

GlusterFS позволяет настроить TLS (Transport Layer Security) с использованием OpenSSL. GlusterFS имеет две опции для TLS / SSL. Во-первых, он может осуществлять шифрование связи ввода-вывода между серверами и клиентами. Второе шифрование управляющего сервера GlusterFS, то есть всякий раз, когда вы выдаете статус командной строки или создаете новые тома и так далее.

Использование SSL с Glusterfs

Файлы, необходимые для настройки сетевого шифрования в GlusterFS

Вам необходимо создать следующие файлы для TLS / SSL-шифрования для каждого узла:

  1. /etc/ssl/glusterfs.pem — Ваш сертификат. Этот файл должен быть создан на каждом узле, и вы не должны размещать его на каком-либо другом узле или любым другим сервером в кластере.
  2. /etc/ssl/glusterfs.key — Ваш личный ключ. Этот файл должен быть создан на каждом узле , и вы не должны размещать его на каком-либо другом узле или любым другим сервером в кластере.
  3. /etc/ssl/glusterfs.ca — Конкатенация всех узлов сертификата. Этот файл не является уникальным и должен быть идентичным для всех узлов и клиентов сервера.
  4. /var/lib/glusterd/secure-access — включение шифрования TLS в пути управления для каждого узла. Вам нужно создать этот файл на каждом узле с помощью команды touch.

Предположим, у вас есть четырехузловой кластер GlusterFS:

IP адрес Имя узла, используемое для TLS авторизации
192.168.2.45 Gfs01
192.168.2.46 Gfs01
192.168.2.47 Gfs01
192.168.2.48 Gfs01

Имена (CN) должны быть доступны со всех узлов, должно быть установлены с использованием либо DNS, либо файла /etc/hosts на каждом узле:
$ cat /etc/hosts

127.0.0.1 localhost 
127.0.1.1 ubuntu-box-1 
192.168.2.45 gfs01 
192.168.2.46 gfs02 
192.168.2.47 gfs03 
192.168.2.48 gfs04

 

Использование SSL с Glusterfs

Введите следующую команду на каждом узле (gfs01, gfs02, gfs03 и gfs04).

Создание личного ключа для каждого узла и клиента

$ cd /etc/ssl/ 
$ sudo openssl genrsa -out glusterfs.key 2048

Как сгенерировать подписанный сертификат для каждого узла

На узле gfs01 (обратите внимание, что общее имя (CN) должно соответствовать вашему имени хоста, как указано в DNS или /etc/hosts):

$ cd /etc/ssl/ 
$ sudo openssl req -new -x509 -key glusterfs.key -subj "/CN= gfs01 " -out glusterfs.pem

На узле gfs02 (обратите внимание, что общее имя (CN) должно соответствовать вашему имени хоста, как указано в DNS или /etc/hosts):

$ cd /etc/ssl/ 
$ sudo openssl req -new -x509 -key glusterfs.key -subj "/CN= gfs02 " -out glusterfs.pem

На узле gfs03 (обратите внимание, что общее имя (CN) должно соответствовать вашему имени хоста, как указано в DNS или /etc/hosts):

$ cd /etc/ssl/ 
$ sudo openssl req -new -x509 -key glusterfs.key -subj "/CN= gfs03 " -out glusterfs.pem

На узле gfs04 (обратите внимание, что общее имя (CN) должно соответствовать вашему имени хоста, как указано в DNS или /etc/hosts):

$ cd /etc/ssl/ 
$ sudo openssl req -new -x509 -key glusterfs.key -subj "/CN= gfs04 " -out glusterfs.pem

Для client01 и так далее:

$ cd /etc/ssl/ 
$ sudo openssl req -new -x509 -key glusterfs.key -subj "/CN= client01 " -out glusterfs.pem

Как создать сертификаты файла сертификатов (CA)

На gfs01 (выполните команду на узле gfs01) скопируйте все файлы .pem со всех других узлов, включая клиентов, следующим образом:

$ mkdir /tmp/ca/ 
$ cd /tmp/ca/ 
$ scp [email protected]:/etc/ssl/glusterfs.pem gfs02.pem 
$ scp [email protected]:/etc/ssl/glusterfs.pem gfs03.pem 
$ scp [email protected]:/etc/ssl/glusterfs.pem gfs04.pem 
## copy file from client01 too ## 
$ scp [email protected]:/etc/ssl/glusterfs.pem client01.pem

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

### this file is for all server nodes only ### 
$ cat /etc/ssl/glusterfs.pem gfs02.pem gfs03.pem gfs04.pem client01.pem > glusterfs.ca 
### this file is for all clients only ### 
$ cat /etc/ssl/glusterfs.pem gfs02.pem gfs03.pem gfs04.pem > glusterfs-client.ca

Теперь положим файл glusterfs.ca на все узлы сервера:

$ sudo cp glusterfs.ca /etc/ssl/ 
$ scp glusterfs.ca [email protected]:/etc/ssl/ 
$ scp glusterfs.ca [email protected]:/etc/ssl/ 
$ scp glusterfs.ca [email protected]:/etc/ssl/ 
### now put file on clients only ### 
$ scp glusterfs-client.ca [email protected]:/etc/ssl/glusterfs.ca 
$ rm -rf /tmp/ca/

Как включить шифрование управления на узлах сервера

Введите следующую команду на каждом узле (gfs01, gfs02, gfs03, gfs04):

$ sudo touch /var/lib/glusterd/secure-access

Перезагрузите glusterd на всех серверах:

$ systemctl restart glusterfs-server.service

Как включить шифрование управления на клиентских узлах

Предположим, что ваше имя тома — gvol0. Введите следующую команду для всех клиентов:

$ sudo touch /var/lib/glusterd/secure-access

Размонтируйте том на всех клиентах:

$ sudo umount /var/www

Смонтируйте том на всех клиентах:

$ sudo mount -t glusterfs gfs01:/gvol0 /mnt/www/

Как включить TLS/SSL I/O шифрование для тома с именем gvol0?

Сначала остановите том gvol0, чтобы включить SSL, запустите (введите все команды на узле gfs01):

$ sudo gluster volume stop gvol0 
## You need to nmount the volume on all the clients/servers (if any) ## 
## restart glusterfs-server.service on nodes such as gfs01,gfs02,gfs03,gfs04,client01 ## 
$ sudo sudo umount /var/www 
$ sudo systemctl restart glusterfs-server.service

Затем введите следующую команду, включающую имена всех серверов и клиента, которые вы хотите предоставить для доступа к тому. Синтаксис:

$ sudo gluster volume set {VOLNAME} auth.ssl-allow '{server1,server2,client1,client2,....}'

Например:

$ sudo gluster volume set gvol0 auth.ssl-allow 'gfs01,gfs02,gfs03,gfs04,client01'

В этом примере все клиенты, прошедшие проверку подлинности TLS, подключаются и получают доступ к тому:

$ sudo gluster volume set gvol0 auth.ssl-allow '*'

Включите на стороне клиента ssl для тома:

$ gluster volume set gvol0 client.ssl on

Включите сервер ssl для тома:

$ gluster volume set gvol0 server.ssl on

Запустите том, запустите:

$ sudo gluster vol start gvol0

Вам необходимо смонтировать том на всех клиентах / серверах (если есть):

$ sudo mount -t glusterfs gfs01:/gvol0 /mnt/www/

Убедитесь, что SSL включен в пути ввода-вывода для тома с именем gvol0:

$ sudo grep -i ssl /var/log/glusterfs/bricks/nodirectwritedata-brick1-gvol0.log

 

Оставить комментарий

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.