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
Linux 15.070 Themen, 107.540 Beiträge
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
Hallo!
Danke für die schnelle Antwort.Leider habe ich kein ISDN und auch kein DSL.Ich habe eine Standleitung mit einer festen IP,welche auf der eth0 auf dem Server eingetragen ist.Desweiteren laufen auf dem Server ein paar Dienste,welche Server bezogen sind,deshalb meine Frage,wenn ich deine Zeilen eintrage,werden dann nicht auch die Ports der Serverdienste an meinen 2ten Rechner geschickt??
Ich werde es aufjedenfall mal testen.
Meine 2te Frage ist,wie meinst du das mit State???Ich kenne mich mit Linux noch nicht so gut aus,könntest du mir das vielleicht nochmal erklären???
Das Problem ist halt,das ICQ bei Datenaustausch ein peer-2-peer Verbindung aufbaut,und das eben,soweit ich das mitbekommen habe,nicht in mein internes Netz weitergibt,leider ist es auch so das ICQ ja jedes mal die Prots ändert,zumindest beim Datenaustausch.So das,wenn ich ne Datei zu jemanden Schicke,er ja die externe Server-IP nimmt,bloss halt nicht hinein nicht geht.
Ich weiss ja nicht ob Dante ein Lösung des Problems wäre,doch irgendwie blick ich noch nicht bei der Konfiguration von Dante durch.
Nochmals Danke für die Hilfe!
mfg Manfred
Jo, wenn du eine Standleitung hast, ist eth0 natuerlich richtig.
Meine beiden Zeilen, die ich geschrieben habe, bedeuten nur, dass du etwas rausschicken kannst, aber keiner von ausserhalb auf deinen Rechner zugreifen kann, ausser dem, was du vorher freigegeben hast.
Und mit dem stateful: Ich dachte, du haettest das Script da selbst geschrieben und kennst dich damit aus. Wenn du natuerlich keinen Plan hast von iptables, ist das schlecht. Das einzigste, was ich dir raten kann:
Beschaeftige dich mit iptables. Am besten erstmal hier lesen einschliesslich der ganzen Links.
Bei mir ist das so: Meine Tochter hat auch ICQ und ich habe auf meinem Server den Squid-Proxy laufen. ICQ darf nur ueber den Squid gehen und es klappt hervorragend. Als Filterregel auf meinem Router sind nur die Zeilen von dort oben angegeben und natuerlich das forwarding.
Von Dante habe ich schon mal gehoert, ist glaube ich auch ein Proxy, oder? Leider kenne ich den nicht.
An deiner Stelle wuerde ich mich mit iptables beschaeftigen, vor allem da du ja einen HTTP-Server laufen hast. Allerdings tragen ICQ und die ganzen Spiele, die du freigegeben hast, nicht gerade zur Sicherheit bei.
Versuch erst einmal, bei den ICQ-Einstellungen die Ports zu aendern, also von 1024:27020 auf 1024:65535. Wie gesagt, ist auch nicht viel unsicherer als deine Sache. Und wenn du das hast, kannst du fast dein ganzes Script knicken, da du dort ja einige Sachen auf einen bestimmten Port beschraenkt hast, die dann natuerlich obsolet sind, da ja eh alles freigegeben ist. Uberdenke die ganze Sache noch einmal und ueberlege, ob du es nicht besser ueber einen Proxy machen willst.
Wenn du in English nicht so firm bist, kannst du auch hier lesen. Da gibt es einiges in deutsch ueber den Squid. Die englische Seite ist natuerlich besser und ausfuerhlicher.
Bye, Klaus
