PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frage zu iptables



Buster
06.01.04, 13:56
Hallo Leute

Ich habe hier bei mir folgendes Problem.

Router : eth0 - SDSL
eth1 - LAN

Zur Zeit habe ich eine Firewall mit iptables von Harry's Homelinuxseite und das Script funktioniert auch sehr gut. Jetzt möchte ich allerdings nicht nur eingehende Ports schließen sondern auch ausgehende bzw. geroutete.
Konkret möchte ich den Leuten aus dem LAN nur den Zugriff auf das Internet und sonst nichts geben.
Mit dem forhandenen Script kann ich zwar das gesamte Forwarding abschalten aber mehr schaff ich nicht.
Konkret brauche ich also ein Script welches alles dropt und nur das Internet aus dem LAN erreichbar macht und Port 22 an eth1 erreichbar macht. Alles andere rein wie raus soll gedroppt werden.
Hat jemand eine Ahnung oder besten Falls ein Script mit dem ich das machen kann?

usr
06.01.04, 15:00
Musste halt über die FORWARD chain Regeln. SSH über die INPUT chain am internen Interface. Wenn die Benutzer nur surfen dürfen, dann würde ich einfach nen Proxy aufsetzen, z.B. Squid. FORWARD chain einfach auf DROP als default policy setzen und die Benutzer müssen dann den Proxy verwenden.

PATE
06.01.04, 15:04
du muss die Policy ' ändern von ACCEPTauf DROP
zb. iptables -P FORWARD DROP
und dann nacheinander die port's freischalten die du brauchst. Ich würde alle Ketten auf
DROP stellen.

Buster
06.01.04, 15:21
Das ist der aktuelle Inhalt meines Firewallscripts und damit klappt es nicht.
Wie muss es richtig lauten?

@usr
Proxy geht leider nicht, weil ich zwar als Beispiel nur Port 80 genannt habe aber ich brauche es auch noch für andere Dienste.

# iptables-Modul
modprobe ip_tables
# Connection-Tracking-Module
modprobe ip_conntrack
# Das Modul ip_conntrack_irc ist erst bei Kerneln >= 2.4.19 verfuegbar
modprobe ip_conntrack_irc
modprobe ip_conntrack_ftp

# Tabelle flushen
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X

# Default-Policies setzen
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# Loopback-Netzwerk-Kommunikation zulassen
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

#Routing
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --dport 22 -j ACCEPT

luckyduck
06.01.04, 16:05
genug informationen die deine fragen beantworten findest du evt hier:

http://www.linuxguruz.com/iptables/

viele beispiele und generelle doc's sind dort verlinkt. also:

rtfm =read the fine manuals :)

Buster
07.01.04, 13:23
Danke für den besonders hilfreichen Vermerk auf Handbücher bzw. HowTos, leider hab ich beides schon stundenlang gelesen (auch die von deinem Link) aber ich werde aus dem FORWARDING einfach nicht schlau. Wie ich INPUT und OUTPUT Ketten verändere und was ich damit bezwecke ist klar aber mit der FORWARD Kette komme ich nicht klar.
# iptables -A FORWARD -p tcp --dport ! 80 -j DROP
Diese Zeile muß doch alles außer Port 80 (http) blocken oder nicht? Auf jeden Fall tut es das nicht. Alleine diese Zeile blockt schlicht den gesamten FORWARDING Traffic.
Bitte bitte etwas mehr Hilfe als der wirklich gut gemeinte Verweis auf HowTos. Ich hab jetzt zwei Tage lang gelesen und Google abgesucht aber ich finde immer nur Firewalls die von außen sicher sind aber von innerhalb des LANs alles rauslassen.
Weiß denn niemand Rat?

cane
07.01.04, 13:59
Mein Favorit zum Thema VPN ist "Linux Firewalls - Ein praktischer Einstieg" vom Oreilly Verlag.

Das beste ist das man das Buch kostenfrei saugen kann http://www.oreilly.de/openbook/

Ein dickes Lob an den Oreilly Verlag :D
Ich habs mir trotzdem gekauft!

Also schau im Kapitel Iptables noch mal nach der Syntax...

Ich schau mir Dein Script auch nochmal an...

mfg
cane

cane
07.01.04, 14:14
Deine Forward Policy ist DROP - es wird also alles verworfen...
Also muß Deine Forward Zeile lauten:

iptables -A -i LANInterfacederFirewall FORWARD -p tcp --sport 1024:65535 --dport 80 -j ACCEPT
iptables -A -i AußenInterfacederFirewall FORWARD -p tcp --sport 80 --dport 1024:65535 ! --syn -j ACCEPT

Wichtig ist die richtige Angabe der Interfaces (welches ist eth0 welches eth1?)
mit dem SYN Schalter verhinderst Du dass jemand aus dem Internet eine Verbindung zu Deinem Rechner aufbaut...

Probiers mal aus...

mfg
cane

# iptables-Modul
modprobe ip_tables
# Connection-Tracking-Module
modprobe ip_conntrack
# Das Modul ip_conntrack_irc ist erst bei Kerneln >= 2.4.19 verfuegbar
modprobe ip_conntrack_irc
modprobe ip_conntrack_ftp

# Tabelle flushen
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X

# Default-Policies setzen
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# Loopback-Netzwerk-Kommunikation zulassen
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

#Routing
iptables -A -i LANInterfacederFirewall FORWARD -p tcp --sport 1024:65535 --dport 80 -j ACCEPT
iptables -A -i AußenInterfacederFirewall FORWARD -p tcp --sport 80 --dport 1024:65535 ! --syn -j ACCEPT

Buster
07.01.04, 14:43
# iptables-Modul
modprobe ip_tables
# Connection-Tracking-Module
modprobe ip_conntrack
# Das Modul ip_conntrack_irc ist erst bei Kerneln >= 2.4.19 verfuegbar
modprobe ip_conntrack_irc
modprobe ip_conntrack_ftp

# Tabelle flushen
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X

# Default-Policies setzen
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# Loopback-Netzwerk-Kommunikation zulassen
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

#Routing
iptables -A -i eth1 FORWARD -p tcp --sport 1024:65535 --dport 80 -j ACCEPT
iptables -A -i eth0 FORWARD -p tcp --sport 80 --dport 1024:65535 ! --syn -j ACCEPT
iptables -A -i eth1 INPUT -p ssh -j ACCEPT

So sieht das jetzt bei mir aus aber leider geht es nicht :(

dilindam
07.01.04, 14:48
Hallo,


musst Du nicht noch ip_forward einschalten?

# Turn on IP forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
echo "IP Forwarding enabled..."



Versuch mal.

MfG Torsten

Buster
07.01.04, 14:51
# Routing
echo 1 > /proc/sys/net/ipv4/ip_forward 2> /dev/null

# Masquerading
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Diese beiden Zeilen habe ich aus dem alten Script von Harry übernommen und ans Ende des o.g. Scripts gesetzt, trotzdem geht es nicht.

dilindam
07.01.04, 15:32
Hi,

ich glaube nicht das Du POSTROUTING und MASQUERADE brauchst.
Untenstehendes Skript läuft auf nem Router. Bischen abgeändert,
weil dort 3 NIC's vorhanden sind.



#!/bin/sh

# eth0 Internet
DSL_NET="192.168.0.0/24"
DSL_INTERFACE="eth0"
DSL_IP="192.168.0.1"


# eth1 intern
INTERN_NET="192.168.1.0/24"
INTERN_INTERFACE="eth1"
INTERN_IP="192.168.1.1"

### Kernel-Tuning
echo "Kernel-Tuning"
echo 0 > /proc/sys/net/ipv4/tcp_ecn
echo "ECN disabled"
echo 1 > /proc/sys/net/ipv4/ip_forward
echo "IP-Forwarding enabled"
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo "TCP-Syncookies enabled"
echo "8182" > /proc/sys/net/ipv4/ip_conntrack_max

iptables -F FORWARD
iptables -F INPUT
iptables -F OUTPUT
echo "FLUSH FIREWALL"


iptables -P FORWARD DROP
iptables -P INPUT DROP
iptables -P OUTPUT DROP
echo "DROP FIREWALL"

iptables -A INPUT -d $DSL_IP -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -s $DSl_IP -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -d $INTERN_IP -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -s $INTERN_IP -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

iptables -A OUTPUT -o $INTERN_INTERFACE -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -i $INTERN_INTERFACE -p TCP --dport 80 -j ACCEPT

iptables -A INPUT -i $DSL_INTERFACE -p TCP --dport 22 -j ACCEPT

iptables -A INPUT -i $INTERN_INTERFACE -p TCP --dport 22 -j ACCEPT
### EOF


Wie sieht denn Dein Routing aus?


MfG Torsten

Buster
08.01.04, 09:16
# iptables-Modul
modprobe ip_tables
# Connection-Tracking-Module
modprobe ip_conntrack
# Das Modul ip_conntrack_irc ist erst bei Kerneln >= 2.4.19 verfuegbar
modprobe ip_conntrack_irc
modprobe ip_conntrack_ftp

# Tabelle flushen
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X

# Default-Policies setzen
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# Loopback-Netzwerk-Kommunikation zulassen
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

#Routing
iptables -A -i eth1 FORWARD -p tcp --sport 1024:65535 --dport 80 -j ACCEPT
iptables -A -i eth0 FORWARD -p tcp --sport 80 --dport 1024:65535 ! --syn -j ACCEPT
iptables -A -i eth1 INPUT --dport ssh -j ACCEPT

# Routing
echo 1 > /proc/sys/net/ipv4/ip_forward 2> /dev/null

# Masquerading
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

So sieht das gesamte Script im Moment aus aber es funktioniert wie gesagt nicht.
Ich habe sowohl aus dem LAN noch vom Router selbst die Möglichkeit Verbindungen nach Außen aufzubauen.

Meine aktuell funktionierende Firewall habe ich angehangen. Das ist allerdings ein Script von Harry's iptables Generator und wurde nur um ein paar Ports ergänzt.