IP-Tablesproblem

Gemeinsam ins Internet mit Firewall und Proxy.
Antworten
Benutzeravatar
lx
Beiträge: 351
Registriert: 29.05.2002 20:01:00
Kontaktdaten:

IP-Tablesproblem

Beitrag von lx » 21.12.2002 16:23:44

Hallo Leute ich habe es immer noch nicht geschafft.
Mit IP-tables wollte ich von aussen einen internen Webserver
erreichen. Bischen SSH freischalten sonst eigentlich nix.

Ich habe eine Regel die eine Verbindung von aussen zum Webserver weiterleiten soll.
iptables -t nat -A PREROUTING -i $IFACE_EXT -p tcp --sport $UNPRIVPORTS -d $IPADDR --dport 80 -j DNAT --to-destination $WEB

Bei dieser Regel wird immer --to-destination angemeckert. Warum?

Benutzeravatar
lx
Beiträge: 351
Registriert: 29.05.2002 20:01:00
Kontaktdaten:

Beitrag von lx » 21.12.2002 17:20:01

Ich habe hier mal das komplette Skript drinnen.
Wenn einer einen Fehler findet sagt bescheid.
Mir fallen schon die Haare aus. Es ist schon einiges
auskommentiert die Optionen sollen später wieder rein.

#!/bin/sh

# Schnittstelle zum lokalen Netzwerk
IFACE_INT="eth1"

# Internetschnittstelle
IFACE_EXT="eth0"

# Loopback device
IFACE_LO="lo"

# Interne IP-Adresse
IPADDR_INT="172.16.163.1"

# Externe IP-Adresse
IPADDR="192.168.10.6"

# Webserver
WEBSERVER="172.16.163.147"

# Loopback-Addresse
LOOPBACK="127.0.0.0/8"

# KLASSE A: private Netze
CLASS_A="10.0.0.0/8"

# KLASSE B: private Netze
CLASS_B="172.16.0.0/12"

# KLASSE C: private Netze
CLASS_C="192.168.0.0/16"

# Broadcast-Absender
BROADCAST_SRC="0.0.0.0"

# Broadcast-Empfaenger
BROADCAST_DEST="255.255.255.255"

# privilegierte Prots
PRIVPORTS="0:1023"

# unpriviligierte Ports
UNPRIVPORTS="1024:65535"

# (TCP) X-WindowS
XWINDOW_PORTS="6000:6063"

# SSH_Ports
SSH_Ports="1024:65535"

# SSH_SERVER on
SSH_SERVER="1"

# ConnectionTracking on
CONNECTION_TRACKING="1"

# Nameserver
NAMESERVER="192.54.46.105"

# Broadcastadresse des Subnetzes
SUBNET_BROADCAST="192.168.10.255"

# Netzwerkadresse
SUBNET_BASE="192.168.10.0"

function StartFirewall() {
# ***************************
# ***************************
# * *
# * 3. Starten der Firewall *
# * *
# ***************************
# ***************************
# Einschalten des Routings
echo "1" > /proc/sys/net/ipv4/ip_forward

#*****************************************************************************
# ************
# * Policies *
# ************
# Vorbestehende Regeln loeschen
iptables --flush
iptables -t nat --flush
iptables -t mangle --flush

# Keine Einschraenkungen fuer das Loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Voreinstellung: Alle Pakete verwerfen
iptables --policy INPUT DROP
iptables --policy OUTPUT DROP
iptables --policy FORWARD DROP

iptables -t nat --policy PREROUTING DROP
iptables -t nat --policy OUTPUT DROP
iptables -t nat --policy POSTROUTING DROP

iptables -t mangle --policy PREROUTING DROP
iptables -t mangle --policy OUTPUT DROP

# *****************************************************************************
# *********
# * INPUT *
# *********
# Ankommende Pakete ablehnen, die vorgeblich von der IP-Adresse unseres
# externen Interfaces kommen.
iptables -A INPUT -i $IFACE_EXT -s $IPADDR -j DROP

# Pakete abweisen, wenn Absender im privaten Klasse-A-Bereich ist
iptables -A INPUT -i $IFACE_EXT -s $CLASS_A -j DROP

# Pakete abweisen, wenn Absender im privaten Klasse-B-Bereich ist
iptables -A INPUT -i $IFACE_EXT -s $CLASS_B -j DROP

# Pakete abweisen, wenn Absender im privaten Klasse-C-Bereich ist
iptables -A INPUT -i $IFACE_EXT -s $CLASS_C -j DROP

# Pakete vom Loopback verwerfen
iptables -A INPUT -i $IFACE_LO -s $LOOPBACK -j DROP

# Fehlerhafte Broadcast-Pakete verwerfen und aufzeichnen
iptables -A INPUT -i $IFACE_EXT -s $BROADCAST_DEST -j LOG
iptables -A INPUT -i $IFACE_EXT -s $BROADCAST_DEST -j DROP

iptables -A INPUT -i $IFACE_EXT -d $BROADCAST_SRC -j LOG
iptables -A INPUT -i $IFACE_EXT -d $BROADCAST_SRC -j DROP

# Gerichtete Broadcasts sperren
# (Kartierung von Netzwerken, Denial-of-Service-Angriffe)
iptables -A INPUT -i $IFACE_EXT -d $SUBNET_BASE -j DROP
iptables -A INPUT -i $IFACE_EXT -d $SUBNET_BROADCAST -j DROP

# X-Window: Aufbau einer Verbindung zu einem fremden Server sperren
iptables -A INPUT -i $IFACE_EXT -p tcp --syn --destination-port $XWINDOW_PORTS -j DROP

# ************
# * INCOMING *
# ************
# Auf den SSH-Server kann zugegriffen werden
# ******************************************
if [ "$SSH_SERVER" = "1" ]; then
if [ "CONNECTION_TRACKING" = "1" ]; then
iptables -A INPUT -i $IFACE_EXT -p tcp --sport $SSH_PORTS -d $IPADDR --dport 22 -m state --state NEW -j ACCEPT
fi

iptables -A INPUT -i $IFACE_EXT -p tcp --sport $SSH_PORTS -d $IPADDR --dport 22 -j ACCEPT

iptables -A OUTPUT -o $IFACE_EXT -p tcp ! --syn -s $IPADDR --sport 22 --dport $SSH_PORT -j ACCEPT
fi

# **************
# * FORWARDING *
# **************

# Adressumsetzung einer Anfrage zum internen Webserver
iptables -t nat -A PREROUTING -i $IFACE_EXT -p tcp --sport $UNPRIVPORTS -d $IPADDR --dport 80 -j DNAT --to-destination $WEB

# ******************************************
# * Forwarding zum internen Webserver *
# ******************************************

iptables -A FORWARD -i $IFACE_EXT -o $IFACE_INT -p tcp --sport $UNPRIVPORTS -d $WEBSERVER --dport 80 -m state --state NEW -j ACCEPT

iptables -A FORWARD -i $IFACE_INT -o $IFACE_EXT -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -i $IFACE_EXT -o $IFACE_INT -m state --state ESTABLISHED,RELATED -j ACCEPT

# ******************
# * Ausgangsregeln *
# ******************

# Ins lokale Netzwerk: Alles erlauben
iptables -A OUTPUT -s $IPADDR_INT -d $WEBSERVER -j ACCEPT

# Ans Loopback: Alles erlauben
iptables -A OUTPUT -o $IFACE_LO -j ACCEPT

# Ins Internet: Alles erlauben
iptables -A OUTPUT -o $IFACE_EXT -j ACCEPT

function StopFirewall() {
# **********************************
# **********************************
# * *
# * 2. HERUNTERFAHREN DER FIREWALL *
# * *
# **********************************
# **********************************

# Ausschalten des Routing
echo "0" > /proc/sys/net/ipv4/ip_forward

# Default-Policies: Alles rein und raus, kein Forwarding mehr
iptables -P INPUT ACCEPT
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# Loeschen aller Regeln
iptables -F

# Loeschen aller zusaezlichen Ketten
iptables -X

}

# **********************
# **********************
# * *
# * START-STOP-SKRIPT *
# * *
# **********************
# **********************

case "$1" in
start)
echo -n "Starting firewall: iptables"
StartFirewall
;;

stop)
echo -n "Stopping firewall: iptables"
StopFirewall
;;

force-reload|restart)
$0 stop
$0 start
;;

*)
echo "Usage: /etc/init.d/fwneu1 {start|stop|restart|force-reload}"
exit 1
;;
esac

Antworten