Fork me on GitHub

Herr Knedel/Konteynerlerle harika şeyler: Docker hizmetlerini LDAP ve NGINX ile daha güvenli hale getirme

Created Fri, 02 Apr 2021 00:00:00 +0000 Modified Sat, 01 Oct 2022 10:42:18 +0000 Schwierigkeitsgrad: Für jeden machbar

362 Words

Bir Synology Diskstation kullanıcısı olarak Homelab ağımda birçok hizmet çalıştırıyorum. Gitlab’da yazılım dağıtıyorum, Confluence’da bilgi belgeliyorum ve Calibre web sunucusu aracılığıyla teknik referansları okuyorum.

Tüm ağ hizmetleri şifreli olarak iletişim kurar ve merkezi bir kullanıcı yönetimi aracılığıyla güvence altına alınır. Bugün Calibre hizmetimi SSL şifreleme, erişim günlüğü ve LDAP erişim kısıtlaması ile nasıl güvence altına aldığımı göstereceğim. Bu eğitim için “Atlassian ile harika şeyler: Tüm Atlassian araçlarını LDAP ile kullanın” ve “Kapsayıcılarla harika şeyler: Calibre’yi Docker Compose ile çalıştırma” ile ilgili ön bilgi gereklidir.

LDAP sunucum

Daha önce de yazdığım gibi, Docker konteynerinde merkezi bir openLDAP sunucusu çalıştırıyorum. Ayrıca birkaç uygulama grubu oluşturdum.

Ters proxy ile güvensiz uygulamayı güvenli hale getirin

“linuxserver/calibre-web” Docker görüntüsü SSL şifrelemesini ve LDAP’yi desteklemediğinden, “calibreweb” adında bir sanal ağ oluşturuyorum ve Calibre sunucusunun önüne bir NGINX ters proxy koyuyorum. Docker Compose dosyam bu şekilde görünüyor. Gelecekteki tüm erişim günlükleri günlük dizininde saklanır ve kendinden imzalı sertifikalarım certs dizinindedir.

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:

Ev kullanımı için daha kullanışlı Docker görüntüleri Dockerverse‘da bulunabilir.

Nginx yapılandırması

“default.conf” dosyası tüm LDAP ve şifreleme yapılandırmalarını içerir. Tabii ki URL, binddn, sertifikalar, portlar ve şifre ve grup ayarlanmalıdır.

# 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
    }
}


Şimdi “docker-compose -f …etc… up” ile kurulumu başlatırsanız, oturum açmış kullanıcıların erişimlerini de erişim günlüğünde görebilirsiniz:

LDAP kullanıcıları sadece misafir kullanıcılar olduğundan, Calibreweb’de misafir kullanıcı hakları ayarlanmalıdır: Bu kurulumu aşağıdaki hizmetler için çalıştırıyorum: * Video kütüphanesi (Peertube)* Kütüphane (Calibreweb)* Gitlab (CE grupları desteklemiyor, bu nedenle 2 kez oturum açmanız gerekiyor)