Forum Linux.débutant Mise en oeuvre ZoneMinder

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
0
14
sept.
2021

Bonjour à tous,

Mon système fonctionne avec Debian Bullseye.

J'ai installé Zoneminder via les dépots debian classique, configuré ma base de données pour et l'ai activé.

J'ai essayé plusieurs configurations nginx mais je ne vais pas plus loin que la page Nginx classique.

Avez-vous déjà utilisé ZoneMinder ?

Merci d'avance

  • # En suivant la doc ...

    Posté par  . Évalué à 1 (+0/-0).

    C'est drôle; j'ai installé mon 1er ZoneMinder cette semaine, en suivant la doc suivante:

    https://wiki.zoneminder.com/Debian_11_Bullseye_with_Zoneminder_1.36.x

    RAS, une fois installé et comme indiqué sur le wiki l'interface de gestion est accessible sur http://ip/zm/ tout simplement…

    eric.linuxfr@sud-ouest.org

    • [^] # Re: En suivant la doc ...

      Posté par  . Évalué à 1 (+0/-0).

      Oui même constat. Installation en suivant la doc mais en mettant tout ça dans un container LXC (transparent pour ZoneMinder) et aucun soucis.

      • [^] # Re: En suivant la doc ...

        Posté par  . Évalué à 1 (+0/-0).

        Il y a sous les dépots de debian bullseye la version 1.34 de zoneminder.

        Donc j'avais commencé comme cela et avec nginx au lieu de apache2.

        Je ne compte pas changer de serveur web.

        Je peux vous montrer ma conf nginx.

        Les gens utilisent ce doc pour installer sous Debian Bullseye.

        https://wiki.zoneminder.com/Debian_11_Bullseye_with_Zoneminder_1.36.x

        De mon côté j'ai installé la version des dépots de bebian bullseye, 1.34.

        Sauf que je n'utilise pas apache2 mais nginx.

        Voici la conf que j'ai mise.

        /etc/nginx/sites-enabled/zone.mondomain.com

        server {
            listen 80;
            listen [::]:80;
            server_name zone.mondomain.com;
        
            include /etc/nginx/zoneminder.conf;
            # Enforce HTTPS
            #return 301 https://$server_name$request_uri;
        }
        
        server {
                listen 443 ssl;
                server_name zone.mondomain.com;
        
                access_log /var/log/nginx/zone.mondomain.com.access;
                error_log  /var/log/nginx/zone.mondomain.com.error;
                #rewrite_log     on;
        
                # Path to the root of your installation
                root                          /usr/share/zoneminder/www;
        
                #ssl                           on;
                ssl_certificate               /etc/letsencrypt/live/zone.mondomain.com/fullchain.pem; # managed by Certbot
                ssl_certificate_key           /etc/letsencrypt/live/zone.mondomain.com/privkey.pem; # managed by Certbot
        
                keepalive_timeout       60;
                ssl_session_timeout 10m;
        
                ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
                ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
                ssl_prefer_server_ciphers on;
        
        }
        

        /etc/nginx/zoneminder.conf

        location /zoneminder/cgi-bin {
           gzip off;
           root /usr/lib;
        
           include fastcgi_params;
           fastcgi_param SCRIPT_FILENAME /usr/lib/zoneminder/cgi-bin/nph-zms;
        
           fastcgi_intercept_errors on;
           fastcgi_pass unix:/var/run/fcgiwrap.socket;
        }
        
        location /zoneminder/ {
           gzip off;
           alias /usr/share/zoneminder/www/;
           index index.php;
        
           location ~ \.php$ {
              include fastcgi_params;
              # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
              fastcgi_param SCRIPT_FILENAME $request_filename;
              fastcgi_intercept_errors on;
              fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
           }
        
           location ~* /zoneminder/.*\.(txt|log)$ {
              deny all;
           }
        
           location ~* /zoneminder/.*\.(m4a|mp4|mov)$ {
              #mp4;
              #mp4_buffer_size 5M;
              #mp4_max_buffer_size 10M;
           }
        }
        
  • # Une piste ?

    Posté par  . Évalué à 1 (+0/-0).

    Bon, je suis navré je n'ai pas trop le temps de chercher plus que ça mais je vois que dans le dépot git il y a des bricoles concernant une configuration de nginx … peut-être que la solution est tout simplement ici :

    https://github.com/ZoneMinder/zoneminder/tree/2e22cd5c3b489ee05a2cf6ff749df8995f7e6d38/distros/redhat/nginx

    eric.linuxfr@sud-ouest.org

    • [^] # Re: Une piste ?

      Posté par  . Évalué à 1 (+0/-0).

      Pas de problème, j'ai trouvé ce qu'il n'allait pas dans la conf nginx.

      Par contre, vous avez déjà analysé le code de zoneminder pour vérifier s'il respecte la vie privée de ceux qui l'utilise chez eux ?

      S'il est éthique, n'envoie pas les flux vidéos chez eux.

      • [^] # Re: Une piste ?

        Posté par  . Évalué à 1 (+0/-0).

        Plus simplement, ne laisse pas ton serveur CCTV accéder à Internet (exception faite des mises à jour de sécurité de ta distrib). Avec un firewall local + bridage sur un firewall externe tu es couvert. Tu peux aussi l'isoler dans un container et n'ouvrir que les ports qui permettent le fonctionnement.

        Mais surtout, empêche les caméras d'aller sur Internet ! Par défaut, les D-Link que j'utilise envoient des infos (genre ping, recherche de firmware) à la maison mère, le UPnP est actif, le NTP se connecte aussi chez D-Link, et il doit même y avoir un service pour se connecter à la cam via une application maison… Bref, un petit cauchemar par défaut. Enfin, sur ces caméras, tu peux filtrer les IPs autorisées à accéder aux flux vidéos, et mettre un mot de passe différent de celui de l'admin.

        • [^] # Re: Une piste ?

          Posté par  . Évalué à 1 (+0/-0).

          Waou, ça fait beaucoup !

          Le souci c'est que j'utilise un serveur avec accès à internet aujourd'hui.

          Il me reste une raspberry ou deux.

          Mais du coup ça veut dire qu'on oublie le streaming video via son propre nom de domaine ? Comment sait-on si il y a une vrai intrusion ou non ?

          • [^] # Re: Une piste ?

            Posté par  . Évalué à 1 (+0/-0).

            Tu peux exposer le service sur ton nom de domaine sur Internet, tout en empêchant le serveur lui-même de sortir si tu n'as pas confiance dans le code de Zoneminder (ACL unidirectionnelle, ou encore "stateful"). Si tu mets Zoneminder sur un serveur qui a d'autres services, vois comment cloisonner (avec AppArmor, Docker, une VM…)

            En ce qui me concerne, Zoneminder me sert seulement pour les preuves après un incident (j'enregistre 30 jours, le maximum toléré en France d'après la CNIL), les intrusions en elles-mêmes sont gérées par une alarme + une équipe d'intervention.

            Donc au final sur la partie notification/alarme de Zoneminder je n'ai pas d'expérience, désolé.

            • [^] # Re: Une piste ?

              Posté par  . Évalué à 1 (+0/-0).

              Empecher le serveur lui meme de sortir, comment ?

              Comment cloisoner, ce ne veut pas dire isoler zoneminder mais le restreindre à ce que l'on souhaite comme service minimum.

              Ca me semble compliqué pour cette partie.

              Faut que je réflechisse

              • [^] # Re: Une piste ?

                Posté par  . Évalué à 2 (+1/-0).

                Empecher le serveur lui meme de sortir, comment ?

                Pour faire simple, et sans rentrer dans les détails, avec un firewall "stateful", tu peux dire :

                Règle 1 : j'accepte de laisser passer la demande venant d'Internet et qui va sur mon serveur, et j'accepte de laisser passer les réponses de mon serveur vers ce même navigateur. (typiquement, un navigateur se connecte à un serveur web)

                Règle 2 : je refuse de laisser passer les données de mon serveur à destination d'Internet si elles sont à l'initiative du serveur. (typiquement, un serveur essaye de se connecter à un autre serveur sur Internet)

                La clé est que les données sont de même nature dans les deux cas, mais le rôle du firewall est de détecter si la conversation a été commencée depuis dehors ou depuis dedans de ton réseau, et de comparer chaque connexion aux règles que tu as définies.

                Ça peut en effet devenir très compliqué et être intimidant, mais ça peut aussi rester assez simple. J'espère que mes explications ne sont pas trop pourries et que ça te donnera envie plutôt que peur :).

                • [^] # Re: Une piste ?

                  Posté par  . Évalué à 1 (+0/-0).

                  Oui mais dans ce cas précis, je pense que je suis obligé d'utiliser un autre PC.

                  Le PC que je fais tourner en mode serveur, je ne peux pas intégrer ses 2 règles.

                  Tu confirmes ?

                  Ou le cas d'un conteneur pourrait suffir ?

                  • [^] # Re: Une piste ?

                    Posté par  . Évalué à 1 (+0/-0).

                    J'ai simplifié, mais si tu donnes une IP différente de l'IP du PC pour le container (ou la VM) qui fait tourner Zoneminder, tu peux avoir des règles par service (on peut avoir plein d'IPs sur un même PC et une même carte réseau).

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n’en sommes pas responsables.