[gelöst] openVPN "alles" durch den Tunnel

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
dirk11
Beiträge: 2812
Registriert: 02.07.2013 11:47:01

[gelöst] openVPN "alles" durch den Tunnel

Beitrag von dirk11 » 09.02.2019 12:52:21

Moin!

Ich stehe gerade ein wenig auf dem Schlauch:
Für meine Smartphones habe ich openVPN eingerichtet, auf dem Stretch-Server den openVPN daemon, auf den Geräten openVPN Client. Sollte ursprünglich dafür sein, um aus der Ferne auf meinen Server zugreifen zu können. Funktioniert prinzipiell auch.

Jetzt würde ich gerne alles durch diesen Tunnel leiten, sprich jede Abfrage in's Internet soll auch dort durch laufen.
Ich finde nur gerade nicht, wie ich das einrichte...
Außerdem bestünde die Zusatzfrage: kann man das irgendwie einfach "schaltbar" machen?
Zuletzt geändert von dirk11 am 10.02.2019 14:28:14, insgesamt 1-mal geändert.

Benutzeravatar
bluestar
Beiträge: 2334
Registriert: 26.10.2004 11:16:34
Wohnort: Rhein-Main-Gebiet

Re: openVPN "alles" durch den Tunnel

Beitrag von bluestar » 09.02.2019 13:11:45

dirk11 hat geschrieben: ↑ zum Beitrag ↑
09.02.2019 12:52:21
Jetzt würde ich gerne alles durch diesen Tunnel leiten, sprich jede Abfrage in's Internet soll auch dort durch laufen.
Ich finde nur gerade nicht, wie ich das einrichte...
Die OpenVPN-Option heißt: redirect-gateway
dirk11 hat geschrieben: ↑ zum Beitrag ↑
09.02.2019 12:52:21
Außerdem bestünde die Zusatzfrage: kann man das irgendwie einfach "schaltbar" machen?
Das kannst du z.B. durch zwei unterschiedliche Konfigurationen auf dem Smartphone machen, einmal mit der Option und einmal ohne.

dirk11
Beiträge: 2812
Registriert: 02.07.2013 11:47:01

Re: openVPN "alles" durch den Tunnel

Beitrag von dirk11 » 09.02.2019 13:34:07

Danke! Also muss ich nur die von Dir genannte Option in der *.ovpn für das Client-Endgerät hinzufügen, das ist schon alles?

mat6937
Beiträge: 2925
Registriert: 09.12.2014 10:44:00

Re: openVPN "alles" durch den Tunnel

Beitrag von mat6937 » 09.02.2019 14:06:06

dirk11 hat geschrieben: ↑ zum Beitrag ↑
09.02.2019 13:34:07
..., das ist schon alles?
Auf dem Server wird noch:

Code: Alles auswählen

net.ipv4.ip_forward=1
und eine Source-NAT (MASQUERADE)-Regel benötigt.

dirk11
Beiträge: 2812
Registriert: 02.07.2013 11:47:01

Re: openVPN "alles" durch den Tunnel

Beitrag von dirk11 » 09.02.2019 14:41:42

mat6937 hat geschrieben: ↑ zum Beitrag ↑
09.02.2019 14:06:06
Auf dem Server wird noch:

Code: Alles auswählen

net.ipv4.ip_forward=1
Das steht sowieso schon in der syctl.conf drin.
Aber wie würde
und eine Source-NAT (MASQUERADE)-Regel benötigt.
So eine Regel aussehen?
Zur Zeit habe ich dort:

Code: Alles auswählen

    $IPTABLES -A FORWARD -i tun+ -o eth0 -s 10.1.0.0/24 -m conntrack --ctstate NEW -j ACCEPT
    $IPTABLES -A FORWARD -i tun+ -o eth0 -s 10.2.0.0/24 -m conntrack --ctstate NEW -j ACCEPT
    $IPTABLES -A FORWARD -i eth0 -o tun+ -s 192.168.17.0/24 -m conntrack --ctstate NEW -j ACCEPT
    $IPTABLES -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    $IPTABLES -A FORWARD -i eth0 -o eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    $IPTABLES -A FORWARD -i tun+ -o tun+ -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    $IPTABLES -A FORWARD -i eth0 -o tun+ -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    $IPTABLES -A FORWARD -i tun+ -o eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    $IPTABLES -A FORWARD -i eth0 -o eth0 -j REJECT
    $IPTABLES -A FORWARD -i tun+ -o tun+ -j REJECT
Zuletzt geändert von dirk11 am 09.02.2019 19:18:56, insgesamt 1-mal geändert.

mat6937
Beiträge: 2925
Registriert: 09.12.2014 10:44:00

Re: openVPN "alles" durch den Tunnel

Beitrag von mat6937 » 09.02.2019 14:46:59

dirk11 hat geschrieben: ↑ zum Beitrag ↑
09.02.2019 14:41:42
Aber wie würde
und eine Source-NAT (MASQUERADE)-Regel benötigt.
So eine Regel aussehen?
Z. B. so:

Code: Alles auswählen

/sbin/iptables -t nat -I POSTROUTING 1 -o eth0 -j MASQUERADE

dirk11
Beiträge: 2812
Registriert: 02.07.2013 11:47:01

Re: openVPN "alles" durch den Tunnel

Beitrag von dirk11 » 09.02.2019 14:57:07

Mhmm. Ich habe in meinen iptables-Regeln die folgende gefunden:

Code: Alles auswählen

$IPTABLES -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Was macht die anders?

Nächste Frage: wie kann ich prüfen, ob die Daten wirklich alle durch den Tunnel gehen? Mein Android-Device kennt kein traceroute... :(
Mhmm. Ein traceroute auf heise.de ergibt derzeit auf meinem Server:

Code: Alles auswählen

# traceroute heise.de
traceroute to heise.de (193.99.144.80), 30 hops max, 60 byte packets
 1  router.lan (192.168.17.1)  0.297 ms  0.253 ms  0.299 ms
 2  62.155.244.25 (62.155.244.25)  6.745 ms  6.745 ms  7.156 ms
 3  f-ed12-i.F.DE.NET.DTAG.DE (62.154.15.110)  11.645 ms  12.270 ms  12.326 ms
 4  62.157.251.38 (62.157.251.38)  12.668 ms  12.833 ms  12.834 ms
 5  * * *
 6  212.19.61.13 (212.19.61.13)  11.630 ms !X * *
Handy:

Code: Alles auswählen

10.1.0.1 90ms
192.168.17.1 74ms
62.155.244.25 73ms
62.154.15.110 f-ed12-i.F.DE.NET.DTAG.DE 78ms
62.157.251.38 77ms
*
*
212.19.61.13 115ms
193.99.144.80 heise.de 56ms
Sieht in meinen Augen ganz gut aus!?

ReturnToSender
Beiträge: 123
Registriert: 23.10.2018 18:06:09

Re: openVPN "alles" durch den Tunnel

Beitrag von ReturnToSender » 09.02.2019 15:05:30

dirk11 hat geschrieben: ↑ zum Beitrag ↑
09.02.2019 14:57:07
Was macht die anders?
Nichts, die macht genau das gleiche. Wobei ich jetzt gerade nicht weiss, was im oberen Beispiel die "1" hinter Postrouting macht.... ob die gewollt ist oder ob das nur ein Kopierfehler ist. Aber prinzipiell sollte das gleich sein. Die Unterschiede der Parameter kann man mit "man iptables" nachlesen.
Nächste Frage: wie kann ich prüfen, ob die Daten wirklich alle durch den Tunnel gehen?
Du muss auf dem Android-Client in den VPN-Optionen einstellen, dass lokaler Traffic auch durch das VPN geht, weil man im Regelfall an fremden AccessPoints keinen lokalen Traffic hat.

mat6937
Beiträge: 2925
Registriert: 09.12.2014 10:44:00

Re: openVPN "alles" durch den Tunnel

Beitrag von mat6937 » 09.02.2019 15:07:24

dirk11 hat geschrieben: ↑ zum Beitrag ↑
09.02.2019 14:57:07
Mhmm. Ich habe in meinen iptables-Regeln die folgende gefunden:

Code: Alles auswählen

$IPTABLES -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Was macht die anders?

Die Regel wird nichts anders machen, ... außer wenn es noch zusätzliche Regeln gibt und sie später gesetzt wird, dann evtl. am Ende angehängt.

Aber siehe dazu die Ausgabe(n) von:

Code: Alles auswählen

iptables -nvx -L POSTROUTING -t nat

mat6937
Beiträge: 2925
Registriert: 09.12.2014 10:44:00

Re: openVPN "alles" durch den Tunnel

Beitrag von mat6937 » 09.02.2019 15:09:27

ReturnToSender hat geschrieben: ↑ zum Beitrag ↑
09.02.2019 15:05:30
dirk11 hat geschrieben: ↑ zum Beitrag ↑
09.02.2019 14:57:07
Was macht die anders?
Nichts, die macht genau das gleiche. Wobei ich jetzt gerade nicht weiss, was im oberen Beispiel die "1" hinter Postrouting macht.... ob die gewollt ist oder ob das nur ein Kopierfehler ist.
Warum soll das ein Kopierfehler sein? Ich habe die nicht kopiert.

Die "1" setzt in Zusammenhang mit "I", diese Regel an die 1. Stelle in der chain (... was manchmal wichtig sein kann).

dirk11
Beiträge: 2812
Registriert: 02.07.2013 11:47:01

Re: openVPN "alles" durch den Tunnel

Beitrag von dirk11 » 09.02.2019 15:29:07

mat6937 hat geschrieben: ↑ zum Beitrag ↑
09.02.2019 15:07:24
Aber siehe dazu die Ausgabe(n) von:

Code: Alles auswählen

iptables -nvx -L POSTROUTING -t nat
Ergibt:

Code: Alles auswählen

# iptables -nvx -L POSTROUTING -t nat
Chain POSTROUTING (policy ACCEPT 3676 packets, 222780 bytes)
    pkts      bytes target     prot opt in     out     source               destination         
   15168  1991806 MASQUERADE  all  --  *      eth0    0.0.0.0/0            0.0.0.0/0
Im übrigen habe ich bei der "1" auch erst an einen C&P-Fehler gedacht, ich habe eine einzeln stehende 1 noch nie bei einer iptables-Regel gesehen.
ReturnToSender hat geschrieben: ↑ zum Beitrag ↑
09.02.2019 15:05:30
Du muss auf dem Android-Client in den VPN-Optionen einstellen, dass lokaler Traffic auch durch das VPN geht, weil man im Regelfall an fremden AccessPoints keinen lokalen Traffic hat.
Öhm? Da kann ich sowas nicht einstellen im Android-openvpn-Client?

TomL

Re: openVPN "alles" durch den Tunnel

Beitrag von TomL » 09.02.2019 15:38:13

dirk11 hat geschrieben: ↑ zum Beitrag ↑
09.02.2019 15:29:07
ich habe eine einzeln stehende 1 noch nie bei einer iptables-Regel gesehen.
Doch, das ist eigentlich völlig normal.... failtoban nutzt das beispielsweise auch und sehr intensiv.... das sind Inserts, im Gegensatz zu üblichen seriellen Appends. Und natürlich nutzt das auch Schadsoftware, die sich vor den anderen Regeln eigene Genehmigungen setzt. Nur ist mir der Insert mit Positionsangabe für postrouting nicht gleich ins Bewusstsein gekommen, zumal ich das in meinem Umfeld eh noch nie gebraucht habe... also speziell dafür zwingend eine Position dabei anzugeben, weil ich das sowieso saddr-abhängig machen würde. Das man darauf so empfindlich reagiert, hat mich überrascht... zumal ich ja noch sagte "ich weiss gerade nicht...usw." .... als wenn nicht -wissen schon wieder was schlimmes wäre... na ja ist auch egal...
Öhm? Da kann ich sowas nicht einstellen
Ich verwende den folgenden, damit geht das.... funktioniert gefühlt seit bestimmt bald 10 Jahren kompromislos fehlerfrei und stabil:
https://play.google.com/store/apps/deta ... kt.openvpn

dirk11
Beiträge: 2812
Registriert: 02.07.2013 11:47:01

Re: openVPN "alles" durch den Tunnel

Beitrag von dirk11 » 09.02.2019 15:48:38

Ok. Was ist denn mit "lokalem traffic" überhaupt gemeint?

Ein LAN? Da wäre mir das egal. Oder auch wie im Beispiel heise.de über den lokalen Access-Point? Und was wäre denn die Default-Einstellung im von mir bisher verwendeten Client?

TomL

Re: openVPN "alles" durch den Tunnel

Beitrag von TomL » 09.02.2019 16:02:02

dirk11 hat geschrieben: ↑ zum Beitrag ↑
09.02.2019 15:48:38
Ok. Was ist denn mit "lokalem traffic" überhaupt gemeint?
LAN-Intern.... also zwischen Deinem Android und dem Accesspoint-LAN. Du könntest ja theoretisch die Online-Speisekarte anschauen, wenn der AccessPoint ein Restaurant wäre.... oder andere lokale Services des AP nutzen. Mit der Umleitung übers VPN würde dieser Traffic dann über Deinen VPN-Server laufen. Für gewerbliche, dienstliche VPN-Anwendungen kann diese Unterscheidung sinnvoll sein, wenn man im Büro lokale Dienste ohne VPN nutzen will, aber entfernte Dienste übers VPN gehen sollen. Für uns privat glaube ich, an fremden APs es ist besser, rigoros alles über den VPN-Server laufen zu lassen.

dirk11
Beiträge: 2812
Registriert: 02.07.2013 11:47:01

Re: openVPN "alles" durch den Tunnel

Beitrag von dirk11 » 09.02.2019 16:10:20

TomL hat geschrieben: ↑ zum Beitrag ↑
09.02.2019 16:02:02
Für gewerbliche, dienstliche VPN-Anwendungen kann diese Unterscheidung sinnvoll sein, wenn man im Büro lokale Dienste ohne VPN nutzen will, aber entfernte Dienste übers VPN gehen sollen. Für uns privat glaube ich, an fremden APs es ist besser, rigoros alles über den VPN-Server laufen zu lassen.
Ich sehe
a) keine Unterscheidung zwischen "Gewerblich" und "Privat"
und verstehe
b) nicht, wozu das überhaupt gut sein soll? Wenn ich ein Restaurant-WLAN nutze und dann deren Online-Speisekarte sehen will, ist es doch sinnfrei, das über meinen Server in Deutschland zu leiten? Was für einen Benefit sollte denn der Betreiber daraus ziehen, wenn ich das nicht mache?

Benutzeravatar
bluestar
Beiträge: 2334
Registriert: 26.10.2004 11:16:34
Wohnort: Rhein-Main-Gebiet

Re: openVPN "alles" durch den Tunnel

Beitrag von bluestar » 09.02.2019 17:08:53

dirk11 hat geschrieben: ↑ zum Beitrag ↑
09.02.2019 15:29:07
ich habe eine einzeln stehende 1 noch nie bei einer iptables-Regel gesehen.
Vielleicht mal zur Erklärung:

Code: Alles auswählen

iptables -A CHAIN ....
Fügt eine Regel an das Ende des Chains hinzu (append).

Code: Alles auswählen

iptables -I CHAIN n ....
Fügt eine Regel an Position "n" in dem Chain ein (insert), wobei die Reglen bei n = 1 beginnen.

dirk11
Beiträge: 2812
Registriert: 02.07.2013 11:47:01

Re: openVPN "alles" durch den Tunnel

Beitrag von dirk11 » 09.02.2019 17:51:11

:THX:

Der Grund für meine Frage und den Wunsch, überhaupt diese Option zu bekommen, war übrigens ein Zwischenstopp in einem der "Five-Eyes" Staaten vor kurzem. Hier in D interessiert mich wenig, ob die Telekom mein Surf-Verhalten über das Festnetz oder über das Mobilnetz verfolgt...

mat6937
Beiträge: 2925
Registriert: 09.12.2014 10:44:00

Re: openVPN "alles" durch den Tunnel

Beitrag von mat6937 » 09.02.2019 18:07:03

dirk11 hat geschrieben: ↑ zum Beitrag ↑
09.02.2019 15:29:07
..., ich habe eine einzeln stehende 1 noch nie bei einer iptables-Regel gesehen.
BTW: Hätte ich dich vorher fragen sollen, ob Du schon eine oder mehrere iptables-Regel(n) in der POSTROUTING chain/nat table hast?
Wenn ich die Regel mit der 1 (... d. h. sie wird an 1. Stelle in der chain gesetzt) schreibe, weiß ich, dass diese Regel auch immer wirksam ist.

dirk11
Beiträge: 2812
Registriert: 02.07.2013 11:47:01

Re: openVPN "alles" durch den Tunnel

Beitrag von dirk11 » 09.02.2019 18:26:19

Alles gut. Ich wußte überhaupt nicht, daß es diese Möglichkeit bei iptables gibt, ich dachte immer, die werden der Reihe nach abgearbeitet. Von daher ist die MASQUERADE-Regel sowieso die erste im postrouting-Zweig.

mat6937
Beiträge: 2925
Registriert: 09.12.2014 10:44:00

Re: openVPN "alles" durch den Tunnel

Beitrag von mat6937 » 09.02.2019 18:29:39

dirk11 hat geschrieben: ↑ zum Beitrag ↑
09.02.2019 18:26:19
..., ich dachte immer, die werden der Reihe nach abgearbeitet.
Und genau das kann ja zum Problem werden. Denn wenn eine Regel zutrifft/ wirksam ist, werden die nachfolgenden Regeln nicht mehr berücksichtigt.

dirk11
Beiträge: 2812
Registriert: 02.07.2013 11:47:01

Re: openVPN "alles" durch den Tunnel

Beitrag von dirk11 » 09.02.2019 18:46:37

Na ja. Das kann nur dann zum Problem werden, wenn man das nicht beachtet oder nicht weiß (mir war das schon bekannt). Aber gut, daß Du es nochmal erwähnst, für andere Leser.

mat6937
Beiträge: 2925
Registriert: 09.12.2014 10:44:00

Re: openVPN "alles" durch den Tunnel

Beitrag von mat6937 » 09.02.2019 19:01:42

dirk11 hat geschrieben: ↑ zum Beitrag ↑
09.02.2019 18:46:37
... (mir war das schon bekannt). ..., für andere Leser.
Poste mal die Ausgabe von:

Code: Alles auswählen

iptables -nvx -L FORWARD

dirk11
Beiträge: 2812
Registriert: 02.07.2013 11:47:01

Re: openVPN "alles" durch den Tunnel

Beitrag von dirk11 » 09.02.2019 19:18:30

Code: Alles auswählen

# iptables -nvx -L FORWARD
Chain FORWARD (policy DROP 0 packets, 0 bytes)
    pkts      bytes target     prot opt in     out     source               destination         
      19     1596 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0            icmptype 8 limit: avg 1/sec burst 5
       0        0 DROP       icmp --  *      *       0.0.0.0/0            0.0.0.0/0            icmptype 8
     119    62144 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
      85     5100 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:0x17/0x02 limit: avg 10/sec burst 5
      17      680 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:0x17/0x04 limit: avg 10/sec burst 5
       0        0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:0x3F/0x00 limit: avg 5/hour burst 5
       0        0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:0x3F/0x3F limit: avg 5/hour burst 5
      41    40772 ACCEPT     all  --  tun+   eth0    10.1.0.0/24          0.0.0.0/0            ctstate NEW
       0        0 ACCEPT     all  --  tun+   eth0    10.2.0.0/24          0.0.0.0/0            ctstate NEW
       0        0 ACCEPT     all  --  eth0   tun+    192.168.17.0/24       0.0.0.0/0            ctstate NEW
   56424 45575256 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
       0        0 ACCEPT     all  --  eth0   eth0    0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
       0        0 ACCEPT     all  --  tun+   tun+    0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
       0        0 ACCEPT     all  --  eth0   tun+    0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
       0        0 ACCEPT     all  --  tun+   eth0    0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
       0        0 REJECT     all  --  eth0   eth0    0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
       0        0 REJECT     all  --  tun+   tun+    0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
       0        0 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0            limit: avg 5/min burst 5 LOG flags 0 level 4 prefix "Invalid FORWARD: "

mat6937
Beiträge: 2925
Registriert: 09.12.2014 10:44:00

Re: openVPN "alles" durch den Tunnel

Beitrag von mat6937 » 09.02.2019 19:21:54

dirk11 hat geschrieben: ↑ zum Beitrag ↑
09.02.2019 19:18:30

Code: Alles auswählen

   56424 45575256 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
       0        0 ACCEPT     all  --  eth0   eth0    0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
       0        0 ACCEPT     all  --  tun+   tun+    0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
       0        0 ACCEPT     all  --  eth0   tun+    0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
       0        0 ACCEPT     all  --  tun+   eth0    0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
  
Hier sieht man, dass es dir doch nicht bekannt war. Denn die Regel:

Code: Alles auswählen

56424 45575256 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
sorgt dafür, dass die 4 nachfolgenden Regeln nie wirksam (d. h. nie gebraucht) werden. Der Zähler (counter) dieser 4 Regeln wird immer bei 0 (null) bleiben.

dirk11
Beiträge: 2812
Registriert: 02.07.2013 11:47:01

Re: openVPN "alles" durch den Tunnel

Beitrag von dirk11 » 09.02.2019 20:54:17

Ok. 8O Jetzt wird's krank... 8)

Dann sag' mir doch bitte, wo mein Fehler liegt - das Konstrukt ist über 15 Jahre alt, im Laufe der Zeit gewachsen, und ich war mir eigentlich sicher, daß alles in Ordnung ist:

Code: Alles auswählen

01. LOCAL="192.168.17.0/24"
02. IPTABLES="/sbin/iptables"
03. 
04. ## echo 1 > /proc/sys/net/ipv4/ip_forward
05. 
06. Stop()
07. {
08.     Flush ACCEPT
09. }
10.
11. Close()
12. {
13.     Flush DROP
14. }
15.
16. Flush()
17. {
18.     $IPTABLES -F
19.     $IPTABLES -t nat -F
20.     $IPTABLES -t mangle -F      # ignore if you get an error here
21.     $IPTABLES -X                # deletes every non-builtin chain in the table
22.     $IPTABLES -A INPUT -i lo -j ACCEPT          # accepts packets from localhost
23.     $IPTABLES -A INPUT -i eth0 -j ACCEPT        # accepts packets from outside
24.     $IPTABLES -A INPUT -i eth1 -j ACCEPT        # accepts packets from intranet
25.     $IPTABLES -A INPUT -i tun0 -j ACCEPT        # accepts packets from intranet
26.     $IPTABLES -A INPUT -i tun1 -j ACCEPT        # accepts packets from intranet
27.     $IPTABLES -P INPUT DROP
28.     $IPTABLES -P FORWARD DROP
29. }
30. 
31. Start()
32. {
33.     $IPTABLES -F
34.     $IPTABLES -t nat -F
35.     ## Zaehlregeln fuer autoaus-script (folgende fünf Zeilen, Traffic im Intranet-Bereich):
36.     $IPTABLES -N TRAFFIC_ACCT
37.     $IPTABLES -A TRAFFIC_ACCT
38.     $IPTABLES -I INPUT -s 192.168.17.0/24 -j TRAFFIC_ACCT
39.     $IPTABLES -I INPUT -s 10.1.0.0/24 -j TRAFFIC_ACCT # eventuell anstelle von /26 auch ueberall /29
40.     $IPTABLES -I INPUT -s 10.2.0.0/24 -j TRAFFIC_ACCT # eventuell anstelle von /26 auch ueberall /29
41.
42.     ## Firewall ICMP. ICMP is useful so allow any by default.
43.     ## mit den ersten drei Zeilen wird verhindert, dass mein Rechner
44.     ## zu viele Antworten schickt (also auf zu viele ping-Anfragen
45.     ## reagiert) und damit den eigenen upload dichtmacht. Ohne "-i ! eth0"
46.     ## nach dem INPUT und vor dem -p gilt es fuer jede Schnittstelle.
47.     $IPTABLES -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
48.     $IPTABLES -A INPUT -p icmp --icmp-type echo-request -j DROP
49.     $IPTABLES -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
50.     $IPTABLES -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT # Schutz vor "ping of death"
51.     $IPTABLES -A FORWARD -p icmp --icmp-type echo-request -j DROP                        # ?
52.     $IPTABLES -A INPUT   -p icmp -j ACCEPT
53.     $IPTABLES -A OUTPUT  -p icmp -j ACCEPT
54.     $IPTABLES -A FORWARD -p icmp -j ACCEPT
55.
56. ### Regeln fuer INPUT:
57.     $IPTABLES -A INPUT -i lo -j ACCEPT
58.
59.     ## Alle TCP-Sessions muessen mit einem SYN beginnen, sonst werden sie verworfen:
60.     $IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "Stealth Scan: "
61.     $IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
62.
63.     ## Ungewoehnliche Flags verwerfen:
64.     $IPTABLES -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
65.     $IPTABLES -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
66.     $IPTABLES -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
67.     $IPTABLES -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
68.     $IPTABLES -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
69.     $IPTABLES -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
70.
71.     ## SYN-Flood-Schutz:
72.     $IPTABLES -N SYN_FLOOD
73.     $IPTABLES -A INPUT -p tcp --syn -j SYN_FLOOD
74.     $IPTABLES -A SYN_FLOOD -m limit --limit 10/s --limit-burst 40 -j RETURN
75.     $IPTABLES -A SYN_FLOOD -j DROP
76.
77.     $IPTABLES -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
78. #    $IPTABLES -A INPUT -m state --state NEW -i ! ppp+ -j ACCEPT
79.
80. ##  -> Hier neue Dienste einfuegen, die von aussen akzeptiert werden sollen, z.B.:
81. ##  (mit den folgenden 20 Zeilen werden die IPs geblockt, von denen innerhalb
82. ##  von 1m mehr als 5 Einlogversuche kommen, und zwar fuer je 1m.
83. ##  ACHTUNG: nach einer uptime >25d funktioniert das nicht mehr und von
84. ##  ausserhalb kann sich niemand mehr einloggen!
85. ##  Deshalb Einfuegung in /usr/local/bin/autoaus)
86.
87. ##^ NEU Anti-Bruteforce fuer Ports 22 und 33:
88.     $IPTABLES -N SSH_WHITELIST
89.     $IPTABLES -A SSH_WHITELIST -s 192.168.17.0/24 -m recent --remove --name ssh -j ACCEPT
90.     $IPTABLES -A SSH_WHITELIST -s 10.1.0.0/26 -m recent --remove --name ssh -j ACCEPT
91.     $IPTABLES -A SSH_WHITELIST -s 10.2.0.0/26 -m recent --remove --name ssh -j ACCEPT
92.     $IPTABLES -N SSH_BADGUYS
93.     $IPTABLES -A SSH_BADGUYS -m recent --name ssh_badguys --set
94.     $IPTABLES -A SSH_BADGUYS -j LOG --log-prefix "SSH scanner detected: "
95.     $IPTABLES -A SSH_BADGUYS -j REJECT --reject-with icmp-admin-prohibited
96. ##  auch hier: ohne "-i ! eth1" nach dem INPUT und vor dem -p gilt es fuer jede Schnittstelle:
97.     $IPTABLES -A INPUT -p tcp --dport 22 -m state --state NEW -j SSH_WHITELIST
98.     $IPTABLES -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --name ssh_badguys --update --seconds 120 -j REJECT --reject-with icmp-admin-prohibited
99.     $IPTABLES -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name ssh
100.     $IPTABLES -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --rcheck --seconds 60 --hitcount 5 --name ssh -j SSH_BADGUYS
101.
102.     $IPTABLES -N SSH_WHITELIST2
103.     $IPTABLES -A SSH_WHITELIST2 -s 192.168.17.0/24 -m recent --remove --name ssh2 -j ACCEPT
104.     $IPTABLES -A SSH_WHITELIST2 -s 10.1.0.0/26 -m recent --remove --name ssh2 -j ACCEPT
105.     $IPTABLES -A SSH_WHITELIST2 -s 10.2.0.0/26 -m recent --remove --name ssh2 -j ACCEPT
106.     $IPTABLES -N SSH_BADGUYS2
107.     $IPTABLES -A SSH_BADGUYS2 -m recent --name ssh_badguys2 --set
108.     $IPTABLES -A SSH_BADGUYS2 -j LOG --log-prefix "SSH scanner detected: "
109.     $IPTABLES -A SSH_BADGUYS2 -j REJECT --reject-with icmp-admin-prohibited
110. ##  auch hier: ohne "-i ! eth1" vor dem -p gilt es fuer jede Schnittstelle:
111.     $IPTABLES -A INPUT -p tcp --dport 33 -m state --state NEW -j SSH_WHITELIST2
112.     $IPTABLES -A INPUT -p tcp --dport 33 -m state --state NEW -m recent --name ssh_badguys2 --update --seconds 120 -j REJECT --reject-with icmp-admin-prohibited
113.     $IPTABLES -A INPUT -p tcp --dport 33 -m state --state NEW -m recent --set --name ssh2
114.     $IPTABLES -A INPUT -p tcp --dport 33 -m state --state NEW -m recent --rcheck --seconds 60 --hitcount 5 --name ssh2 -j SSH_BADGUYS2
115. ##^
116.
117. ##  Diese Ports sind von ueberall erreichbar:
118. #    $IPTABLES -A INPUT -p tcp --dport ftp-data -j ACCEPT
119. #    $IPTABLES -A INPUT -p tcp --dport ftp -j ACCEPT
120.     $IPTABLES -A INPUT -p tcp --dport ssh -j ACCEPT
121.     $IPTABLES -A INPUT -p udp --dport ssh -j ACCEPT
122.     $IPTABLES -A INPUT -p tcp --dport 33 -j ACCEPT
123.     $IPTABLES -A INPUT -p udp --dport 33 -j ACCEPT
124.     $IPTABLES -A INPUT -p tcp --dport 25 -j ACCEPT
125.     $IPTABLES -A INPUT -p tcp --dport finger -j ACCEPT
126.     ## Limit bietet Schutz gegen DoS:
127.     $IPTABLES -A INPUT -p tcp --dport http -m limit --limit 25/minute --limit-burst 100 -j ACCEPT
128.     $IPTABLES -A INPUT -p udp --dport http -m limit --limit 25/minute --limit-burst 100 -j ACCEPT
129.     $IPTABLES -A INPUT -p tcp --dport https -m limit --limit 25/minute --limit-burst 100 -j ACCEPT
130.     $IPTABLES -A INPUT -p udp --dport https -m limit --limit 25/minute --limit-burst 100 -j ACCEPT
131.     ##
132.     $IPTABLES -A INPUT -p tcp --dport imaps -j ACCEPT
133.     $IPTABLES -A INPUT -p udp --dport imaps -j ACCEPT
134. #    $IPTABLES -A INPUT -p tcp --dport openvpn -j ACCEPT
135.     $IPTABLES -A INPUT -p udp --dport openvpn -j ACCEPT
136.     $IPTABLES -A INPUT -p tcp --dport 1195 -j ACCEPT
137.
138. ##  Diese Ports sind nur aus dem Intranet erreichbar:
139.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p tcp --dport time  -j ACCEPT # timeserver
140.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p udp --dport time  -j ACCEPT # timeserver
141.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p udp --dport timed -j ACCEPT # timeserver
142.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p tcp --dport ntp   -j ACCEPT # timeserver
143.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p udp --dport ntp   -j ACCEPT # timeserver
144.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p tcp --dport 442   -j ACCEPT # https lighttpd
145.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p udp --dport 442   -j ACCEPT # https lighttpd
146.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p udp --dport netbios-ns  -j ACCEPT # Samba Nameserver
147.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p udp --dport netbios-dgm -j ACCEPT # Samba datagram
148.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p tcp --dport netbios-ssn -j ACCEPT # Samba session service
149.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p tcp --dport microsoft-ds -j ACCEPT # Samba Microsoft Naked CIFS
150.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p udp --dport microsoft-ds -j ACCEPT # Samba Microsoft Naked CIFS
151.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p tcp --dport 323   -j ACCEPT # timeserver fuer chrony
152.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p udp --dport 323   -j ACCEPT # timeserver fuer chrony
153. #    $IPTABLES -A INPUT -s 192.168.17.0/24 -p tcp --dport openvpn -j ACCEPT # openvpn
154. #    $IPTABLES -A INPUT -s 192.168.17.0/24 -p udp --dport openvpn -j ACCEPT # openvpn
155. #    $IPTABLES -A INPUT -s 192.168.17.0/24 -p tcp --dport 1195 -j ACCEPT # openvpn
156.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p tcp --dport 8118  -j ACCEPT # tor
157.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p udp --dport 8118  -j ACCEPT # tor
158.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p tcp --dport 9050  -j ACCEPT # tor
159.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p udp --dport 9050  -j ACCEPT # tor
160.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p tcp --dport ftp-data -j ACCEPT
161.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p tcp --dport ftp   -j ACCEPT
162.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p tcp --dport ipp   -j ACCEPT
163.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p udp --dport ipp   -j ACCEPT
164.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p tcp --dport dict  -j ACCEPT
165.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p udp --dport dict  -j ACCEPT
166.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p udp --dport tftp  -j ACCEPT
167.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p tcp --dport sunrpc -j ACCEPT # nfs/sunrpc
168.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p udp --dport sunrpc -j ACCEPT # nfs/sunrpc
169.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p tcp --dport nfs    -j ACCEPT # nfs/sunrpc
170.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p udp --dport nfs    -j ACCEPT # nfs/sunrpc
171.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p tcp --dport 32765  -j ACCEPT # nfs/sunrpc
172.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p udp --dport 32765  -j ACCEPT # nfs/sunrpc
173.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p tcp --dport 32766  -j ACCEPT # nfs/sunrpc
174.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p udp --dport 32766  -j ACCEPT # nfs/sunrpc
175.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p tcp --dport 32767  -j ACCEPT # nfs/sunrpc
176.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p udp --dport 32767  -j ACCEPT # nfs/sunrpc
177.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p tcp --dport 1900   -j ACCEPT # mediatomb-DLNA
178.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p udp --dport 1900   -j ACCEPT # mediatomb-DLNA
179.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p tcp --dport 49152  -j ACCEPT # mediatomb-DLNA
180.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p udp --dport 49152  -j ACCEPT # mediatomb-DLNA
181.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p tcp --dport 9981  -j ACCEPT # hts TVheadend
182.     $IPTABLES -A INPUT -s 192.168.17.0/24 -p tcp --dport 9982  -j ACCEPT # hts TVheadend
183.
184.     ## Dasselbe fuer das TUN-device tun0 von VPN:
185.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p tcp --dport time  -j ACCEPT # timeserver
186.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p udp --dport time  -j ACCEPT # timeserver
187.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p udp --dport timed -j ACCEPT # timeserver
188.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p tcp --dport ntp   -j ACCEPT # timeserver
189.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p udp --dport ntp   -j ACCEPT # timeserver
190.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p tcp --dport 442   -j ACCEPT # https lighttpd
191.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p udp --dport 442   -j ACCEPT # https lighttpd
192.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p udp --dport netbios-ns  -j ACCEPT # Samba Nameserver
193.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p udp --dport netbios-dgm -j ACCEPT # Samba datagram
194.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p tcp --dport netbios-ssn -j ACCEPT # Samba session service
195.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p tcp --dport microsoft-ds -j ACCEPT # Samba Microsoft Naked CIFS
196.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p udp --dport microsoft-ds -j ACCEPT # Samba Microsoft Naked CIFS
197.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p tcp --dport 323   -j ACCEPT # timeserver fuer chrony
198.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p udp --dport 323   -j ACCEPT # timeserver fuer chrony
199. #    $IPTABLES -A INPUT -s 10.1.0.0/26 -p tcp --dport openvpn -j ACCEPT # openvpn
200. #    $IPTABLES -A INPUT -s 10.1.0.0/26 -p udp --dport openvpn -j ACCEPT # openvpn
201. #    $IPTABLES -A INPUT -s 10.1.0.0/26 -p tcp --dport 1195 -j ACCEPT # openvpn
202.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p tcp --dport 8118  -j ACCEPT # tor
203.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p udp --dport 8118  -j ACCEPT # tor
204.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p tcp --dport 9050  -j ACCEPT # tor
205.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p udp --dport 9050  -j ACCEPT # tor
206.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p tcp --dport ftp-data -j ACCEPT
207.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p tcp --dport ftp   -j ACCEPT
208.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p tcp --dport ipp   -j ACCEPT
209.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p udp --dport ipp   -j ACCEPT
210.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p tcp --dport dict  -j ACCEPT
211.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p udp --dport dict  -j ACCEPT
212.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p udp --dport tftp  -j ACCEPT
213.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p tcp --dport sunrpc -j ACCEPT # nfs/sunrpc
214.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p udp --dport sunrpc -j ACCEPT # nfs/sunrpc
215.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p tcp --dport nfs    -j ACCEPT # nfs/sunrpc
216.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p udp --dport nfs    -j ACCEPT # nfs/sunrpc
217.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p tcp --dport 32765  -j ACCEPT # nfs/sunrpc
218.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p udp --dport 32765  -j ACCEPT # nfs/sunrpc
219.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p tcp --dport 32766  -j ACCEPT # nfs/sunrpc
220.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p udp --dport 32766  -j ACCEPT # nfs/sunrpc
221.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p tcp --dport 32767  -j ACCEPT # nfs/sunrpc
222.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p udp --dport 32767  -j ACCEPT # nfs/sunrpc
223.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p tcp --dport 1900   -j ACCEPT # mediatomb-DLNA
224.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p udp --dport 1900   -j ACCEPT # mediatomb-DLNA
225.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p tcp --dport 49152  -j ACCEPT # mediatomb-DLNA
226.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p udp --dport 49152  -j ACCEPT # mediatomb-DLNA
227.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p tcp --dport 9981  -j ACCEPT # hts TVheadend
228.     $IPTABLES -A INPUT -s 10.1.0.0/26 -p tcp --dport 9982  -j ACCEPT # hts TVheadend
229.
230.     ## Dasselbe fuer das TUN-device tun1 von VPN:
231.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p tcp --dport time  -j ACCEPT # timeserver
232.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p udp --dport time  -j ACCEPT # timeserver
233.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p udp --dport timed -j ACCEPT # timeserver
234.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p tcp --dport ntp   -j ACCEPT # timeserver
235.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p udp --dport ntp   -j ACCEPT # timeserver
236.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p tcp --dport 442   -j ACCEPT # https lighttpd
237.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p udp --dport 442   -j ACCEPT # https lighttpd
238.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p udp --dport netbios-ns  -j ACCEPT # Samba Nameserver
239.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p udp --dport netbios-dgm -j ACCEPT # Samba datagram
240.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p tcp --dport netbios-ssn -j ACCEPT # Samba session service
241.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p tcp --dport microsoft-ds -j ACCEPT # Samba Microsoft Naked CIFS
242.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p udp --dport microsoft-ds -j ACCEPT # Samba Microsoft Naked CIFS
243.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p tcp --dport 323   -j ACCEPT # timeserver fuer chrony
244.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p udp --dport 323   -j ACCEPT # timeserver fuer chrony
245. #    $IPTABLES -A INPUT -s 10.2.0.0/26 -p tcp --dport openvpn -j ACCEPT # openvpn
246. #    $IPTABLES -A INPUT -s 10.2.0.0/26 -p udp --dport openvpn -j ACCEPT # openvpn
247. #    $IPTABLES -A INPUT -s 10.2.0.0/26 -p tcp --dport 1195 -j ACCEPT # openvpn
248.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p tcp --dport 8118  -j ACCEPT # tor
249.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p udp --dport 8118  -j ACCEPT # tor
250.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p tcp --dport 9050  -j ACCEPT # tor
251.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p udp --dport 9050  -j ACCEPT # tor
252.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p tcp --dport ftp-data -j ACCEPT
253.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p tcp --dport ftp   -j ACCEPT
254.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p tcp --dport ipp   -j ACCEPT
255.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p udp --dport ipp   -j ACCEPT
256.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p tcp --dport dict  -j ACCEPT
257.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p udp --dport dict  -j ACCEPT
258.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p udp --dport tftp  -j ACCEPT
259.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p tcp --dport sunrpc -j ACCEPT # nfs/sunrpc
260.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p udp --dport sunrpc -j ACCEPT # nfs/sunrpc
261.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p tcp --dport nfs    -j ACCEPT # nfs/sunrpc
262.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p udp --dport nfs    -j ACCEPT # nfs/sunrpc
263.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p tcp --dport 32765  -j ACCEPT # nfs/sunrpc
264.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p udp --dport 32765  -j ACCEPT # nfs/sunrpc
265.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p tcp --dport 32766  -j ACCEPT # nfs/sunrpc
266.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p udp --dport 32766  -j ACCEPT # nfs/sunrpc
267.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p tcp --dport 32767  -j ACCEPT # nfs/sunrpc
268.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p udp --dport 32767  -j ACCEPT # nfs/sunrpc
269.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p tcp --dport 1900   -j ACCEPT # mediatomb-DLNA
270.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p udp --dport 1900   -j ACCEPT # mediatomb-DLNA
271.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p tcp --dport 49152  -j ACCEPT # mediatomb-DLNA
272.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p udp --dport 49152  -j ACCEPT # mediatomb-DLNA
273.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p tcp --dport 9981  -j ACCEPT # hts TVheadend
274.     $IPTABLES -A INPUT -s 10.2.0.0/26 -p tcp --dport 9982  -j ACCEPT # hts TVheadend
275. ##  <- ACHTUNG: evtl. auch /etc/hosts.allow anpassen!!!
276.
278. #    $IPTABLES -A INPUT -m state --state NEW -i eth1 -j ACCEPT
279.     $IPTABLES -A INPUT -m state --state NEW -i eth0 -j REJECT
280.     $IPTABLES -A INPUT -m state --state NEW -i tun+ -j REJECT
281.
282. ##  only if all of the above rules not succeed, use:
283.     $IPTABLES -A INPUT -m limit --limit 5/minute -j LOG --log-prefix "Invalid INPUT: "
284.     $IPTABLES -P INPUT DROP
285. ###
286.
287. ### Regeln fuer FORWARD:
288.     ## Limit bietet Schutz gegen SYN-flood Attacken:
289.     $IPTABLES -A FORWARD -p tcp --syn -m limit --limit 10/s -j ACCEPT
290.
291.     ## Limit bietet Schutz gegen verstohlene Portscanner:
292.     $IPTABLES -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 10/s -j ACCEPT
293.
294.     ## Limit bietet Schutz vor Portscanner:
295.     $IPTABLES -A FORWARD -p tcp --tcp-flags ALL NONE -m limit --limit 5/h -j ACCEPT
296.     $IPTABLES -A FORWARD -p tcp --tcp-flags ALL ALL -m limit --limit 5/h -j ACCEPT
297.
298. ## FORWARD testweise fuer VPN-Tunnel tun0 alles zulassen (fuer Telefonie), damit sind die Folgeregeln obsolet:
299. #    $IPTABLES -I FORWARD -i eth0 -o tun+ -j ACCEPT
300. #    $IPTABLES -I FORWARD -i tun+ -o eth0 -j ACCEPT
301.
302.     $IPTABLES -A FORWARD -i tun+ -o eth0 -s 10.1.0.0/24 -m conntrack --ctstate NEW -j ACCEPT # Test fuer openVPN und Telefonie
302.     $IPTABLES -A FORWARD -i tun+ -o eth0 -s 10.2.0.0/24 -m conntrack --ctstate NEW -j ACCEPT # Test fuer openVPN und Telefonie
303.     $IPTABLES -A FORWARD -i eth0 -o tun+ -s 192.168.17.0/24 -m conntrack --ctstate NEW -j ACCEPT # Test fuer openVPN und Telefonie
304.     $IPTABLES -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT # Test fuer openVPN und Telefonie
305.     $IPTABLES -A FORWARD -i eth0 -o eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
306.     $IPTABLES -A FORWARD -i tun+ -o tun+ -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
307.     $IPTABLES -A FORWARD -i eth0 -o tun+ -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
308.     $IPTABLES -A FORWARD -i tun+ -o eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
309.     $IPTABLES -A FORWARD -i eth0 -o eth0 -j REJECT
310.     $IPTABLES -A FORWARD -i tun+ -o tun+ -j REJECT
311.
312. ##  only if all of the above rules not succeed, use:
313.     $IPTABLES -A FORWARD -m limit --limit 5/minute -j LOG --log-prefix "Invalid FORWARD: "
314.     $IPTABLES -P FORWARD DROP
315. ###
316.
317.     ## use this line only if you have dynamic IP address from your ISP
318.     $IPTABLES -t nat -A POSTROUTING -o eth0 -j MASQUERADE
319.
320.     ## Die ISDN-Karte wurde ausgebaut, deshalb wurden die folgenden 2 Zeilen deaktiviert.
321. #    $IPTABLES -t nat -A POSTROUTING -o ppp+ -j MASQUERADE
322. #    $IPTABLES -t nat -A POSTROUTING -o ippp+ -j MASQUERADE
323. }

Antworten