meta data for this page
  •  

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
mariadb_zertifikatbasiertes_anmeldesystem [30.01.2016 07:01] – created 192.168.126.108mariadb_zertifikatbasiertes_anmeldesystem [Unknown date] (current) – removed - external edit (Unknown date) 127.0.0.1
Line 1: Line 1:
-====== MariaDB zertifikatbasiertes Anmeldesystem ====== 
  
- 
-Das ab 2016 eingeführte Anmeldesystem an die KSDB basiert auf einer Benutzerauthorisierung durch Client-Zertifikate. Diese Zertifikate werden auf dem Server erstellt und in die ''HOME''-Verzeichnisse der Benutzer kopiert. 
- 
-Die Benutzer werden in der Datenbank angelegt als ''<user>@192.168.7.%'', sodass sie sich nur noch anmelden können, wenn sie sich im Hausnetz befinden, was die Sicherheit erhöht. 
- 
-Der Prozess gliedert sich nun in die Blöcke 
-  * Server-Zertifikate erstellen 
-  * Client-Zertifikate erstellen und Benutzer anlegen 
-  * Anmeldeverfahren anpassen 
- 
-==== Server-Zertifikate erstellen ==== 
-Auf dem Server benötigen wir zwei Zertifikate. Das erste ist ein sogenanntes **CA-Zertifikat** und bildet die Authorisierungs-Instanz. 
-  
- 
-    * Issuer-Zertifikat und Server-Zertifikat erstellen 
-<code> 
- cd /etc/mysql 
- [ -e certs ] && rm -Rf certs 
- mkdir certs 
- cd certs 
- openssl genrsa 2048 > ca-key.pem 
- openssl req -new -x509 -nodes -sha256 -days 3600 -key ca-key.pem -out ca-cert.pem -subj '/C=CH/ST=Zug/L=Zug/O=Kraemer, Schwab & Co. AG Investment Management/CN=ksco' 
-  
- openssl req -newkey rsa:2048 -days 3600 \ 
-         -nodes -keyout server-key.pem -out server-req.pem  -subj '/C=CH/ST=Zuerich/L=Volketswil/O=Haas AG/OU=haasdb/CN=haasdb' 
- openssl rsa -in server-key.pem -out server-key.pem 
- openssl x509 -req -in server-req.pem -days 3600 \ 
-         -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem 
-   
- Die ca-cert.pem ist für die Clients bestimmt und wird nach /volume1/transfer/Software/haasadmin kopiert: 
- cp ca-cert.pem /volume1/transfer/Software/haasadmin/ 
-  
- Ebenso wichtig ist es nun, die Zertifikate in die ''/var/packages/MariaDB/etc/mysql/my.cnf'' einzutragen, mit folgenden Zeilen: 
-ssl 
-ssl-ca = /etc/mysql/certs/ca-cert.pem 
-ssl-cert = /etc/mysql/certs/server-cert.pem 
-ssl-key = /etc/mysql/certs/server-key.pem 
-</code> 
-    * Anschliessend unbedingt mysql neu starten: 
-<code> 
-/usr/share/mysql/mysql.server restart 
-</code> 
-    * Nun werden die Zertifikate für alle Datenbank-User erstellt. Dazu verwenden wir die Tabelle personal als Referenz: 
-<code> 
-echo "#!/bin/sh" >/var/tmp/userlist.tmp 
-mysql -Nsr -uroot -p -Dhaas >>/var/tmp/userlist.tmp <<EOF 
-SELECT CONCAT( 
-'# ****** ', login_user, '\n', 
-'[ -e /volume1/homes/', login_user, '/haasdb ] && rm -Rf /volume1/homes/', login_user, '/haasdb\n', 
-'mkdir /volume1/homes/', login_user, '/haasdb\n', 
-'openssl req -newkey rsa:2048 -days 3600 -nodes -keyout /volume1/homes/',  
-login_user,  
-'/haasdb/key.pem -out /volume1/homes/',  
-login_user,  
-'/haasdb/req.pem -subj \'/C=CH/ST=Zuerich/L=Volketswil/O=Haas AG Print Finishing Systems & Solutions/OU=',  
-REPLACE(IFNULL(text_1, login_user), 'ü', 'ue'),  
-'/CN=', login_user, '\'\n', 
-'openssl rsa -in /volume1/homes/',  
-login_user,  
-'/haasdb/key.pem -out /volume1/homes/',  
-login_user,  
-'/haasdb/key.pem\n', 
-'openssl x509 -req -in /volume1/homes/',  
-login_user,  
-'/haasdb/req.pem -days 3600 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out /volume1/homes/',  
-login_user,  
-'/haasdb/cert.pem\n', 
-'chown -R ', login_user, ':users /volume1/homes/', login_user, '/haasdb') \ 
-FROM personal p join mysql.user u on u.user = p.login_user and u.host = '192.168.1.%' WHERE p.inaktiv = 0 AND p.gruppe_jn = 0 and p.login_user = 'lager'; 
-EOF 
- 
-chmod u+x /var/tmp/userlist.tmp 
-/var/tmp/userlist.tmp 
-rm /var/tmp/userlist.tmp 
-</code> 
-    * Nun werden die Benutzer umgestellt. Bisher meldete sich xyz mit einem Password pw_xyz an. Neu darf er sich, sofern er aus dem internen Netz kommt und SSL-zertifiziert ist, ohne Passwort anmelden. Kommt er jedoch von aussen, dann soll er sich mit dem bisherigen Passwort anmelden. Ohne SSL-Zertifikat darf er sich hingegen gar nie mehr anmelden. 
-    * Dazu müssen zuerst die Benutzer von % auf 192.168.1.% umgestellt werden mit 
-<code> 
-mysql -uroot -p -e"update mysql.user set host = '192.168.1.%' where host = '%'; 
-mysql -Nsr -uroot -p -Dhaas >/var/tmp/userlist.tmp <<EOF 
- SELECT CONCAT( 
- 'GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE ON haas.* TO \'',  
- login_user,  
- '\'@\'%\' REQUIRE Subject \'/C=CH/ST=Zuerich/L=Volketswil/O=Haas AG Print Finishing Systems & Solutions/OU=',  
- IFNULL(text_1, login_user),  
- '/CN=', login_user, '\' AND ISSUER \'/C=CH/ST=Zuerich/L=Volketswil/O=Haas AG/CN=haas\';\n', 
- 'set password for \'', login_user, '\'@\'%\' = \'', password, '\';\n', 
- 'GRANT USAGE ON haas.* TO \'',  
- login_user,  
- '\'@\'192.168.1.%\' REQUIRE Subject \'/C=CH/ST=Zuerich/L=Volketswil/O=Haas AG Print Finishing Systems & Solutions/OU=',  
- REPLACE(IFNULL(text_1, login_user), 'ü', 'ue'),  
- '/CN=', login_user, '\' AND ISSUER \'/C=CH/ST=Zuerich/L=Volketswil/O=Haas AG/CN=haas\';\n', 
- 'set password for \'', login_user, '\'@\'192.168.1.%\' = \'\';\n') \ 
- FROM personal p join mysql.user u on u.user = p.login_user and u.host = '192.168.1.%' WHERE p.inaktiv = 0 AND p.gruppe_jn = 0; 
-EOF 
- 
-mysql -uroot -p </var/tmp/userlist.tmp 
- 
-rm /var/tmp/userlist.tmp 
-</code>