Antwort: Re: Antwort: [Lugbz-list] iptables

Hmm... wenn du nat und mangle Tabellen angreifst mußt du schon einen guten
Grund dafür haben ....und sollte üblicherweise nicht gemacht haben. Wie
gesagt: das hat eigentlich alles nichts mehr mit dem üblichen Portfiltern
zu tun.

Um das genauer zu erklären:

- die "filter"-Tabelle ist eigentlich jene die wir für
Paketfilter-Firewalls verwenden (sie hat die INPUT, OUTPUT und FORWARD
Hooks)
- die "nat"-Tabelle ist jene welche wir für snat, dnat und masquerading
verwenden um Pakete zu verändern, die an uns vorbeikommen (mit wiederum ein
paar Hooks wie PREROUTING, POSTROUTING und FORWARD)
- die "mangle"-Tabelle ist wieder für Routing-Änderungen zuständig (habe
aber selbst noch nichts sinnvolles damit gemacht...)

Und natürlich müssen dir deine Ports 67/68 als "offen" erscheinen sonst
könntest du sie ja nicht nutzen! Unterm Strich soll der Paketfilter
Zugriffe nur auf bestimmte Quellen, Ziele und Dienste eingrenzen.

Aber vielleicht willst du etwas anderes erreichen?

Grüße,

Günther

Günther Mair
Internet Engineer

ENERGIS Italia GmbH
Pfarrhofstrasse 60/A
I-39100 Bozen (BZ)
Tel.: +39 0471 254000
Fax: +39 0471 251617
Email: guenther.mair(a)energis.it
Web: http://www.energis.it

                    luigi
                    <in3dzz(a)gmx.de> An: lugbz-list(a)lugbz.org, guenther.mair(a)energis.it
                    Gesendet von: Kopie:
                    lugbz-list-admin Thema: Re: Antwort: [Lugbz-list] iptables
                    @lugbz.org
                                                                                                                                   
                    22.05.2003 16:19
                    Bitte antworten
                    an lugbz-list
                                                                                                                                   
Hallo Günther!
Ich habe jetzt dein Skript ausprobiert. Wenn ich es um die Einträge
ergänze, die auch die nat und mangle Tabellen sperren, zeigt sich
derselbe Effekt:
1) Ein Erneuern der Adresse wird nicht mehr erlaubt
2) Der X-Server lässt keine weitere Applikationen starten.
3) Andereseits, wenn ich nat und mangle nicht explizit sperre, dann
gelten sie als offen (ACCEPT), dann geht ja alles ungehindert
drüber.

Ich habe etwas weitergelesen und bin auf "Hooks" gekommen. Es
scheint so zu sein, dass es im Kernel 5 vordefinierte Lauschstellen
für jeweilige Netfilter-Module gibt. Wenn dem so ist, kann es sein,
dass Tabellen, die mit meinem Vorhaben nichts am Hut haben sollten,
dennoch Pakete sperren?

Ich habe den dhcp-Verkehr mit Ethereal mitgeschnitten. Die drei
Dateien sind sehr kurz, deshalb erlaube ich mir diese beizulegen.
Bis bald
Luigi

Hallo!

Ich bin zwar kein Experte in Sachen DHCP und habe auch nicht so
schnell die Möglichkeit etwas zu testen, aber grundsätzlich kann
ich folgendes Sagen:

- mangle/nat Tabellen sind üblicherweise nur dazu da um
"Sonderfälle" zu handhaben und IP-Header im Ein-/Ausgang zu
verändern; sie dürften keinen Einfluß auf DHCP nehmen

- X-Windows Desktop-Manager (wie viele andere
Client/Server-Anwendungen) benutzen Unix- oder TCP/IP-Sockets um
mit anderen Anwendungen zu kommunizieren; das macht die
Verwendung von "X-Clients" (oder nennen wir sie zum besseren
Verständnis "Network Clients" oder "Thin Clients") über xdmcp
erst möglich

- wenn die lokale Anmeldung nach Einsatz der FW-Tools nicht
läuft, würde das bedeueten, dass dies bei SuSE über eine
öffentliche IP-Adresse erfolgt (loopback ist ja frei).... Sinn
und Unsinn sei dahingestellt; es gibt bei SuSE allerdings
irgendwo eine Konfigurationsdatei wo dies eingestellt wird.....
/etc/sysconfig/xdm oder /etc/X11/xdm oder irgendsowas.... bin mir
nicht mehr 100%ig sicher in der Sache (versuch evtl. kurz ein
"lsof -i" dann siehst du welche Anwendung sich lokal an welchen
Port bindet)

Im Anhang die abgekürzte Version des gleichen Skripts unter
Verwendung von stateful connections. Ich habe das mit DHCP noch
nicht getestet, aber denke schon, dass das conntrack-Modul die
Sachen erkennt. Nimm bei Nicht-Funktionieren evtl. die
state-Befehle weg, im Log sollte sich schon einiges finden.
Ausserdem ist es vielleicht nützlich (und korrekter) die
LOG-Befehle einzuschränken sonst ist dein Server bei viel Verkehr
womöglich innerhalb ein paar Stunden mit einem großen Logfile
zugestopft.

Grüße,

Günther

(See attached file: fwtest.txt)

Günther Mair
Internet Engineer

ENERGIS Italia GmbH
Pfarrhofstrasse 60/A
I-39100 Bozen (BZ)
Tel.: +39 0471 254000
Fax: +39 0471 251617
Email: guenther.mair(a)energis.it
Web: http://www.energis.it

                    luigi
                    <in3dzz(a)gmx.de> An: liste lugbz
<lugbz-list(a)lugbz.org> Gesendet von: Kopie:
                    lugbz-list-admin Thema: [Lugbz-list]
iptables @lugbz.org

                    22.05.2003 11:44
                    Bitte antworten
                    an lugbz-list

Hallo Liste!
Kämpfe gerade mit iptables. Dabei habe ich zunächste versucht
dhcp für das LAN frei zu bekommen.
ref: SuSE-8.1, iptables 1.2.7a-17.
Hier das Skript

#!/bin/bash
#/root/fw-ipt/fw-start
# 0.1 - 14.5.2003

# Dieses Skript entfernt alle Regeln, Ketten und auch die
Module. # Es funktioniert bestimmt.
/root/fw-ipt/fw-stop

#################################Module
laden###########################################################
modprobe ip_tables
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ipt_state
modprobe iptable_nat
modprobe ipt_MASQUERADE
echo "fw-start -- Module geladen."

#################################
IPT=/usr/sbin/iptables

LAN_INTERFACE="eth0" #
Interface zum LAN
LOOPBACK_INTERFACE="lo" #
Loopback-Interface

LAN_IPADDR="192.168.1.1" # Adresse des
Lan-Interfaces
LAN_ADDRESSES="192.168.1.0/24" #
LAN-Bereich" BROADCAST_SRC="0.0.0.0"
# Broadcast-Absender BROADCAST_DEST="255.255.255.255" #
Broadcast-Empfänger

#################################################################
#######################################

$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

$IPT -t nat -P PREROUTING DROP
$IPT -t nat -P OUTPUT ACCEPT
$IPT -t nat -P POSTROUTING ACCEPT

$IPT -t mangle -P PREROUTING DROP
$IPT -t mangle -P OUTPUT ACCEPT

#Loopback freischalten
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

#################################################################
#######################################

# DHCP

#source-address 0.0.0.0.68 dest-address 255.255.255.255.67
#dhcp-discover und dhcp-request benutzen das gleiche Muster
$IPT -A INPUT -i $LAN_INTERFACE -p udp -s $BROADCAST_SRC --sport
68 -d $BROADCAST_DEST --dport 67 -j ACCEPT

#source-address 192.168.1.1.67 dest-address 192.168.1.199.68
#dhcp-offer und dhcp-ack benutzen das gleiche Muster
$IPT -A OUTPUT -o $LAN_INTERFACE -p udp -s $LAN_IPADDR --sport 67
-d $LAN_ADDRESSES --dport 68 -j ACCEPT

#source-address 192.168.1.199.68 dest-address 192.168.1.1.67
#Freigeben oder erneuern benutzen diese Muster
$IPT -A INPUT -i $LAN_INTERFACE -p udp -s $LAN_ADDRESSES --sport
68 -d $LAN_IPADDR --dport 67 -j ACCEPT

$IPT -A OUTPUT -o $LAN_INTERFACE -j LOG
$IPT -A INPUT -i $LAN_INTERFACE -j LOG

exit 0

Wenn ich nat/POSTROUTING,OUTPUT und mangle/OUTPUT nicht auf
ACCEPT setze, dann kann ich vom W98-Client (ausführen -->
winipcgf --> aktualisieren) die Adresse nicht mehr aktualisieren.
Ein Überprüfen der /var/log/messages sagt dann
lintsz01 dhcpd: DHCPACK on 192.168.1.199 to 00:a0:24:ef:94:a1 via
eth0
lintsz01 dhcpd: send_packet: Operation not permitted

Ein Überwachen des Interfaces (tcpdump -i eth0 "udp[2:2] = 67 or
udp[2:2] = 68] zeigt, dass eine Anfrage zwar ankommt, aber keine
Antwort abgeht.

Und hier die Fragen
1. Warum muß ich nat/POSTROUTING,OUTPUT und mangle/OUTPUT auf
ACCEPT stellen?
2. Damit dhcp funktioniert sollte ich also entsprechende Regeln
auch für diese drei Ketten anfügen? Wie kann sowas aussehen?
3. Diese Einstellungen verhindern auch die Anmeldungen am KDE
bzw., wenn KDE bereits aktiv ist kann man keine neue Anwendung
aufrufen. Warum?

Danke für die Hilfe und bitte nicht laut lachen.....
Luigi

_______________________________________________
http://www.lugbz.org/mailman/listinfo/lugbz-list
LUGBZ is pcn.it-powered

(See attached file: dhcpaktualisieren)(See attached file: dhcpfreigeben)
(See attached file: dhcpdiscover)

dhcpaktualisieren.a (740 Bytes)

dhcpfreigeben.a (382 Bytes)

dhcpdiscover.a (1.42 KB)

Hallo G|nther!
Habe unter linuxguruz.org mehrere Beispiele angesehen. Die nat und mangle
Tabellen werde tatsdchlich niemals explizit gesperrt!!

Hmm... wenn du nat und mangle Tabellen angreifst mu_t du schon einen
guten
Grund daf|r haben ....und sollte |blicherweise nicht gemacht haben.

Ich habe das von diesem Buch kritiklos |bernommen.

Wie
gesagt: das hat eigentlich alles nichts mehr mit dem |blichen Portfil
tern
zu tun.

Um das genauer zu erkldren:

- die "filter"-Tabelle ist eigentlich jene die wir f|r
Paketfilter-Firewalls verwenden (sie hat die INPUT, OUTPUT und FORWARD
Hooks)
- die "nat"-Tabelle ist jene welche wir f|r snat, dnat und masqueradi
ng
verwenden um Pakete zu verdndern, die an uns vorbeikommen (mit wieder
um ein
paar Hooks wie PREROUTING, POSTROUTING und FORWARD)
- die "mangle"-Tabelle ist wieder f|r Routing-Dnderungen zustdndi
g (habe
aber selbst noch nichts sinnvolles damit gemacht...)

Und nat|rlich m|ssen dir deine Ports 67/68 als "offen" erscheinen s
onst
kvnntest du sie ja nicht nutzen! Unterm Strich soll der Paketfilter
Zugriffe nur auf bestimmte Quellen, Ziele und Dienste eingrenzen.

Aber vielleicht willst du etwas anderes erreichen?

Nein, es geht mir in erster Linie um den Umgang mit iptables. Dass es nicht
so funktioniert wie erwartet ist f|r mich indirekt ein Vorteil: Ich lerne da
noch etwas dazu.
Wie gesagt, in keinem der Beispiele wurden nat und mangle "gedropt", daf|r
wurde ein grundsdtzliches Sperren der filter Tabelle immer empfohlen.
Ich glaube, dass ich mich genau so verhalten werden.
Ein schvnes Wochenende auch andie Liste
Luigi