iptables mit DDNS Adressen

5
(2)

Die Linux Kernel Firewall iptables unterstützt keine FQDN und DDNS Namen in den Ketten, deshalb habe ich hierfür ein einfaches Script erstellt, dieses ein DDNS A Record auflöst und die IPv4 Adresse in die Kette als append chain einfügt.

#!/bin/sh
iptables="/etc/sysconfig/iptables"
sed -i '/#DDNSIP/d' $iptables
lookup="$(grep -i "#MyDDNS" $iptables)"
select=( $lookup )
ddns="${select[2]}"
echo $select $ddns
ip="$(host $ddns)"
if [ "$ip" == "${ip%% has address *}" ]; then
continue;
fi
ip="${ip##* has address }"
sed -i 's/^\('"$lookup"'\)$/\1\n-A RH-Firewall-1-INPUT -i eth0 -p udp -m udp -s '"$ip"' -m comment --comment #DDNSIP -j ACCEPT/' $iptables
service iptables restart

Dieses Shell Skript ist auf einem CentOS geschrieben, ist aber mit kleinen Änderungen auf anderen Linux distributionen einsetzbar, bei Zeile 3 wird der entsprechende Pfad zu iptables angepasst, z.B. für Debian /etc/defaut.

Das Commad host ist Teil der BIND-Dienstprogramme, sodass diese installiert sein müssen. Dazu führt man folgende yum Installation auf der Console aus, um die BIND-Dienstprogramme zu installieren:

sudo yum -y install bind-utils

Es wird eine Zeile mit dem DDNS-Hostnamen in die Konfigurationsdatei iptables eingetragen, der Tag #MyDDNS dient als Marke und muss in der Konfigurationsdatei iptables eingetragen werden:

#Allow from myhost.dyndns.org #MyDDNS
-A RH-Firewall-1-INPUT -i eth0 -p udp -m udp -s 123.456.789.101 -m comment --comment #DDNSIP -j ACCEPT

Die Kette wird mit Parameter -A (Append) automatisch bei der ersten ausführung angehängt. Nicht zu vergessen ist, das Script ausführbar machen:

chmod +x /usr/bin/allow_myhost.sh

Die Quellen IP-Adresse wird automatisch alle 15 Minuten aufgelöst. Die iptables-Kette erlaubt das UDP Protokoll, dieses beispielsweise einem IP-Telefon ermöglicht mit der PBX zu kommunizieren. Die Regel kann beliebig angepasst werden, wobei die Kommentar option –comment vorhanden sein muss.

Für die kontinuierliche Aktualisierung erstellt man ein Cron-Job:

*/15 * * * * root /usr/bin/allow_myhost.sh >/dev/null 2>&1

Dieser Beitrag ist auch auf gist donkey/allow_myhost.md

Amerkung

iptables ist ein Userspace-Programm zur Konfiguration der Tabellen (tables), die durch die Firewall im Linux-Kernel (bestehend aus einer Reihe von Netfilter-Modulen) bereitgestellt werden. Diese Tabellen enthalten Ketten (chains) und Regeln (rules). Verschiedene Programme werden gegenwärtig für unterschiedliche Protokolle verwendet; iptables beschränkt sich auf IPv4, für IPv6 gibt es ip6tables, für ARP ist es arptables, und mit ebtables gibt es eine Sonderkomponente für Ethernet-Frames.

Da iptables erweiterte Systemprivilegien benötigt, muss es als root ausgeführt werden. Auf den meisten Linux-Systemen ist iptables als /usr/sbin/iptables installiert. Dokumentation ist in den Manpages mittels man iptables einsehbar, sofern installiert.

Der Begriff iptables wird auch oft verwendet, um ausschließlich die Kernel-Komponenten zu beschreiben. x_tables ist der Name des Kernelmoduls, der den gemeinsamen Code aller vier Module (v4, v6, arp und eb) trägt, und das API für iptables-Erweiterungen bereitstellt. Folglich ist mit Xtables oft die gesamte Firewall-Infrastruktur gemeint.

Wie hilfreich war dieser Beitrag?

Klicke auf die Sterne um zu bewerten!

Durchschnittliche Bewertung 5 / 5. Anzahl Bewertungen: 2

Bisher keine Bewertungen! Sei der Erste, der diesen Beitrag bewertet.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert