В предыдущих статьях мы уже упоминали установку кластер GlusterFS на Ubuntu Linux. Теперь поговорим о том как включить сетевое шифрование с использованием TLS / SSL для кластера хранения Glusterfs в Linux по соображениям безопасности при использовании через небезопасную сеть, такую как глобальная сеть (WAN) или Интернет? Как настроить шифрование ввода-вывода и шифрование управления с помощью Glusterfs?n
Круглосуточная поддержка сервера и сайта, настройка серверов, кластеров, репликации и др., обращайтесь [email protected]
GlusterFS позволяет настроить TLS (Transport Layer Security) с использованием OpenSSL. GlusterFS имеет две опции для TLS / SSL. Во-первых, он может осуществлять шифрование связи ввода-вывода между серверами и клиентами. Второе шифрование управляющего сервера GlusterFS, то есть всякий раз, когда вы выдаете статус командной строки или создаете новые тома и так далее.nnn
Файлы, необходимые для настройки сетевого шифрования в GlusterFS
Вам необходимо создать следующие файлы для TLS / SSL-шифрования для каждого узла:n
- n
- /etc/ssl/glusterfs.pem — Ваш сертификат. Этот файл должен быть создан на каждом узле, и вы не должны размещать его на каком-либо другом узле или любым другим сервером в кластере.
- /etc/ssl/glusterfs.key — Ваш личный ключ. Этот файл должен быть создан на каждом узле , и вы не должны размещать его на каком-либо другом узле или любым другим сервером в кластере.
- /etc/ssl/glusterfs.ca — Конкатенация всех узлов сертификата. Этот файл не является уникальным и должен быть идентичным для всех узлов и клиентов сервера.
- /var/lib/glusterd/secure-access — включение шифрования TLS в пути управления для каждого узла. Вам нужно создать этот файл на каждом узле с помощью команды touch.
nПредположим, у вас есть четырехузловой кластер GlusterFS: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/hostsn
n
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