[gelöst] iptables Regeln erstellen für eth0 eth1 und tun0
[gelöst] iptables Regeln erstellen für eth0 eth1 und tun0
Hallo Forum,
ich bin gerade am experimentieren mit iptables und hab mich schon einmal erfolgreich ausgesperrt
Oder mit anderen Worten Bildschirm und Tastatur anschließen
So ich möchte folgendes lösen:
Ich habe folgende Netzwerkinterfaces:
- eth0 -> hier darf alles rein und raus, sauberes Netzwerk
- eth1 -> hier hängt ein Router und ein AccessPoint fürs WLAN dran, hier darf nur der Port 1194 für openVPN frei sein (eingehend).
- tun0 -> hier hängen ja meine openVPN Clients über eth1 dran, hier sollen nur die Ports 21 und 3128 ins Netz eth0 weitergeleitet werden.
Sollen die Regeln via Script bei jedem Start erstellt werden? Oder kann man Sie fest einbauen?
Könnte mir jemand beim erstellen der Regeln helfen?
ich bin gerade am experimentieren mit iptables und hab mich schon einmal erfolgreich ausgesperrt
Oder mit anderen Worten Bildschirm und Tastatur anschließen
So ich möchte folgendes lösen:
Ich habe folgende Netzwerkinterfaces:
- eth0 -> hier darf alles rein und raus, sauberes Netzwerk
- eth1 -> hier hängt ein Router und ein AccessPoint fürs WLAN dran, hier darf nur der Port 1194 für openVPN frei sein (eingehend).
- tun0 -> hier hängen ja meine openVPN Clients über eth1 dran, hier sollen nur die Ports 21 und 3128 ins Netz eth0 weitergeleitet werden.
Sollen die Regeln via Script bei jedem Start erstellt werden? Oder kann man Sie fest einbauen?
Könnte mir jemand beim erstellen der Regeln helfen?
Zuletzt geändert von slu am 06.02.2006 00:22:36, insgesamt 1-mal geändert.
Gruß
slu
Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.
Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER
slu
Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.
Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER
Moin!
Warum nutzt du nicht Shorewall, das ist mein Mittel der Wahl um iptables zu konfigurieren.
Gruß
Al
Warum nutzt du nicht Shorewall, das ist mein Mittel der Wahl um iptables zu konfigurieren.
Gruß
Al
Nur tote Fische schwimmen mit dem Strom!
System:
Athlon64 3200+ | 1028 MB RAM | Kernel 2.6.12-1-amd64-generic | Debian Etch
jabber: bundy@sourcecode.de
System:
Athlon64 3200+ | 1028 MB RAM | Kernel 2.6.12-1-amd64-generic | Debian Etch
jabber: bundy@sourcecode.de
Hi AIB,
danke für deinen Beitrag, hab mich jedoch überschätzt mit der Firewall geschichte.
Shorewall macht es für mich nicht gerade einfacher
Dachte da mehr an sowas wie die Debian installation, sozusagen eine oberfläche die man mit der Tastatur bedient...
danke für deinen Beitrag, hab mich jedoch überschätzt mit der Firewall geschichte.
Shorewall macht es für mich nicht gerade einfacher
Code: Alles auswählen
testbox:~# apt-get install shorewall
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut... Fertig
Vorgeschlagene Pakete:
shorewall-doc kernel-image-2.4 kernel-image-2.6
Die folgenden NEUEN Pakete werden installiert:
shorewall
0 aktualisiert, 1 neu installiert, 0 zu entfernen und 11 nicht aktualisiert.
Es müssen noch 0B von 152kB Archiven geholt werden.
Nach dem Auspacken werden 844kB Plattenplatz zusätzlich benutzt.
Vorkonfigurieren der Pakete ...
Wähle vormals abgewähltes Paket shorewall.
(Lese Datenbank ... 15980 Dateien und Verzeichnisse sind derzeit installiert.)
Entpacke shorewall (aus .../shorewall_2.2.3-2_all.deb) ...
Richte shorewall ein (2.2.3-2) ...
#### WARNING ####
the firewall won't be started/stopped unless it is configured
please configure it and then edit /etc/default/shorewall
and set the "startup" variable to 1 in order to allow
shorewall to start
#################
testbox:~# shorewall
Usage: shorewall [debug|trace] [nolock] [-c <directory>] [ -x ] [ -q ] [ -f ] <command>
where <command> is one of:
add <interface>[:{<bridge-port>[:<host>]|<host>}[,...]] ... <zone>
allow <address> ...
check [ <directory> ]
clear
delete <interface>[:{<bridge-port>[:<host>]|<host>}[,...]] ... <zone>
drop <address> ...
forget [ <file name> ]
help [ <command > | host | address ]
hits
ipcalc [ <address>/<vlsm> | <address> <netmask> ]
iprange <address>-<address>
logwatch [<refresh interval>]
monitor [<refresh interval>]
refresh
reject <address> ...
reset
restart [ <directory> ]
restore [ <file name> ]
save [ <file name> ]
show [<chain> [ <chain> ... ]|classifiers|connections|log|nat|tc|tos|zones]
start [ <directory> ]
stop
status
try <directory> [ <timeout> ]
version
The -c and -f options may not be specified with a <directory> in the start, restart and check commands
testbox:~# shorewall
Gruß
slu
Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.
Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER
slu
Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.
Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER
Vielleicht kannst du etwas mit Webmin anfangen, da gibt es auch ein Shorewall Modul dazu.slu hat geschrieben:Dachte da mehr an sowas wie die Debian installation, sozusagen eine oberfläche die man mit der Tastatur bedient...
Mit dem KDE Programm Guarddog könntest du es auch versuchen. Ich kann dir aber nicht sagen, ob es für deine Zwecke ausreichende Funktionalität zur Verfügung stellt.
Du solltest aber in jedem Fall die iptable Kommandos lesen und verstehen können.
Ansonsten kannst du diese Tools weder kontrollieren und auch keiner Fehlfunktion vernünftig nachgehen.
Gruß
gms
Hi gms,
ich möchte iptables lernen, hab ich auch schon mal einiges zusammengesucht.
Nun brauche ich noch eure Hilfe für den feinschlief
So das sind die Reglen die ich mir mal zusammen gesucht habe, die aber noch nicht ganz Perfekt sind.
z.B. muss ich irgendwie noch erreichen das tun0 Port 3128 und 21 ins lokale Subnetz geroutet wird und da bleibe ich nun stecken.
Ist es nötig für eth1 noch ein OUTPUT zu erlauben weil sonst das VPN nicht aufgebaut werden kann?
ich möchte iptables lernen, hab ich auch schon mal einiges zusammengesucht.
Nun brauche ich noch eure Hilfe für den feinschlief
Code: Alles auswählen
#alles löschen
iptables -F
#alles auf DROP
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#localhost und eth0 komplett freischalten
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth0 -j ACCEPT
iptables -A OUTPUT-o lo -j ACCEPT
iptables -A OUTPUT-o eth0 -j ACCEPT
#tun0 für den Proxy freischalten
iptables -A INPUT -i tun0 --dport 3128 -j ACCEPT
#tun0 für den FTP freischalten
iptables -A INPUT -i tun0 --dport 21 -j ACCEPT
#eth1 nur noch den VPN aufbau zulassen
iptables -A INPUT -i eth1 -p udp --dport 5000 -j ACCEPT
z.B. muss ich irgendwie noch erreichen das tun0 Port 3128 und 21 ins lokale Subnetz geroutet wird und da bleibe ich nun stecken.
Ist es nötig für eth1 noch ein OUTPUT zu erlauben weil sonst das VPN nicht aufgebaut werden kann?
Gruß
slu
Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.
Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER
slu
Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.
Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER
Das kannst du über das "state" Modul lösen, ich habe einmal deinen Code entsprechend angepaßt.slu hat geschrieben: Ist es nötig für eth1 noch ein OUTPUT zu erlauben weil sonst das VPN nicht aufgebaut werden kann?
Unter Verwendung dieses Moduls werden die Scripte übersichtlicher (kürzer) und sicher
Code: Alles auswählen
#alles löschen
iptables -F
#alles auf DROP
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#localhost und eth0 komplett freischalten
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth0 -j ACCEPT
iptables -A OUTPUT-o lo -j ACCEPT
iptables -A OUTPUT-o eth0 -j ACCEPT
# erlaube bestehende Verbindungen
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#tun0 für den Proxy freischalten
iptables -A INPUT -i tun0 --dport 3128 -m state --state NEW -j ACCEPT
#tun0 für den FTP freischalten
iptables -A INPUT -i tun0 --dport 21 -m state --state NEW -j ACCEPT
#eth1 nur noch den VPN aufbau zulassen
iptables -A INPUT -i eth1 -p udp --dport 5000 -m state --state NEW -j ACCEPT
Dafür mußt du entsprechende Regeln in die Forward Chain einbauen:slu hat geschrieben: z.B. muss ich irgendwie noch erreichen das tun0 Port 3128 und 21 ins lokale Subnetz geroutet wird und da bleibe ich nun stecken.
Code: Alles auswählen
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i tun0 --dport 3128 -m state --state NEW -j ACCEPT
iptables -A FORWARD -i tun0 --dport 21 -m state --state NEW -j ACCEPT
Code: Alles auswählen
# allow forwarding
echo "1" > /proc/sys/net/ipv4/ip_forward
Gruß
gms
Hallo gms,
vielen Dank für deine Antwort!
So langsam wird ein Schuh draus, danke für deine Hilfe.
Ich habe noch eine Frage
Habe im Forum/Howtos gelesen das die Regeln beim Neustart weg sind, dazu müsste man das Script bei jedem neustart ausführen.
Dachte das könnte ich über einen Cronjob lösen, finde aber keine möglichkeit den so anzulegen das er nur beim neustart abgearbeitet wird...
vielen Dank für deine Antwort!
So langsam wird ein Schuh draus, danke für deine Hilfe.
Ich habe noch eine Frage
Habe im Forum/Howtos gelesen das die Regeln beim Neustart weg sind, dazu müsste man das Script bei jedem neustart ausführen.
Dachte das könnte ich über einen Cronjob lösen, finde aber keine möglichkeit den so anzulegen das er nur beim neustart abgearbeitet wird...
Gruß
slu
Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.
Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER
slu
Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.
Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER
Cronjob ist nicht gut für sowas. Du möchtest dieses Script ja nicht in zeitlich regelmäßigen Intervallen starten, sondern gleich nach dem Start.
Entweder du baust es noch um, zu einem Runlevel Script, sodaß es die Argumente "start", "stop" und "restart" beherscht und verlinkst es nachher entsprechend in deine Runlevels, oder du rufst es einfach über die /etc/inittab auf.
Ersteres ist zwar ein bißchen mehr Arbeit, aber fügt sich schon besser in das System ein.
Gruß
gms
Entweder du baust es noch um, zu einem Runlevel Script, sodaß es die Argumente "start", "stop" und "restart" beherscht und verlinkst es nachher entsprechend in deine Runlevels, oder du rufst es einfach über die /etc/inittab auf.
Ersteres ist zwar ein bißchen mehr Arbeit, aber fügt sich schon besser in das System ein.
Gruß
gms
Hi gms,
irgendwas scheint noch nicht zustimmen:
Wegen dem eintrag in der inittab, wäre der so richtig?:
irgendwas scheint noch nicht zustimmen:
Code: Alles auswählen
testbox:~# ./startfirewall.sh
Bad argument `lo'
Try `iptables -h' or 'iptables --help' for more information.
iptables v1.2.11: Unknown arg `--dport'
Try `iptables -h' or 'iptables --help' for more information.
testbox:~#
Code: Alles auswählen
l3:3:wait:/root/startfirewall.sh
Gruß
slu
Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.
Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER
slu
Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.
Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER
In dem Skript siehst du, wie es funktioniert:
Code: Alles auswählen
#!/bin/bash
start() {
echo "Starting iptables."
# Laden der benötigten Module
modprobe ip_tables
modprobe ip_conntrack
modprobe ip_conntrack_irc
modprobe ip_conntrack_ftp
# alles platt machen
iptables -F
iptables -X
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
# loopback-device in Ruhe lassen
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# bestehende Verbindungen zulassen
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# bestimmte Verbindungen nach außen zulassen
iptables -A OUTPUT -p tcp --sport 1024: --dport 21 -j ACCEPT # ftp
iptables -A OUTPUT -p tcp --sport 1024: --dport 22 -j ACCEPT # ssh
iptables -A OUTPUT -p tcp --sport 1024: --dport 25 -j ACCEPT # smtp
iptables -A OUTPUT -p udp --sport 1024: --dport 53 -j ACCEPT # dns
iptables -A OUTPUT -p tcp --sport 1024: --dport 80 -j ACCEPT # http
iptables -A OUTPUT -p tcp --sport 1024: --dport 110 -j ACCEPT # pop3
iptables -A OUTPUT -p tcp --sport 1024: --dport 443 -j ACCEPT # https
iptables -A OUTPUT -p tcp --sport 1024: --dport 995 -j ACCEPT # pop3 (ssl)
iptables -A OUTPUT -p tcp --sport 1024: --dport 5190 -j ACCEPT # icq
iptables -A OUTPUT -p tcp --sport 1024: --dport 6667 -j ACCEPT # irc
iptables -A OUTPUT -p udp --sport 123 --dport 123 -j ACCEPT # ntp
iptables -A OUTPUT -p udp --sport 500 --dport 500 -j ACCEPT # vpnc
iptables -A OUTPUT -p esp -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT # ping
# alles loggen
#dmesg -n 2
#iptables -A INPUT -j LOG --log-prefix "firewall-in "
#iptables -A OUTPUT -j LOG --log-prefix "firewall-out "
}
stop() {
echo "Stopping iptables."
# alles platt machen
iptables -F
iptables -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
}
status() {
iptables -L -vn
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status
;;
*)
echo "Usage: $0 start|stop|restart|status"
exit 1
;;
esac
exit 0
Gruß, Marcus
„Well done! We did it!“
Debian testing
kernel 2.6.18.3
IBM R50e UR0S5GE
„Well done! We did it!“
Debian testing
kernel 2.6.18.3
IBM R50e UR0S5GE
Diese Zeilen sind falsch:slu hat geschrieben:irgendwas scheint noch nicht zustimmen:Code: Alles auswählen
testbox:~# ./startfirewall.sh Bad argument `lo' Try `iptables -h' or 'iptables --help' for more information. iptables v1.2.11: Unknown arg `--dport' Try `iptables -h' or 'iptables --help' for more information. testbox:~#
Code: Alles auswählen
iptables -A OUTPUT-o lo -j ACCEPT
iptables -A OUTPUT-o eth0 -j ACCEPT
Code: Alles auswählen
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -o eth0 -j ACCEPT
Code: Alles auswählen
Wegen dem eintrag in der inittab, wäre der so richtig?:
[code]l3:3:wait:/root/startfirewall.sh
Wenn du das Script nur im Runlevel 3 startest, bist du auch nur in diesem Runlevel geschützt. Ich würde es daher auf diese Weise abändern:
Code: Alles auswählen
fw:12345:wailt:/bin/sh /root/startfirewall.sh
gms
Hi gms,
danke für deine Antwort.
Das mit der leerstelle hab ich übersehen, leider geht das Script auf meinem Testrechner immer noch nicht.
Edit: Fehler vergessen
danke für deine Antwort.
Das mit der leerstelle hab ich übersehen, leider geht das Script auf meinem Testrechner immer noch nicht.
Code: Alles auswählen
#!/bin/sh
# Einfaches Beispiel
#alles löschen
iptables -F
#alles auf DROP
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#localhost und eth0 komplett freischalten
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# erlaube bestehende Verbindungen
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#tun0 für den ssh freischalten
iptables -A INPUT -i tun0 -port 22 -m state --state NEW -j ACCEPT
#eth0 nur noch den VPN aufbau zulassen
iptables -A INPUT -i eth1 -p udp --dport 1194 -m state --state NEW -j ACCEPT
Code: Alles auswählen
testbox:~# ./startfirewall.sh
iptables v1.2.11: Unknown arg `--destination-port'
Try `iptables -h' or 'iptables --help' for more information.
testbox:~#
Zuletzt geändert von slu am 29.01.2006 12:31:45, insgesamt 1-mal geändert.
Gruß
slu
Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.
Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER
slu
Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.
Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER
Diese Zeile war auch falsch:
Wo sind denn jetzt die FORWARD rules hingekommen ?
Gruß
gms
Code: Alles auswählen
#tun0 für den ssh freischalten
iptables -A INPUT -i tun0 -p tcp --dport 22 -m state --state NEW -j ACCEPT
Gruß
gms
Hi gms,
vielen Dank das war es!
Werde jetzt noch das ganze in die inittab einbauen und wenn alles funktioniert gehe ich an meinen eigentlichen Server.
Geb dann nochmal kurz Rückmeldung hier, vielen Danke für deine Hilfe!
vielen Dank das war es!
Die baue ich wieder ein, teste gerade nur auf dem Testrechner, da hab ich nur eine Netzwerkkarte drin...Wo sind denn jetzt die FORWARD rules hingekommen ?
Werde jetzt noch das ganze in die inittab einbauen und wenn alles funktioniert gehe ich an meinen eigentlichen Server.
Geb dann nochmal kurz Rückmeldung hier, vielen Danke für deine Hilfe!
Gruß
slu
Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.
Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER
slu
Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.
Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER
Hi gms,
so ich hab das nun versucht umzusetzen mit einen Teilerfolg.
Problem ist nun das ich an einem Rechner der an eth1 hängt und via VPN verbindet als Standartgateway 192.168.89.41 eingestellt habe. Normal müsste hier dann das Paket geblockt werden, aber er kann ohne Probleme auf eth0:3128 zugreifen.
Ebenso funktioniert es wenn der Standartgateway 10.8.0.1 ist (tun0) was auch richtig ist.
Hier das Script:
EDIT: Was ich auch noch vergass, vom VPN sollte nur Ports 21 und 3128 weitergeleitet werden.
Mhm ist doch komplexer als ich dachte
so ich hab das nun versucht umzusetzen mit einen Teilerfolg.
Code: Alles auswählen
eth0
|
192.168.1.41
|
"gutes" Netz, hier ist auch der FTP
und Proxy der von tun0 in dieses
Netz weitergeleitet werden soll
eth1
|
{ Hier soll nur ein zugriff auf das VPN sein also tun0}
|
192.168.89.41
|
-------------------------------------------------------
| |
"böses" Netz, hier hängt [ ACCESSPOINT (IP 192.168.89.173]
ein Router der den VPN Von hier soll auch nur Zugriff via
Zugang vom Internet VPN sein, weiterhin sollen aber
aus möglich machen soll Proxy und FTP ins Netz eth0
Port vom Router auf weitergeleitet werden
192.168.89.41 weitergeleitet
Problem ist nun das ich an einem Rechner der an eth1 hängt und via VPN verbindet als Standartgateway 192.168.89.41 eingestellt habe. Normal müsste hier dann das Paket geblockt werden, aber er kann ohne Probleme auf eth0:3128 zugreifen.
Ebenso funktioniert es wenn der Standartgateway 10.8.0.1 ist (tun0) was auch richtig ist.
Hier das Script:
Code: Alles auswählen
#alles löschen
iptables -F
#alles auf DROP
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
#localhost und eth0 komplett freischalten
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth0 -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -o eth0 -j ACCEPT
# erlaube bestehende Verbindungen
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
#eth1 nur noch den VPN aufbau zulassen
iptables -A INPUT -i eth1 -p udp --dport 1194 -m state --state NEW -j ACCEPT
#tun0 für den ftp und proxy freischalten
iptables -A INPUT -i tun0 -p tcp --dport 21 -m state --state NEW -j ACCEPT
iptables -A INPUT -i tun0 -p tcp --dport 3128 -m state --state NEW -j ACCEPT
#weiterleiten von ftp und proxy erlauben
iptables -A FORWARD -i eth1 -p tcp --dport 3128 -m state --state NEW -j ACCEPT
iptables -A FORWARD -i eth1 -p tcp --dport 21 -m state --state NEW -j ACCEPT
# allow forwarding
echo "1" > /proc/sys/net/ipv4/ip_forward
Mhm ist doch komplexer als ich dachte
Zuletzt geändert von slu am 29.01.2006 23:26:43, insgesamt 1-mal geändert.
Gruß
slu
Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.
Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER
slu
Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.
Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER
ich bin momentan ziemlich abgelenkt und hatte daher etwas Mühe dir zu folgen. Wenn ich dich trotzdem richtig verstanden habe, stört dich, daß der Zugriff von eth1 auf den Port 3128 im eth0 möglich ist. Du erlaubst das aber doch explicit:
gms
Grußslu hat geschrieben:Code: Alles auswählen
#weiterleiten von ftp und proxy erlauben iptables -A FORWARD -i eth1 -p tcp --dport 3128 -m state --state NEW -j ACCEPT iptables -A FORWARD -i eth1 -p tcp --dport 21 -m state --state NEW -j ACCEPT
gms
Hi gms,
du hast recht, das war quatsch was ich da Konfiguriert habe.
Hab es nun korrigiert, nun hab ich leider das Problem das die weiterleitung von eth1 -> tun0 -> eth0 nicht funktioniert.
EDIT: sobald ich "iptables -P FORWARD ACCEPT" mache funktionierts.
Nur was könnte an den FORWARD Regeln noch falsch sein?
du hast recht, das war quatsch was ich da Konfiguriert habe.
Hab es nun korrigiert, nun hab ich leider das Problem das die weiterleitung von eth1 -> tun0 -> eth0 nicht funktioniert.
Code: Alles auswählen
#alles löschen
iptables -F
#alles auf DROP
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#localhost und eth0 und tun0 komplett freischalten
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth0 -j ACCEPT
iptables -A INPUT -i tun0 -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -o eth0 -j ACCEPT
iptables -A OUTPUT -o tun0 -j ACCEPT
# erlaube bestehende Verbindungen
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
#eth1 nur noch den VPN aufbau zulassen
iptables -A INPUT -i eth1 -p udp --dport 1194 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -o eth1 -p udp --dport 1194 -m state --state NEW -j ACCEPT
#tun0 für den ftp und proxy freischalten
iptables -A FORWARD -i tun0 -p tcp --dport 21 -m state --state NEW -j ACCEPT
iptables -A FORWARD -i tun0 -p tcp --dport 3128 -m state --state NEW -j ACCEPT
# allow forwarding
echo "1" > /proc/sys/net/ipv4/ip_forward
Nur was könnte an den FORWARD Regeln noch falsch sein?
Gruß
slu
Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.
Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER
slu
Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.
Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER
vermutlich liegt der Fehler jezte eher beim Routing. Diese Verbindungen sollten ja nicht über das eth1 Interface, sondern über das tun0 Interface reinkommen und vom tun0 nach eth0 geforwardet werden.
Auf alle Fälle wird es Zeit ein neues Feature in unsere Firewall einzubauen: das Logging:
Dazu müssen wir am Ende des Scripts folgende Rules einfügen:
optionales Feature: logging auf der Console für die Firewall verhindern:
die folgende Zeile in /etc/sysctl.conf einfügen
und danach "sysctl -p" aufrufen
optionales Feature: eigenes Logfile für die Firewall mit Logrotate:
syslog-ng installieren und /etc/syslog-ng/syslog-ng.conf anpassen:
den folgenden Block zwischen "# destinations" und "# some standard log files" einfügen:
/etc/ogrotate.d/firewall-log-local mit folgendem Inhalt erstellen:
Gruß
gms
Auf alle Fälle wird es Zeit ein neues Feature in unsere Firewall einzubauen: das Logging:
Dazu müssen wir am Ende des Scripts folgende Rules einfügen:
Code: Alles auswählen
LOGLIMIT=10/minute
LOGLIMITBURST=10
iptables -A INPUT -m limit --limit $LOGLIMIT --limit-burst $LOGLIMITBURST -j LOG --log-prefix "FW:input:"
iptables -A OUTPUT -m limit --limit $LOGLIMIT --limit-burst $LOGLIMITBURST -j LOG --log-prefix "FW:output:"
iptables -A FORWARD -m limit --limit $LOGLIMIT --limit-burst $LOGLIMITBURST -j LOG --log-prefix "FW:forward:"
die folgende Zeile in /etc/sysctl.conf einfügen
Code: Alles auswählen
kernel/printk = 2 4 1 7
optionales Feature: eigenes Logfile für die Firewall mit Logrotate:
syslog-ng installieren und /etc/syslog-ng/syslog-ng.conf anpassen:
den folgenden Block zwischen "# destinations" und "# some standard log files" einfügen:
Code: Alles auswählen
##############################################################################
# customized firewall logging
filter filt_firewall {
match("FW:");
};
destination firewall {
file("/var/log/firewall.log" \
owner("root") group("adm") perm(0640));
};
log {
source(s_all); \
filter(filt_firewall); \
destination(firewall); \
flags(final);
};
##############################################################################
/etc/ogrotate.d/firewall-log-local mit folgendem Inhalt erstellen:
Code: Alles auswählen
/var/log/firewall.log {
rotate 10
weekly
compress
missingok
notifempty
create 0640 root adm
}
Gruß
gms
Hi gms,
vielen Dank für deine Antwort.
Leider kann ich das erst heute abend ausprobieren, eine Frage hab ich noch vorweg.
Wenn ich das hier einbaue:
Wir das ergebniss auf der Konsole ausgegeben auf der ich Angemeldet bin?
Oder hab ich das falsch interpretiert?
Das Firewall Logrotate hört sich gut an, das werde ich dann auch mal probieren.
EDIT: Meld mich dann heute abend sobald ich es ausprobieren kann.
vielen Dank für deine Antwort.
Leider kann ich das erst heute abend ausprobieren, eine Frage hab ich noch vorweg.
Wenn ich das hier einbaue:
Code: Alles auswählen
LOGLIMIT=10/minute
LOGLIMITBURST=10
iptables -A INPUT -m limit --limit $LOGLIMIT --limit-burst $LOGLIMITBURST -j LOG --log-prefix "FW:input:"
iptables -A OUTPUT -m limit --limit $LOGLIMIT --limit-burst $LOGLIMITBURST -j LOG --log-prefix "FW:output:"
iptables -A FORWARD -m limit --limit $LOGLIMIT --limit-burst $LOGLIMITBURST -j LOG --log-prefix "FW:forward:"
Oder hab ich das falsch interpretiert?
Code: Alles auswählen
optionales Feature: logging auf der Console für die Firewall verhindern:
die folgende Zeile in /etc/sysctl.conf einfügen
Code:
kernel/printk = 2 4 1 7
und danach "sysctl -p" aufrufen
EDIT: Meld mich dann heute abend sobald ich es ausprobieren kann.
Gruß
slu
Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.
Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER
slu
Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.
Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER
- meandtheshell
- Beiträge: 4054
- Registriert: 14.01.2005 17:51:30
nein - siehe http://iptables-tutorial.frozentux.net/ ... #LOGTARGET <--- note:slu hat geschrieben: Wir das ergebniss auf der Konsole ausgegeben auf der ich Angemeldet bin?
weitere info:
http://www.debianforum.de/forum/viewtop ... ght=printk
markus
Hi,meandtheshell hat geschrieben:meinst du nicht "/etc/syslog.conf" ? Aber ganz leicht möglich das du das einen Weg hast den ich noch nicht kenne ...
Der alte syslogd ist nicht fähig die Kernelmeldungen anhand von regexp in unterschiedliche Dateien aufzusplitten.
Wenn du daher ein eigenes Firewall-Log haben möchtest, kannst du entweder auf syslog-ng (ng steht wahrscheinlich für "next generation") wechseln oder ULOG verwenden. Mir ist die syslog-ng Variante sympatischer, da muß ich nicht einen zweiten Daemon laufen lassen.
Gruß
gms
[edit]
hast anscheinend schon die Antwort gefunden
[/edit]
- meandtheshell
- Beiträge: 4054
- Registriert: 14.01.2005 17:51:30
rightgms hat geschrieben: Der alte syslogd ist nicht fähig die Kernelmeldungen anhand von regexp in unterschiedliche Dateien aufzusplitten.
stimmt natürlich - habe zwei sachen zur selben zeit gemacht daher nicht aufmerksam genug gelesenWenn du daher ein eigenes Firewall-Log haben möchtest, kannst du entweder auf syslog-ng (ng steht wahrscheinlich für "next generation") wechseln oder ULOG verwenden.
Tatsache ist wenn er sich mit dem alten syslogd herumschlägt hat der zwei Möglichkeiten - den Weg über syslog_conf oder eben über sysctl_conf.
mir auch - verwende ich seit ca. einem Jahr - AFAIK sind wir eh ca. zur selben Zeit umgestiegenMir ist die syslog-ng Variante sympatischer, da muß ich nicht einen zweiten Daemon laufen lassen.
Ich finde die Konfiguration auch intuitiver - IMHO
Oder die Antwort mich das Zeug hab ich wohl gewusst aber war halt wieder einmal kurz verwirrt ...[edit]
hast anscheinend schon die Antwort gefunden
[/edit]
markus
- meandtheshell
- Beiträge: 4054
- Registriert: 14.01.2005 17:51:30