Linux

VLANs mit systemd-networkd konfigurieren

Posted by Michael Roth on August 02, 2018
Linux / No Comments

Mit den neuen vSwitches erlaubt Hetzner Server standortübergreifend mit einem getaggten VLAN zu verbinden. Die Wiki-Seite erklärt die Konfiguration mit ifupdown. Allerdings benutzt das Herzner-Image Ubuntu 18.04 systemd-networkd zum Verwalten der Netzwerkkonfiguration. Aus diesem Grund möchte ich hier meine Konfiguration teilen.

Die Konfigurationsdateien befinden sich im Ordner /etc/systemd/network. Dort befindet sich normalerweise eine Datei pro Interface. Bei mir ist es eine Datei mit dem Namen 10-enp0s31f6.network. Diese muss um einen Eintrag für das neue VLAN erweitert werden. Im Abschnitt [Network] muss die Zeile VLAN=vlan.4000 hinzugefügt werden. Wobei vlan.4000 der Name der weiteren Konfigurationsdateien ist. Die geänderte Datei sieht bei mir folgendermaßen aus:

### Hetzner Online GmbH installimage
[Match]
Name=enp0s31f6

[Network]
Address=x:x:x:x::2/64
Gateway=x.x.x.x
Gateway=fe80::1
VLAN=vlan.4000

[Address]
Address=x.x.x.x
Peer=x.x.x.x/32

Da ich vlan.4000 als  Name gewählt habe, erwartet systemd nun zwei weitere Dateien vlan.4000.netdev und vlan.4000.network in diesem Ordner.

Hier der Inhalt von vlan.4000.netdev:

[NetDev]
Name=vlan.4000
Kind=vlan

[VLAN]
Id=4000

Die letzte Zeile enthält die im Hetzner Robot gewählte VLAN-ID.

Die Datei vlan.4000.network enhält die IP-Konfiguration. In meinem Fall habe ich ein privates Subnetz gewählt und jedem Server eine eigene statische IP-Adresse zugewiesen.

[Match]
Name=vlan.4000

[Network]
DHCP=no

[Address]
Address=192.168.50.0/24

Die letzte Zeile enthält die IP-Adresse des Servers und muss für jeden Server angepasst werden.

Bei mehreren VLANs, müssen einfach mehrer VLAN-Zeilen in die Datei für das Interface, hier 10-enp0s31f6.network, eingefügt werden. Wichtig ist hierbei, dass ein anderer Name, z.B: vlan.4001, gewählt wird. Anschließen müssen dann auch für diesen Namen die .netdev und .network-Dateien angelegt werden, z.B. vlan.4001.netdev und vlan.4001.network. In der netdev-Datei muss dann die entsprechende VLAN-ID und in der network-Datei die verwendete IP-Adresse eingetragen werden.

Tags: , ,

Multi-Domain Projects on AWS Elastic Beanstalk

Posted by Michael Roth on Januar 26, 2013
Cloud, Linux / 2 Comments

Using Elastic Beanstalk from  Amazon Web Services is a create way to deploy large projects and be ready for a gain in visitors. Because I have a few projects which are too small to deploy each project as its own Elastic Beanstalk  application I looked for a way to deploy several projects with multiple Domains into one AWS EB application.

In the past the only way to configure application environments was to use customized AMIs. This would mean that I can not update my application to newer Amazon AMIs. So I would have to update my AMI regularly on my own.

A new and better way is to use the new configuration files. After deploying an application the configuration files, stored in the folder .ebextensions on the root directory of the applichation, are processed. All configuration files must end with ‚.config‘.

The Elastic Beanstalk uses regular EC2 instances with an apache webserver. So I used the configuration files to create an file inside the apache folder to tell the webserver how to handle multiple domains. The deployed PHP application is stored inside the /var/www/html folder.

Here is the configuration file. I saved it under .ebextensions/vhost.config

files:
  "/etc/httpd/conf.d/vhost.conf":
    mode: "000644"
    owner: root
    group: root
    encoding: plain
    content: |
      NameVirtualHost *:80

      <VirtualHost *:80>
        ServerName www.projekt1.de
        ServerAlias projekt1.de
        DocumentRoot /var/www/html/projekt1/
      </VirtualHost>
      <VirtualHost *:80>
        ServerName static.projekt1.de
        DocumentRoot /var/www/html/static/
      </VirtualHost>

The lines after the content entry were copied into a new file /etc/httpd/conf.d/vhost.conf. The webserver reads this file on startup an creates new vhosts with different root folders. All requests for www.projekt1.de or projekt1.de use /var/www/html/projekt1/ als document root. Requests to static.projekt1.de use folder static inside the application as document root.

For detailed information on how to configure multiple domains in apache read the VirtualHost Examples from the apache project page.

If you have any questions, problems or suggestions please write a comment on this post.

Downgrade Debian/Ubuntu mit apt

Posted by Michael Roth on Juni 13, 2011
Linux / No Comments

Unter Ubuntu ist es einfach Programm, die nicht offiziell in  Ubuntu enthalten sind über PPA (Personal Package Archives) nachträglich zu installieren. Dazu muss ein solches PPA einfach als neue Paketquelle über den Paketmanager hinzugefügt werden. Anschließend kann das neue Programm installiert werden. Neue Programme benötigen meist auch eine aktuellere Version anderer Pakete, diese werden über die PPA ebenfalls installiert.

Nach so einem Update kann es sein, dass das System nicht mehr stabil läuft. Das neue Programm lässt sich einfach über den Paketmanager oder apt-get remove löschen. Was ist aber mit den neuen Paketen, die mit installiert wurden?

Ein manuelles Löschen und erneutes Installieren kann zu weitreichenden Änderungen führen, falls es sich bei den neuen Paketen um wichtige Systemkomponenten handelt.

Die elegantere Methode ist es, ein Downgrade der Pakete durchzuführen. Dies ist zwar nicht ohne weiteres möglich, aber auch keine Hexerei. Normalerweise werden alle Paketequellen gleich behandelt und das Paket mit der höchsten Versionsnummer installiert.

Das Programm apt, das für die Paketverwaltung bei Ubuntu und Debian verantwortlich ist, erlaubt es Prioritäten einzelner Paketquellen zu setzen. Damit kann die Priorität der original Paketquellen so hoch gesetzt werden, dass die Pakete trotz niedriger Versionsnummer installiert werden.

Bei Ubunut 11.04 muss die Datei /etc/apt/conf.d/downgrade mit folgendem Inhalt angelegt werden:

Package: *
Pin: release a=natty
Pin-Priority: 1002

Package: *
Pin: release a=natty-updates
Pin-Priority: 1002

Nach einem apt-get dist-upgrade kann die Datei wieder gelöscht werden, da nun alle Pakete wieder auf den original Zustand der Ubuntu Version zurück gesetzt sind.

Mehr Information zu diese Methode liefert die Manpage von apt_preferences.

Tags: ,

Apache und PHP stumm schalten

Posted by Michael Roth on Januar 24, 2011
Internet, Linux / No Comments

Apache und PHP senden bei Internetseiten die Versionsnummer mit an den Besucher. Ein Angreifer kann diese Informationen benutzen um gezielt verwundbare Versionen zu finden und dann diese Server anzugreifen. Mit ein paar einfachen Befehlen lassen sich die Ausgaben allerdings unterdrücken.

PHP:

  • Mit expose_php = Off kann in der php.ini die Übermittlung der PHP Versionsnummer im HTTP-Response-Header unterdrückt werden.

Apache2:

  • ServerTokens Prod unterbindet das Übermitteln der Apache Versionsnummer im HTTP-Response-Header
  • Die Option ServerSignature Off deaktiviert das Anzeigen der Versionsnummer auf von Apache generierten Seiten. Dazu zählen die Fehlerseiten oder Index-Seiten, falls das Indizieren von Ordner ohne index.html aktiviert ist.
  • Apache ermöglicht es ein paar Funktionen aus der Ferne zu debuggen. Diese Funktionalität wird auf einem Produktivsystem nicht benötigt und kann mit TraceEnable Off ausgeschaltet werden.

Tags: ,