Frage zum Script für Iptables
Frage zum Script für Iptables
Hallo
Ich wollte ein Script schreiben was jedesmal mit geladen wird wenn der Server neustartet, das ist auch kein Problem, die Frage die sich mir grad stellt ist, wie werden die Regeln in dem Script abgearbeitet von oben nach unten oder von unten nach oben?
Da ich ein Whitelist-verfahren durchfürhen werde frage ich mich halt wo ich das alles blockieren hinsetzen muss als erstes oder als letztes im Script.
Habe hier bei mir unterschiedliche Ausagen gehört daher hier nochmal die Frage und ich hoffe das mir hier jemand die Erleuchtung bringt in welcher Reihenfolge dieses Script abgearbeitet wird
mfg
Ich wollte ein Script schreiben was jedesmal mit geladen wird wenn der Server neustartet, das ist auch kein Problem, die Frage die sich mir grad stellt ist, wie werden die Regeln in dem Script abgearbeitet von oben nach unten oder von unten nach oben?
Da ich ein Whitelist-verfahren durchfürhen werde frage ich mich halt wo ich das alles blockieren hinsetzen muss als erstes oder als letztes im Script.
Habe hier bei mir unterschiedliche Ausagen gehört daher hier nochmal die Frage und ich hoffe das mir hier jemand die Erleuchtung bringt in welcher Reihenfolge dieses Script abgearbeitet wird
mfg
Re: Frage zum Script für Iptables
Moin,
das kommt darauf an ob du, iptables -I für Insert, da fügt er die Regel oben in die Tabelle ein, oder iptables -A für Append, da fügt er die Regel ans Ende der Tabelle ein.
das kommt darauf an ob du, iptables -I für Insert, da fügt er die Regel oben in die Tabelle ein, oder iptables -A für Append, da fügt er die Regel ans Ende der Tabelle ein.
Re: Frage zum Script für Iptables
das anfügen würd ich wahrscheinlich mit A machen die Frage ist in welcher Reihenfolge wird es abgearbeitet von oben nach unten oder von unten nach oben
Re: Frage zum Script für Iptables
Moin,
sorry iptables geht immer von oben nach unten die Tabellen durch.
sorry iptables geht immer von oben nach unten die Tabellen durch.
Re: Frage zum Script für Iptables
Ok danke
Re: Frage zum Script für Iptables
kann man so in etwa eine schreiben oder ist es von der syntax irgendwas falsch?
das ist das script für ein router in meinen netz der nur bei bestimmten sachen weiterleiten oder zulassen soll der Rest soll geblockt werden
echo -n "IPtables werden geladen ..."
#Flush alte Regeln
iptables -F
iptables --delete-chain
#Insert erlaubte Weiterleitung
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#iptables -A FORWARD -i eth0 -p tcp --dport 80 --to 10.22.0.21
#iptables -A FORWARD -i eth1 -p tcp --dport 80 --to 10.1.13.0
#iptables -A FORWARD -i eth0 -p tcp --dport 443 --to 10.22.0.21
#iptables -A FORWARD -i eth1 -p tcp --dport 443 --to 10.1.13.0
#iptables -A FORWARD -i eth0 -p tcp --dport 20 --to 10.22.0.21
#iptables -A FORWARD -i eth1 -p tcp --dport 20 --to 10.1.13.0
#iptables -A FORWARD -i eth0 -p tcp --dport 21 --to 10.22.0.21
#iptables -A FORWARD -i eth1 -p tcp --dport 21 --to 10.1.13.0
#iptables -A FORWARD -i eth0 -p tcp --dport 22 --to 10.22.0.0
#iptables -A FORWARD -i eth1 -p udp --dport 22 --to 10.1.13.102
#iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
#iptables -A OUTPUT -i eth0 -p udp --sport 22 -j ACCEPT
#geblockte Regeln
#iptables -P INPUT DROP
#iptables -P OUTPUT DROP
echo "iptables sind geladen ..."
das ist das script für ein router in meinen netz der nur bei bestimmten sachen weiterleiten oder zulassen soll der Rest soll geblockt werden
echo -n "IPtables werden geladen ..."
#Flush alte Regeln
iptables -F
iptables --delete-chain
#Insert erlaubte Weiterleitung
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#iptables -A FORWARD -i eth0 -p tcp --dport 80 --to 10.22.0.21
#iptables -A FORWARD -i eth1 -p tcp --dport 80 --to 10.1.13.0
#iptables -A FORWARD -i eth0 -p tcp --dport 443 --to 10.22.0.21
#iptables -A FORWARD -i eth1 -p tcp --dport 443 --to 10.1.13.0
#iptables -A FORWARD -i eth0 -p tcp --dport 20 --to 10.22.0.21
#iptables -A FORWARD -i eth1 -p tcp --dport 20 --to 10.1.13.0
#iptables -A FORWARD -i eth0 -p tcp --dport 21 --to 10.22.0.21
#iptables -A FORWARD -i eth1 -p tcp --dport 21 --to 10.1.13.0
#iptables -A FORWARD -i eth0 -p tcp --dport 22 --to 10.22.0.0
#iptables -A FORWARD -i eth1 -p udp --dport 22 --to 10.1.13.102
#iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
#iptables -A OUTPUT -i eth0 -p udp --sport 22 -j ACCEPT
#geblockte Regeln
#iptables -P INPUT DROP
#iptables -P OUTPUT DROP
echo "iptables sind geladen ..."
Re: Frage zum Script für Iptables
Nunja, du schmeisst alle Regeln weg und setzt genau eine. Das sollte keine Syntax-Fehler enthalten, aber die auskommentierten Regeln darunter sehen falsch aus, da sie kein -j-Ziel haben. Vermutlich soll daso.ae. sein.
Gruss Cae
Code: Alles auswählen
-j DNAT --to-destination 192.0.2.42
Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
Re: Frage zum Script für Iptables
ich habe die regeln auskommentiert da sie fehler verursacht haben, muss ich dazu noch bei jeder regel nen -j ACCEPT hinschreiben und was kommt normal hinter dem --to da das alleine den Fehler verursacht ?
das sind ja regeln die erlaubt werden sollen und unten dann die regeln das sonst alle anderen geblockt werden sollen.
Sollte doch von der reihenfolge richtig sein oder?
das sind ja regeln die erlaubt werden sollen und unten dann die regeln das sonst alle anderen geblockt werden sollen.
Sollte doch von der reihenfolge richtig sein oder?
Re: Frage zum Script für Iptables
Moin,
es kommt sehr darauf an was du machen möchtest, wenn der Rechner als Router fungieren soll, dann fehlen dir noch die FORWARD Chain, die INPUT und OUTPUT nur für Pakete sind die an einen oder von einem lokalen Prozess kommen.
Hier mal ein Link zu einer Übersichtsgrafik der Chains:
http://xkr47.outerspace.dyndns.org/netf ... _flow9.png
es kommt sehr darauf an was du machen möchtest, wenn der Rechner als Router fungieren soll, dann fehlen dir noch die FORWARD Chain, die INPUT und OUTPUT nur für Pakete sind die an einen oder von einem lokalen Prozess kommen.
Hier mal ein Link zu einer Übersichtsgrafik der Chains:
http://xkr47.outerspace.dyndns.org/netf ... _flow9.png
Re: Frage zum Script für Iptables
danke aber wenn man oben schaut sind fast alle Regeln die auskommentiert sind Forward regeln sind^^
aber danke für den link den werd ich mir mal anschauen
edit:hab mir die grafik mal angeschaut aber schlau werd ich net draus. Ich habe das erste mal mit Iptables zu tun daher sehr unwissend ausser das bisschen was ich aus dem Inet gefunden habe und mir ein Reim drauf machen kann.
aber danke für den link den werd ich mir mal anschauen
edit:hab mir die grafik mal angeschaut aber schlau werd ich net draus. Ich habe das erste mal mit Iptables zu tun daher sehr unwissend ausser das bisschen was ich aus dem Inet gefunden habe und mir ein Reim drauf machen kann.
Re: Frage zum Script für Iptables
Moin,
die Grafik zeigt dir, wie die Pakete durch iptables laufen und durch welche Tabellen (Chains) die laufen. Die Regeln die du mit -P schreibst, sind die default policy, die greift wenn keine andere Regel vorher greift.
Mir ist nur noch nicht ganz klar, was du mit den -to Regeln bezwecken möchtest.
die Grafik zeigt dir, wie die Pakete durch iptables laufen und durch welche Tabellen (Chains) die laufen. Die Regeln die du mit -P schreibst, sind die default policy, die greift wenn keine andere Regel vorher greift.
Mir ist nur noch nicht ganz klar, was du mit den -to Regeln bezwecken möchtest.
Re: Frage zum Script für Iptables
das sind regeln wenn eine Anfrage an den Router kommt für den gewissen Port an die bestimmte IP dann lass sie durch ansonsten soll es geblockt werden daher die verschiedenen Ports und IP da es 2 weitere Maschinen in diesen Subnetz gibt die aber nicht alle über die gleichen Ports und Protokolle erreichbar sein sollen. Die haben dann auch noch Regeln zum blocken aber der Router soll auch schon mal Filtern welche er weiter reicht und welche nicht.
Dazu kommt das es ein Netzbereich gibt der von ausserhalb rein darf, aber zum beispiel ssh wird aber nur von einen Rechner erlaubt der Rest nicht.
Das sind ja immer die Regeln für das durchreichen bei einer Anfrage vom äusseren Netz wenn erlaubt und die das zurück geben wenn der Rechner der angesprochen wurde seine Antwort zurück sendet.
Dazu kommt das es ein Netzbereich gibt der von ausserhalb rein darf, aber zum beispiel ssh wird aber nur von einen Rechner erlaubt der Rest nicht.
Das sind ja immer die Regeln für das durchreichen bei einer Anfrage vom äusseren Netz wenn erlaubt und die das zurück geben wenn der Rechner der angesprochen wurde seine Antwort zurück sendet.
Re: Frage zum Script für Iptables
Moin,
dann musst du mit Source (-s) und Destination (-d) arbeiten und wenn das Anfragen aus dem Internet sind wäre dann auch noch DNAT nötig.
dann musst du mit Source (-s) und Destination (-d) arbeiten und wenn das Anfragen aus dem Internet sind wäre dann auch noch DNAT nötig.
Re: Frage zum Script für Iptables
Hi
also statt -i dann -s und hinten bei --to noch -destination ran ?
also statt -i dann -s und hinten bei --to noch -destination ran ?
Re: Frage zum Script für Iptables
Lies' doch einfach, was man dir schreibt dauzu:Yuenlo hat geschrieben:also statt -i dann -s und hinten bei --to noch -destination ran ?
Folglich wuerde ichCae hat geschrieben:sehen falsch aus, da sie kein -j-Ziel haben. Vermutlich soll daso.ae. sein.Code: Alles auswählen
-j DNAT --to-destination 192.0.2.42
Code: Alles auswählen
iptables -A FORWARD -i eth0 -p tcp --dport 80 -j DNAT --to-destination 10.22.0.21
Das Matchen auf Interfaces ist schon okay so, zumindest wuesste ich nicht, warum es uebersichtlicher sein sollte, nach Quell-IPs zu unterscheiden.
Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
Re: Frage zum Script für Iptables
danke dir, das dnat kann ich dann weglassen ist alles lokal, mit den ip und netzid daher, da nicht alle das gleichen dürfen auf den verschiedenen servern
ich habe auch nur die iptables nur von einen server gepostet die anderen beiden server sind noch nicht geschrieben
root@debian-router:/etc# iptables -A FORWARD -i eth0 -p tcp --dport 80 --to-destination 10.22.0.21 -j ACCEPT
iptables v1.4.14: unknown option "--to-destination"
Try `iptables -h' or 'iptables --help' for more information.
da scheint noch was mit den destination net zu stimmen da er dort immer noch wie vorher nur mit dem --tt fehler ausgíbt
ich habe auch nur die iptables nur von einen server gepostet die anderen beiden server sind noch nicht geschrieben
root@debian-router:/etc# iptables -A FORWARD -i eth0 -p tcp --dport 80 --to-destination 10.22.0.21 -j ACCEPT
iptables v1.4.14: unknown option "--to-destination"
Try `iptables -h' or 'iptables --help' for more information.
da scheint noch was mit den destination net zu stimmen da er dort immer noch wie vorher nur mit dem --tt fehler ausgíbt
Re: Frage zum Script für Iptables
... was willst du eigentlich erreichen? Entweder, du willst eine Maschine verstecken und so tun, als haette die Firewall-Maschine das Paket angenommen. Dann willst du -j DNAT und kannst --to-destination verwenden. Oder du willst irgendetwas anderes und kannst --to-destination nicht verwenden. Zum Beispiel -j REDIRECT, aber das veraendert nur Ports. Zu weiteren Ideen hilft die Manpage weiter.
Bei der Gelegenheit faellt mir auch auf, das DNAT hier nur in der -t nat-Tabelle sinnvoll waere.
Gruss Cae
Bei der Gelegenheit faellt mir auch auf, das DNAT hier nur in der -t nat-Tabelle sinnvoll waere.
Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
Re: Frage zum Script für Iptables
es gibt ein router, ein webserver und ein sqlserver. daher werden dann auf web nur http, https, ftp und ssh zugelassen werden wobei ssh nur von einen rechner nur erlaubt wird der rest von einen bestimmten netz , der sql ist nur durch ssh oder über mysql vom webserver aus erreichbar und der router soll die sachen durchreichen und selbst auch nur via ssh erreichbar sein sowie für dns anfragen die ich noch nicht eingebaut hatte.
Re: Frage zum Script für Iptables
ok irgendwie verstehe ich das immer noch nicht wirklich was du vor hast, kannst du mal ein Netzwerkplan machen?
Re: Frage zum Script für Iptables
das ist im groben der Plan wie die Pakete weiter gehen soll alles andere soll verboten sein, das schreiben wenn ich halbwegs das mit der Syntax mal kapiert habe sollte dann hoffentlich kein Problem sein das was bisher gepostet wurde war für den Router gedacht die anderen beiden wollte ich angehen wenn der soweit hin haut.
mfg
Re: Frage zum Script für Iptables
Weil mir das jetzt zu doof wird, tu' ich hier einfach mal das rein, was ich als Referenzimplementation fuer deinen Fall ansehen wuerde (vermutlich mache ich damit deine Hausaufgaben, aber naja). Inklusive der offensichtlich unsinnigen http->db-Verbindungen.
Fix' diese Punkte, probier's aus und verstehe, was da was tut. Und berichte mir, wenn da etwas nicht das tut, was ich geplant hatte. FTP wird vermutlich kaputt sein, weil es zusaetzliche Verbindungen aufmacht, die man nur per deep packet inspection erkennen kann (-m helper, etc.). Das ist ein Grund, warum man das nicht verwendet, sondern stattdessen SCP oder SFTP (beides durch SSH getunnelt, verschluesselt und aus Firewall-Sicht leicht greifbar).
Aus Router-Sicht ist momentan jeder auf der Seite des externen Interfaces ein normaler Benutzer. In der Regel will man das, evtl. mit Einschraenkungen bezueglich privater Netze (die extern nichts zu suchen haben) oder vor allem 127/8.
Fuer den Router gemaess Skizze:
Fuer die DB gemaess Skizze:
Fuer den Webserver gemaess Skizze:
Viel Spass damit.
Gruss Cae
Fix' diese Punkte, probier's aus und verstehe, was da was tut. Und berichte mir, wenn da etwas nicht das tut, was ich geplant hatte. FTP wird vermutlich kaputt sein, weil es zusaetzliche Verbindungen aufmacht, die man nur per deep packet inspection erkennen kann (-m helper, etc.). Das ist ein Grund, warum man das nicht verwendet, sondern stattdessen SCP oder SFTP (beides durch SSH getunnelt, verschluesselt und aus Firewall-Sicht leicht greifbar).
Aus Router-Sicht ist momentan jeder auf der Seite des externen Interfaces ein normaler Benutzer. In der Regel will man das, evtl. mit Einschraenkungen bezueglich privater Netze (die extern nichts zu suchen haben) oder vor allem 127/8.
Fuer den Router gemaess Skizze:
Code: Alles auswählen
#!/bin/sh
ip_ext=10.1.13.128
ip_int=10.22.0.1
ip_www=10.22.0.21
ip_db=10.22.0.22
ip_admin=192.168.1.56
port_ssh_www=22021
port_ssh_db=22022
if_ext=eth0
if_int=eth1
iptables-restore <<EOF
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
# prerouting
# ssh dnat
-A PREROUTING -m state --state NEW -i $if_ext -p tcp --dport $port_ssh_www -j DNAT --to-destination $ip_www:22
-A PREROUTING -m state --state NEW -i $if_ext -p tcp --dport $port_ssh_db -j DNAT --to-destination $ip_db:22
# other dnat
# FIXME: http etc. -> db?!
-A PREROUTING -m state --state NEW -i $if_ext -p tcp --dport 21 -j DNAT --to-destination $ip_db
-A PREROUTING -m state --state NEW -i $if_ext -p tcp --dport 80 -j DNAT --to-destination $ip_db
-A PREROUTING -m state --state NEW -i $if_ext -p tcp --dport 443 -j DNAT --to-destination $ip_db
# postrouting
-A POSTROUTING -o $if_ext -j MASQUERADE
COMMIT
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
# input
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m state --state NEW -i $if_ext -s $ip_admin -p tcp --dport 22 -j ACCEPT
# forward
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
# ssh from DNAT
-A FORWARD -m state --state NEW -d $ip_www -p tcp --dport 22 -j ACCEPT
-A FORWARD -m state --state NEW -d $ip_db -p tcp --dport 22 -j ACCEPT
# other from DNAT
# FIXME: http etc. -> db?!
-A FORWARD -m state --state NEW -d $ip_db -p tcp --dport 21 -j ACCEPT
-A FORWARD -m state --state NEW -d $ip_db -p tcp --dport 80 -j ACCEPT
-A FORWARD -m state --state NEW -d $ip_db -p tcp --dport 443 -j ACCEPT
# output
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
COMMIT
EOF
Code: Alles auswählen
#!/bin/sh
ip_int=10.22.0.1
ip_www=10.22.0.21
ip_db=10.22.0.22
ip_users=192.168.1/24
ip_admin=192.168.1.56
iptables-restore <<EOF
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
# input
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m state --state NEW -s $ip_admin -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -s $ip_users -p tcp --dport 21 -j ACCEPT
-A INPUT -m state --state NEW -s $ip_users -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -s $ip_users -p tcp --dport 443 -j ACCEPT
# output
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
COMMIT
EOF
Code: Alles auswählen
#!/bin/sh
ip_int=10.22.0.1
ip_www=10.22.0.21
ip_db=10.22.0.22
ip_users=192.168.1/24
ip_admin=192.168.1.56
iptables-restore <<EOF
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
# input
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m state --state NEW -s $ip_admin -p tcp --dport 22 -j ACCEPT
# output
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -m state --state NEW -d $ip_db -p tcp --dport 3306 -j ACCEPT
COMMIT
EOF
Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
Re: Frage zum Script für Iptables
danke schon mal aber ich schau mir aufjedenfall erstmal an denn ich möcht es ja kapieren und net nur abkupfern, das hilft mir ja nicht für weitere aufgaben weiter wenn ich nur kopiere.
hilft mir auf jedenfall mehr wenn ich die zeilen kapiere als nur zu kopieren
mfg
hilft mir auf jedenfall mehr wenn ich die zeilen kapiere als nur zu kopieren
mfg