Απαιτήσεις
Βήμα 1: Εγκαταστήστε το MariaDB
Βήμα 2: Δημιουργήστε ένα πιστοποιητικό SSL και ένα ιδιωτικό κλειδί για τον διακομιστή
Βήμα 3: Διαμορφώστε τον διακομιστή MariaDB για χρήση SSL
Βήμα 4: Δημιουργήστε έναν χρήστη με δικαιώματα SSL
Βήμα 5: Δημιουργήστε το πιστοποιητικό πελάτη
Βήμα 6: Διαμορφώστε το MariaDB Client για χρήση SSL
Βήμα 7: Επαληθεύστε τις απομακρυσμένες συνδέσεις
συμπέρασμα
Το MariaDB είναι μια δωρεάν βάση δεδομένων ανοιχτού κώδικα και είναι η πιο ευρέως χρησιμοποιούμενη αντικατάσταση drop-in για την MySQL. Είναι κατασκευασμένο από τους προγραμματιστές της MySQL και προορίζεται να παραμείνει δωρεάν σύμφωνα με την GNU GPL. Είναι πολύ γρήγορο, επεκτάσιμο και έρχεται με ένα πλούσιο σύνολο χαρακτηριστικών που το καθιστούν πολύ ευέλικτο για μια μεγάλη ποικιλία περιπτώσεων χρήσης.
Αυτό το σεμινάριο θα σας καθοδηγήσει στον τρόπο εγκατάστασης και διαμόρφωσης του MariaDB με υποστήριξη SSL στο Ubuntu 16.04.
Απαιτήσεις
- Ένα νέο παράδειγμα Ubuntu 16.04 Vultr.
- Ένας χρήστης χωρίς root με δικαιώματα sudo.
- Μια στατική διεύθυνση IP 192.168.0.190 έχει ρυθμιστεί στην παρουσία διακομιστή.
- Μια στατική διεύθυνση IP 192.168.0.191 έχει ρυθμιστεί στο μηχάνημα-πελάτη.
Βήμα 1: Εγκαταστήστε το MariaDB
Από προεπιλογή, η τελευταία έκδοση του MariaDB δεν είναι διαθέσιμη στο αποθετήριο του Ubuntu 16.04. οπότε θα χρειαστεί να προσθέσετε το αποθετήριο MariaDB στο σύστημά σας.
Πρώτα, κατεβάστε το κλειδί με την ακόλουθη εντολή:
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
Στη συνέχεια, προσθέστε το αποθετήριο MariaDB στο /etc/apt/sources.listαρχείο:
sudo echo "deb [arch=amd64,i386,ppc64el] http://ftp.utexas.edu/mariadb/repo/10.1/ubuntu xenial main" >> /etc/apt/sources.list
Ενημερώστε το ευρετήριο apt με την ακόλουθη εντολή:
sudo apt-get update -y
Μόλις ενημερωθεί το apt index, εγκαταστήστε τον διακομιστή MariaDB με την ακόλουθη εντολή:
sudo apt-get install mariadb-server -y
Ξεκινήστε τον διακομιστή MariaDB και ενεργοποιήστε τον να ξεκινήσει κατά την εκκίνηση:
sudo systemctl start mysql
sudo systemctl enable mysql
Στη συνέχεια, θα χρειαστεί να εκτελέσετε mysql_secure_installationσενάριο για να ασφαλίσετε την εγκατάσταση του MariaDB. Αυτό το σενάριο σάς επιτρέπει να ορίσετε τον κωδικό πρόσβασης root, να αφαιρέσετε ανώνυμους χρήστες, να απαγορεύσετε την απομακρυσμένη σύνδεση root και να αφαιρέσετε τη δοκιμαστική βάση δεδομένων:
sudo mysql_secure_installation
Βήμα 2: Δημιουργήστε ένα πιστοποιητικό SSL και ένα ιδιωτικό κλειδί για τον διακομιστή
Αρχικά, δημιουργήστε έναν κατάλογο για να αποθηκεύσετε όλα τα αρχεία κλειδιών και πιστοποιητικών.
sudo mkdir /etc/mysql-ssl
Στη συνέχεια, αλλάξτε τον κατάλογο σε /etc/mysql-sslκαι δημιουργήστε το πιστοποιητικό CA και το ιδιωτικό κλειδί με την ακόλουθη εντολή:
sudo cd /etc/mysql-ssl
sudo openssl genrsa 2048 > ca-key.pem
sudo openssl req -new -x509 -nodes -days 365000 -key ca-key.pem -out ca-cert.pem
Απαντήστε σε όλες τις ερωτήσεις όπως φαίνεται παρακάτω:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:IN
State or Province Name (full name) [Some-State]:GUJ
Locality Name (eg, city) []:JND
Organization Name (eg, company) [Internet Widgits Pty Ltd]:ENJ
Organizational Unit Name (eg, section) []:SYSTEM
Common Name (e.g. server FQDN or YOUR name) []:HITESH
Email Address []:example@example.com
Στη συνέχεια, δημιουργήστε ένα ιδιωτικό κλειδί για τον διακομιστή με την ακόλουθη εντολή:
sudo openssl req -newkey rsa:2048 -days 365 -nodes -keyout server-key.pem -out server-req.pem
Απαντήστε σε όλες τις ερωτήσεις όπως κάνατε στην προηγούμενη εντολή.
Στη συνέχεια, εξάγετε το ιδιωτικό κλειδί του διακομιστή σε ένα κλειδί τύπου RSA με την ακόλουθη εντολή:
sudo sudo openssl rsa -in server-key.pem -out server-key.pem
Τέλος, δημιουργήστε ένα πιστοποιητικό διακομιστή χρησιμοποιώντας το πιστοποιητικό CA ως εξής:
sudo openssl x509 -req -in server-req.pem -days 365 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem
Τώρα μπορείτε να δείτε όλα τα πιστοποιητικά και το κλειδί με την ακόλουθη εντολή:
ls
Θα πρέπει να δείτε την ακόλουθη έξοδο:
ca-cert.pem ca-key.pem server-cert.pem server-key.pem server-req.pem
Μόλις τελειώσετε, μπορείτε να προχωρήσετε στο επόμενο βήμα.
Θα πρέπει να έχετε όλα τα πιστοποιητικά και ένα ιδιωτικό κλειδί. και τώρα θα πρέπει να διαμορφώσετε το MariaDB για να χρησιμοποιήσετε το κλειδί και τα πιστοποιητικά. Μπορείτε να το κάνετε αυτό επεξεργάζοντας το /etc/mysql/mariadb.conf.d/50-server.cnfαρχείο:
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
Προσθέστε τις ακόλουθες γραμμές κάτω από την [mysqld]ενότητα:
ssl-ca=/etc/mysql-ssl/ca-cert.pem
ssl-cert=/etc/mysql-ssl/server-cert.pem
ssl-key=/etc/mysql-ssl/server-key.pem
##Change this value to connect the MariaDB server from another host.
bind-address = *
Αποθηκεύστε το αρχείο και, στη συνέχεια, επανεκκινήστε την υπηρεσία MariaDB για να εφαρμόσετε αυτές τις αλλαγές:
sudo systemctl restart mysql
Τώρα, μπορείτε να ελέγξετε εάν η διαμόρφωση SSL λειτουργεί ή όχι με το ακόλουθο ερώτημα:
mysql -u root -p
MariaDB [(none)]> SHOW VARIABLES LIKE '%ssl%';
Εάν η διαμόρφωση ήταν επιτυχής, θα πρέπει να δείτε την ακόλουθη έξοδο:
+---------------+--------------------------------+
| Variable_name | Value |
+---------------+--------------------------------+
| have_openssl | YES |
| have_ssl | YES |
| ssl_ca | /etc/mysql-ssl/ca-cert.pem |
| ssl_capath | |
| ssl_cert | /etc/mysql-ssl/server-cert.pem |
| ssl_cipher | |
| ssl_crl | |
| ssl_crlpath | |
| ssl_key | /etc/mysql-ssl/server-key.pem |
+---------------+--------------------------------+
Θα πρέπει να παρατηρήσετε ότι οι τιμές have_sslκαι have_opensslείναι ενεργοποιημένες στην παραπάνω έξοδο.
Βήμα 4: Δημιουργήστε έναν χρήστη με δικαιώματα SSL
Δημιουργήστε έναν απομακρυσμένο χρήστη που έχει το δικαίωμα πρόσβασης στον διακομιστή MariaDB μέσω SSL. Κάντε αυτό εκτελώντας την ακόλουθη εντολή:
Πρώτα, συνδεθείτε στο κέλυφος MySQL:
mysql -u root -p
Στη συνέχεια, δημιουργήστε χρήστη remoteκαι παραχωρήστε το δικαίωμα πρόσβασης στον διακομιστή μέσω SSL.
MariaDB [(none)]>GRANT ALL PRIVILEGES ON *.* TO 'remote'@'192.168.0.191' IDENTIFIED BY 'password' REQUIRE SSL;
Στη συνέχεια, ξεπλύνετε τα δικαιώματα με την ακόλουθη εντολή:
MariaDB [(none)]>FLUSH PRIVILEGES;
Τέλος, βγείτε από το κέλυφος της MySQL με την ακόλουθη εντολή:
MariaDB [(none)]>exit;
Σημείωση: Το 192.168.0.191 είναι η διεύθυνση IP του μηχανήματος απομακρυσμένου χρήστη (Πελάτης).
Ο διακομιστής σας είναι πλέον έτοιμος να επιτρέψει συνδέσεις σε απομακρυσμένο χρήστη.
Βήμα 5: Δημιουργήστε το πιστοποιητικό πελάτη
Η διαμόρφωση της πλευράς του διακομιστή σας έχει ολοκληρωθεί. Στη συνέχεια, θα χρειαστεί να δημιουργήσετε ένα νέο κλειδί και ένα νέο πιστοποιητικό για τον πελάτη.
Στον υπολογιστή διακομιστή, δημιουργήστε το κλειδί πελάτη με την ακόλουθη εντολή:
sudo cd /etc/mysql-ssl
sudo sudo openssl req -newkey rsa:2048 -days 365 -nodes -keyout client-key.pem -out client-req.pem
Στη συνέχεια, επεξεργαστείτε το κλειδί RSA πελάτη με την ακόλουθη εντολή:
sudo openssl rsa -in client-key.pem -out client-key.pem
Τέλος, υπογράψτε το πιστοποιητικό πελάτη με την ακόλουθη εντολή:
sudo openssl x509 -req -in client-req.pem -days 365 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem
Όλα τα πιστοποιητικά και το κλειδί είναι έτοιμα για τον πελάτη. Στη συνέχεια, θα χρειαστεί να αντιγράψετε όλα τα πιστοποιητικά πελάτη σε οποιοδήποτε υπολογιστή-πελάτη όπου θέλετε να εκτελέσετε το πρόγραμμα-πελάτη MariaDB.
Θα χρειαστεί να εγκαταστήσετε τον υπολογιστή-πελάτη MariaDB στον υπολογιστή-πελάτη.
Πρώτα, στον υπολογιστή-πελάτη, κατεβάστε το κλειδί για το MariaDB με την ακόλουθη εντολή:
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
Στη συνέχεια, προσθέστε το αποθετήριο MariaDB στο /etc/apt/sources.listαρχείο:
sudo echo "deb [arch=amd64,i386,ppc64el] http://ftp.utexas.edu/mariadb/repo/10.1/ubuntu xenial main" >> /etc/apt/sources.list
Στη συνέχεια, ενημερώστε το ευρετήριο apt με την ακόλουθη εντολή:
sudo apt-get update -y
Μόλις ενημερωθεί το ευρετήριο apt, εγκαταστήστε το πρόγραμμα-πελάτη MariaDB στον υπολογιστή-πελάτη με την ακόλουθη εντολή:
sudo apt-get install mariadb-client -y
Τώρα δημιουργήστε έναν κατάλογο για να αποθηκεύσετε όλα τα πιστοποιητικά:
sudo mkdir /etc/mysql-ssl
Στη συνέχεια, αντιγράψτε όλα τα πιστοποιητικά πελάτη από το μηχάνημα διακομιστή στον υπολογιστή-πελάτη με την ακόλουθη εντολή:
sudo scp root@192.168.0.190:/etc/mysql-ssl/client-* /etc/mysql-ssl/
Στη συνέχεια, θα χρειαστεί να διαμορφώσετε τον πελάτη MariaDB ώστε να χρησιμοποιεί SSL. Μπορείτε να το κάνετε αυτό δημιουργώντας ένα /etc/mysql/mariadb.conf.d/50-mysql-clients.cnfαρχείο:
sudo nano /etc/mysql/mariadb.conf.d/50-mysql-clients.cnf
Προσθέστε τις ακόλουθες γραμμές:
[client]
ssl-ca=/etc/mysql-ssl/ca-cert.pem
ssl-cert=/etc/mysql-ssl/client-cert.pem
ssl-key=/etc/mysql-ssl/client-key.pem
Αποθηκεύστε το αρχείο όταν τελειώσετε.
Βήμα 7: Επαληθεύστε τις απομακρυσμένες συνδέσεις
Τώρα που όλα έχουν ρυθμιστεί, ήρθε η ώρα να επαληθεύσετε εάν μπορείτε να συνδεθείτε με τον διακομιστή MariaDB με επιτυχία ή όχι.
Στον υπολογιστή-πελάτη, εκτελέστε την ακόλουθη εντολή για να συνδεθείτε στον διακομιστή MariaDB:
mysql -u remote -h 192.168.0.190 -p mysql
Θα σας ζητηθεί να εισαγάγετε τον remoteκωδικό πρόσβασης χρήστη. Αφού δώσετε τον κωδικό πρόσβασης, θα συνδεθείτε στον απομακρυσμένο διακομιστή MariaDB.
Ελέγξτε την κατάσταση της σύνδεσης με την ακόλουθη εντολή:
MariaDB [mysql]> status
Θα πρέπει να δείτε την ακόλουθη έξοδο:
--------------
mysql Ver 15.1 Distrib 10.2.7-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
Connection id: 62
Current database: mysql
Current user: remote@192.168.0.191
SSL: Cipher in use is DHE-RSA-AES256-SHA
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server: MariaDB
Server version: 10.0.31-MariaDB-0ubuntu0.16.04.2 Ubuntu 16.04
Protocol version: 10
Connection: 192.168.0.190 via TCP/IP
Server characterset: utf8mb4
Db characterset: utf8mb4
Client characterset: utf8
Conn. characterset: utf8
TCP port: 3306
Uptime: 1 hours 31 min 31 sec
Θα πρέπει να δείτε SSL: Cipher in use is DHE-RSA-AES256-SHAστην παραπάνω έξοδο. Αυτό σημαίνει ότι η σύνδεσή σας είναι πλέον ασφαλής με SSL.
συμπέρασμα
Συγχαρητήρια! Έχετε διαμορφώσει με επιτυχία έναν διακομιστή MariaDB με υποστήριξη SSL. Τώρα μπορείτε να παραχωρήσετε πρόσβαση σε άλλους πελάτες για πρόσβαση στον διακομιστή MariaDB μέσω SSL.