PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : iptables script funzt net!



nixPeiler
28.02.03, 10:35
Moin leutz!

hab daheim ein netz mit 3 win2k rechnern und einem alten gammel rechner mit SuSE 8.1 drauf! er soll als server dienen (FTP, HTTP usw.) und auch die anderen rechner ins i-net lassen!


Dann hab ich ein tutorial (http://hilfe.exception.at/linux-router-howto.html) gefunden und versucht mit iptables das hinzubringen!
in dem tutorial war ein script dass ich ausführen sollte und dann sollte es gehen! :rolleyes:

hier das scipt:
[I]
#!/bin/bash

IPTABLES=`which iptables`
DEV_EXT=eth0
DEV_INT=eth1

modprobe ip_tables
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc
modprobe ip_nat_irc

#limits schaffen, um DoS zu erschweren und masquerading einschalten

echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter
echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects
echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route
echo "0" > /proc/sys/net/ipv4/conf/all/bootp_relay
echo "1" > /proc/sys/net/ipv4/conf/all/log_martians


# default-policies festlegen

$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT

# löschen aller alten evtl noch vorhandenen rules

$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -X

# loopback muß lokal offen sein

$IPTABLES -A OUTPUT -o lo -j ACCEPT
$IPTABLES -A INPUT -i lo -j ACCEPT

# masquerading einschalten

$IPTABLES -t nat -A POSTROUTING -o $DEV_EXT -j MASQUERADE

# pakete die zu bestehenden verbindungen gehören (established)
# und solche die dazugehören (related) dürfen rein

$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -i $DEV_EXT -j ACCEPT
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -i $DEV_INT -j ACCEPT


# LAN reinlassen für ssh, ggf ans LAN anpassen

$IPTABLES -A INPUT -s 192.168.0.0/24 -i $DEV_INT -j ACCEPT

# ident-anfragen rejecten

$IPTABLES -A INPUT -m state --state NEW,ESTABLISHED,RELATED -i $DEV_EXT -p TCP --dport auth -j REJECT
$IPTABLES -A INPUT -m state --state NEW,ESTABLISHED,RELATED -i $DEV_EXT -p UDP --dport auth -j REJECT

#und ggf NATen

$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -i $DEV_EXT -p TCP --dport auth --syn -j ACCEPT

# keine verbindungsanfragen an $DEV_EXT beantworten

$IPTABLES -A INPUT -m state --state NEW -i ! $DEV_EXT -j ACCEPT

# verbindungsanfragen und geblockte pakete loggen

$IPTABLES -A INPUT -i $DEV_EXT -m state --state NEW,INVALID -j LOG

# alles verwerfen, was auf keine bisherige regel gepaßt hat

$IPTABLES -A INPUT -j DROP
$IPTABLES -P INPUT DROP
[I]


weis jemand was daran falsch ist?
oder fehlt noch was?
oder kennt jemand noch en anderes gutes tutorial dafür?
THNX
CU

DaGrrr
28.02.03, 10:41
IPTABLES=`which iptables`

Dort kommt der Pfad zu iptables rein.

Grüße
DaGrrr

nixPeiler
28.02.03, 15:45
ich weis jetzt net genau was da für einer reinkommt....

hab mal: /usr/sbin/iptables probiert!!! is aber glaub falsch... da kommt dann dass er in dem script voll viele befehle net kennt! :(

weis jemand den richtigen pfad?

ProfBunny
28.02.03, 15:55
Hallo,

ich habs in meiner conf so stehen.
IPT=`which iptables`


für das script doch mal aus und schmeiß die Fehlermelung
hier rein.

Profbunny

nixPeiler
28.02.03, 17:41
also wenn ich da

IPT="which tables"

stehen hab kommt des hier bei raus:



/sbin/paketfilter.sh: line 29: -P: command not found
/sbin/paketfilter.sh: line 30: -P: command not found
/sbin/paketfilter.sh: line 31: -P: command not found
/sbin/paketfilter.sh: line 35: -F: command not found
/sbin/paketfilter.sh: line 36: -t: command not found
/sbin/paketfilter.sh: line 37: -X: command not found
/sbin/paketfilter.sh: line 41: -A: command not found
/sbin/paketfilter.sh: line 42: -A: command not found
/sbin/paketfilter.sh: line 46: -t: command not found
/sbin/paketfilter.sh: line 51: -A: command not found
/sbin/paketfilter.sh: line 52: -A: command not found
/sbin/paketfilter.sh: line 57: -A: command not found
/sbin/paketfilter.sh: line 61: -A: command not found
/sbin/paketfilter.sh: line 62: -A: command not found
/sbin/paketfilter.sh: line 66: -A: command not found
/sbin/paketfilter.sh: line 70: -A: command not found
/sbin/paketfilter.sh: line 74: -A: command not found


@ProfBunny:
hast du auch des gleiche script?
sonst brauch ich da nix einstellen odeR?

THNX
CU

heikop
01.03.03, 01:16
Hallo,

iptables liegt normalerweise in /sbin.

Der Pfad lautet dann /sbin/iptables. Aber du kannst das mal mit 'whereis iptables' checken. Ich denke, das sollte wohl in Deinem Skript stehen (IPT = `whereis iptables`)


Gruss
Heiko

nixPeiler
01.03.03, 12:27
also wenn ich den pfad abfrage kommt bei mir /usr/sbin/iptables
das hab ich dann auch in das script geschrieben! geht aber auch net! die gleichen fehler wie oben!

mit dem pfad /sbin/iptables gehts auch net!

wenn ich da aber IPTABLES='which iptables' stehen hab wie es in dem tutorial steht, kann ich das script ausführen OHNE fehler!

aber es funktioniert halt dann wie am anfang gesagt nicht!!!
THNX
CU

ProfBunny
01.03.03, 12:43
Hi,

dann mach es mal so, das dein script durchläuft ohne Fehler.
dann ausführen /mit dem parameter up).
Dann poste mal iptables -nL

Grüße

Profbunny

heikop
01.03.03, 15:18
Hallo,

wenn Dein iptables in /usr/sbin/ liegt und nicht in /sbin dann ist das klar dass es nicht geht.
Aber pass mal bei deiner Zuweisung auf. Zwischen `which iptables` und "which iptables" ist ein himmelsweiter Unterschied. Aber das Skript oben ist ja richtig.
Das ist auch absuluter Blödsinn:


# default-policies festlegen

$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT


Der Paketfilter lässt hier alles durch !

Wie führst Du das Skript aus ? Als normaler User ? Für iptables musst Du root sein ! Deswegen findet der auch nicht beim Ausführen den Pfad zu iptables, weil der nicht im Suchpfad des Users liegt.

nixPeiler
01.03.03, 17:24
des kommt bei iptables -nL raus.... (wenn ich es richtig gemacht hab!)

server:/sbin # iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT all -- 192.168.0.0/29 0.0.0.0/0
REJECT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW,RELATED,ESTABLISHED tcp dpt:113 reject-with icmp-port-unreachable
REJECT udp -- 0.0.0.0/0 0.0.0.0/0 state NEW,RELATED,ESTABLISHED udp dpt:113 reject-with icmp-port-unreachable
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state NEW
LOG all -- 0.0.0.0/0 0.0.0.0/0 state INVALID,NEW LOG flags 0 level 4

Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED tcp dpt:113 flags:0x16/0x02

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
server:/sbin #




also ich hab diese: ' anführungszeichen genommen! des war nur en schreibfehler auf board!
->> kommt da aber IPT oder IPTABLES davor? ich probiers zwar die ganze zeit mit beidem aber des is lästig! :)


doch....... ich bin als root angemeldet!!!!
das srcipt liegt in /sbin und heisst paketfilter.sh! ich hab des ausführbar gemacht. ich geb halt dann einfach den dateinamen ein!

heikop
01.03.03, 20:19
gude,

na das ist ja fein, dass es jetzt funzt :D . IPTABLES ist in dem Skript eine Variable. In der Zuweisung

IPTABLES = `which iptables`

wird der Befehl which ausgeführt (man beachte die nach links gerichteten einfachen Anführungszeichen) und schreibt seine Ausgabe nicht auf die Standard-Ausgabe, sondern übergibt ihn der Variable IPTABLES. Damit man eben nicht immer den kompletten Pfad angeben muss (obwohl ich denke, dass /usr/sbin/ eigentlich im Suchpfad des root liegen dürfte und daher einfach ein iptables hier reicht). Man ruft solche Variablen mit einem '$' - Zeichen vorangestellt auf. Ok, jetzt ist aber die Lehrstunde beendet :)


Gruss
Heiko