Brukertillatelser i CMS

(Edit this document) (Create subordinate document)

Det er et krav at CMS skal skille mellom brukere som kun skal lese dokumenter, og de som skal kunne redigere, opprette og slette dokumenter, samt laste opp bilder.

To metoder for slik tillitshåndtering er undersøkt og testet: IP-adresser og Nøkkelsertifikater.

IP-adresser

Klienter med IP-adresser fra bestemt subnett gis redigeringstillatelser. Dette er brukere i bestemte lokalnett (kanskje CMS-tjenerens eget) som kan ha høyere tillit enn resten av verden, som da kun får lesetillatelse.

Dette er en enkel løsning som drar nytte av at IP-adresser bak en brannvegg hører til et såkalt non-connected adresserom, f.eks. 192.168.x.x/16. Slike adresser forekommer ikke på internet, og det finnes ingen rutinginformasjon om dem. Dersom en inntrenger skulle endre sin IP-adresse til dette adresserommet er det altså ingen rutinginformasjon i nettet for å sende et svar tilbake til inntrengeren.

Brukere utenfor brannveggen som trenger redigeringstillatelse kan kople seg til via et VPN, fordi et VPN kan gis indre IP-adresser fra et non-connected område.

I sin nåværende utforming bruker CMS denne metoden.

Nøkkelsertifikater

Denne mekanismen er basert på SSL-protokoll med tosidig autentisering og sertifikater. Følgende regler gjelder:

Brukere som ikke gjennomfører SSL klientautentisering gis leseadgang. Kun brukere med gyldig nøkkelpar og sertifikat gis redigeringstillatelse.

Autoriserte brukere tildeles et sett av nøkler og sertifikater som installeres i web-leseren. Sertifikatet er personlig tildelt en bruker og knytter brukernavnet til endringer av dokumenter i CMS.

Skall-script for å lage CA- og Tjener-sertifikater:

#!/bin/bash
# Lag ca-nøkkel
pki --gen > ca_key.der
# Lag et selvsignert ca-certifikat
pki --self --ca --in ca_key.der --digest sha256 --san ca.cisk.mil.no --dn "C=NO, O=MIL, OU=CISK, CN=CA" > ca_cert.der
# Lag nøkkel for web-tjeneren
pki --gen > server_key.der
# Ta ut public key av nøkkelparet
pki --pub --in server_key.der > server_pub.der
# CA sertifiserer serverens nøkkel
pki --issue --in server_pub.der --digest sha256 --cacert ca_cert.der --cakey ca_key.der
    --dn "C=NO, O=MIL, OU=CISK, CN=CMS" --san cms.cisk.mil.no 
    --flag serverAuth > server_cert.der

# Lag en PEM-fil med nøkkel og sertifikat
openssl x509 -in ca_cert.der -out ca_cert.pem -inform DER -outform PEM
openssl x509 -in server_cert.der -out server_cert.pem -inform DER -outform PEM
openssl rsa -in server_key.der -out server_key.pem -inform DER -outform PEM
cat server_key.pem server_cert.pem > server.pem
chmod 0600 server.pem
chown www-data:www-data server.pem
cp server.pem /etc/lighttpd/ssl/
cp ca_cert.pem /etc/lighttpd/ssl/

Skall-script for å lage klientnøkler og -sertifikater

#!/bin/bash
# Lag nøkkel for klienten
pki --gen > $1_key.der
# Ta ut public key av nøkkelparet
pki --pub --in $1_key.der > $1_pub.der
# CA sertifiserer serverens nøkkel
pki --issue --in $1_pub.der --digest sha256 --cacert ca_cert.der --cakey ca_key.der 
    --dn "C=NO, O=MIL, OU=CISK, CN=$1" --san $1.cisk.mil.no 
    --flag clientAuth > $1_cert.der
# Lag en PKCS#12fil
openssl x509 -in $1_cert.der -out $1_cert.pem -inform DER -outform PEM
openssl rsa -in $1_key.der -out $1_key.pem -inform DER -outform PEM
openssl pkcs12 -export -out $1.p12 -in $1_cert.pem -inkey $1_key.pem -name "Sertifikat for $1"


Last update (UTC): 2024-01-02 23:14:38 by 192.168.2.160 - Docid: 31 - Parent docid: 14 Download docx