NETbrainDokumentationBetrieb
Reverse-Proxy
NETbrain spricht im Container HTTP und wird nur auf 127.0.0.1:4321 veröffentlicht. Zwischen Ihren Anwendern und NETbrain steht ein Reverse-Proxy, den Sie stellen — nginx, Apache, HAProxy, Traefik oder die Appliance, die bei Ihnen ohnehin davorsteht. NETbrain bringt keinen mit und beschafft kein Zertifikat.
Die acht Punkte#
Hinter jedem steht, was passiert, wenn er fehlt.
1. TLS beenden, Zertifikat beschaffen und erneuern#
NETbrain setzt sein Sitzungscookie als secure; über HTTP verwirft der Browser es wortlos. Die Anmeldeseite erscheint dann nach richtigem Passwort einfach wieder. Ein abgelaufenes Zertifikat wirkt genauso — die Erneuerung gehört in Ihre Überwachung.
2. Port 80 auf 443 weiterleiten#
Anwender tippen den Namen ohne https://.
3. HSTS setzen#
Der Header Strict-Transport-Security: max-age=31536000; includeSubDomains kommt entweder vom Proxy oder von NETbrain, mit NETBRAIN_HSTS: "true" in der Compose-Datei. Erst einschalten, wenn HTTPS unter dem endgültigen Namen funktioniert: Ein HSTS-Header unter falschem Namen sperrt diesen Namen ein Jahr lang in jedem Browser, der ihn gesehen hat.
4. Mindestens 12 MB Request-Body durchlassen#
In nginx: client_max_body_size 12m. Ein engerer Deckel lässt einen eingeworfenen Scan in einer Fehlerseite Ihres Proxys enden, die dem Anwender nicht sagt, was los ist.
5. X-Forwarded-For setzen und die Zahl der Proxys hinterlegen#
NETBRAIN_TRUSTED_PROXY_HOPS in der Compose-Datei oder im Assistenten, bei einem Proxy 1. Fehlt der Wert, sieht die Anmeldedrossel alle Anwender als eine Adresse, und ein Fehlversuch sperrt alle aus.
6. Port 4321 auf den Proxy beschränken#
Steht der Proxy auf demselben Server, erledigt das der Installer. Steht er auf einem anderen Rechner (NETBRAIN_BIND=0.0.0.0), brauchen Sie eine Firewallregel — sonst kann jeder am Proxy vorbei X-Forwarded-For selbst setzen und gezielt fremde Konten aussperren.
7. Den DNS-Namen bei NETbrain hinterlegen#
(NETBRAIN_ALLOWED_HOSTS, siehe Installation). Fehlt er, antwortet NETbrain mit 421. Den Host-Header reicht der Proxy unverändert weiter.
8. NODE_ENV=production nicht überschreiben#
Das Image setzt den Wert; ohne ihn ist das Sitzungscookie nicht secure.
Nicht nötig: eine längere Wartezeit. Lange KI-Aufgaben wie das Aufbereiten eines Scans senden alle zehn Sekunden ein Lebenszeichen; die Voreinstellung üblicher Proxys (nginx: 60 s) reicht.
Empfohlen: Richten Sie die Healthprobe des Proxys auf /api/ready. (Nicht auf /api/health: Das meldet bei fehlender Lizenz 503, und der Proxy sperrte die Installation dann von ihrer eigenen Lizenzseite aus.) Dann nimmt er NETbrain während eines Updates kurz aus dem Verkehr.
Beispiel für nginx#
Deckt die Punkte 1 bis 5 ab:
server {
listen 443 ssl;
server_name netbrain.ihre-firma.de;
ssl_certificate /etc/ssl/certs/netbrain.crt;
ssl_certificate_key /etc/ssl/private/netbrain.key;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
client_max_body_size 12m;
location / {
proxy_pass http://127.0.0.1:4321;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
server {
listen 80;
server_name netbrain.ihre-firma.de;
return 308 https://$host$request_uri;
}Firewall, wenn der Proxy woanders steht#
Die Regel gehört in die iptables-Kette DOCKER-USER. ufw und firewalld greifen hier nicht — Docker hängt seine eigenen Regeln davor, und ufw status meldet „aktiv“, obwohl der Port offen ist.
sudo iptables -I DOCKER-USER -i <externes-interface> -p tcp --dport 4321 -j DROP
sudo iptables -I DOCKER-USER -i <externes-interface> -s <ip-des-proxys> -p tcp --dport 4321 -j ACCEPT
sudo iptables -I DOCKER-USER -i <externes-interface> -p tcp --dport 4321 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT-I fügt vorn ein; die zuletzt gesetzte Regel gilt zuerst. Docker legt die Kette bei jedem Start neu an — machen Sie die Regeln mit dem Mittel Ihrer Distribution dauerhaft, und zwar nach docker.service.
Nachweisen statt annehmen#
Vier Punkte lassen sich in je einer Minute belegen:
# Zertifikat gültig und HSTS kommt an
curl -sI https://netbrain.ihre-firma.de/login | grep -i strict-transport
# Anwendungsport von außen gesperrt (von einem anderen Rechner aus, muss scheitern)
curl -m 5 http://<server-ip>:4321/api/health
# Healthprobe über den Proxy
curl -s https://netbrain.ihre-firma.de/api/healthDen vierten Punkt prüfen Sie im Browser: Werfen Sie eine Datei von etwa 10 MB als Firmenwissen ein. Kommt eine Fehlerseite Ihres Proxys statt einer Meldung von NETbrain, ist das Body-Limit zu eng.
Stand: NETbrain 0.5.9. Fehlt etwas oder stimmt etwas nicht? Schreiben Sie uns.
