Synology Diskstationi kasutajana kasutan ma oma koduvõrgus palju teenuseid. Ma juurutan tarkvara Gitlabis, dokumenteerin teadmisi Confluence’is ja loen tehnilisi viiteid Calibre veebiserveri kaudu.
Kõik võrguteenused suhtlevad krüpteeritult ja on turvatud keskse kasutajahalduse kaudu. Täna näitan, kuidas ma turvasin oma Calibre’i teenust SSL-krüpteerimise, juurdepääsu logimise ja LDAP-juurdepääsupiiranguga. Selle õpetuse jaoks on vaja eelteadmisi “Lahedad asjad Atlassianiga: kasuta kõiki Atlassiani tööriistu LDAPiga” ja “Suurepärased asjad konteineritega: Calibre käivitamine Docker Compose’iga” kohta.
Minu LDAP server
Nagu ma juba kirjutasin, käivitan ma keskse openLDAP-serveri Dockeri konteineris. Olen loonud ka mõned rakendusgrupid.
Turvaline ebaturvaline rakendus pöördproxyga
Kuna Dockeri image “linuxserver/calibre-web” ei toeta SSL-krüpteerimist ja LDAP-i, siis loodan virtuaalse võrgu nimega “calibreweb” ja panen Calibre serveri ette NGINX-i pöördproxy. Selline näeb välja minu Docker Compose fail. Kõik tulevased juurdepääsulogid on salvestatud kataloogi log ja minu isesigneeritud sertifikaadid on kataloogis certs.
version: '3.7'
services:
nginx:
image: weseek/nginx-auth-ldap:1.13.9-1-alpine
container_name: calibre-nginx
environment:
- 'TZ=Europe/Berlin'
volumes:
- ./default.conf:/etc/nginx/conf.d/default.conf
- ./certs:/etc/certs
- ./logs:/var/log/nginx
ports:
- 8443:443
networks:
- calibreweb
restart: unless-stopped
calibre-web:
image: linuxserver/calibre-web
container_name: calibre-web
environment:
- PUID=.....
- PGID=....
- TZ=Europe/Berlin
volumes:
- /volume/docker/calibre/app.db:/app/calibre-web/app.db
- /volume/Buecher:/books
expose:
- 8083
restart: unless-stopped
networks:
- calibreweb
networks:
calibreweb:
Rohkem kasulikke Dockeri kujutisi koduseks kasutamiseks leiate Dockerverse.
Nginxi konfiguratsioon
Fail “default.conf” sisaldab kõiki LDAPi ja krüpteerimise konfiguratsioone. Loomulikult tuleb kohandada URL, binddn, sertifikaadid, pordid ning parool ja grupp.
# ldap auth configuration
auth_ldap_cache_enabled on;
auth_ldap_cache_expiration_time 10000;
auth_ldap_cache_size 1000;
ldap_server ldap1 {
url ldaps://ldap.server.local:636/dc=homelab,dc=local?uid?sub?(&(objectClass=inetorgperson));
binddn "cn=root oder so,dc=homelab,dc=local";
binddn_passwd "password";
connect_timeout 5s;
bind_timeout 5s;
request_timeout 5s;
ssl_check_cert: off;
group_attribute memberUid;
group_attribute_is_dn off;
require group "cn=APP-Bibliothek,ou=Groups,dc=homelab,dc=local";
require valid_user;
}
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /etc/certs/fullchain.pem;
ssl_certificate_key /etc/certs/privkey.pem;
#weitere SSL-Einstellungen
location / {
auth_ldap "LDAP-ONLY";
auth_ldap_servers ldap1;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Scheme $scheme;
proxy_pass http://calibre-web:8083; #<- docker expose port
}
}
Kui nüüd käivitad seadistust käsuga “docker-compose -f …etc… up”, siis näed ka sisselogitud kasutajate ligipääsud ligipääsulogis:
Kuna LDAP-kasutajad on ainult külaliskasutajad, tuleb Calibrewebis määrata külaliskasutajate õigused:
Kasutan seda seadistust järgmiste teenuste jaoks:* Videoteek (Peertube)* Raamatukogu (Calibreweb)* Gitlab (CE ei toeta gruppe, nii et peate 2x sisse logima)