Size: 1850
Comment:
|
Size: 3538
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 39: | Line 39: |
When this file exists the glusterfs server will use the new certificates | === Servers === When this file exists the glusterfs server will use the new certificates. |
Line 41: | Line 43: |
touch /var/lib/glusterd/secure-access }}} === Client === On the client you need to create the `/var/lib/glusterd` directory before activating encryption {{{ mkdir /var/lib/glusterd/ |
|
Line 52: | Line 61: |
We allow only access from known hosts | We allow only access from known hosts. Run this on one of the servers. |
Line 56: | Line 65: |
== Mounting == On the client we have to add the `option transport.socket.ssl-enabled on` to the volume mount file The file will now look like this {{{ volume remote1 type protocol/client option transport-type tcp option remote-host gluster01 option remote-subvolume /srv/www/brick option transport.socket.ssl-enabled on end-volume volume remote2 type protocol/client option transport-type tcp option remote-host gluster02 option remote-subvolume /srv/www/brick option transport.socket.ssl-enabled on end-volume volume remote3 type protocol/client option transport-type tcp option remote-host gluster03 option remote-subvolume /srv/www/brick option transport.socket.ssl-enabled on end-volume volume remote4 type protocol/client option transport-type tcp option remote-host gluster04 option remote-subvolume /srv/www/brick option transport.socket.ssl-enabled on end-volume volume replicate type cluster/replicate subvolumes remote1 remote2 remote3 remote4 end-volume volume writebehind type performance/write-behind option window-size 1MB subvolumes replicate end-volume volume cache type performance/io-cache option cache-size 512MB subvolumes writebehind end-volume }}} |
GlusterFS Encryption
The default GlusterFS setup does not encrypt its communication. Use the method below enable encryption.
Keys and Certificates
Make an encryption key and make sure to set the CN to match the name of the client/server. Repeat this on all the servers and the client.
Servers
cd /etc/ssl openssl genrsa -out glusterfs.key 2048 openssl req -new -x509 -key glusterfs.key -subj "/CN=gluster01" -out glusterfs.pem
Client
cd /etc/ssl openssl genrsa -out glusterfs.key 2048 openssl req -new -x509 -key glusterfs.key -subj "/CN=glusterclient01" -out glusterfs.pem
Certificate Authorities
Servers
Compile all the certificates in one place and concatenate them into /etc/ssl/glusterfs.ca. Notice that this will also include the certificates from the client.
cat gluster01.pem gluster02.pem gluster03.pem gluster04.pem glusterclient01.pem > glusterfs.ca
Copy the certificate authority to all the servers and place it in /etc/ssl/glusterfs.ca
Client
Compile all the server certificates in one place and concatenate them into /etc/ssl/glusterfs-client.ca.
cat gluster01.pem gluster02.pem gluster03.pem gluster04.pem > glusterfs-client.ca
Copy the certificate authority to the client and place it in /etc/ssl/glusterfs.ca
Activate Encryption
Servers
When this file exists the glusterfs server will use the new certificates.
touch /var/lib/glusterd/secure-access
Client
On the client you need to create the /var/lib/glusterd directory before activating encryption
mkdir /var/lib/glusterd/ touch /var/lib/glusterd/secure-access
Enable Encryption
On one of the servers encryption is enabled
gluster volume set www client.ssl on gluster volume set www server.ssl on
Allow Only Specific Hosts
We allow only access from known hosts. Run this on one of the servers.
gluster volume set www auth.ssl-allow 'gluster01,gluster02,gluster03,gluster04,glusterclient01'
Mounting
On the client we have to add the option transport.socket.ssl-enabled on to the volume mount file
The file will now look like this
volume remote1 type protocol/client option transport-type tcp option remote-host gluster01 option remote-subvolume /srv/www/brick option transport.socket.ssl-enabled on end-volume volume remote2 type protocol/client option transport-type tcp option remote-host gluster02 option remote-subvolume /srv/www/brick option transport.socket.ssl-enabled on end-volume volume remote3 type protocol/client option transport-type tcp option remote-host gluster03 option remote-subvolume /srv/www/brick option transport.socket.ssl-enabled on end-volume volume remote4 type protocol/client option transport-type tcp option remote-host gluster04 option remote-subvolume /srv/www/brick option transport.socket.ssl-enabled on end-volume volume replicate type cluster/replicate subvolumes remote1 remote2 remote3 remote4 end-volume volume writebehind type performance/write-behind option window-size 1MB subvolumes replicate end-volume volume cache type performance/io-cache option cache-size 512MB subvolumes writebehind end-volume