Linux 14.989 Themen, 106.456 Beiträge

Problem Masquarading

kmanni / 3 Antworten / Flachansicht Nickles

Hallo!!

Also,ich möchte gerne mit meinen ICQ auch Daten empfangen,das Problem ist das mein Rechner hinter einen Suse 8.2 Server läuft.
Auf diesen habe ich Firewall Skript laufen(welches ich auch nur bekommen habe,von einen Linuxkenner und ich es nur an meine Programme angpasst habe).Es benutzt iptables und ip_nat_ftp.
Alles funktioniert wunderbar,ich kann sogar mit ICQ Dateien an andere Nutzer schicken.Nur der Datenempfang geht nicht.
Was ist eurer Meinung nach die beste Lösung???
Alles andere soll aber so bleiben,da auch noch andere Sachen auf dem Server laufen.

Hier ist mal mein fw Skript:

#!/bin/bash
#Setting up global variables
PROG=/usr/sbin/iptables
INT_DEV=eth1
EXT_DEV=eth0

case "$1" in
start)
echo "Starting Firewall"

#Flush and delete all Cains
$PROG -F
$PROG -t nat -F
$PROG -X

#Insert modules
/sbin/insmod ip_conntrack_ftp
/sbin/insmod ip_nat_ftp

#Setting Default Policy to DROP everything
$PROG -P INPUT DROP
$PROG -P OUTPUT DROP
$PROG -P FORWARD DROP

#Open loopback device
$PROG -A OUTPUT -o lo -j ACCEPT
$PROG -A INPUT -i lo -j ACCEPT

#Accept Connections from internal network
$PROG -A INPUT -i $INT_DEV -j ACCEPT
$PROG -A OUTPUT -o $INT_DEV -j ACCEPT

#FTP Server
$PROG -A INPUT -i $EXT_DEV -p tcp --dport 21 -j ACCEPT
$PROG -A OUTPUT -o $EXT_DEV -p tcp --sport 21 -j ACCEPT

#Wolfenstein TCP
$PROG -A INPUT -i $EXT_DEV -p tcp --dport 27960 -j ACCEPT
$PROG -A OUTPUT -o $EXT_DEV -p tcp --sport 27960 -j ACCEPT
$PROG -A INPUT -i $EXT_DEV -p tcp --dport 27952 -j ACCEPT
$PROG -A OUTPUT -o $EXT_DEV -p tcp --sport 27952 -j ACCEPT

#Battlefield 1942 UDP
$PROG -A INPUT -i $EXT_DEV -p udp --dport 14567 -j ACCEPT
$PROG -A OUTPUT -o $EXT_DEV -p udp --sport 14567 -j ACCEPT

$PROG -A INPUT -i $EXT_DEV -p tcp --dport 14567 -j ACCEPT
$PROG -A OUTPUT -o $EXT_DEV -p tcp --sport 14567 -j ACCEPT


#ICQ
$PROG -A INPUT -i $EXT_DEV -p tcp --dport 1024:27020 -j ACCEPT
$PROG -A OUTPUT -o $EXT_DEV -p tcp --sport 1024:27020 -j ACCEPT
$PROG -A INPUT -i $EXT_DEV -p udp --dport 3000 -j ACCEPT
$PROG -A OUTPUT -o $EXT_DEV -p udp --sport 3000 -j ACCEPT
$PROG -A INPUT -i $EXT_DEV -p tcp --dport 3834 -j ACCEPT
$PROG -A OUTPUT -o $EXT_DEV -p tcp --sport 3834 -j ACCEPT
$PROG -A INPUT -i $EXT_DEV -p udp --dport 3834 -j ACCEPT
$PROG -A OUTPUT -o $EXT_DEV -p udp --sport 3834 -j ACCEPT

#Dante Proxy
$PROG -A INPUT -i $EXT_DEV -p tcp --dport 3001 -j ACCEPT
$PROG -A OUTPUT -o $EXT_DEV -p udp --sport 3001 -j ACCEPT
$PROG -A INPUT -i $EXT_DEV -p tcp --dport 3001 -j ACCEPT
$PROG -A OUTPUT -o $EXT_DEV -p udp --sport 3001 -j ACCEPT

#Wolfenstein UDP
$PROG -A INPUT -i $EXT_DEV -p udp --dport 27960 -j ACCEPT
$PROG -A OUTPUT -o $EXT_DEV -p udp --sport 27960 -j ACCEPT
$PROG -A INPUT -i $EXT_DEV -p udp --dport 27952 -j ACCEPT
$PROG -A OUTPUT -o $EXT_DEV -p udp --sport 27952 -j ACCEPT

#Counter TCP
$PROG -A INPUT -i $EXT_DEV -p tcp --dport 27015 -j ACCEPT
$PROG -A OUTPUT -o $EXT_DEV -p tcp --sport 27015 -j ACCEPT
$PROG -A INPUT -i $EXT_DEV -p tcp --dport 27005 -j ACCEPT
$PROG -A OUTPUT -o $EXT_DEV -p tcp --sport 27005 -j ACCEPT

#Counter UDP
$PROG -A INPUT -i $EXT_DEV -p udp --dport 27015 -j ACCEPT
$PROG -A OUTPUT -o $EXT_DEV -p udp --sport 27015 -j ACCEPT
$PROG -A INPUT -i $EXT_DEV -p udp --dport 27005 -j ACCEPT
$PROG -A OUTPUT -o $EXT_DEV -p udp --sport 27005 -j ACCEPT

#HTTP Server
$PROG -A INPUT -i $EXT_DEV -p tcp --dport 80 -j ACCEPT
#$PROG -A OUTPUT -o $EXT_DEV -p tcp --sport 80 -j ACCEPT

#Forward to EXT_DEV
$PROG -A OUTPUT -o $EXT_DEV -j ACCEPT
$PROG -A FORWARD -o $EXT_DEV -j ACCEPT

#Forward to internal Net if Paket is Related
$PROG -A INPUT -i $EXT_DEV -m state --state ESTABLISHED,RELATED -j ACCEPT
$PROG -A FORWARD -i $EXT_DEV -m state --state ESTABLISHED,RELATED -j ACCEPT

#Switch on IP-FORWARDING
echo 1 > /proc/sys/net/ipv4/ip_forward

#Enable IP Masquerading
$PROG -t nat -A POSTROUTING -o $EXT_DEV -j MASQUERADE
;;

stop)
echo "Shutting down Firewall"
#Flush and delete all Cains
$PROG -F
$PROG -t nat -F
$PROG -X

#Setting Default Policy to DROP everything
$PROG -P INPUT ACCEPT
$PROG -P OUTPUT ACCEPT
$PROG -P FORWARD ACCEPT

#Remove modules
/sbin/rmmod ip_conntrack_ftp
/sbin/rmmod ip_nat_ftp

#Open loopback device
$PROG -A OUTPUT -o lo -j ACCEPT
$PROG -A INPUT -i lo -j ACCEPT

#Accept local pings on eth0
$PROG -A INPUT -i $INT_DEV -p ICMP -j ACCEPT
$PROG -A OUTPUT -o $INT_DEV -p ICMP -j ACCEPT

#Accept Connections to SSH Server from internal network
#$PROG -A INPUT -i $INT_DEV -p TCP --dport 65 -j ACCEPT
#$PROG -A OUTPUT -o $INT_DEV -p TCP --sport 65 -j ACCEPT
$PROG -A FORWARD -p TCP --sport 22 -j DROP

#Disabling IP-FORWARDING
echo 0 > /proc/sys/net/ipv4/ip_dynaddr
echo 0 > /proc/sys/net/ipv4/ip_forward
;;

esac
echo

#/root/dyn


Vielleicht hat ja einer von euch einen Vorschlag,wie ich am besten alle ICQ-Incomming-Files direkt zu meinen 2ten Rechner weiterleiten kann.

Danke im Vorraus

mfg Manfred

bei Antwort benachrichtigen
Klaus_T kmanni „Problem Masquarading“
Optionen

Du solltest das dringend ueberarbeiten.
1. Das externe Interface ist bei ISDN ippp0, bei Modem und DSL ppp0.
2. Du gibst z.B. tcp port 14567 in und out frei, darunter gibst du tcp port 1024:27020 frei. Darin ist aber port 14567 enthalten, also ist das ueberfluessig. Genauso mit udp.
3. Warum arbeitest du nicht stateful? Das ist doch der Vorteil von iptables. Dadurch waere das Script nur noch 1/5 so gross.
4. Du gibst die ports 1024 bis 27020 frei. Warum? Meine Buechse nutzt z.B. die Ports ueber 32000 und so machen es viele andere auch. Also, beschraenke nicht die Ports, erstelle das Script mit state, dann geht auch ICQ.
Die forwardregel sollte so aussehen:

$PROG -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$PROG -A FORWARD -m state --state NEW -i ! ppp0 -j ACCEPT

Bye, Klaus

bei Antwort benachrichtigen