Iptables

Aus Synology Wiki
Wechseln zu: Navigation, Suche

Was ist iptables ?

iptables ist ein System von Tabellen, Regeln und modular ladbaren Mechanismen die dazu dienen den Fluss von TCP/IP-Paketen durch das System zu regeln. Man kann damit z.B. im einfachsten Fall die Pakete einer bestimmten IP-Adresse verwerfen, man kann bestimmte Dienste sperren (z.B. kein FTP) oder auch komplexere Verarbeitungen wie die Zuweisung neuer Adressen und Port-Nummern um eine andere Identität zu simulieren (siehe NAT). Mit iptabels können Schutzmechanismen realisiert werden weshalb viele Linux basierte Router diesen Mechanismus verwenden. Auch unser Diskstation verwendet iptables meist ohne dass man als normaler Anwender sich Gedanken darüber machen muss.

Die zwei iptables der Diskstation

iptables besteht aus Teilen die im Kern des Betriebssystems arbeiten und ggf. als Kern-Modul geladen werden. Diese Module liegen zusammen mit allen anderen Kern-Modulen in /lib/modules. Zusätzlich gibt es noch Teile die im User-Space arbeiten. Applikationen für die Kommandozeile wie

/sbin/iptables
/sbin/iptables-save
/sbin/iptables-restore
/sbin/iptables-multi

und Zusatzfunktionen die bei Bedarf aus Bibliotheken dynamisch gelinkt werden können:

/lib/iptables/libipt_icmp.so
/lib/iptables/libipt_REDIRECT.so
/lib/iptables/libxt_multiport.so
/lib/iptables/libxt_udp.so
/lib/iptables/libxt_tcp.so
/lib/iptables/libxt_state.so
/lib/iptables/libxt_standard.so

Den Teil außerhalb des Kerns gibt es auch als Optware über ipkg ladbar. Er enthält die Applikationen und Bibliotheken die bereits vorhanden sind nochmal ggf. in erweiterten Versionen und bringt neue mit. Die Applikation iptables-xml konvertiert mit iptables-save erstellte Dumps der iptables Regelsätze in das XML-Format.

/opt/bin/iptables-xml

Die Optware Version enthält auch mehr Bibliotheken mit Zusatzfunktionen wie z.B. die Unterstützung von NAT ...

/opt/libexec/xtables/libipt_SNAT.so
/opt/libexec/xtables/libipt_DNAT.so
/opt/libexec/xtables/libipt_MASQUERADE.so

... und neben diverse andere Erweiterungen ...

/opt/libexec/xtables/libipt_icmp.so
/opt/libexec/xtables/libipt_REDIRECT.so
/opt/libexec/xtables/libipt_LOG.so
/opt/libexec/xtables/libipt_SAME.so
/opt/libexec/xtables/libipt_addrtype.so
/opt/libexec/xtables/libipt_MIRROR.so
/opt/libexec/xtables/libipt_REJECT.so
/opt/libexec/xtables/libipt_ah.so
/opt/libexec/xtables/libipt_ECN.so
/opt/libexec/xtables/libipt_ecn.so
/opt/libexec/xtables/libipt_ULOG.so
/opt/libexec/xtables/libipt_TTL.so
/opt/libexec/xtables/libipt_ttl.so
/opt/libexec/xtables/libipt_NETMAP.so
/opt/libexec/xtables/libipt_CLUSTERIP.so
/opt/libexec/xtables/libipt_unclean.so
/opt/libexec/xtables/libipt_realm.so

... auch Bibliotheken für die Unterstützung der Version 6 von TCP/IP.

/opt/libexec/xtables/libip6t_dst.so
/opt/libexec/xtables/libip6t_ah.so
/opt/libexec/xtables/libip6t_LOG.so
/opt/libexec/xtables/libip6t_mh.so
/opt/libexec/xtables/libip6t_eui64.so
/opt/libexec/xtables/libip6t_ipv6header.so
/opt/libexec/xtables/libip6t_icmp6.so
/opt/libexec/xtables/libip6t_HL.so
/opt/libexec/xtables/libip6t_hl.so
/opt/libexec/xtables/libip6t_rt.so
/opt/libexec/xtables/libip6t_hbh.so
/opt/libexec/xtables/libip6t_REJECT.so
/opt/libexec/xtables/libip6t_frag.so

Verwendung in der Diskstation

Das Startup-Script

/usr/syno/etc.defaults/rc.d/S01iptables.sh

läd beim Hochfahren der Diskstation abhängig von der Kern-Release die nötigen Kern-Module für iptables. Danach werden mit

/sbin/iptables-restore </etc/firewall_rules.dump

die in der Datei firewall_rules.dump gespeicherten Regeln geladen. Da iptables-restore hier ohne die Option --noflush aufgerufen wird, werden alle zuvor geladenen Regeln gelöscht. Startup-Scripte die vor diesem Script laufen und Regeln laden sind daher unwirksam. Beim Herunterfahren werden die Regeln mit

/sbin/iptables -F

gelöscht aber nicht vorher mit iptables-save >/etc/firewall_rules.dump gespeichert. Das bedeutet dass Änderungen an den Regeln die im laufenden Betrieb vorgenommen wurden verloren gehen. Die Datei /etc/firewall_rules.dump wird sogar beim Herunterfahren in der stop-Regel des Scripts gelöscht. Beim Start wird vor dem laden der Regeln

/usr/syno/bin/firewalltool -dump_rules /etc/firewall /etc/firewall_rules.dump

aufgerufen. Wer eine Dokumentation zu diesem Programm hat bitte in Synology_Toolset einfügen. Der Aufruf von firewalltool --help liefert leider nur den wenig nützlichen Hinweis auf das Copyright (c) 2003-2010 Synology Inc. All rights reserved.. Anhand der Verwendung im Startup-Script kann man aber vermuten dass firewalltool dafür zuständig ist die in /etc/firewall/ hinterlegten Firewall-Regeln beim Start der Diskstation in iptables-Regeln zu übersetzen die danach mit iptables-restore zur Ausführung geladen werden.