IT Asset Management mit Snipe-IT

Je mehr Laptops, Computer und Mobile Endgeräte ein Unternehmen besitzt, um so schwieriger wird die Verwaltung. Hier kann ein IT Asset Management mit der OpenSource Software Snipe-IT helfen.

Warum ein Asset Management immer wichtiger wird

Insbesondere duch das aufkommen von Homeoffice sind nicht mehr alle Endgeräte im Unternehmen vor Ort, sondern immer mehr IT Ausstattung landet auch im Homeoffice der Mitarbeiter.

Während man bei weniger als 10 Mitarbeitern sich noch mit einer simplen Excel Liste behelfen kann, wird es bei mehr Mitarbeitern schnell unübersichtlich. In der Praxis sind wir immer wieder mit folgenden Fragen konfrontiert:

  • Wer hat welches Laptop benutzt?
  • Wie ist das Laptop ausgestattet?
  • Hat das Laptop noch Garantie?
  • Wie ist der Zustand vom Laptop?

Gerade wenn Mitarbeiter ausscheiden aus dem Unternehmen, stellt sich oft die Frage, was muss der Mitarbeiter am letzten Tag wieder im Unternehmen abgeben?

Was ist Snipe-IT?

Snipe-IT ist eine Open-Source Software zur Verwaltung der IT Assets im Unternehmen. Zu den möglichen Assets gehören offensichtliche Hardware wie Laptops, Computer oder mobile Endgeräte, aber auch Zubehör wie Monitore, Tastatur und Maus wie auch Headsets und Kameras. Nicht zu vernachlässigen ist auch die Verwaltung von Lizenzen.

Mit Snipe-IT lassen sich also alle diese Assets verwalten und deren Aushändigung sowie den Zustand Dokumentieren. Dabei kann genau erfasst werden, welcher Mitarbeiter welches Assets in einem bestimmten Zeitraum erhalten hat. Die Asset Verwaltung kann dabei von mehreren Benutzern im Unternehmen jederzeit eingesehen werden. Dadurch kann die Personalabteilung beim Ausscheiden eines Mitarbeiters schnell und selbstständig nachschauen, welche Assets am letzten Tag zurückgeben werden müssen.

Funktionen im Überblick

  • Verwaltung von Assests (Hardware wie auch Lizenzen)
  • Dokumentation von Assets
  • Wartungshistorie
  • Zuweisung zu Benutzer und Standort
  • Zugriffsberechtigungen für verschiedene Nutzer möglich

Installationsanleitung Snipe-IT unter Ubuntu 22.04 LTS

Wir installieren Snipe-IT unter Ubuntu 22.04 LTS und benötigen den Port 443/TCP für den Zugriff auf das Webinterface und müssen ggf. git installieren via "apt install git".

Wir beginnen mit der Installation von PHP 8.1:

apt install php8.1-{bcmath,common,ctype,curl,fileinfo,fpm,gd,iconv,intl,mbstring,mysql,soap,xml,xsl,zip,cli} && apt-get install php-ldap

Anschließend installieren wir Composer:

curl -sS https://getcomposer.org/installer -o composer-setup.php
php composer-setup.php --install-dir=/usr/local/bin --filename=composer

Und installieren MariaDB, erstellen eine Datenbank und einen Datenbanknutzer:

apt install mariadb-server
mysql

Das Passwort müssen wir durch ein eigenes sicheres ersetzen:

mysql> CREATE DATABASE snipeit;
mysql> GRANT ALL ON snipeit.* TO snipeit@localhost identified by '<mein-passwort>';
mysql> FLUSH PRIVILEGES;
mysql> \q

Jetzt erstellen wir das Verzeichnis für Snipe-IT und wechseln in das neue Verzeichnis:

mkdir /var/www && mkdir /var/www/html && cd /var/www/html

Wir downloaden Snipe-IT von Github und wechseln in das Verzeichnis:

git clone https://github.com/snipe/snipe-it snipe-it && cd snipe-it

Nun müssen wir die .env.example kopieren und in .env umbennen:

cp .env.example .env

Und wir öffnen die .env Datei:

nano .env

Folgende Einträge müssen geändert werden und anschließend speichern wir die Datei.

# --------------------------------------------
# REQUIRED: BASIC APP SETTINGS
# --------------------------------------------
APP_URL=https://meine-url.xy
APP_TIMEZONE='Europe/Berlin'

# --------------------------------------------
# REQUIRED: DATABASE SETTINGS
# --------------------------------------------
DB_DATABASE=snipeit
DB_USERNAME=snipeit
DB_PASSWORD=mein-passwort

Anschließend müssen die Berechtigungen für die eben erstellten Ordner gesetzt werden.

chown -R www-data: /var/www/html/snipe-it
chmod -R 755 /var/www/html/snipe-it

Und wir updaten die dependencies:

composer update --no-plugins --no-scripts

sowie installieren alle dependencies:

composer install --no-dev --prefer-source --no-plugins --no-scripts

Abschließend muss der Laravel App Key generiert und in die .env Datei geschrieben werden:

php artisan key:generate

Damit Snipe-IT via Webbrowser aufgerufen werden kann, brauchen wir Webserver. Dafür nutzen wir nginx und installieren nginx:

apt install nginx

Wir wechseln zum /tmp Verzeichnis und erstellen ein selbstsigniertes SSL Zertifikat. Alternativ kann natürlich auch Certbot mit Let's Encryption genutzt werden.

cd /tmp
openssl req -newkey rsa:4096 \
            -x509 \
            -sha256 \
            -days 3650 \
            -nodes \
            -out snipeit.crt \
            -keyout snipeit.key

Wir verschieben die outline.crt Datei nach /etc/ssl/certs und die Datei outline.key nach /etc/ssl/private.

mv snipeit.crt /etc/ssl/certs
mv snipeit.key /etc/ssl/private

Und öffnen die Konfigurationsdatei von nginx:

nano /etc/nginx/conf.d/snipeit.conf

Und fügen folgende Konfiguration ein, dabei müssen wir <meine-domain> ändern:

server {
    listen 80;
    server_name <meine-domain>;
    rewrite ^ https://$server_name$request_uri? permanent;
}

server {
    listen 443 http2 ssl;
    server_name <meine-domain>;
    root /var/www/html/snipe-it/public;
    index index.php;


    # certificate locations
    ssl_certificate /etc/ssl/certs/snipeit.crt;
    ssl_certificate_key /etc/ssl/private/snipeit.key;

    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:50m;
    ssl_session_tickets off;
    ssl_protocols TLSv1.3 TLSv1.2;
    ssl_ciphers 'TLS-CHACHA20-POLY1305-SHA256:TLS-AES-256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384';
    ssl_ecdh_curve X448:secp521r1:secp384r1;
    ssl_prefer_server_ciphers on;

    client_max_body_size 1G;
    client_body_timeout 3600s;
    client_body_buffer_size 512k;

    gzip on;
    gzip_vary on;
    gzip_comp_level 4;
    gzip_min_length 256;
    gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
    gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/wasm application/>

    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
    add_header Referrer-Policy "no-referrer" always;
    add_header Permissions-Policy "interest-cohort=(), geolocation=(),midi=(),sync-xhr=(),microphone=(),camera=(),magnetometer=(),gyroscope=(),fullscreen=(self),payment=()";
    add_header X-Download-Options "noopen" always;
    add_header X-Permitted-Cross-Domain-Policies "none" always;
    add_header X-Robots-Tag "noindex, nofollow" always;
    add_header X-XSS-Protection "1; mode=block" always;
    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header X-Content-Type-Options "nosniff" always;

    # SNIPEIT 
            location / {
                try_files $uri $uri/ /index.php?$query_string;

        }

        location ~ \.php$ {
                include fastcgi.conf;
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/run/php/php8.1-fpm.sock;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
        }
}

Nun müssen wir die Konfiguration nur noch teste und nginx neustarten:

nginx -t
service nginx restart

Snipe-IT ist nun über https://<meine-domain> per Webbrowser erreichbar.

Updates können ganz einfach mittels upgrade.php installiert werden. Dazu erstellen wir zunächst den nicht root user snipeit:

useradd -g snipeit
cd /var/www/html/snipe-it

und vergeben Berechtigungen für das Verzeichnis:

chown -R snipeit storage public/uploads bootstrap/cache
chmod -R 775 storage
chmod -R 775 public/uploads
chmod -R 775 bootstrap/cache
su snipeit

und können anschließend die upgrade.php ausführen:

cd /var/www/html/snipe-it && upgrade.php

© TECH-SUPPORT.KOELN