ubuntu – Finn Christiansen https://blogarchive.finnchristiansen.de Softwareentwickler mit einer Vorliebe für freie Software und GNU / Linux Sat, 08 Dec 2018 16:50:58 +0000 de-DE hourly 1 https://wordpress.org/?v=5.1.1 https://blogarchive.finnchristiansen.de/wp-content/uploads/2017/01/cropped-FinnsBlog512-32x32.png ubuntu – Finn Christiansen https://blogarchive.finnchristiansen.de 32 32 Eigene DNS Server bei der Nutzung von DHCP verwenden https://blogarchive.finnchristiansen.de/2016/06/30/eigene-dns-server-bei-der-nutzung-von-dhcp-verwenden/ https://blogarchive.finnchristiansen.de/2016/06/30/eigene-dns-server-bei-der-nutzung-von-dhcp-verwenden/#respond Thu, 30 Jun 2016 05:31:27 +0000 https://www.finnchristiansen.de/?p=139 Continue reading ]]> Auch bei quasi statischen IP Adressen wird häufig DHCP zum beziehen der IP-Adresse und der übrigen Netzwerkkonfiguration eingesetzt. Trotzdem möchte man manchmal gewisse Einstellungen, häufig die verwendeten DNS Server, dauerhaft überschreiben.

Der Pflege- und Konfigurationsaufwand statischer IP Adressen ist bei mehreren Servern recht hoch, sollte sich etwas an der Netzwerkkonfiguration ändern. Deshalb setzt man häufig einen DHCP Server mit Reservierungen ein, so dass beispielsweise Server (oder auch andere DHCP Clients, falls gewünscht) aufgrund der gleichbeibenden MAC Adresse stets die gleiche IP Adresse erhalten.

Zu Hause verwende ich die DHCP Server Einstellungen, welche ich auch benötige. Bei meinen gemieteten vServern, welche hauptsächlich mit Debian und auch einmal mit Ubuntu laufen, sieht es ein wenig anders aus. Den meisten Nutzern sollten die vom Anbieter vorgegebenen DNS Server genügen, ich möchte aber meine eigenen DNS Server verwenden.

Normalerweise, sprich bei statischer Konfiguration des Netzwerks, würde ich die DNS Server in die /etc/resolv.conf eintragen. Die dort stehenden DNS Server werden dann systemweit zur Namensauflösung verwendet. Der DHCPCD (Der DHCP Client-Daemon, dieser stellt die DHCP Anfragen) überschreibt die Datei allerdings nach Erhalt eines DHCP Leases. Die Lösung ist einfach, denn man kann den DHCPCD so konfigurieren, dass eigene Einstellungen die vom DHCP Server vorgegebenen Einstellungen ersetzen. Für die Konfiguration der DNS Server und der Domain trägt man beispielsweise folgendes zusätzlich in die /etc/dhcp/dhclient.conf ein:

supersede domain-name-servers 192.168.100.10, 192.168.100.20;
supersede domain-name "example.org";

Anschließend startet man, wenn der Zeitpunkt passend ist, das Netzwerk neu:

systemctl restart networking

Nach einem Neustart kann mit

cat /etc/resolv.conf
  nachgesehen werden, ob die gewünschten Einstellungen vorgenommen wurden.

]]>
https://blogarchive.finnchristiansen.de/2016/06/30/eigene-dns-server-bei-der-nutzung-von-dhcp-verwenden/feed/ 0
Firewallkonfiguration unter Debian und Ubuntu mit IPTables https://blogarchive.finnchristiansen.de/2016/04/24/firewallkonfiguration-unter-debian-und-ubuntu-mit-iptables/ https://blogarchive.finnchristiansen.de/2016/04/24/firewallkonfiguration-unter-debian-und-ubuntu-mit-iptables/#comments Sun, 24 Apr 2016 08:50:39 +0000 https://www.finnchristiansen.de/?p=70 Continue reading ]]> Häufig sehe ich Server, die gar keine Firewall verwenden. In einem kleinen internen Netz mag das vielleicht noch vertretbar sein, aber spätestens wenn der Server öffentlich erreichbar ist, sollte man sich Gedanken um eine Firewall machen. Für viele ist das zwar selbstverständlich ein alter Hut, aber viele Dienste laufen gedankenlos auf der Listen-Adresse 0.0.0.0 bzw. :: und sind damit bei Verwendung einer öffentlichen IP-Adresse oder NAT ohne Firewall für jedermann erreichbar.

Um die IPTables Firewall unter Debian oder Ubuntu zu konfigurieren, verwende ich iptables-persistent. Die Firewall-Regeln werden dabei in Textdateien gespeichert und beim Starten geladen. Nach der Installation von iptables-persistent besteht die Möglichkeit, bereits vorhandene Regeln zu speichern, was zu empfehlen ist, da somit schon eine grundlegende Konfiguration erstellt wird. Die Installation selbst ist simpel:

apt-get intall iptables-persistent

Anschließend wird jeweils eine Datei für IPv4 und IPv6 angelegt. Anbei eine einfache Beispielkonfiguration, die entsprechend den eigenen Bedürfnissen erweitert werden kann:

# Generated by iptables-save v1.4.21 on Mon Mar  7 18:13:53 2016
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT

# SSH
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

# HTTP(S)
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT

# NRPE (monitoring)
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5666 -s 78.46.251.28/32 -j ACCEPT

-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Mon Mar  7 18:13:53 2016

Die Ketten INPUT, FORWARD und OUTPUT akzeptieren standardmäßig alle Verbindungen. Eingehender, zu anderen Verbindungen gehörender Verkehr (RELATED,ESTABLISHED) wird ebenfalls durchgelassen. Ebenso werden ICMP Pakete (Ping, -p icmp) aktzeptiert und auch Verbindungen zum lokalen Loopback Interface.

Dann werden die TCP Ports 22, 80 und 443 akzeptiert. Der Port 5666, auf welchem der NRPE Dienst hört, soll nur von einer IP Adresse erreichbar sein. Anschließend werden alle nicht vorher definierten eingehende und weiterzuleitende Verbindungen abgelehnt (-j REJECT –reject with icmp-host-prohibited). Alternativ können diese Zeilen entfernt werden, falls man die INPUT und FORWARD Kette standardmäßig auf REJECT stellt. Im Falle eines Fehlers in der Konfiguration ist es aber dann notwendig, physikalischen Zugriff auf den Server zu haben, da eventuell alle Verbindungen abgelehnt werden. Die Art der Konfiguration ist aber Geschmackssache, das Ergebnis ist gleich.

Für IPv6 sollen normalerweise etwa die gleichen Regeln gelten, ein paar Parameter (natürlich IPv6 anstatt IPv4 Adressen verwenden oder icmp6-adm-prohibited statt icmp-host-prohibited) müssen aber ausgetauscht werden. Das Ergebnis ist vergleichbar:

# Generated by iptables-save v1.4.21 on Mon Mar  7 18:13:53 2016
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p ipv6-icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT

# SSH
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

# HTTP(S)
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT

# NRPE
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5666 -s 2a01:4f8:c17:34ab::2/128 -j ACCEPT

-A INPUT -j REJECT --reject-with icmp6-adm-prohibited
-A FORWARD -j REJECT --reject-with icmp6-adm-prohibited
COMMIT
# Completed on Mon Mar  7 18:13:53 2016

Diese Regeln sind recht schlicht, aber schon ein sehr brauchbarer Anfang. Zusätzlich können noch ausgehende Verbindungen eingeschränkt werden, falls dies gewünscht ist. Spätestens wenn Datenbanken oder ähnlich sensible Dienste über Netzgrenzen hinweg erreichbar sein sollen, sollte definitiv zumindest irgendeine Art Firewall eingesetzt werden.

]]>
https://blogarchive.finnchristiansen.de/2016/04/24/firewallkonfiguration-unter-debian-und-ubuntu-mit-iptables/feed/ 2