PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : iptables blocken alles!



darktr00per
15.09.02, 15:02
hi! Ich wollte seit langem mal meine Firewall Regeln ordentlich einstellen nur leider probier ich seit 2 tagen daran rum hab ich forum schon ordenrlich rumgeschaut aber werd nicht schlauer!

Und zwar bei meinem skript blockt er alles ich kann auf nichts zugreifen obwohl ich einige Ports exakt freigegeben habe!

Vielleicht könnt ihr mir dabei helfen ich will folgendes realisieren!

Im Internen Netzwerk also alles was über eth0 leuft soll erlaubt werden und alles was übers externe leuft ppp0 soll erst verboten werden und der reihe nach soll ssh, http freigegben werden!

P.S. Vielleicht geht folgendes noch ich benutze den Server als Router und auf ihm leuft auch der Proxy Server squid und ich will das alle zwingend nur über den Proxy ins inet kommen!

Anhang!

Mein skript! Ach bitte nich gleich losmaulen ich kenn mich da noch nedd aus also kann sein das ich allerhand verwurschtelt hab!


#!/bin/bash

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

# module laden
/sbin/insmod iptable_nat &> /dev/null
/sbin/insmod ip_conntrack &> /dev/null
/sbin/insmod ip_conntrack_ftp &> /dev/null
/sbin/insmod ip_nat_ftp &> /dev/null
/sbin/insmod forblock &> /dev/null
/sbin/insmod ip_masq_h323 &> /dev/null
/sbin/insmod mssclampfw &> /dev/null

INTERNIP='192.168.1.21'
INTERNMASK='192.168.1.0/255.255.255.0'
EXTERNMASK='0.0.0.0/255.255.255.0'
EXTERNDEV='ppp0'
EXTERNIP=`/sbin/ifconfig ppp0|grep "inet addr"|cut -d: -f2|cut -d' ' -f1`

# alle einstellungen löschen
iptables -F
iptables -P OUTPUT DROP
iptables -P INPUT DROP
iptables -P FORWARD DROP

#lokale services für das internet blocken oder erlauben
iptables -A INPUT -p tcp --dport 4661:4665 -j ACCEPT
iptables -A INPUT -p udp --dport 4661:4665 -j ACCEPT

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT

iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 6667 -j ACCEPT

# squid proxy erlauben
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 8080 -j ACCEPT
iptables -A FORWARD -p tcp --dport 8080 -j ACCEPT

# http erlauben
iptables -A INPUT -i ppp0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i ppp0 -p udp --dport 80 -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -o ppp0 -p udp --sport 80 -j ACCEPT
iptables -A INPUT -i ppp0 -p tcp --sport 80 -j ACCEPT
iptables -A INPUT -i ppp0 -p udp --sport 80 -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -o ppp0 -p udp --dport 80 -j ACCEPT

# Erlauben von Loopback-Verbindungen
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# ftp nur intern erlauben
iptables -A INPUT -i eth0 -p tcp --dport 40000 -j ACCEPT
iptables -A OUTPUT -o eth0 -p udp --dport 40000 -j ACCEPT

#Erlauben von SSH (Server und Client)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT

#Erlauben von HTTP (Server und Client)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT

#Erlauben von HTTPS (Server und Client)
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT

# ICQ
iptables -t nat -A PREROUTING -p tcp --dport 5010:5030 -i ppp0 -j DNAT --to-destination $INTERNIP:5010-5030

# Forward
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
iptables -A FORWARD -o ppp0 -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1453: -j TCPMSS --set-mss 1452

# forwarding aktivieren
iptables -t nat -A POSTROUTING -o $EXTERNDEV -j MASQUERADE

# ftp server + dcc
iptables -t nat -A PREROUTING -i $EXTERNDEV -p tcp --dport 2000:2400 -j DNAT --to $INTERNIP:2000-2400

# quake + halflife
iptables -t nat -A PREROUTING -i $EXTERNDEV -p udp --dport 27005 -j DNAT --to $INTERNIP:27005



schonmal thx für eure hilfe!

Belkira
15.09.02, 15:25
1. Kernel Module nicht mit insmod, sondern mit modprobe laden, und auch nur, wenn sie wirklich manuell geladen werden müssen (wie z.B. connection tracking).

2. Deine Forward Chain ist zu restriktiv und erlaubt nur TCP SYN Pakete nach draußen. Antwortpakete werden verworfen.

3. EXTERNMASK='0.0.0.0/255.255.255.0' sieht falsch aus, auch wenn noch nicht verwendet. Weglassen und Interfaces prüfen.

4. Bau LOG Regeln ein um zu sehen, wo was hängen bleibt.

darktr00per
15.09.02, 16:24
Jo danke aber was meinst du mit restriktiv!

Und kann mir einer ne bsp. table geben mit der ich alles was in eth0 reinkommt sowie was rausgeht und geforwarded wird erlaubt wird also das einfach alles im internen lan offen ist!

cya
thx

tomes
15.09.02, 17:15
du dir ersteinmal folgendes anschauen:
http://www.linuxia.de/lt-netfilter.en.html#filter
damit du weist welche Regel fuer welches Paket zustaendig ist.
Dann brauchst du nur noch fuer fuer das "innere Interface" alles frei geben.
Bei den forwarding- Regeln einfach den Weg wo es raus soll, z.B. fuer "Webseiten"
iptables -A FORWARD -o "aeusseres Interface" -p tcp --sport 1024:65535 --dport http -j ACCEPT

Damit alle ueber den Proxy muessen, schau mal im Forum nach "transparenten Proxy" mit iptables.

T;o)Mes

Belkira
15.09.02, 23:28
Jo danke aber was meinst du mit restriktiv!
Nun, ganz einfach. Die Gesamtmenge der Regeln in Deiner FORWARD Chain verbietet zuviel. In der FORWARD Chain behandelst Du nur TCP Pakete mit gesetzter SYN Flagge. Was ist mit TCP- und UDP-Antwortpaketen? Die werden bei Dir in der FORWARD Chain von der default policy DROP fallengelassen.

Badboy2000
15.09.02, 23:54
Hi, sag mal hast du schonmal versucht mit deiner Regel für DCC dccs zu senden?
Wenn ich das richtig sehe dürfte das nicht funktionieren. Da musste vorher noch das Modul ip_conntrack_irc laden. :-)
Ansonsten hast du dich mit den chains ganz schön an ipchains orientiert. Kann das sein?
Also ich hab das mit dem HTTP etc. wesentlich kürzer. ;-)
Mfg
Badboy

darktr00per
16.09.02, 08:40
danke erstmal das wegen dem dcc such ich schon lange und endlich funktionierts! thx

Ach ja könnte mal jemmand sein Firewall Script posten dann hätte ich ein gutes Beispiel woran ich mich besser orinetieren kann!

Beim laden von irc modul mault er!

insmod: ip_contrack_irc: no module by that name found

Woher bekomme ich das Modul?

makrostyle
19.10.02, 14:18
Hi @ all
so, genau mein Problem wird hier angesprochen aber nicht gelöst :(

ich moechte eine möglichst "dichte" firewall konfigurieren.
kein routing,...

da hab ich mir dieses fwscript gebastelt (es sollte nur ssh funzen):

iptables -F
iptables -P INPUT DROP
iptables -P OUPUT DROP
iptables -P FORWARD DROP

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT

tja ergebnis: hab mich ausgesperrt. jetzt frag ich mich nur warum?
Danke schonmal fuer die Hilfe.
cheers tim

Belkira
19.10.02, 14:38
da hab ich mir dieses fwscript gebastelt (es sollte nur ssh funzen):

iptables -F
iptables -P INPUT DROP
iptables -P OUPUT DROP
iptables -P FORWARD DROP

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT

tja ergebnis: hab mich ausgesperrt. jetzt frag ich mich nur warum?

Deine Regel in der INPUT Chain erlaubt eingehende Verbindungen an den SSH Server auf Port 22. Die Regel in der OUPUT Chain erlaubt Verbindungen vom Rechner an beliebige SSH Server auf Port 22. Wo erlaubst Du Antwortpakete, die von Deinem SSH Server abgesandt werden? Welchen --dport bzw. --sport haben die nämlich? Reicht das als Hilfestellung? ;)

HangLoose
19.10.02, 14:45
hi

das damit dann auch nur ssh-verbindungen möglich sind und kein www etc. weißt du, oder?

was hat das für einen hintergrund?


Gruß HangLoose

makrostyle
19.10.02, 15:24
oh mann, thx @ belkira
dass ich das nich selber gesehen hab,... :D
so jetzt tuts auf alle faelle.

@hangloose
ja weiss ich, ich will ja auch nur ssh der hintergrund ist, dass der server 24/7 stunden im netz mit fester ip steht,
und momentan nur ssh gebraucht wird.

cheers tim