[gelöst] iptables -A auf eigene Chains geht nicht

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
Benutzeravatar
feldmaus
Beiträge: 1308
Registriert: 14.06.2005 23:13:22
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Deutschland

[gelöst] iptables -A auf eigene Chains geht nicht

Beitrag von feldmaus » 05.05.2008 08:34:31

Guten morgen,

mein System ist Debian Etch mit Kernel 2.6..25 von kernel.org.

Das Problem ist, dass ich keine Rules an meine eigenen Chains 'extin' und 'extout'
anhängen kann,

Code: Alles auswählen

wes-nic:~/bin# iptables -A extout -m state --state INVALID -j DROP
iptables: No chain/target/match by that name
Hat Jemand ne Idee wo der Fehler liegen könnte ?

Folgende Module sind geladen,

Code: Alles auswählen

wes-nic:~/bin# lsmod
Module                  Size  Used by
ipt_ah                  2688  0
ipt_MASQUERADE          4736  0
xt_tcpudp               4224  0
iptable_nat             8464  0
nf_nat                 21528  2 ipt_MASQUERADE,iptable_nat
nf_conntrack_ipv4      19472  3 iptable_nat,nf_nat
nf_conntrack           67312  4 ipt_MASQUERADE,iptable_nat,nf_nat,nf_conntrack_ipv4
ipv6                  276552  8
ppdev                  10120  0
lp                     13828  0
fan                     7048  0
iptable_filter          4608  1
ip_tables              20880  2 iptable_nat,iptable_filter
x_tables               24584  5 ipt_ah,ipt_MASQUERADE,xt_tcpudp,iptable_nat,ip_tables
usb_storage            89408  0
sbp2                   25356  0
loop                   19204  0
usbhid                 33248  0
pcmcia                 41496  0
firmware_class         11392  1 pcmcia
joydev                 13824  0
8139cp                 24704  0
firewire_ohci          20224  0
parport_pc             38568  1
parport                41136  3 ppdev,lp,parport_pc
yenta_socket           27916  2
rsrc_nonstatic         12544  1 yenta_socket
pcmcia_core            42916  3 pcmcia,yenta_socket,rsrc_nonstatic
ohci1394               33204  0
ssb                    33412  0
8139too                29440  0
ieee1394               97144  2 sbp2,ohci1394
pcspkr                  4224  0
psmouse                42012  0
serio_raw               8068  0
snd_intel8x0           37288  1
snd_intel8x0m          19728  0
snd_ac97_codec        112984  2 snd_intel8x0,snd_intel8x0m
k8temp                  6784  0
ac97_bus                2816  1 snd_ac97_codec
ide_cd_mod             37920  0
shpchp                 34588  0
pci_hotplug            16528  1 shpchp
snd_pcm_oss            43040  0
snd_mixer_oss          17792  1 snd_pcm_oss
cdrom                  35880  1 ide_cd_mod
snd_pcm                83720  4 snd_intel8x0,snd_intel8x0m,snd_ac97_codec,snd_pcm_oss
snd_timer              25360  1 snd_pcm
snd_page_alloc         11536  3 snd_intel8x0,snd_intel8x0m,snd_pcm
ehci_hcd               35596  0
ohci_hcd               24068  0
battery                16136  0
container               5888  0
ac                      7560  0
i2c_nforce2             7808  0
i2c_core               27040  1 i2c_nforce2
thermal                22944  0
button                 10144  0
processor              44264  1 thermal
evdev                  13568  4
Meine Firewall sieht wie folgt aus,

Code: Alles auswählen

#! /bin/bash
#-----------------------------------------------------------
#Author: Markus Feldmann
#
# Filterregeln fuer IP-Packete
#
# Grundsaetzlicher Aufbau unseres Netzwerkes wird unten angezeigt.
# Die Pfeile geben die Richtung an von wo nach wo welche Verbindung ist,
# mit der Bezeichnung die auch in diesem Script verwendet wird.
#
# Das Skript kann wie folgt auferufen werden:
#       firewallDSL start
#
# Dieses Skript ist speziell fuer das Netzwerk Device welches
# sich uebers DSL Modem it dem Internet verbindet.
#
#
#
#                                   ext-fw
#               <-----------------------------------------------
#
#                                   int-fw
#               ------------------------------------------------>
#
#  feld-bert _____
#                 \
#                  \______<--LAN(ueber br0)__Feld-server__-->WAN(ueber ppp0)__
#                  /
# feld-drizzt ____/
#                   int-in                              extout
#       -------------------------------------->     ------------------->
#
#                   int-out                             extin
#       <--------------------------------------     <-------------------
#
#                  int-int-fw
# feld-bert   ------------------------------->\
#                                             |
# feld-driztt <-------------------------------/
#
#-------------------------------------------
# Grundeinstellungen und Variablen und Konstanten
#EXTIF=$LOGICAL
EXTIF=eth1
#-------------------------------------------
# Ausgabe des Scriptes beim starten mit veschiedenen Parametern.
case "$1" in
start)
    echo "Firewall wird gestartet!"
;;
stop)
    echo "Firewall wird runtergefahren!"
;;
*)
    echo "Benutze: $0 {start|stop}"
;;
esac
#-----------------------------------------------------------
# Regeln die immer gelten sollen!
#
# Loeschen bestimmter Regeln
iptables -t nat -F POSTROUTING
iptables -F extout
iptables -D OUTPUT -o "$EXTIF" -j extout
iptables -X extout
iptables -F extin
iptables -D INPUT -i "$EXTIF" -j extin
iptables -X extin
#-----------------------------------------------------------
# Firewall herunterfahren
#-----------------------------------------------------------
case "$1" in
stop)
# Nichts
;;
#-----------------------------------------------------------
# Firewall hochfahren
#-----------------------------------------------------------
start)
# Eigene Chains erstellen - Externes Interface
iptables -N extin               # von Internet in feld-server
iptables -N extout              # von feld-server ins internet
# Erstmal alles verbieten
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#Erlaube alle lokale Pakete
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
#Verteilung der Pakete auf die Chains
iptables -A INPUT -i "$EXTIF" -j extin
iptables -A OUTPUT -o "$EXTIF" -j extout
# Pakete mit entsprechendem Status als DROPED oder ACCEPTED behandeln
iptables -A extout -m state --state INVALID -j DROP
iptables -A extout -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A extin -m state --state INVALID -j DROP
iptables -A extin -m state --state ESTABLISHED,RELATED -j ACCEPT

# Erlaube DHCP (68) nur innerhalb LAN
#iptables -A extin -p tcp --dport 67:68 -j ACCEPT
#iptables -A extin -p udp --dport 67:68 -j ACCEPT
iptables -A extout -p tcp --dport 67:68 -j ACCEPT
iptables -A extout -p udp --dport 67:68 -j ACCEPT

# Erlaube NTP Zeitsynchronisation
#iptables -A extin -p tcp --dport 123 -j ACCEPT
#iptables -A extin -p udp --dport 123 -j ACCEPT
iptables -A extout -p tcp --dport 123 -j ACCEPT
iptables -A extout -p udp --dport 123 -j ACCEPT

# Erlaube Chrony Zeitsynchronisation
#iptables -A extin -p tcp --dport 37 -j ACCEPT
#iptables -A extin -p udp --dport 37 -j ACCEPT
#iptables -A extin -p tcp --dport 323 -j ACCEPT
#iptables -A extin -p udp --dport 323 -j ACCEPT
iptables -A extout -p tcp --dport 37 -j ACCEPT
iptables -A extout -p udp --dport 37 -j ACCEPT
iptables -A extout -p tcp --dport 323 -j ACCEPT
iptables -A extout -p udp --dport 323 -j ACCEPT

# Erlaube DNS (53)
iptables -A extout -p tcp --dport 53 -j ACCEPT
iptables -A extout -p udp --dport 53 -j ACCEPT
#iptables -A extin -p tcp --sport 53 --dport 1024:65535 -j ACCEPT
#iptables -A extin -p udp --sport 53 --dport 1024:65535 -j ACCEPT

#               FTP  -  FTP  -  FTP
# FTP - Kontrollverbinduung
iptables -A extin -p tcp --dport 1024:65535 --sport 21 ! --syn -j ACCEPT
iptables -A extout -p tcp --sport 1024:65535 --dport 21 -j ACCEPT
# FTP - aktives FTP
iptables -A extin -p tcp --dport 1024:65535 --sport 20 -j ACCEPT
iptables -A extout -p tcp --sport 1024:65535 --dport 20 ! --syn -j ACCEPT
# FTP - passives FTP
iptables -A extin -p tcp --dport 1024:65535 --sport 1024:65535 ! --syn -j ACCEPTiptables -A extout -p tcp --sport 1024:65535 --dport 1024:65535 -j ACCEPT

# Erlaube HTTP ( 80 )
#iptables -A extin -p tcp --dport 80 -j ACCEPT
iptables -A extout -p tcp --dport 80 -j ACCEPT
#iptables -A extin -p tcp --dport 8080 -j ACCEPT
iptables -A extout -p tcp --dport 8080 -j ACCEPT

# Erlaube HTTPS ( 443 )
#iptables -A extin -p tcp --dport 443 -j ACCEPT
iptables -A extout -p tcp --dport 443 -j ACCEPT

#Skype
iptables -A extout -p udp --sport 50945 -j ACCEPT

# Erlaube SMTP ( 25 )
iptables -A extout -p tcp --dport 25 -j ACCEPT
#iptables -A extin -p tcp --dport 25 -j ACCEPT

# Erlaube POP3 ( 110 )
#iptables -A extin -p tcp --dport 110 -j ACCEPT
#iptables -A extin -p tcp --dport 995 -j ACCEPT
#iptables -A extin -p tcp --dport 465 -j ACCEPT
iptables -A extout -p tcp --dport 110 -j ACCEPT
iptables -A extout -p tcp --dport 995 -j ACCEPT
iptables -A extout -p tcp --dport 465 -j ACCEPT

# Erlaube POP3S ( 995 )
iptables -A extout -p tcp --dport 995 -j ACCEPT
#iptables -A extin -p tcp --dport 995 -j ACCEPT

# Erlaube IMAP ( 143 )
iptables -A extout -p tcp --dport 143 -j ACCEPT
#iptables -A extin -p tcp --dport 143 -j ACCEPT

# Erlaube IMAPS ( 993 )
iptables -A extout -p tcp --dport 993 -j ACCEPT
#iptables -A extin -p tcp --dport 993 -j ACCEPT

# Erlaube NNTP ( 119 )
iptables -A extout -p tcp --dport 119 -j ACCEPT
#iptables -A extin -p tcp --dport 119 -j ACCEPT

# Erlaube NNTPS ( 563 )
iptables -A extout -p tcp --dport 636 -j ACCEPT
#iptables -A extin -p tcp --dport 636 -j ACCEPT

# Erlaube GOPHER und WAIS ( 70 und 210 )
iptables -A extout -p tcp --dport 210 -j ACCEPT

# Erlaube ICMP  ( ... )
#iptables -A extin -p icmp -j ACCEPT
iptables -A extout -p icmp -j ACCEPT

# IRC
iptables -A extout -p tcp --dport 6667:6668 -j ACCEPT

# Alle Packete des lokalen Netzes muessen maskiert werden.
echo 1 >/proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o "$EXTIF" -j MASQUERADE
;;
esac
Grüße Markus
Zuletzt geändert von feldmaus am 05.05.2008 15:25:29, insgesamt 1-mal geändert.

Benutzeravatar
feldmaus
Beiträge: 1308
Registriert: 14.06.2005 23:13:22
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Deutschland

Re: iptables -A auf eigene Chains geht nicht

Beitrag von feldmaus » 05.05.2008 08:47:30

Im Vergleich zum Kernel 2.6.18 wurde das Modul 'xt_state' nicht geladen.

Hier ein Auszug von <lsmod> auf dem gleichen Rechner mit Kernel 2.6.18,

Code: Alles auswählen

...
ipt_MASQUERADE          8320  1
xt_tcpudp               7936  31
xt_state                6912  4
iptable_nat            12292  1
ip_nat                 24492  2 ipt_MASQUERADE,iptable_nat
ip_conntrack           63140  4 ipt_MASQUERADE,xt_state,iptable_nat,ip_nat
nfnetlink              11976  2 ip_nat,ip_conntrack
...
ipv6                  286048  8
iptable_filter          7808  1
ip_tables              25576  2 iptable_nat,iptable_filter
x_tables               22024  5 ipt_MASQUERADE,xt_tcpudp,xt_state,iptable_nat,ip_tables
...

Benutzeravatar
feldmaus
Beiträge: 1308
Registriert: 14.06.2005 23:13:22
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Deutschland

Re: iptables -A auf eigene Chains geht nicht

Beitrag von feldmaus » 05.05.2008 15:25:06

Das Problem lag an dem Modul 'xt_state'.

Antworten