Fork me on GitHub

Herr Knedel/Suurepärased asjad konteineritega: Dockeri teenuste turvalisemaks muutmine LDAPi ja NGINXi abil

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

339 Words

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)