PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 100.mal iptables



darktr00per
21.09.02, 14:54
Das ist sicher schon mein zigster iptables Threat aber naja :)

Und zwar welche Ports muss ich öffnen wenn ich praktisch nur surfen will???

Wenn ich alles auf DROP stelle und masquerading aktiviere funktioniert trotzdem nichts!

Hat irgendwer vielleicht nen tipp?

Tocotac
21.09.02, 18:33
schau mal in /etc/services

darktr00per
21.09.02, 18:40
ja kenn ich aber hilft mir im bezug auf welchen port sol ich zum surfen nehmen auch nicht recht viel weiter!

Nvidia
21.09.02, 18:51
zum surfen brauchst du eigentlich nur port 80 öffnen !

Belkira
21.09.02, 19:00
Und zwar welche Ports muss ich öffnen wenn ich praktisch nur surfen will???
Destination Port 80 und zugehörige Antwortpakete (die können natürlich an beliebige unprivilegierte Ports >= 1024 gehen).

Wenn ich alles auf DROP stelle und masquerading aktiviere funktioniert trotzdem nichts!
IP Forwarding und die FORWARD Chain nicht vergessen. Denn wie die FORWARD Chain Pakete verwirft, bringt Dir das Masquerading garnichts.

darktr00per
21.09.02, 19:02
was heisst ich soll FORWARD komplett erlauben lassen nur input und output droppen lassen oder?

geronet
21.09.02, 19:08
Ich geb dir mal nen guten Tipp:

Stell alles auf ALLOW und hau dein Masquerading rein, dann geht auch dein surfen.

Wenn du ne richtige Firewall willst dann lies erstmal ein paar netfilter-Howtos bevor solche dummen Fragen kommen. TCP/IP Kenntnisse wären auch nicht schlecht.

Grüsse, Stefan

Belkira
21.09.02, 19:11
Willst Du auf dem Server surfen oder auf Deinem Client?

Wenn Du auf dem Server surfen willst, brauchst Du kein Masquerading. Passende INPUT und OUPUT Regeln reichten.

Willst Du vom Client über den Server mit Masquerading surfen, brauchst Du passende FORWARD Regeln. INPUT und OUPUT können dann DROP sein, um den Server zu schützen.

Elektronator
21.09.02, 20:18
Den DNS (meist Port 50) nicht vergessen!

geronet
21.09.02, 20:47
DNS ist Port 53 du Dussel!

Zampano
21.09.02, 22:57
Hi!
Hab das bei mir gemäß dem firewall-howto gemacht. Das Script das darin gebaut wird sorgt dafür, dass niemand von sich aus deinen Rechner erreichen kann. Es kann nur auf Anfragen deinerseits geantwortet werden. Eine Überprüfung z.B. auf der Seite "https://grc.com/x/ne.dll?bh0bkyd2" (Probe my ports) zeigt, dass alle Ports dabei dicht gemacht werden, aber das Surfen ist in keiner Hinsicht eingeschränkt.
Ich leg das Script mal bei. Ist natürlich auch nicht perfekt (wie im Howto auch erklärt) aber wenn Du von einem Desktop-PC aus surfts ohne das ein Server dazwischen ist so dass Du dir über forwarding und masquerading und so was Gedanken machen müsstest bestimmt kein schlechter Anfang.

Tocotac
22.09.02, 02:03
kleine frage nebenbei...:

wenn ich
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --sport 53 -j ACCEPT
eingebe, komme ich keine antworten vom dns-server.
ich habe auch in der named.conf query-source address * port 53 zu stehen.

benötigt der dns noch andere ports?

bernie
22.09.02, 02:11
Hi,

@geronet
Schlecht aufgelegt? Von einem Moderator hätte ich mir ein bisschen mehr professionalität erwartet.

@Tocotac
nein, das sollt reichen, dir ist aber bewusst, dass INPUT nur für die Maschine gilt auf der das eingestellt wird oder? Wenn die Clients einen externen DNS fragen brauchst du die FORWARD Chain. Wenn Sie den Server fragen auf dem deine Firewall läuft solltest du es vielleicht noch in der OUTPUT Chain erlauben. Zur Sicherheit kannst du noch Port 53/TCP aufmachen, das wird für grössere DNS-Antworten und Zone-Transfers benötigt.

am besten du erläuterst mal deinen Netzaufbau :)

Ciao, Bernie

Tocotac
22.09.02, 03:00
hier erstmal die firewall:


#!/bin/sh
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc
modprobe ip_nat_ftp
modprobe ip_nat_irc

iptables -t nat -F
iptables -F

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

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

iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -p udp -j ACCEPT
iptables -A INPUT -p udp -i eth0 --dport 53 -j ACCEPT
iptables -A INPUT -p udp -i eth0 --sport 53 -j ACCEPT
iptables -A INPUT -p udp -i eth0 --dport 67 -j ACCEPT
iptables -A INPUT -p udp -i eth0 --sport 67 -j ACCEPT
iptables -A INPUT -p udp -i eth0 --dport 68 -j ACCEPT
iptables -A INPUT -p udp -i eth0 --sport 68 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --dport 53 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --sport 53 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --dport 67 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --sport 67 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --dport 68 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --sport 68 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --dport 139 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --sport 139 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --dport 3306 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --sport 3306 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --dport 10000 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --sport 10000 -j ACCEPT

iptables -A INPUT -p tcp --dport 20 -j ACCEPT
iptables -A INPUT -p tcp --sport 20 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --sport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --sport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --sport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 6667 -j ACCEPT
iptables -A INPUT -p tcp --sport 6667 -j ACCEPT
iptables -A INPUT -p tcp --dport 27005 -j ACCEPT
iptables -A INPUT -p tcp --sport 27005 -j ACCEPT
iptables -A INPUT -p tcp --dport 27015 -j ACCEPT
iptables -A INPUT -p tcp --sport 27015 -j ACCEPT

der netzaufbau:
http://mitglied.lycos.de/tocotac/netzaufbau.jpg

Windoofsklicker
22.09.02, 09:57
schlagt mich, aber die ports müssen doch nur für den output geöffnet werden, oder?
der router fragt doch beim dns auf port 53 an und erhält die antwort auf >1024!?

bei mir sind jedenfalls alle ports <1024 für input gesperrt und alles läuft prima :)
:confused:

darktr00per
22.09.02, 09:59
@geronet

Auf solche Antworten kann ich gut verzichten!



Wenn du ne richtige Firewall willst dann lies erstmal ein paar netfilter-Howtos bevor solche dummen Fragen kommen. TCP/IP Kenntnisse wären auch nicht schlecht.

geronet
22.09.02, 10:14
Tut mir leid darktrooper aber du hast hier schon öfters bewiesen dass du andere Leute deine Arbeit machen lassen willst. Ausserdem ist Elektronator mein Bruder ;)

>Und zwar welche Ports muss ich öffnen wenn ich praktisch nur surfen will???

Nun, da du eh eine dynamische IP-Adresse hast (was ich mal so denke) ist es von vornherein absolut unwarscheinlich angegriffen zu werden.. Hautpsache du hast keine Dienste wie netbios/samba, NFS oder telnet auf dem externen Gerät laufen.

Damit würde es diese Regeln schon tun:

# Maskiere ppp0
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

# Verbiete NEW und INVALID ankommende oder weitergeleitete
# Pakete von ppp0.
iptables -A INPUT -i ppp0 -m state --state NEW,INVALID -j DROP
iptables -A FORWARD -i ppp0 0 -m state --state NEW,INVALID -j DROP

# IP-Forwarding aktivieren
echo 1 > /proc/sys/net/ipv4/ip_forward

Grüsse, Stefan

LinuxNewbee
22.09.02, 11:06
Versuchs mal mit dem Skript (musst natürlich das interface anpassen)



INTERFACE=ppp0
iptables -F

iptables -N block
iptables -A block -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A block -m state --state NEW -i ! $INTERFACE -j ACCEPT
iptables -A block -j DROP

iptables -A INPUT -j block

#
# iptables -A FORWARD -j block
#
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

iptables -A POSTROUTING -t nat -o $INTERFACE -j MASQUERADE

echo 1 > /proc/sys/net/ipv4/ip_forward

Elektronator
22.09.02, 12:09
@Tocotac:

Für eine sichere Firewall solltest du die Policies zumindest von INPUT und FORWARD unbedingt auf REJECT oder DROP setzen!

Dann fügst du noch die entscheidenden Zeilen ein:

iptables -A INPUT -i ppp0 -m state --state ESTABLISHED, RELATED -j ACCEPT
iptables -A FORWARD -i ppp0 -m state --state ESTABLISHED, RELATED -j ACCEPT

Die kümmern sich automatisch um alle Pakete, die eine Antwort auf deine ausgehenden Pakete darstellen. Neue Verbindungen von aussen, die du nicht initiiert hast, werden damit nicht erlaubt. Du musst dann nur noch die Pakete von innen (FORWARD + INPUT) angeben, die du nach aussen lassen willst.

Was sich auch bewährt, ist, die Firewall-Regeln nach den Tables und der Richtung zu gliedern, für die sie gelten. Z.B. kann das so aussehen:

$FILTER -P INPUT DROP
$FILTER -P FORWARD DROP
$FILTER -P OUTPUT ACCEPT
-------------------------------------------------------------------
# TABLE FILTER
-------------------------------------------------------------------
# next create user defined chains
$FILTER -N lan-in
$FILTER -N inet-in
$FILTER -N out
$FILTER -N wan-in
-------------------------------------------------------------------
# chain INPUT
-------------------------------------------------------------------
# local-to-local packets are OK:
$FILTER -A INPUT --in-interface lo --jump ACCEPT
# packets from local interface
$FILTER -A INPUT --in-interface $LOCAL_IF --jump lan-in
# packets from extern interface
$FILTER -A INPUT --in-interface $EXT_IF --jump inet-in
# packets from extern WAN interface
$FILTER -A INPUT --in-interface $WAN_IF --jump wan-in
# log the rest (which packets?)
$FILTER -A INPUT --jump LOG --log-prefix "input: "

# INPUT, lan-in
# allow ssh
$FILTER -A lan-in --protocol tcp --destination-port ssh --jump ACCEPT

# INPUT, inet-in
# allow all packets related to existing connections
$FILTER -A inet-in --protocol tcp -m state --state ESTABLISHED,RELATED --jump ACCEPT
$FILTER -A inet-in --protocol udp -m state --state ESTABLISHED,RELATED --jump ACCEPT

# INPUT, wan-in
# allow ssh
$FILTER -A wan-in --protocol tcp --destination-port ssh --jump ACCEPT

-------------------------------------------------------------------
# chain FORWARD
-------------------------------------------------------------------

# all packets from the good interface
$FILTER -A FORWARD --in-interface $LOCAL_IF --jump out
# all packets from the bad interface
$FILTER -A FORWARD --in-interface $EXT_IF --jump inet-in
# all packets from the wan interface
$FILTER -A FORWARD --in-interface $WAN_IF --jump REJECT
# log the rest (which packets?)
$FILTER -A FORWARD --jump LOG --log-prefix "forward: "

# FORWARD, out
# allow ftp packets for admin
$FILTER -A out --source $ADMIN --protocol tcp --destination-port ftp --jump ACCEPT

-------------------------------------------------------------------
# TABLE NAT
-------------------------------------------------------------------

-------------------------------------------------------------------
# chain PREROUTING
-------------------------------------------------------------------

# alle lokalen http-Anfragen auf squid leiten, ausser für lokalen apache
$FILTER -t nat -A PREROUTING --source $LOCALNET --in-interface $LOCAL_IF --protocol tcp --destination ! $LOCAL_IP --destination-port http --jump REDIRECT --to-ports 8080

-------------------------------------------------------------------
# chain POSTROUTING
-------------------------------------------------------------------

# alle erlaubten Pakete vom lokalen Netz maskieren
$FILTER -t nat -A POSTROUTING --source $LOCALNET --jump MASQUERADE

-------------------------------------------------------------------
# TABLE MANGLE
-------------------------------------------------------------------
-------------------------------------------------------------------
# chain PREROUTING
-------------------------------------------------------------------

# Set priorities on various forwarded packets (there isn't much point in doing it on incoming packets).
$FILTER -t mangle -A PREROUTING --protocol tcp --destination-port ftp-data --jump TOS --set-tos 0x08
$FILTER -t mangle -A PREROUTING --protocol tcp --destination-port nntp --jump TOS --set-tos 0x02

-------------------------------------------------------------------
# chain OUTPUT
-------------------------------------------------------------------

# Set priorities on various outgoing packets (there isn't much point in doing it on incoming packets). $FILTER -t mangle -A OUTPUT --protocol tcp --destination-port http --jump TOS --set-tos 0x10
$FILTER -t mangle -A OUTPUT --protocol tcp --destination-port pop3 --jump TOS --set-tos 0x04


So, dass sollte eigentlich ein guter Einblick in meine Firewall sein, ich habe natürlich nur ein paar Regeln angegeben, nicht alle. Aber du solltest auch nur einen Überblick bekommen, anpassen musst du sie eh selbst.

Grüße Chris