UCS Dienste/Webinterface auf Port 80 deaktivieren?

german
apache

#1

Hallo,

wie die Überschrift vermuten lässt, möchte ich den Port 80 (für andere Dienste/server) frei machen.

Wie Stelle ich es am besten an, vom Sicherheitsgedanken ist es ja sowieso besser.

MfG


#2

Hallo,

Sie können die UCS Webseite auf HTTPS-only setzen:
ucr set apache2/force_https=yes

Gruß
Daniel Tröder


#3

Moin,

Es ist momentan out of the box nicht möglich, den Apache so zu konfigurieren, dass er auf Port 80 nicht lauscht. Das liegt daran, dass die Portnummer in /etc/apache2/ports.conf steht, die wiederum vom UCR-Template-Mechanismus verwaltet wird. In der Quelldatei des Templates /etc/univention/files/etc/apache2/ports.conf sieht man, dass es keine Konfigurationsoption dafür gibt.

Sie haben hier drei Möglichkeiten:

  1. Sie nutzen die von Herrn Tröder geschilderte Variante (mit anschließendem service apache2 restart). Das sorgt dafür, dass Apache alle Zugriffe auf Port 80 auf https und Port 443 weiterleitet.
  2. Sie konfigurieren die Univention-FIrewall so, dass Zugriffe auf Port 80 abgewiesen werden. Dazu eigenet sich das Script /etc/security/packetfilter.d/50_local.sh. Es wird ausgeführt, nachdem die Univention-eigenen Firewallregeln (z.B. für den Apache selber) bereits ausgeführt wurden. In dem Script könnten Sie also eine Regel ganz oben in der Firewall einfügen, die Port 80 abweist, z.B. iptables -I INPUT -p tcp --dport http -j REJECT.
  3. Sie modifizieren die Templates für die Apache-Konfiguration in /etc/univention/templates/files/etc/apache2 so, dass der Apache nicht mehr auf Port 80 lauscht.

Variante 3 hat den Nachteil, dass bei Univention-Updates immer darauf geachtet werden muss, welche Templates manuell verändert wurden. Ihre manuellen Änderungen müssen dann mit den Paket-Änderungen abgeglichen und ggf. zusammengeführt werden.

Gruß,
mosu


#4

Danke für die Antworten. Die Vorlage, siehe oben, habe ich auch schon gefunden und editiert. Ich habe dort den Port 81 eingetragen. Allerdings ist UCS immer noch, ohne expliziete Porteingabe im Browser erreichbar ???

Ich Möchte einen anderen Webservice auf Port 80 laufen lassen. (Traccar GPS Server) Dieser läuft im Moment auf Port 8082. Da dieser Port in öffentlichen Netzwerkzugängen meist gesperrt ist ergibt sich für mich da ein Problem.

MfG


#5

Nach jeglicher Änderung einer Vorlage müssen Sie dafür sorgen, dass die aus der Vorlage erzeugte Datei auch neu erstellt wird. Dazu dient der Befehl ucr commit…. Ganz ohne weitere Parameter baut er alle Dateien neu. Sinnvoller ist, nur denjenigen Dateinamen anzugeben, den Sie in dem Moment neu bauen wollen, also: ucr commit /etc/apache2/ports.conf Also nicht den Namen der veränderten Vorlage; wirklich den Namen der Datei, die aus der Vorlage erzeugt wird.

Wenn Sie den Port ändern, so müssen Sie auch noch weitere Templates anpassen, da die Portnummer in diversen Definitionen von virtuellen Hosts benutzt wird. Welche Templates das sind, finden Sie relativ einfach mit grep -r :80 /etc/univention/templates/files/etc/apache2 heraus. Anschließend müssen Sie auch für diese Templates die Dateien neu bauen lassen, z.B. mit ucr commit /etc/apache2/sites-available/000-default und für welche weitere Datei das auch noch nötig ist.

Ob die Konfiguration so gültig ist, verrät anschließend apache2ctl configtest.

Anschließend muss der Webserver logischerweise neu gestartet werden: service apache2 restart Startet er nicht, so liegt das vermutlich daran, dass die Portnummer 80 doch noch irgendwo in der Konfiguration vorkommt. Schauen Sie also die Fehlermeldungen in /var/log/apache2/error.log.

Auf welchen Ports der Apache dann lauscht, das prüfen Sie am besten auf dem Server selber und nicht mit einem Webbrowser. Dazu dient der Befehl lsof; für das aktuelle Beispiel z.B. so: lsof -a -PniTCP -sTCP:LISTEN -u www-data

Alle genannten Befehle müssen als root bzw. mittels sudo ausgeführt werden.

Zu guter Letzt sollte eine Feature-Request im Univention-Bugtracker eröffnet, damit die Portnummer, auf der der Apache lauscht, in Zukunft einfacher konfiguriert werden kann. Ich habe das für Sie bereits erledigt.


#6

Topantwort, Danke!

Werde die Sachen ausprobieren.


#7

Alternativ könnte man in apache auch weitere Reverse-Proxy Regeln erstellen um z.B. den anderen Dienst (Traccar GPS Server) unter einem Unterpfad erreichbar machen z.b. /traccar/ oder alle bekannten URL’s davon weiterzuleiten.

https://httpd.apache.org/docs/2.4/mod/mod_proxy.html#proxypass