Sebagai pengguna Synology Diskstation, saya menjalankan banyak layanan pada jaringan Homelab saya. Saya menerapkan perangkat lunak di Gitlab, mendokumentasikan pengetahuan di Confluence dan membaca referensi teknis melalui server web Calibre.
Semua layanan jaringan berkomunikasi secara terenkripsi dan diamankan melalui administrasi pengguna pusat. Hari ini saya menunjukkan bagaimana saya mengamankan layanan Calibre saya dengan enkripsi SSL, pencatatan akses dan pembatasan akses LDAP. Pengetahuan sebelumnya dari “Hal-hal keren dengan Atlassian: Gunakan semua alat Atlassian dengan LDAP” dan “Hal-hal hebat dengan kontainer: Menjalankan Calibre dengan Docker Compose” diperlukan untuk tutorial ini.
Server LDAP saya
Seperti yang sudah saya tulis, saya menjalankan server openLDAP pusat di dalam kontainer Docker. Saya juga sudah membuat beberapa grup aplikasi.
Mengamankan aplikasi yang tidak aman dengan proxy terbalik
Karena citra Docker “linuxserver/calibre-web” tidak mendukung enkripsi SSL dan LDAP, saya membuat jaringan virtual yang disebut “calibreweb” dan menempatkan proxy balik NGINX di depan server Calibre. Seperti inilah tampilan file Docker Compose saya. Semua log akses di masa mendatang disimpan di direktori log dan sertifikat yang saya tanda tangani sendiri ada di direktori 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:
Gambar Docker yang lebih berguna untuk penggunaan di rumah dapat ditemukan di Dockerverse.
Konfigurasi Nginx
File “default.conf” berisi semua konfigurasi LDAP dan enkripsi. Tentu saja, URL, binddn, sertifikat, port dan kata sandi serta grup harus disesuaikan.
# 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
}
}
Jika Anda sekarang memulai penyiapan dengan “docker-compose -f …etc… up”, Anda juga dapat melihat akses pengguna yang masuk di log akses:
Karena pengguna LDAP hanya pengguna tamu, hak pengguna tamu harus diatur di Calibreweb:
Saya menjalankan penyiapan ini untuk layanan-layanan berikut:* Perpustakaan video (Peertube)* Perpustakaan (Calibreweb)* Gitlab (CE tidak mendukung grup, jadi Anda harus log in 2x)