PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : iptables: alle sperren und dann freigeben



boba
02.10.01, 11:11
Hallo,
ich bastel gerade an einem iptables script und würde gerne erst alle ports sperren und dan bestimmte freigeben
hier mein script


# Variable werden gesetzt
#
dev_i=eth0
dev_e=ppp0
ip_intern=192.168.1.1
ip_client1=192.168.1.2
ip_lan=192.168.1.0/24
local=127.0.0.1


# Alte Regeln werden bereinigt
iptables -F

# -PORTS---------------------------------------------------------
#
# setzt die policy der Chains auf drop
# iptables -P INPUT DROP
# iptables -P OUTPUT DROP

# dropped alle pakete in der INPUT Chain
#
iptables -A INPUT -i $dev_i -p tcp -j DROP
#
# Ports werden erlaubt
#
# INPUT CHAIN
#
iptables -A INPUT -i $dev_i -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i $dev_i -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -i $dev_i -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i $dev_i -p tcp --dport pop3 -j ACCEPT

# dropped alle pakete in der OUTPUT Chain
#
iptables -A OUTPUT -o $dev_i -p tcp -j DROP
#
# OUTPUT CHAIN
iptables -A OUTPUT -o $dev_i -p tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -o $dev_i -p tcp --sport 21 -j ACCEPT
iptables -A OUTPUT -o $dev_i -p tcp --sport 22 -j ACCEPT
iptables -A OUTPUT -o $dev_i -p tcp --dport pop3 -j ACCEPT

ich hab das erstmal lokal auf meinem rechner getestet, daher die interne ip.
mein problem ist wenn ich die policy auf drop setze und dann einzelne freigebe kann ich zb. auf keine Webseite mehr zugreifen,
ssh hat funktioniert!
wenn ich erst alle sperre gehts genauso wenig!
muss da evtl. den dns freigeben?
müssen bei der freigabe von ports in beiden chains einträge sein?, für evtl. rückfragen.
hab schon das forum durchsucht aber leider nicht kein passendes beispiel gefunden
hat jemand eine Idee

jduck01
02.10.01, 11:44
Hi,

also wenn du den Linuxrechner als Router/Gateway benutzt, dann musst du dir noch Forwarding und Routing von Iptablesrules erzeugen, heissen PREROUTING und POSTROUTING. Und du solltest auf jeden Fall noch den Port 53 TCP und UDP für DNS freigeben.

CU
JDuck001

boba
02.10.01, 13:24
irgentwie hab ich das problem wenn ich das script ausführe das ich garnich mehr rauskomme :(,
irgentwas wichtiges fehlt mir

please help

kehj
02.10.01, 16:59
Soweit ich das auf die Schnelle sehe, läßt du keine Verbindung zu deinen DNS-Servern zu.
Die laufen per UDP/TCP auf Port 53.
Versuch doch einfach mal direkt 'ne IP im Browser einzugeben:
www.heise.de (http://www.heise.de) ist z.B.: 193.99.144.71

Abgesehen davon halte ich es nicht für eine gute Idee, einfach irgendwelche Ports zu öffnen. Auf keinen Fall Port in der INPUT-Chain. Jeder kann auf deinen Rechner über die Ports zugreifen...

Ach ja, wenn du per TCP auf Port 80 zugreifst, dann wird die spätere Übertragung nicht mehr über Port 80 des Servers laufen. Client und Server handeln einen unpriviligierten Port aus, über den die Kommunikation läuft... D.h. du solltest für _ausgehende_ Verbindungen die Ports 1024: öffnen.

boba
02.10.01, 17:28
das war woll ein denkfehler, ich dachte da bei tcp verbindungen ja auch rückfragen sind das ich die ports dafür öffnen muss,
da die firewall eh aufm router ist brauch ich eh nach aussen nur ssh und ftp und quakeports,
wie ist das beim masqerading muss ich da explizit ports forwarden oder macht iptables das von selber?
das mit den tcp flags und logging hab ich leider nicht geschnallt.
-A FORWARD -m limit -j LOG
wenn ich eine LOG Chain anlege, wo packt er logfiles denn hin?