Как включить TLS/SSL-шифрование Glusterfs
В предыдущих статьях мы уже упоминали установку кластер GlusterFS на Ubuntu Linux. Теперь поговорим о том как включить сетевое шифрование с использованием TLS / SSL для кластера хранения Glusterfs в Linux по соображениям безопасности при использовании через небезопасную сеть, такую как глобальная сеть (WAN) или Интернет? Как настроить шифрование ввода-вывода и шифрование управления с помощью Glusterfs?
Круглосуточная поддержка сервера и сайта, настройка серверов, кластеров, репликации и др., обращайтесь [email protected]
GlusterFS позволяет настроить TLS (Transport Layer Security) с использованием OpenSSL. GlusterFS имеет две опции для TLS / SSL. Во-первых, он может осуществлять шифрование связи ввода-вывода между серверами и клиентами. Второе шифрование управляющего сервера GlusterFS, то есть всякий раз, когда вы выдаете статус командной строки или создаете новые тома и так далее.
Файлы, необходимые для настройки сетевого шифрования в GlusterFS
Вам необходимо создать следующие файлы для TLS / SSL-шифрования для каждого узла:
- /etc/ssl/glusterfs.pem — Ваш сертификат. Этот файл должен быть создан на каждом узле, и вы не должны размещать его на каком-либо другом узле или любым другим сервером в кластере.
- /etc/ssl/glusterfs.key — Ваш личный ключ. Этот файл должен быть создан на каждом узле , и вы не должны размещать его на каком-либо другом узле или любым другим сервером в кластере.
- /etc/ssl/glusterfs.ca — Конкатенация всех узлов сертификата. Этот файл не является уникальным и должен быть идентичным для всех узлов и клиентов сервера.
- /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
1 2 3 4 5 6 |
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).
Создание личного ключа для каждого узла и клиента
1 2 |
$ cd /etc/ssl/ $ sudo openssl genrsa -out glusterfs.key 2048 |
Как сгенерировать подписанный сертификат для каждого узла
На узле gfs01 (обратите внимание, что общее имя (CN) должно соответствовать вашему имени хоста, как указано в DNS или /etc/hosts):
1 2 |
$ cd /etc/ssl/ $ sudo openssl req -new -x509 -key glusterfs.key -subj "/CN= gfs01 " -out glusterfs.pem |
На узле gfs02 (обратите внимание, что общее имя (CN) должно соответствовать вашему имени хоста, как указано в DNS или /etc/hosts):
1 2 |
$ cd /etc/ssl/ $ sudo openssl req -new -x509 -key glusterfs.key -subj "/CN= gfs02 " -out glusterfs.pem |
На узле gfs03 (обратите внимание, что общее имя (CN) должно соответствовать вашему имени хоста, как указано в DNS или /etc/hosts):
1 2 |
$ cd /etc/ssl/ $ sudo openssl req -new -x509 -key glusterfs.key -subj "/CN= gfs03 " -out glusterfs.pem |
На узле gfs04 (обратите внимание, что общее имя (CN) должно соответствовать вашему имени хоста, как указано в DNS или /etc/hosts):
1 2 |
$ cd /etc/ssl/ $ sudo openssl req -new -x509 -key glusterfs.key -subj "/CN= gfs04 " -out glusterfs.pem |
Для client01 и так далее:
1 2 |
$ cd /etc/ssl/ $ sudo openssl req -new -x509 -key glusterfs.key -subj "/CN= client01 " -out glusterfs.pem |
Как создать сертификаты файла сертификатов (CA)
На gfs01 (выполните команду на узле gfs01) скопируйте все файлы .pem со всех других узлов, включая клиентов, следующим образом:
1 2 3 4 5 6 7 |
$ mkdir /tmp/ca/ $ cd /tmp/ca/ $ scp root@gfs02:/etc/ssl/glusterfs.pem gfs02.pem $ scp root@gfs03:/etc/ssl/glusterfs.pem gfs03.pem $ scp root@gfs04:/etc/ssl/glusterfs.pem gfs04.pem ## copy file from client01 too ## $ scp root@client01:/etc/ssl/glusterfs.pem client01.pem |
Введите следующую команду, чтобы объединить собранные файлы в один файл:
1 2 3 4 |
### 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 на все узлы сервера:
1 2 3 4 5 6 7 |
$ sudo cp glusterfs.ca /etc/ssl/ $ scp glusterfs.ca root@gfs02:/etc/ssl/ $ scp glusterfs.ca root@gfs03:/etc/ssl/ $ scp glusterfs.ca root@gfs04:/etc/ssl/ ### now put file on clients only ### $ scp glusterfs-client.ca root@client01:/etc/ssl/glusterfs.ca $ rm -rf /tmp/ca/ |
Как включить шифрование управления на узлах сервера
Введите следующую команду на каждом узле (gfs01, gfs02, gfs03, gfs04):
1 |
$ sudo touch /var/lib/glusterd/secure-access |
Перезагрузите glusterd на всех серверах:
1 |
$ systemctl restart glusterfs-server.service |
Как включить шифрование управления на клиентских узлах
Предположим, что ваше имя тома — gvol0. Введите следующую команду для всех клиентов:
1 |
$ sudo touch /var/lib/glusterd/secure-access |
Размонтируйте том на всех клиентах:
1 |
$ sudo umount /var/www |
Смонтируйте том на всех клиентах:
1 |
$ sudo mount -t glusterfs gfs01:/gvol0 /mnt/www/ |
Как включить TLS/SSL I/O шифрование для тома с именем gvol0?
Сначала остановите том gvol0, чтобы включить SSL, запустите (введите все команды на узле gfs01):
1 2 3 4 5 |
$ 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 |
Затем введите следующую команду, включающую имена всех серверов и клиента, которые вы хотите предоставить для доступа к тому. Синтаксис:
1 |
$ sudo gluster volume set {VOLNAME} auth.ssl-allow '{server1,server2,client1,client2,....}' |
Например:
1 |
$ sudo gluster volume set gvol0 auth.ssl-allow 'gfs01,gfs02,gfs03,gfs04,client01' |
В этом примере все клиенты, прошедшие проверку подлинности TLS, подключаются и получают доступ к тому:
1 |
$ sudo gluster volume set gvol0 auth.ssl-allow '*' |
Включите на стороне клиента ssl для тома:
1 |
$ gluster volume set gvol0 client.ssl on |
Включите сервер ssl для тома:
1 |
$ gluster volume set gvol0 server.ssl on |
Запустите том, запустите:
1 |
$ sudo gluster vol start gvol0 |
Вам необходимо смонтировать том на всех клиентах / серверах (если есть):
1 |
$ sudo mount -t glusterfs gfs01:/gvol0 /mnt/www/ |
Убедитесь, что SSL включен в пути ввода-вывода для тома с именем gvol0:
1 |
$ sudo grep -i ssl /var/log/glusterfs/bricks/nodirectwritedata-brick1-gvol0.log |