[gelöst] iptables Regeln erstellen für eth0 eth1 und tun0

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
slu
Beiträge: 2240
Registriert: 23.02.2005 23:58:47

[gelöst] iptables Regeln erstellen für eth0 eth1 und tun0

Beitrag von slu » 28.01.2006 22:17:29

Hallo Forum,

ich bin gerade am experimentieren mit iptables und hab mich schon einmal erfolgreich ausgesperrt 8O
Oder mit anderen Worten Bildschirm und Tastatur anschließen 8)

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

Benutzeravatar
AlB
Beiträge: 50
Registriert: 29.07.2005 15:24:21
Wohnort: Weimar
Kontaktdaten:

Beitrag von AlB » 28.01.2006 22:29:26

Moin!

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

slu
Beiträge: 2240
Registriert: 23.02.2005 23:58:47

Beitrag von slu » 28.01.2006 22:55:41

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 :roll:

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
Dachte da mehr an sowas wie die Debian installation, sozusagen eine oberfläche die man mit der Tastatur bedient...
Gruß
slu

Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.

Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 28.01.2006 23:44:13

slu hat geschrieben:Dachte da mehr an sowas wie die Debian installation, sozusagen eine oberfläche die man mit der Tastatur bedient...
Vielleicht kannst du etwas mit Webmin anfangen, da gibt es auch ein Shorewall Modul dazu.

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

slu
Beiträge: 2240
Registriert: 23.02.2005 23:58:47

Beitrag von slu » 28.01.2006 23:55:55

Hi gms,

ich möchte iptables lernen, hab ich auch schon mal einiges zusammengesucht.

Nun brauche ich noch eure Hilfe für den feinschlief :wink:

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
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?
Gruß
slu

Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.

Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 29.01.2006 00:12:27

slu hat geschrieben: Ist es nötig für eth1 noch ein OUTPUT zu erlauben weil sonst das VPN nicht aufgebaut werden kann?
Das kannst du über das "state" Modul lösen, ich habe einmal deinen Code entsprechend angepaßt.
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
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.
Dafür mußt du entsprechende Regeln in die Forward Chain einbauen:

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
Du mußt auch noch Forwarding ermöglichen:

Code: Alles auswählen

# allow forwarding
echo "1" > /proc/sys/net/ipv4/ip_forward

Gruß
gms

slu
Beiträge: 2240
Registriert: 23.02.2005 23:58:47

Beitrag von slu » 29.01.2006 00:22:31

Hallo gms,

vielen Dank für deine Antwort!

So langsam wird ein Schuh draus, danke für deine Hilfe.

Ich habe noch eine Frage :oops:
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

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 29.01.2006 00:37:52

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

slu
Beiträge: 2240
Registriert: 23.02.2005 23:58:47

Beitrag von slu » 29.01.2006 00:56:48

Hi gms,

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:~#
Wegen dem eintrag in der inittab, wäre der so richtig?:

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

Benutzeravatar
H4kk3r
Beiträge: 724
Registriert: 02.01.2006 16:50:51
Wohnort: in der Nähe von Heidelberg

Beitrag von H4kk3r » 29.01.2006 02:04:42

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

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 29.01.2006 11:43:18

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:~#
Diese Zeilen sind falsch:

Code: Alles auswählen

iptables -A OUTPUT-o lo -j ACCEPT 
iptables -A OUTPUT-o eth0 -j ACCEPT
nach dem OUTPUT gehört jeweils mindestens ein Leerzeichen:

Code: Alles auswählen

iptables -A OUTPUT -o lo -j ACCEPT 
iptables -A OUTPUT -o eth0 -j ACCEPT
falls es dann auch nicht funktioniert, poste bitte das endgültige Script

Code: Alles auswählen

Wegen dem eintrag in der inittab, wäre der so richtig?:
[code]l3:3:wait:/root/startfirewall.sh
[/quote]

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
Gruß
gms

slu
Beiträge: 2240
Registriert: 23.02.2005 23:58:47

Beitrag von slu » 29.01.2006 12:25:20

Hi gms,

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 
Edit: Fehler vergessen

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

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 29.01.2006 12:31:22

Diese Zeile war auch falsch:

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
Wo sind denn jetzt die FORWARD rules hingekommen ?

Gruß
gms

slu
Beiträge: 2240
Registriert: 23.02.2005 23:58:47

Beitrag von slu » 29.01.2006 12:36:56

Hi gms,

vielen Dank das war es!
Wo sind denn jetzt die FORWARD rules hingekommen ?
Die baue ich wieder ein, teste gerade nur auf dem Testrechner, da hab ich nur eine Netzwerkkarte drin...

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
Beiträge: 2240
Registriert: 23.02.2005 23:58:47

Beitrag von slu » 29.01.2006 16:59:26

Hi gms,

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 
EDIT: Was ich auch noch vergass, vom VPN sollte nur Ports 21 und 3128 weitergeleitet werden.

Mhm ist doch komplexer als ich dachte :roll:
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

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 29.01.2006 17:19:09

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:
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 
Gruß
gms

slu
Beiträge: 2240
Registriert: 23.02.2005 23:58:47

Beitrag von slu » 29.01.2006 23:21:27

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.

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
EDIT: sobald ich "iptables -P FORWARD ACCEPT" mache funktionierts.
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

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 30.01.2006 10:48:52

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:

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:"
optionales Feature: logging auf der Console für die Firewall verhindern:
die folgende Zeile in /etc/sysctl.conf einfügen

Code: Alles auswählen

kernel/printk = 2 4 1 7
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:

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

slu
Beiträge: 2240
Registriert: 23.02.2005 23:58:47

Beitrag von slu » 30.01.2006 12:43:43

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:

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:" 
Wir das ergebniss auf der Konsole ausgegeben auf der ich Angemeldet bin?
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 
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.
Gruß
slu

Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.

Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER

Benutzeravatar
meandtheshell
Beiträge: 4054
Registriert: 14.01.2005 17:51:30

Beitrag von meandtheshell » 30.01.2006 13:02:07

slu hat geschrieben: Wir das ergebniss auf der Konsole ausgegeben auf der ich Angemeldet bin?
nein - siehe http://iptables-tutorial.frozentux.net/ ... #LOGTARGET <--- note:
weitere info:
http://www.debianforum.de/forum/viewtop ... ght=printk

markus

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 30.01.2006 13:25:23

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 ...
Hi, :D
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]

Benutzeravatar
meandtheshell
Beiträge: 4054
Registriert: 14.01.2005 17:51:30

Beitrag von meandtheshell » 30.01.2006 13:35:06

gms hat geschrieben: Der alte syslogd ist nicht fähig die Kernelmeldungen anhand von regexp in unterschiedliche Dateien aufzusplitten.
right
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.
stimmt natürlich - habe zwei sachen zur selben zeit gemacht daher nicht aufmerksam genug gelesen

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 ist die syslog-ng Variante sympatischer, da muß ich nicht einen zweiten Daemon laufen lassen.
mir auch - verwende ich seit ca. einem Jahr - AFAIK sind wir eh ca. zur selben Zeit umgestiegen

Ich finde die Konfiguration auch intuitiver - IMHO
[edit]
hast anscheinend schon die Antwort gefunden :)
[/edit]
Oder die Antwort mich :lol: das Zeug hab ich wohl gewusst aber war halt wieder einmal kurz verwirrt ...

markus

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 30.01.2006 14:52:39

meandtheshell hat geschrieben:
[edit]
hast anscheinend schon die Antwort gefunden :)
[/edit]
Oder die Antwort mich :lol:
antwort hat geschrieben: stöhn, i kan boid nimma, wan er nur endlich steh bleibn würd
....
na endlich, jetzt hob i eam
:lol: :lol: :lol:

Benutzeravatar
meandtheshell
Beiträge: 4054
Registriert: 14.01.2005 17:51:30

Beitrag von meandtheshell » 30.01.2006 15:02:17

@gms
ROFL
du bist schuld das ich nun Kaffee von der Tastatur wischen muss - hab ich doch einen Brüller losgelassen und dabei mit dem Häferl in der Hand eine Sauerei gemacht :P

markus (dreht die Tastatur nochmal auf den Kopf - nur um sicher zu gehen)

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 30.01.2006 15:10:50

tastatur hat geschrieben: net scho wida
imma triffts mi
jaja, zur falschen Zeit, am falschen Ort, das kenne ich

Gruß
gms

Antworten