PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : iptables - ich kapiers nicht



Seiten : [1] 2

Tosog
02.11.07, 23:15
Hallo!

Ich hab in meinem debian router 2 Netzwerkkarten, eth0 für das interne Netzwerk und eth1 geht ins Internet (außerdem gibts noch tap0 und vmnetX, is aber unwichtig)

dazu folgende firewall (aufs wesentlichste gekürzt, aber immer noch reproduzierbar):


#!/bin/sh

case "$1" in
start)
$0 stop
echo "starting $0..."
/usr/bin/logger -t "$0" starting

# default policy
/sbin/iptables -P INPUT DROP
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -P FORWARD ACCEPT

# loopback
/sbin/iptables -I INPUT -i lo -j ACCEPT
/sbin/iptables -I OUTPUT -o lo -j ACCEPT

## trusted ifaces
/sbin/iptables -I INPUT -i eth0 -j ACCEPT
/sbin/iptables -I INPUT -i tap0 -j ACCEPT

## ssh
/sbin/iptables -I INPUT -i eth1 -p TCP --dport 22 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

## vpn
/sbin/iptables -I INPUT -i eth1 -p UDP --sport 1194 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

## web
/sbin/iptables -I INPUT -i eth1 -p TCP --dport 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

;;
stop)
echo "stopping $0"
/usr/bin/logger -t "$0" stopping

## /sbin/iptables -t nat -F
/sbin/iptables -t filter -F
/sbin/iptables -X
/sbin/iptables -P INPUT ACCEPT
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -P FORWARD ACCEPT

;;
restart|reload|force-reload)
$0 stop
$0 start
;;
esac
exit 0


wie man sieht, ist die Standard Policy von INPUT auf DROP, OUTPUT auf ACCEPT. Eingehende Verbindungen zum Server werden dann auch schön brav gedropped, wie's in der Default Policy von INPUT eben festgelegt ist.

Allerdings: es werden auch die _ausgehenden_ Verbindungen geblockt, also wenn ich direkt am router hock und ich eine Verbindung irgendwohin ins Internet machen will, werd ich geblocked. Obwohl die Default-Policy von OUTPUT ja auf ACCEPT ist - und auch nirgendwo anders irgendwas geblockt wird? Stell ich die Default Policy von INPUT ebenfalls auf ACCEPT, funktioniert auch alles ausgehende.

Port 22 und 80 funktionieren aber - nicht nur remotezugriffe auf meinem Router, sondern auch vom Router auf remote Hosts - aber eben nur diese beiden, alles andere ausgehende von meinem Router wird geblockt.

Versteh ich hier was falsch? Ich war der Meinung, dass mit dieser iptables Konfiguration eben alles eingehende bis auf 22 und 80 geblockt wird, und alles rausgehende accepted wird - ist doch korrekt so, oder?

lg Tosog

zyrusthc
02.11.07, 23:47
Warum verwendest Du nicht einfach den hier immer wieder empfohlenden iptables Generator (http://www.harry.homelinux.org/modules.php?name=iptables_Generator) von harry?


Greeez Oli

Tosog
03.11.07, 00:13
Weil ich mich selber gern etwas besser mit iptables auskennen will und deshalb auch gern wissen will, was bei meinem Script falsch ist oder was ich vergessen habe - bzw. wo ich einen Denkfehler hatte.

danke für die Antwort

edit: hab meinen Denkfehler schon gefunden - blöd von mir, ich muss natürlich das vom inet zurückkommende accepten.. mit
/sbin/iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

DaGrrr
03.11.07, 09:01
# default policy
/sbin/iptables -P INPUT DROP
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -P FORWARD ACCEPT

Ist meiner Meinung nach ein besch.... eidenes Konzept für eine Firewall die auch routen soll.
Von dem Router aus, also lokale Prozesse dürfen alle ins Internet brüllen, warum?
Du lässt alles in dein internes Netz mit der Default Policy Forward auf Accept. Willst du das wirklich?

Ist zwar toll das du den Router schützen möchtest aber dein internes Netzwerk dabei schutzlos offen ist, da keine Pakete die ins in das LAN gehen kontrolliert werden.

Grüße
DaGrrr

Tosog
03.11.07, 13:37
Huhu, jap wie schon erwähnt ist das nicht meine eigentliche Firewall, sondern nur eine extrem verkürzte und vereinfachte, weil ich diesen von mir beschriebenen Fall nicht verstanden habe (warum auch dann rausgehende verbindungen nicht aufgebaut werdn können obwohl output policy auf accept ist - aber wie gesagt blöder Denkfehler von mir)

genauer erklärt hatt ich den Fall, dass ich mich nicht auf Port 81 eines Servers verbinden konnte, während output policy auf drop ist, ich aber der output chain den destination port 81 freigegeben hatte - also hab ich probiert generell die output policy auf accept zu setzen, was aber auch nichts bewirkte, deswegen dann eben die regeln verkürzt / vereinfacht um auf mein Problem einfacher hinweisen zu können und es hier posten zu können... ja

DaGrrr
03.11.07, 15:30
Das zum Thema Output, ok.
Aber um das zu testen muß nicht die Forward Policy auf Accept stehen.

Grüße
DaGrrr

Tosog
03.11.07, 15:41
ich wollte einfach alle drop Möglichkeiten ausschließen, was is so schlimm daran? :) ja es wär kaum am forward gelegen, trotzdem wollt ich fürs testen alles aufmachen.

lg tosog

Zeroday
04.11.07, 13:51
Das ist gut ich hab auch probs mit iptables aber unter opensuse 10.3

Wen ich die in die shell eingebe werden sie nur solange gespeichert bis ich den Pc reboote und dann ist alles weg.

Wie kann ich iptables bei opensuse 10.3 einrichten so das sie auch erhalten bleiben ?

Ich hab gehört das soll über die Firewall gehn aber wie ?

zyrusthc
04.11.07, 13:53
Das ist gut ich hab auch probs mit iptables aber unter opensuse 10.3

Wen ich die in die shell eingebe werden sie nur solange gespeichert bis ich den Pc reboote und dann ist alles weg.

Wie kann ich iptables bei opensuse 10.3 einrichten so das sie auch erhalten bleiben ?

Ich hab gehört das soll über die Firewall gehn aber wie ?
Entweder Du schreibst das init-Script selber wie Tosog oder Du benutzt den Gernerator den ich in #2 (http://www.linuxforen.de/forums/showpost.php?p=1588464&postcount=2) genannt habe!
Der Generator erstellt auch den LSB konformen Header mit für Suse!


Greeez Oli

Zeroday
04.11.07, 15:06
Dieser Generator ist echt kompliziert.

zyrusthc
04.11.07, 15:18
Dieser Generator ist echt kompliziert.
Wie bitte?
Na dann schreib dein init-Script selber wenn dir das zu kompliziert ist!

Zeroday
04.11.07, 15:45
Ich bin noch Linux noob.

zyrusthc
04.11.07, 15:48
Ich bin noch Linux noob.
Allerdings sagt mir das nicht wo jetzt genau dein Problem mit iptables liegt!?

Zeroday
04.11.07, 16:03
ok ich hab noch nicht soviel wissen im bereich netzwerk mit Linux.

Und weis noch nicht so ganz was ich alles einstellen muss.

Ich wollte einfach nur iptables so einrichten das ping anfragen nicht beantwortet werden und ein paar von den hier http://www.bot-trap.de/wiki/wikka.php?wakka=DDos

gegen DDos attacken um mich ein wenig zu schützen.

wen ich aber diese manuel in die shell eintrage werden sie nur solang gespeichert bis ich den Pc reboote.

zyrusthc
04.11.07, 16:07
Ich wollte einfach nur iptables so einrichten das ping anfragen nicht beantwortet werden und ein paar von den hier http://www.bot-trap.de/wiki/wikka.php?wakka=DDos

gegen DDos attacken um mich ein wenig zu schützen.
Dann lies richtig und langsam was Du im Generator auswählen kannst.
Da steht zb. "ICMP Echo-Request (ping) zulassen und beantworten" !

Allerdings bezweifel ich das jemand auf deinen Heimrechner ne DDos-Attacke loslässt!


wen ich aber diese manuel in die shell eintrage werden sie nur solang gespeichert bis ich den Pc reboote.
Der Generator sendet dir dein fertiges Firewall-Script per Email zu , du brauchst es blos noch nach /etc/init.d/ kopieren und ausführbar machen!


Greeez Oli

Zeroday
04.11.07, 17:56
ok ich habs kampiert wie kann ich das in der shell von einem ordner in /etc/init.d/ kopieren.

Ich hatte mal ne liste mit linux shell befehlen.

zyrusthc
04.11.07, 18:28
Mit cp kannst Du kopieren mit mv verschieben und umbenennen!
Weiteres verät dir die jeweilige Manpage
man cp
man mv
Das sind Grundkenntnisse die Du dir dringent einprägen solltest!

Greeez Oli

Zeroday
04.11.07, 19:12
also es ändert sich rein garnix,wie immer nur für eine session.

hab die file auch in kcontrol schon mit dem auto-startmanager hinzugefügt aber nix ändert sich.

zyrusthc
04.11.07, 19:15
also es ändert sich rein garnix,wie immer nur für eine session.

hab die file auch in kcontrol schon mit dem auto-startmanager hinzugefügt aber nix ändert sich.
Kannst Du das etwas genauer beschreiben?

Hast Du das Script auch ausführbar gemacht und manuell von der Console getestet?

Greeez Oli

Zeroday
04.11.07, 19:50
ich habs mir erstellt und per mail bekommen und in der mail stand das alles drin.

!Besondere Hinweise fuer Nutzer des LSB-konformen Startskript-INIT-Headers!

Fuehren Sie die folgenden Kommandos aus, nachdem das Skript "firewall" nach /etc/init.d kopiert wurde:
chmod 755 /etc/init.d/firewall
cd /usr/sbin
ln -s ../../etc/init.d/firewall rcfirewall
chkconfig -a firewall
rcfirewall start

Das Skript kann unter SUSE Linux nun auch ueber den Runlevel-Editor im YaST2 gesteuert werden.

und das habe ich auch alles gemacht
nur als ich rebootet habe hat er es nicht übernommen.

zyrusthc
04.11.07, 19:52
Du hast geschrieben:

hab die file auch in kcontrol schon mit dem auto-startmanager hinzugefügt aber nix ändert sich.
Da steht aber:

Das Skript kann unter SUSE Linux nun auch ueber den Runlevel-Editor im YaST2 gesteuert werden.

Überprüfe das nochmal.

Zeroday
04.11.07, 19:55
so ich hab nun alles noch mal so ausgeführt.


linux:~ # chmod 755 /etc/init.d/firewall
linux:~ # cd /usr/sbin
linux:/usr/sbin # ln -s ../../etc/init.d/firewall rcfirewall
ln: creating symbolic link `rcfirewall': File exists
linux:/usr/sbin # chkconfig -a firewall
insserv: script ossec: service ossec already provided!
insserv: can not stat(avupdater)
firewall 0:off 1:off 2:off 3:on 4:off 5:on 6:off
linux:/usr/sbin # rcfirewall start
Starte IP-Paketfilter
linux:/usr/sbin #

und dann im Runlevel-Editor versucht zu starten und da bekomm ich folgende meldung.


/etc/init.d/firewall start gab 0 (Erfolg) zurück:

zyrusthc
04.11.07, 20:00
Laut

firewall 0:off 1:off 2:off 3:on 4:off 5:on 6:off
Wird das Script im Runlevel 3 und 5 ausgeführt , also OK

rcfirewall start
Macht das selbe als wenn Du im Yast2 Runlevel-Editor auf start klickst!


Was sagt den iptables -L nach einen reboot ?

Zeroday
04.11.07, 20:04
das kommt wen ich iptables -L eingebe und nun reboote ich.


linux:/usr/sbin # iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
LOG all -- anywhere anywhere LOG level warning prefix `INPUT LOG '
DROP all -- anywhere anywhere state INVALID
MY_DROP tcp -- anywhere anywhere tcp flags:FIN,SYN,RST,PSH,ACK,URG/NONE
MY_DROP tcp -- anywhere anywhere tcp flags:FIN,SYN/FIN,SYN
MY_DROP tcp -- anywhere anywhere tcp flags:SYN,RST/SYN,RST
MY_DROP tcp -- anywhere anywhere tcp flags:FIN,RST/FIN,RST
MY_DROP tcp -- anywhere anywhere tcp flags:FIN,ACK/FIN
MY_DROP tcp -- anywhere anywhere tcp flags:PSH,ACK/PSH
MY_DROP tcp -- anywhere anywhere tcp flags:ACK,URG/URG
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:6667
ACCEPT esp -- anywhere anywhere
ACCEPT ah -- anywhere anywhere
ACCEPT udp -- anywhere anywhere state NEW udp dpt:500
MY_REJECT all -- anywhere anywhere

Chain FORWARD (policy DROP)
target prot opt source destination

Chain OUTPUT (policy DROP)
target prot opt source destination
LOG all -- anywhere anywhere LOG level warning prefix `OUTPUT LOG�'
DROP all -- anywhere anywhere state INVALID
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere state NEW,RELATED,ESTABLISHED
MY_REJECT all -- anywhere anywhere

Chain MY_DROP (7 references)
target prot opt source destination
DROP all -- anywhere anywhere

Chain MY_REJECT (2 references)
target prot opt source destination
LOG tcp -- anywhere anywhere limit: avg 2/sec burst 5 LOG level warning prefix `REJECT TCP '
REJECT tcp -- anywhere anywhere reject-with tcp-reset
LOG udp -- anywhere anywhere limit: avg 2/sec burst 5 LOG level warning prefix `REJECT UDP '
REJECT udp -- anywhere anywhere reject-with icmp-port-unreachable
LOG icmp -- anywhere anywhere limit: avg 2/sec burst 5 LOG level warning prefix `DROP ICMP '
DROP icmp -- anywhere anywhere
LOG all -- anywhere anywhere limit: avg 2/sec burst 5 LOG level warning prefix `REJECT OTHER '
REJECT all -- anywhere anywhere reject-with icmp-proto-unreachable

zyrusthc
04.11.07, 20:07
Was sagt den iptables -L nach einen reboot ?
<zehnzeichen>

Zeroday
04.11.07, 20:12
wider nicht gespeichert -_-

ich gebs nun auf.

zyrusthc
04.11.07, 20:14
wider nciht gespeichert -_-

ich gebs nun auf.
Ich kann das nicht nachvollziehen wenn Du das nicht postest!

Poste nach einen reboot die Ausgabe von iptables -L !

Zeroday
04.11.07, 21:00
vor dem reboot


linux:/usr/sbin # iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
LOG all -- anywhere anywhere LOG level warning prefix `INPUT LOG '
DROP all -- anywhere anywhere state INVALID
MY_DROP tcp -- anywhere anywhere tcp flags:FIN,SYN,RST,PSH,ACK,URG/NONE
MY_DROP tcp -- anywhere anywhere tcp flags:FIN,SYN/FIN,SYN
MY_DROP tcp -- anywhere anywhere tcp flags:SYN,RST/SYN,RST
MY_DROP tcp -- anywhere anywhere tcp flags:FIN,RST/FIN,RST
MY_DROP tcp -- anywhere anywhere tcp flags:FIN,ACK/FIN
MY_DROP tcp -- anywhere anywhere tcp flags:PSH,ACK/PSH
MY_DROP tcp -- anywhere anywhere tcp flags:ACK,URG/URG
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:6667
ACCEPT esp -- anywhere anywhere
ACCEPT ah -- anywhere anywhere
ACCEPT udp -- anywhere anywhere state NEW udp dpt:500
MY_REJECT all -- anywhere anywhere

Chain FORWARD (policy DROP)
target prot opt source destination

Chain OUTPUT (policy DROP)
target prot opt source destination
LOG all -- anywhere anywhere LOG level warning prefix `OUTPUT LOG�'
DROP all -- anywhere anywhere state INVALID
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere state NEW,RELATED,ESTABLISHED
MY_REJECT all -- anywhere anywhere

Chain MY_DROP (7 references)
target prot opt source destination
DROP all -- anywhere anywhere

Chain MY_REJECT (2 references)
target prot opt source destination
LOG tcp -- anywhere anywhere limit: avg 2/sec burst 5 LOG level warning prefix `REJECT TCP '
REJECT tcp -- anywhere anywhere reject-with tcp-reset
LOG udp -- anywhere anywhere limit: avg 2/sec burst 5 LOG level warning prefix `REJECT UDP '
REJECT udp -- anywhere anywhere reject-with icmp-port-unreachable
LOG icmp -- anywhere anywhere limit: avg 2/sec burst 5 LOG level warning prefix `DROP ICMP '
DROP icmp -- anywhere anywhere
LOG all -- anywhere anywhere limit: avg 2/sec burst 5 LOG level warning prefix `REJECT OTHER '
REJECT all -- anywhere anywhere reject-with icmp-proto-unreachable
linux:/usr/sbin #

zyrusthc
04.11.07, 21:04
Und wenn Du jetzt rcfirewall stop eingibst und danach iptables -L aufrufst , was kommt dann?

Zeroday
04.11.07, 21:09
hier noch mal nach dem reboot.


linux:~ # iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
input_int all -- anywhere anywhere
input_ext all -- anywhere anywhere
LOG all -- anywhere anywhere limit: avg 3/min burst 5 LOG level warning tcp-options ip-options prefix `SFW2-IN-ILL-TARGET '
DROP all -- anywhere anywhere

Chain FORWARD (policy DROP)
target prot opt source destination
LOG all -- anywhere anywhere limit: avg 3/min burst 5 LOG level warning tcp-options ip-options prefix `SFW2-FWD-ILL-ROUTING '

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere state NEW,RELATED,ESTABLISHED
LOG all -- anywhere anywhere limit: avg 3/min burst 5 LOG level warning tcp-options ip-options prefix `SFW2-OUT-ERROR '

Chain forward_ext (0 references)
target prot opt source destination

Chain forward_int (0 references)
target prot opt source destination

Chain input_ext (1 references)
target prot opt source destination
DROP all -- anywhere anywhere PKTTYPE = broadcast
ACCEPT icmp -- anywhere anywhere icmp source-quench
ACCEPT icmp -- anywhere anywhere icmp echo-request
ACCEPT esp -- anywhere anywhere
ACCEPT udp -- anywhere anywhere udp dpt:4500
ACCEPT udp -- anywhere anywhere udp dpt:500
reject_func tcp -- anywhere anywhere tcp dpt:113 state NEW
LOG all -- anywhere anywhere limit: avg 3/min burst 5 PKTTYPE = multicast LOG level warning tcp-options ip-options prefix `SFW2-INext-DROP-DEFLT '
DROP all -- anywhere anywhere PKTTYPE = multicast
LOG tcp -- anywhere anywhere limit: avg 3/min burst 5 tcp flags:FIN,SYN,RST,ACK/SYN LOG level warning tcp-options ip-options prefix `SFW2-INext-DROP-DEFLT '
LOG icmp -- anywhere anywhere limit: avg 3/min burst 5 LOG level warning tcp-options ip-options prefix `SFW2-INext-DROP-DEFLT '
LOG udp -- anywhere anywhere limit: avg 3/min burst 5 LOG level warning tcp-options ip-options prefix `SFW2-INext-DROP-DEFLT '
LOG all -- anywhere anywhere limit: avg 3/min burst 5 state INVALID LOG level warning tcp-options ip-options prefix `SFW2-INext-DROP-DEFLT-INV '
DROP all -- anywhere anywhere

Chain input_int (1 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere

Chain reject_func (1 references)
target prot opt source destination
REJECT tcp -- anywhere anywhere reject-with tcp-reset
REJECT udp -- anywhere anywhere reject-with icmp-port-unreachable
REJECT all -- anywhere anywhere reject-with icmp-proto-unreachable
linux:~ #


linux:~ # rcfirewall stop
Stoppe IP-Paketfilter
linux:~ # iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
linux:~ #