Rate this post

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

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

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

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

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

    n

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

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

n

n

n

n

n

n

n

n

n

n

n

n

n

n

n

n

n

n

n

n

n

n

n

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

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

127.0.0.1 localhost n127.0.1.1 ubuntu-box-1 n192.168.2.45 gfs01 n192.168.2.46 gfs02 n192.168.2.47 gfs03 n192.168.2.48 gfs04

 n

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

$ mkdir /tmp/ca/ n$ cd /tmp/ca/ n$ scp root@gfs02:/etc/ssl/glusterfs.pem gfs02.pem n$ scp root@gfs03:/etc/ssl/glusterfs.pem gfs03.pem n$ scp root@gfs04:/etc/ssl/glusterfs.pem gfs04.pem n## copy file from client01 too ## n$ scp root@client01:/etc/ssl/glusterfs.pem client01.pem

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

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

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

$ sudo cp glusterfs.ca /etc/ssl/ n$ scp glusterfs.ca root@gfs02:/etc/ssl/ n$ scp glusterfs.ca root@gfs03:/etc/ssl/ n$ scp glusterfs.ca root@gfs04:/etc/ssl/ n### now put file on clients only ### n$ scp glusterfs-client.ca root@client01:/etc/ssl/glusterfs.ca n$ rm -rf /tmp/ca/

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

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

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

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

$ systemctl restart glusterfs-server.service

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

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

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

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

$ sudo umount /var/www

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

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

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

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

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

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

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

Например:n

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

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

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

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

$ gluster volume set gvol0 client.ssl on

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

$ gluster volume set gvol0 server.ssl on

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

$ sudo gluster vol start gvol0

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

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

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

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