PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : iptables - ausgesperrt?



Freekazonid
24.02.04, 17:23
ich habe bisher ein iptables script, das nur masq aktiviert und einige sachen freigibt & forwardet; default also accepted. die sache gefällt mir nciht.

nun wollte ich mir ein neues basteln. das 2. script das einige ports und einige forwards ausführt soll erhalten bleiben, darum gehts auch net. die basis ist das hier:


internes_netz=eth1
inet=ppp0

iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -Z

iptables -P OUTPUT DROP
iptables -P INPUT DROP
iptables -P FORWARD DROP


iptables -N icmpfilter
iptables -N udpfilter
iptables -N server
iptables -N forwardfilter

# Verkehr fuer Internes Netz freischalten

iptables -I INPUT 1 -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
iptables -I OUTPUT 1 -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
iptables -I INPUT 2 -i $internes_netz -j ACCEPT
iptables -I OUTPUT 2 -o $internes_netz -j ACCEPT


# Regeln um DoS/Spoofing zu verhindern
iptables -A INPUT -i $inet -s 127.0.0.0/8 -m limit -j LOG --log-prefix "DoS-oder Spoof-Versuch"
iptables -A INPUT -i $inet -s 127.0.0.0/8 -j DROP
iptables -A INPUT -i $inet -s 192.168.0.0/16 -m limit -j LOG --log-prefix "DoS-oder Spoof-Versuch"
iptables -A INPUT -i $inet -s 192.168.0.0/16 -j DROP
iptables -A FORWARD -i $inet -s 127.0.0.0/8 -m limit -j LOG --log-prefix "DoS-oder Spoof-Versuch"
iptables -A FORWARD -i $inet -s 127.0.0.0/8 -j DROP
iptables -A FORWARD -i $inet -s 192.168.0.0/16 -m limit -j LOG --log-prefix "DoS-oder Spoof-Versuch"
iptables -A FORWARD -i $inet -s 192.168.0.0/16 -j DROP

# Versteckte Portscan oder Syn Flooding verhindern
iptables -A INPUT -i $inet -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j server

# Fragmentierte Pakete verwerfen
#iptables -I INPUT 3 -f -i $inet -j DROP


# ICMP Packets an die ICMP chain weitergeben
iptables -A INPUT -p icmp -j icmpfilter
iptables -A OUTPUT -p icmp -j icmpfilter
iptables -A FORWARD -p icmp -j icmpfilter

# UDP Packets an die UDP chain weitergeben
iptables -A INPUT -p udp -j udpfilter
iptables -A OUTPUT -p udp -j udpfilter
iptables -A FORWARD -p udp -j udpfilter

# Einige TCP Packets an die chain weitergeben
iptables -A INPUT -i $inet -p tcp -j server
iptables -A FORWARD -p tcp -j forwardfilter

# Hier wird der ausgehende lokale Datenverkehr freigeschaltet #
iptables -A OUTPUT -o $inet -j ACCEPT

# Kommende ICMP Packets
iptables -I icmpfilter 1 -i $inet -p icmp --icmp-type time-exceeded -m limit --limit 1/s -j ACCEPT
iptables -I icmpfilter 2 -i $inet -p icmp --icmp-type echo-reply -m limit --limit 1/s -j ACCEPT
iptables -I icmpfilter 3 -i $inet -p icmp --icmp-type destination-unreachable -m limit --limit 1/s -j ACCEPT

# Abgehende ICMP Packets
iptables -I icmpfilter 4 -o $inet -p icmp --icmp-type echo-request -j ACCEPT

# Rest droppen
iptables -I icmpfilter 5 -j DROP

# UDP Filter
iptables -A udpfilter -m state --state ESTABLISHED,RELATED -j ACCEPT
#iptables -A udpfilter -i ! $inet -m state --state NEW -j ACCEPT
iptables -A udpfilter -j DROP


iptables -A forwardfilter -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A forwardfilter -m state --state NEW -i ! $inet -j ACCEPT
iptables -A forwardfilter -j DROP


######### MASQUERADE & FORWARD

iptables -A forwardfilter -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A forwardfilter -m state --state NEW -i ! $inet -j ACCEPT
iptables -A forwardfilter -j DROP

echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o $inet -j MASQUERADE

## OLD
#iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmt
#iptables -A INPUT -i ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT

## NEW
iptables -A forwardfilter -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A forwardfilter -m state --state NEW -i ! $inet -j ACCEPT
iptables -A forwardfilter -j DROP


## Server Kram
iptables -A server -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A server -m state --state NEW -i ! $inet -j ACCEPT
iptables -A server -j DROP


######### FTP SERVER ###################
iptablesp_conntrack_ftp
iptables -A PREROUTING -t nat -p tcp -i ppp0 --dport 21 -j DNAT --to-destination 192.168.0.195

iptables -L

exit 0





nachdem ich das ausgeführt hab, hab ich direkt mal getestet was auf einem client hinter dem nat ging
- pingen ausserhalb des lans: ging net

- surfen - ging, ein portscan von http://www.dslreports.com/scan brachte positive ergebnisse

- emailing ging nichts

naja es sah ja erstmal ganz gut aus, also wollte ich mit um POP3 und SMTP kümmern. doch dann ging garnix mehr. ich konnte vom Client aus NIX mehr machen, die ssh verbindung zum router brach ab. ich war also ausgesperrt

nun meine frage: dieses script als basis, was muss ich machen damit

1. das ich nicht mehr ausgesperrt werde ( wieso wurde der rechner sogar local ausgesperrt? local ist doch expliziet alles freigegeben )
2. alle clients im web surfen können, alle SMTP und POP3 nutzen können

ich denke die fehler/veränderung können nicht so gross sein, nur irgendwas stimmt da nicht und ich finde nicht raus was :)

danke


/e falls das falsch verstanden wurde: ich habe 2 scripte: das eine schaltet masq ein, das andere aktiviert einige ports ( q3 DNAT -> server, bnet DNAT -> winclient, edonkey -> gnu/linux client ). das alte grundscript so halt so aus


/sbin/iptables -F


# Masquerading wird aktiviert
echo "1" > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
/sbin/iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmt
/sbin/iptables -A INPUT -i ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT


############## ftp #####################
modprobe ip_conntrack_ftp
iptables -A PREROUTING -t nat -p tcp -i ppp0 --dport 21 -j DNAT --to-destination 192.168.0.195
#########################################

# Ports forwarden

/home/fr34k/pls #PORT FORWARDING
/home/fr34k/bnet #DONT NEED


und dieses soll halt durch das obige ersetzt werden um mehr sicherheit zu bringen; allerdings funzt das halt net so :) hoffe ist etwas klarer geworden

cane
25.02.04, 07:29
Wozu das Rad neu erfinden;)

Bau Dir erst einmal ein Script mittels Harrys Iptables Generator (http://www.harry.homelinux.org) zusammen. Das ist gut kommentiert und deine Erweiterungen kannst Du ja bei Bedarf auch noch einpflegen.

mfg
cane

Freekazonid
25.02.04, 13:27
danke, das sieht ganz gut aus, denke werde ich auch benutzen. nur bleibt halt der lernfaktor auf der strecke ;)

Bubble
26.02.04, 00:06
Hm, sorry, ich wühl mich da jetzt nicht durch zu später Stunde ... aber ein kleiner Tipp: Wenn du ein iptables-Skript ausführst und es geht danach etwas nicht so wie du willst (irgendwas ist nicht mehr erreichbar, oder, wie in deinem Falle, es geht gar nichts mehr), dann führe das Ding nicht als Skript aus sondern Befehl für Befehl ... teste nach jedem Befehl was immer du testen willst und schau wo du hängen bleibst, dann hast du den Übeltäter überführt.

Du musst natürlich nur darauf achten zu Beginn die Policies auf ACCEPT zu setzen. Ganz am Ende setzt du sie dann auf DROP, und wenn danach etwas nicht mehr geht weißt du dass die Policy verantwortlich ist und deine Anforderung daher noch von keiner Regel erfasst wurde ... du brauchst dann also ne neue Regel.

Dauert zwar und ist mühsam ... aber, glaub mir, der Lerneffekt ist vorhanden ;).
Bubble

Freekazonid
26.02.04, 10:50
wenn ich mal zeit habe werde ich das vielleicht mal amchen, sonst verbleibe ich erstmal bei dem harry script. ich hab da aber ein problem

wenn ich erst das harry script lade, dann das ports script, sind die ports nicht richtig freigeschaltet bzw werden nicht korrekt forgewardet. nehm ich aber mein altes script zuerst und dann das ports script geht alles

was macht das harry script das das ports script nicht sauber arbeitet? wenns hilft ich hängs mal an: ( der anhang ist das portsscript, also das script was die ports weiterleitet, nicht das harry script!)




#pfad zu iptables
ipt="/sbin/iptables"

#internet-device
idev="ppp0"

#lnet= locales netz, 0/24 steht für 0-255
lnet="192.168.0.0/24"

#lsip= locale server ip, 1/32 steht für GENAU eine ip, hier 1
lsip="192.168.0.1/32"

#einige dienste sind für einen windows rechner freigegeben (emule&co.)
wsip=192.168.0.135

#erlaube für neue, bestehende und verwandte den transfer (anfragen)
otrack="NEW,ESTABLISHED,RELATED"

#erlaube nur für bestehende oder verwandte den transfer (antworten)
itrack="ESTABLISHED,RELATED"

#ports
hpt="1024:65535"


############### edonkey#################
####################################
$ipt -v -A FORWARD -m state --state $otrack -p tcp -s $wsip --sport $hpt -d 0/0
--dport 4661 -j ACCEPT
$ipt -v -A FORWARD -m state --state $itrack -p tcp -s 0/0 --sport 4661 -d $wsi
p --dport $hpt -j ACCEPT

$ipt -v -A FORWARD -m state --state $otrack -p tcp -s $wsip --sport $hpt -d 0/0
--dport 4662 -j ACCEPT
$ipt -v -A FORWARD -m state --state $itrack -p tcp -s 0/0 --sport 4662 -d $wsi
p --dport $hpt -j ACCEPT

$ipt -v -A FORWARD -m state --state $otrack -p udp -s $wsip --sport $hpt -d 0/0
--dport 4665 -j ACCEPT
$ipt -v -A FORWARD -m state --state $itrack -p udp -s 0/0 --sport 4665 -d $wsi
p --dport $hpt -j ACCEPT

$ipt -v -A FORWARD -m state --state $otrack -p udp -s $wsip --sport $hpt -d 0/0
--dport 4672 -j ACCEPT
$ipt -v -A FORWARD -m state --state $itrack -p udp -s 0/0 --sport 4672 -d $wsi
p --dport $hpt -j ACCEPT


$ipt -A PREROUTING -t nat -p tcp -s 0/0 --sport $hpt -i $idev --dport 4662 -j D
NAT --to $wsip
$ipt -A PREROUTING -t nat -p udp -s 0/0 --sport $hpt -i $idev --dport 4672 -j D
NAT --to $wsip

$ipt -A PREROUTING -t nat -p tcp -s 0/0 --sport 4662 -i $idev --dport $hpt -j D
NAT --to $wsip
$ipt -A PREROUTING -t nat -p udp -s 0/0 --sport 4672 -i $idev --dport $hpt -j D
NAT --to $wsip



$ipt -v -A FORWARD -m state --state $otrack -p tcp -s 0/0 --sport $hpt -d $wsi
p --dport 4662 -j ACCEPT
$ipt -v -A FORWARD -m state --state $itrack -p tcp -s $wsip --sport 4662 -d 0/0
--dport $hpt -j ACCEPT
$ipt -v -A FORWARD -m state --state $otrack -p udp -s 0/0 --sport $hpt -d $wsi
p --dport 4672 -j ACCEPT
$ipt -v -A FORWARD -m state --state $itrack -p udp -s $wsip --sport 4672 -d 0/0
--dport $hpt -j ACCEPT

################################################## ###############
#q3 server
################################################## ###############
wsip=192.168.0.195

$ipt -v -A FORWARD -m state --state $otrack -p tcp -s $wsip --sport $hpt -d 0/0
--dport 27960 -j ACCEPT
$ipt -v -A FORWARD -m state --state $itrack -p tcp -s 0/0 --sport 27960 -d $ws
ip --dport $hpt -j ACCEPT

$ipt -v -A FORWARD -m state --state $otrack -p tcp -s $wsip --sport $hpt -d 0/0
--dport 27960 -j ACCEPT
$ipt -v -A FORWARD -m state --state $itrack -p tcp -s 0/0 --sport 27960 -d $ws
ip --dport $hpt -j ACCEPT

$ipt -v -A FORWARD -m state --state $otrack -p udp -s $wsip --sport $hpt -d 0/0
--dport 27960 -j ACCEPT
$ipt -v -A FORWARD -m state --state $itrack -p udp -s 0/0 --sport 27960 -d $ws
ip --dport $hpt -j ACCEPT

$ipt -v -A FORWARD -m state --state $otrack -p udp -s $wsip --sport $hpt -d 0/0
--dport 27960 -j ACCEPT
$ipt -v -A FORWARD -m state --state $itrack -p udp -s 0/0 --sport 27960 -d $ws
ip --dport $hpt -j ACCEPT


$ipt -A PREROUTING -t nat -p tcp -s 0/0 --sport $hpt -i $idev --dport 27960 -j
DNAT --to $wsip
$ipt -A PREROUTING -t nat -p udp -s 0/0 --sport $hpt -i $idev --dport 27960 -j
DNAT --to $wsip


$ipt -A PREROUTING -t nat -p tcp -s 0/0 --sport 27960 -i $idev --dport $hpt -j
DNAT --to $wsip
$ipt -A PREROUTING -t nat -p udp -s 0/0 --sport 27960 -i $idev --dport $hpt -j
DNAT --to $wsip


$ipt -v -A FORWARD -m state --state $otrack -p tcp -s 0/0 --sport $hpt -d $wsi
p --dport 27960 -j ACCEPT
$ipt -v -A FORWARD -m state --state $itrack -p tcp -s $wsip --sport 27960 -d 0/0
--dport $hpt -j ACCEPT
$ipt -v -A FORWARD -m state --state $otrack -p udp -s 0/0 --sport $hpt -d $wsi
p --dport 27960 -j ACCEPT
$ipt -v -A FORWARD -m state --state $itrack -p udp -s $wsip --sport 27960 -d 0/0
--dport $hpt -j ACCEPT


################################################## ##############
#bnet
################################################## ###############

wsip=192.168.0.232

$ipt -v -A FORWARD -m state --state $otrack -p tcp -s $wsip --sport $hpt -d 0/0
--dport 6112 -j ACCEPT
$ipt -v -A FORWARD -m state --state $itrack -p tcp -s 0/0 --sport 6112 -d $wsi
p --dport $hpt -j ACCEPT

$ipt -v -A FORWARD -m state --state $otrack -p tcp -s $wsip --sport $hpt -d 0/0
--dport 6112 -j ACCEPT
$ipt -v -A FORWARD -m state --state $itrack -p tcp -s 0/0 --sport 6112 -d $wsi
p --dport $hpt -j ACCEPT

$ipt -v -A FORWARD -m state --state $otrack -p udp -s $wsip --sport $hpt -d 0/0
--dport 6112 -j ACCEPT
$ipt -v -A FORWARD -m state --state $itrack -p udp -s 0/0 --sport 6112 -d $wsi
p --dport $hpt -j ACCEPT

$ipt -v -A FORWARD -m state --state $otrack -p udp -s $wsip --sport $hpt -d 0/0
$ipt -v -A FORWARD -m state --state $itrack -p udp -s 0/0 --sport 6112 -d $wsi
p --dport $hpt -j ACCEPT

$ipt -A PREROUTING -t nat -p tcp -s 0/0 --sport $hpt -i $idev --dport 6112 -j D
NAT --to $wsip
$ipt -A PREROUTING -t nat -p udp -s 0/0 --sport $hpt -i $idev --dport 6112 -j D
NAT --to $wsip


$ipt -A PREROUTING -t nat -p tcp -s 0/0 --sport 6112 -i $idev --dport $hpt -j D
NAT --to $wsip
$ipt -A PREROUTING -t nat -p udp -s 0/0 --sport 6112 -i $idev --dport $hpt -j D
NAT --to $wsip


$ipt -v -A FORWARD -m state --state $otrack -p tcp -s 0/0 --sport $hpt -d $wsi
p --dport 6112 -j ACCEPT
$ipt -v -A FORWARD -m state --state $itrack -p tcp -s $wsip --sport 6112 -d 0/0
--dport $hpt -j ACCEPT
$ipt -v -A FORWARD -m state --state $otrack -p udp -s 0/0 --sport $hpt -d $wsi
p --dport 6112 -j ACCEPT
$ipt -v -A FORWARD -m state --state $itrack -p udp -s $wsip --sport 6112 -d 0/0
--dport $hpt -j ACCEPT



################################################## ##############
#teamspeak
################################################## ###############

wsip=192.168.0.232

$ipt -v -A FORWARD -m state --state $otrack -p tcp -s $wsip --sport $hpt -d 0/0
--dport 8767 -j ACCEPT
$ipt -v -A FORWARD -m state --state $itrack -p tcp -s 0/0 --sport 8767 -d $wsi
p --dport $hpt -j ACCEPT

$ipt -v -A FORWARD -m state --state $otrack -p tcp -s $wsip --sport $hpt -d 0/0
--dport 8767 -j ACCEPT
$ipt -v -A FORWARD -m state --state $itrack -p tcp -s 0/0 --sport 8767 -d $wsi
p --dport $hpt -j ACCEPT

$ipt -v -A FORWARD -m state --state $otrack -p udp -s $wsip --sport $hpt -d 0/0
--dport 8767 -j ACCEPT
$ipt -v -A FORWARD -m state --state $itrack -p udp -s 0/0 --sport 8767 -d $wsi
p --dport $hpt -j ACCEPT

$ipt -v -A FORWARD -m state --state $otrack -p udp -s $wsip --sport $hpt -d 0/0
--dport 8767 -j ACCEPT
$ipt -v -A FORWARD -m state --state $itrack -p udp -s 0/0 --sport 8767 -d $wsi
p --dport $hpt -j ACCEPT


$ipt -A PREROUTING -t nat -p tcp -s 0/0 --sport $hpt -i $idev --dport 8767 -j D
NAT --to $wsip
$ipt -A PREROUTING -t nat -p udp -s 0/0 --sport $hpt -i $idev --dport 8767 -j D
NAT --to $wsip


$ipt -A PREROUTING -t nat -p tcp -s 0/0 --sport 8767 -i $idev --dport $hpt -j D
NAT --to $wsip
$ipt -A PREROUTING -t nat -p udp -s 0/0 --sport 8767 -i $idev --dport $hpt -j D
NAT --to $wsip



$ipt -v -A FORWARD -m state --state $otrack -p tcp -s 0/0 --sport $hpt -d $wsi
p --dport 8767 -j ACCEPT
$ipt -v -A FORWARD -m state --state $itrack -p tcp -s $wsip --sport 8767 -d 0/0
--dport $hpt -j ACCEPT
$ipt -v -A FORWARD -m state --state $otrack -p udp -s 0/0 --sport $hpt -d $wsi
p --dport 8767 -j ACCEPT
$ipt -v -A FORWARD -m state --state $itrack -p udp -s $wsip --sport 8767 -d 0/0
--dport $hpt -j ACCEPT

#################### ftp #####################
modprobe ip_conntrack_ftp
iptables -A PREROUTING -t nat -p tcp -i ppp0 --dport 21 -j DNAT --to-destination
192.168.0.195
iptables -A PREROUTING -t nat -p tcp -i ppp0 --dport 20 -j DNAT --to-destination
192.168.0.195
################### ftp #####################

Jinto
27.02.04, 01:45
Was genau wird denn angeblich falsch weitergeleitet?
Das angehängt Skript sieht nicht aus, wie das aus Harry's Generator.

Freekazonid
27.02.04, 13:07
Original geschrieben von Jinto
Was genau wird denn angeblich falsch weitergeleitet?
Das angehängt Skript sieht nicht aus, wie das aus Harry's Generator.

ups war blöd formuliert, habs verbessert; das script ist natürlich net das harry script, das ist das script das die ports conft

was nicht geht? naja zb wird im ports script der bnet port nach *232 weitergeleitet. wenn ich harrys script vorstelle kann ich dann am rechner *232 keine bnet at's oder cg erstellen ; wenn ich mein altes script dranhänge( 1. post, das kleine... ) gehts aber.

Jinto
27.02.04, 23:38
Was erwartest du, wenn du mehrere Skript nacheinander ausführst?
Das Skript von Harry kennt die Befehle aus den beiden Dateien (die 2 letzten Zeilen deines kleinen Skripts) nicht bzw. weiss nicht, dass es diese Dateien aufrufen soll.

HTH

PS: IMO ist es ziemlich schlecht, mehrere FW Skripte nacheinander aufzurufen, ohne zu wissen wie die sich gegenseitig beeinflussen (und das tun sie in deinem Fall)

Freekazonid
15.03.04, 14:59
Original geschrieben von Jinto
Was erwartest du, wenn du mehrere Skript nacheinander ausführst?
Das Skript von Harry kennt die Befehle aus den beiden Dateien (die 2 letzten Zeilen deines kleinen Skripts) nicht bzw. weiss nicht, dass es diese Dateien aufrufen soll.

HTH

PS: IMO ist es ziemlich schlecht, mehrere FW Skripte nacheinander aufzurufen, ohne zu wissen wie die sich gegenseitig beeinflussen (und das tun sie in deinem Fall)

ich verstehe das problem nicht. ob die befehle nun im harry script oder in einem anderen sind ist völlig egal und hat nichts mit dem hier geschilderten problem zu tun.
ob ich die befehle nun in das harry script schreibe oder in einem anderen was nach dem harry script aufgerufen wird ist unerherblich.

naja weiss noch jemand was zu dem problem? würde gern harry's script verwenden aber so gehts halt net, da das port script danach nicht funkioniert