Firewallscripts

Gemeinsam ins Internet mit Firewall und Proxy.
k-pl
Beiträge: 587
Registriert: 11.01.2002 11:26:44
Wohnort: München
Kontaktdaten:

Firewallscripts

Beitrag von k-pl » 30.10.2002 09:08:57

Da immer wieder die Frage kommt, wo die iptables-Befehle eingetragen werden sollen, hier nochmal das Script von glatzor aus http://www.debianforum.de/forum/viewtopic.php?t=151 . Dieses Script lege man in /etc/init.d ab und erstelle Symlinks im Verzeichnis des benutzren Runlevels.

Achtung: Das Script ist ein Beispiel. Umbedingt die iptables-Eintrage anpassen.

Eine ausführlichere Anleitung befindet sich in der Tipp-Sektion.

Code: Alles auswählen

#!/bin/sh

  # Schnittstelle zum lokalen Netzwerk
  IFACE_INT=eth0

  # Internetschnittstelle - "ippp+" für ISDN
  IFACE_EXT=ppp+

  # Loopback device - bedraf keiner Anpassung
  IFACE_LO=lo


# ************
# * POLICIES *
# ************

  # Zurücksetzen der Konfiguration
  iptables -F
  iptables -t nat -F

  iptables -X
  iptables -t nat -X 

  # Default-Policies setzen - alles fliegt raus
  iptables -P INPUT DROP
  iptables -P FORWARD DROP
  iptables -P OUTPUT DROP

  # Einschalten von ip-Forwarding
  echo "1" > /proc/sys/net/ipv4/ip_forward


# *********
# * INPUT *
# *********

  # Soll nicht sein
  iptables -A INPUT -p TCP ! --syn -m state --state NEW -j DROP

  # Vom internen Netz alles erlauben
  iptables -A INPUT -i $IFACE_INT -j ACCEPT

  # Vom Loopback Alles erlauben
  iptables -A INPUT -i $IFACE_LO -j ACCEPT

  # Vom Internet: Darf nicht sein
  iptables -A INPUT -i $IFACE_EXT  -s 10.0.0.0/8 -j DROP
  iptables -A INPUT -i $IFACE_EXT  -s 172.16.0.0/12 -j DROP
  iptables -A INPUT -i $IFACE_EXT  -s 192.168.0.0/24 -j DROP

  # Vom Internet Erlauben von bereits initialisierten Verbindungen
  iptables -A INPUT -i $IFACE_EXT -m state \
--state ESTABLISHED,RELATED -j ACCEPT


# ***********
# * FORWARD *
# ***********
  
  # Wegen der Telekom
  iptables -I FORWARD -p TCP --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
  
  # Lokal -> Internet: Alles erlauben
  iptables -A FORWARD -i $IFACE_INT -o $IFACE_EXT -j ACCEPT


  # Internet -> Lokales: Nur Verkehr über bereits bestehende Verbindungen erlauben
  iptables -A FORWARD -i $IFACE_EXT -o $IFACE_INT -m state \
--state ESTABLISHED,RELATED -j ACCEPT


# **********
# * OUTPUT *
# **********

  # Ins lokale Netzwerk: Alles erlauben
  iptables -A OUTPUT -o $IFACE_INT -j ACCEPT

  # Ans Loopback: Alles erlauben
  iptables -A OUTPUT -o $IFACE_LO -j ACCEPT

  # Ins Internet : Alles erlauben
  iptables -A OUTPUT -o $IFACE_EXT -j ACCEPT



  # Masquerading
  iptables -A POSTROUTING -o $IFACE_EXT -t nat -j MASQUERADE


  # Den Rest mitprotokollieren
  iptables -A OUTPUT -j LOG --log-prefix "Nicht raus: "
  iptables -A FORWARD -j LOG --log-prefix "Nicht durch: "
  iptables -A INPUT -j LOG --log-prefix "Nicht rein: " 

Changelog:
21.April 2003 - glatzor: Ich habe das Skript leicht modifiziert und einen Verweis auf eine HOWTO hinzugefügt

Benutzeravatar
suntsu
Beiträge: 2947
Registriert: 03.05.2002 10:45:12
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: schweiz
Kontaktdaten:

Beitrag von suntsu » 30.10.2002 09:55:17

Das würde sich auch noch gut in "Tipps" machen.

gruss

Benutzeravatar
acron
Beiträge: 147
Registriert: 03.05.2002 13:31:40
Wohnort: Aachen

Beitrag von acron » 31.10.2002 13:01:54

k-pl hat geschrieben: Dieses Script lege man in /etc/init.d ab und erstelle Symlinks im Verzeichnis des benutzren Runlevels.
oder in /etc/ppp/ip-up.d/ zum start beim aufbau der verbindung

k-pl
Beiträge: 587
Registriert: 11.01.2002 11:26:44
Wohnort: München
Kontaktdaten:

Beitrag von k-pl » 07.11.2002 08:58:24

Und hier noch ein Beispielscript, wenn man keinen Router betriebt, sondern nur seine Workstation absichern will.

Code: Alles auswählen

#!/bin/sh

#-----------------------------------------------
# config
#-----------------------------------------------

IF_INT=eth0
IF_LO=lo

#-----------------------------------------------
# stopFirewall
#-----------------------------------------------

function stopFirewall() {

  # enable all package, but do not forward
  iptables -P INPUT ACCEPT
  iptables -P FORWARD DROP
  iptables -P OUTPUT ACCEPT

  iptables -F
  iptables -t nat -F

  iptables -X
  iptables -t nat -X

  rmmod ip_conntrack_ftp
  rmmod ipt_LOG
}

#-----------------------------------------------
# startFirewall
#-----------------------------------------------

function startFirewall() {
modprobe ip_conntrack_ftp
modprobe ipt_LOG

  iptables -F
  iptables -X

  # drop everything
  iptables -P INPUT DROP
  iptables -P FORWARD DROP
  iptables -P OUTPUT DROP


  # allow everything from IF_LO
  iptables -A INPUT -i $IF_LO -j ACCEPT
  iptables -A OUTPUT -o $IF_LO -j ACCEPT

  # allow all related from IF_INT
  iptables -A INPUT -i $IF_INT -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
  iptables -A INPUT -i $IF_INT -p UDP -m state --state ESTABLISHED,RELATED -j ACCEPT

  # allow all outgoing TCP connections to IF_INT
  iptables -A OUTPUT -o $IF_INT -p TCP -j ACCEPT

  # logg all other destoryed packages
  iptables -A OUTPUT -j LOG -m limit --limit 5/minute --log-prefix "OUTPUT_DROP: " --log-level warn
  iptables -A INPUT -j LOG -m limit --limit 5/minute --log-prefix "INPUT_DROP: " --log-level warn

}


###############################################################################
## Start-Stop-Script                                                         ##
###############################################################################

case "$1" in
start)
echo -n "Starting firewall: iptables"
startFirewall
echo "."
;;

stop)
echo -n "Stopping firewall: iptables"
stopFirewall
echo "."
;;

restart)
$0 stop
$0 start
;;

*)
echo "Usage: firewall {start|stop|restart}"
exit 1
;;
esac

Benutzeravatar
Natas12
Beiträge: 1751
Registriert: 12.04.2002 20:59:12

Beitrag von Natas12 » 08.11.2002 10:30:36

hallo,

hatte mir das skript für die workstation runtergeladen und "eth0" in "pppd" geändert (um es für modemverbindungen zu nutzen).

komme damit jedoch nicht "raus". den aufbau des skripts verstehe ich "so halb", nur leider nicht, wie ich es an meine bedürnisse anpassen kann. hab mir zwar schon eine menge tutorials reingezogen, aber irgendwie hab ich mich in den ganzen informationen verheddert.

lange rede kurter sinn: wie passe ich das skript für modemverbindungen an?

gruß

natas12

k-pl
Beiträge: 587
Registriert: 11.01.2002 11:26:44
Wohnort: München
Kontaktdaten:

Beitrag von k-pl » 08.11.2002 10:35:21

Das muss wenn dann ja ppp0 heißen und nicht pppd. ppp0 ist das Device und pppd ein Daemon.

Benutzeravatar
Natas12
Beiträge: 1751
Registriert: 12.04.2002 20:59:12

Beitrag von Natas12 » 08.11.2002 13:22:49

ah, wieder was dazu gelernt.... ;o)
werd' ich gleich mal testen!

thanx!

k-pl
Beiträge: 587
Registriert: 11.01.2002 11:26:44
Wohnort: München
Kontaktdaten:

Beitrag von k-pl » 08.11.2002 14:03:07

Natas12 hat geschrieben:ah, wieder was dazu gelernt.... ;o)
werd' ich gleich mal testen!

thanx!
Bitte

Benutzeravatar
Natas12
Beiträge: 1751
Registriert: 12.04.2002 20:59:12

Beitrag von Natas12 » 09.11.2002 10:34:25

argh! also: jetzt hab ich mich durch mehrere tutorials durchgeklickt, diverse programme ausprobiert. so richtig schlau werd ich da nicht draus...
hab auf http://www.iptables.de folgendes skript für "eilige" gefunden - taugt das was (einfach nur dialup, modem, mehr nicht):

Code: Alles auswählen

# Verbindungsaufspuerende Module einfuegen (Wenn nicht schon im Kernel).
insmod ip_conntrack
insmod ip_conntrack_ftp

# Kette erstellen, die neue Verbindung blockt, es sei denn, sie kommen
# von innen
 iptables -N block
 iptables -A block -m state --state ESTABLISHED,RELATED -j ACCEPT
 iptables -A block -m state --state NEW -i ! ppp0 -j ACCEPT
 iptables -A block -j DROP

# Von INPUT und FORWARD Ketten zu dieser Kette springen
 iptables -A INPUT -j block
 iptables -A FORWARD -j block
alles was ich so an "fertigen" einsteigerbrandmauern gesehen habe, sah ungefähr wie das hier aus, wohingegen mir jedes tutorial was anderes erzählte...

Benutzeravatar
pdreker
Beiträge: 8298
Registriert: 29.07.2002 21:53:30
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Nürnberg

Beitrag von pdreker » 09.11.2002 16:53:51

Das Skript blockiert alles, was von aussen reinkommt, es sei denn, es wurde von innen explizit angefordert.

Tipps:
Phase1
:arrow: Eine Firewall aufbauen ist ein wenig wie Programmieren. Es gibt fast beliebig viele Wege ein Ziel zu erreichen, daher sagt auch jedes Tutorial was anders.
:arrow: Schau erst'mal in die iptables Doku (nicht Tutorial!) auf http://www.netfilter.org, und verstehe, was INPUT, FORWARD und OUTPUT bedeutet (Da gibts irgednwo so ein schönes kleines Diagramm).
:arrow: Versuche zu verstehen, was eine Chain im allgemeinen ist.
:arrow: Minimale Kenntnisse über TCP und IP wären auch noch hilfreich (Verbindungsaufbau).

Phase2
:arrow: Überlege Dir wo in Deinem Netz die Firewall steht, und wie dein Netz aufgebaut ist.
:arrow: Jetzt plane: was soll die Firewall machen? Was darf rein, was nicht?
:arrow: Mit der man-page in einem Fenster, und die Firewall im anderen: Schritt für Schritt die iptables Befehle zusammen bauen, und ausprobieren. (Aufschreiben!!!)

Konzept: Normalerweise macht man es (für @home!) folgendermassen:
:arrow: Vom Internet ins interne Netz: Es ist nichts erlaubt, ausser ich sage explizit, dass es doch OK ist.
:arrow: Vom internen Netz ins Internet: Es ist alles erlaubt, ausser ich sage explizit, dass es nicht erlaubt ist.
:arrow: Workstations sind durch das Masquerading schon nicht mehr erreichbar (also vor dem Internet geschützt), man muss also eigentlich nur den Router richtig abdichten.

Wenn Du das im Griff hast, kommt NAT. Damit kannst Du dann Ports von dem Router auf die WS weiterleiten, um z.B. P2P Dienste funktionsfähig (oder aktiv) zu machen.

Patrick
Definitely not a bot...
Jabber: pdreker@debianforum.de

Benutzeravatar
Natas12
Beiträge: 1751
Registriert: 12.04.2002 20:59:12

Beitrag von Natas12 » 09.11.2002 18:04:16

super - danke!
ich werde zunächst die von mir benutzte "minimallösung" nutzen (alles erlaubt wenn von mir angefordert) und mal basteln - es ging mir nur darum, nicht mit "offener tür" durch die gegend zu fahren... ;o))

arteist
Beiträge: 728
Registriert: 20.05.2002 17:26:23
Kontaktdaten:

Beitrag von arteist » 17.12.2002 20:57:12

was für einen sinn hat es eigentlich, dass beim workstation-skript nur tcp für outgoing erlaubt ist?

k-pl
Beiträge: 587
Registriert: 11.01.2002 11:26:44
Wohnort: München
Kontaktdaten:

Beitrag von k-pl » 21.12.2002 18:42:28

arteist hat geschrieben:was für einen sinn hat es eigentlich, dass beim workstation-skript nur tcp für outgoing erlaubt ist?
Gar keinen. udp habe ich halt da nicht gebraucht.

Benutzeravatar
eigenvalue
Beiträge: 58
Registriert: 31.12.2002 19:42:10
Wohnort: Dortmund
Kontaktdaten:

Gute Beschreibung

Beitrag von eigenvalue » 01.01.2003 01:25:56

Ich finde Patrick (pdreker) hat mit seinem Posting vom 09.11.2002 eine ziemlich gute Schritt-für-Schritt Anleitung für Einsteiger zum Aufbau einer Firewall gegeben. Ich habe das Posting direkt an ein paar Freunde weitergeleitet, die ensprechende Fragen hatten, welche sich dadurch klären konnten.

Danke an dieser Stelle :)

EigenValue
"Our problems are mostly behind us. What we have to do now is fight the solutions." -- Stult's Report

Benutzeravatar
ChinaRot
Beiträge: 17
Registriert: 12.01.2003 19:22:05

iptabels in den kernel einbinden ?

Beitrag von ChinaRot » 12.01.2003 19:28:33

Hi :-)

... ich habe zum ersten mal ein debian-rechner aufgesetzt :
- Ethernetkarten sind installiert und richtig konfiguriert
- ping ins interne und externe Netz geht
- routing geht noch nicht

... nun habe ich das o.g. Firewallskript 1zu1 übernommen und bekomme folgende Fehlermeldung:

"modprobe:Cant locate module ip_tables
> iptables v1.2.1a: cant initialize iptables table 'filter': iptables who?"

... ich denke mal, das ip_tables noch nicht in den kernel kompeliert ist
... wie mache ich das ? (bin eher ein DAU was Linux angeht)

Danke für Eure Hilfe
Daniel

Benutzeravatar
blackm
Moderator und Co-Admin
Beiträge: 5921
Registriert: 02.06.2002 15:03:17
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von blackm » 12.01.2003 23:51:24

Hi,

was für einen Kernel hast du den? Beim 2.4er (bf2.4) von woody ist das Modul dabei.
Wenn du das hast was per default installiert wird, dann hast du einen 2.2er und solltest mal einen neuen Kernel installieren. Welche Version du hast bekommst du mit uname -r heraus.

by, Martin
Schöne Grüße

Martin

Neu im Forum? --> https://wiki.debianforum.de/debianforum ... tensregeln
Log- und Konfigurationsdatein? --> pastebin.php
Forum unterstützen? --> https://wiki.debianforum.de/debianforum.de/Spenden

Benutzeravatar
ChinaRot
Beiträge: 17
Registriert: 12.01.2003 19:22:05

Beitrag von ChinaRot » 15.01.2003 23:59:30

Hi :-)

... eigentlich sollte woody laufen (stand auf der CD)
... der Befehl uname -r bringt folgende Meldung: "2.2.20-idepci"

... ich wollte mit "apt-get install ip_tables" das Packet nachinstallieren
... apt-get meldete jedoch, daß ip_tabels schon istalliert und in der neusten Version ist

... die Fehlermeldung bleibt jedoch die selbe ...

... wenn ip_tabels installiert ist, jedoch nicht im Kernel kompeliert ist - kann ich ip_tables doch extra laden, oder ? und wie geht das? (für denn Fall das es einfacher ist als die ip_tables in den Kernel zu kompelieren)

Daniel

Benutzeravatar
blackm
Moderator und Co-Admin
Beiträge: 5921
Registriert: 02.06.2002 15:03:17
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von blackm » 16.01.2003 17:53:55

Ja, das kannst du normalerweise als Modul einbinden. Wenn das Modul aber nicht da ist, dann kann es auch nicht geladen werden.

by, Martin
Schöne Grüße

Martin

Neu im Forum? --> https://wiki.debianforum.de/debianforum ... tensregeln
Log- und Konfigurationsdatein? --> pastebin.php
Forum unterstützen? --> https://wiki.debianforum.de/debianforum.de/Spenden

Benutzeravatar
ChinaRot
Beiträge: 17
Registriert: 12.01.2003 19:22:05

Beitrag von ChinaRot » 16.01.2003 21:09:34

Hi :-)

... also ich habe nochmal ein bissel im Inet gesucht :

1. so wie es aussieht habe ich den Kernel 2.2 installiert
(was schon mal peinlich ist, denn es sollte der 2.4 sein)

2. iptables sind erst ab 2.4 im kernel
(wenn ich das richtig verstanden habe)

3. iptabels liegen bei mir im Ordner /sbin

4. das script funktioniert trotzdem nicht

... daher vermuhte ich mal ich muss die iptables noch in den Kernel kompelieren

... gibt es irgendwo eine (halbwegs) idiotensichere, deutsche Anleitung dafür ?

Thx
Daniel

Benutzeravatar
blackm
Moderator und Co-Admin
Beiträge: 5921
Registriert: 02.06.2002 15:03:17
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von blackm » 16.01.2003 21:53:07

ChinaRot hat geschrieben:1. so wie es aussieht habe ich den Kernel 2.2 installiert
(was schon mal peinlich ist, denn es sollte der 2.4 sein)
Muß dir nicht peinlich sein, kann passieren.
2. iptables sind erst ab 2.4 im kernel
ja
3. iptabels liegen bei mir im Ordner /sbin
In /sbin/ liegt das Programm iptables. Die eigentliche Tabelle ist irgendwo in deinem Speicher.
daher vermuhte ich mal ich muss die iptables noch in den Kernel kompelieren
Wenn du einen 2.4er von Debian installiert hast, dann sollte da alles für die ip_tables drin sein.
gibt es irgendwo eine (halbwegs) idiotensichere, deutsche Anleitung dafür ?
Versuch mal folgende: by, Martin
Schöne Grüße

Martin

Neu im Forum? --> https://wiki.debianforum.de/debianforum ... tensregeln
Log- und Konfigurationsdatein? --> pastebin.php
Forum unterstützen? --> https://wiki.debianforum.de/debianforum.de/Spenden

trozmo
Beiträge: 288
Registriert: 05.01.2003 20:01:03
Kontaktdaten:

Beitrag von trozmo » 18.01.2003 22:30:53

hat hier schon mal jemand das iptables-webmin-tool zum laufen bekommen ?




btw. das lutel-firewall-script ist ja hammerhart --> http://energoprojekt.pl/~lutel/firewall/

funktioniert astrein und ist definitiv ein dickes ding. 8O

Benutzeravatar
pdreker
Beiträge: 8298
Registriert: 29.07.2002 21:53:30
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Nürnberg

Beitrag von pdreker » 19.01.2003 20:15:23

Jo, die Lutel ist schon ziemlich ausgefeilt, aber ich finde die Config etwas "unübersichtlich". Ich bleibe lieber bei meinem Script, das zwar nicht so ausgetüftelt ist, aber dafür auch schlanker... ;-)

Patrick
Definitely not a bot...
Jabber: pdreker@debianforum.de

arteist
Beiträge: 728
Registriert: 20.05.2002 17:26:23
Kontaktdaten:

Beitrag von arteist » 19.01.2003 20:43:16

trozmo hat geschrieben:hat hier schon mal jemand das iptables-webmin-tool zum laufen bekommen ?
Ja, bei mir läuft es ohne Probleme...was kommt den bei dir für ein Fehler?

trozmo
Beiträge: 288
Registriert: 05.01.2003 20:01:03
Kontaktdaten:

Beitrag von trozmo » 19.01.2003 22:59:31

pdreker hat geschrieben:Jo, die Lutel ist schon ziemlich ausgefeilt, aber ich finde die Config etwas "unübersichtlich". Ich bleibe lieber bei meinem Script, das zwar nicht so ausgetüftelt ist, aber dafür auch schlanker... ;-)

Patrick
mmh ... ich finde, er hat prima dokumentiert. ich komme jetzt gut damit zurecht (denke ich :wink: )

aber nach dem konfig-teil wirds heftig 8O ich dachte, dass das einzige (?) script, welches bei netfilter.org verlinkt ist, ja nicht so übel sein kann.
arteist hat geschrieben:Ja, bei mir läuft es ohne Probleme...was kommt den bei dir für ein Fehler?
ich weiss es nicht mehr so genau, wie die fehlermeldung aussah ... ungefähr so kryptisch wie mein webmin-quota-fehler:

Code: Alles auswählen

mount::list_mounted failed : Undefined subroutine &mount::list_mounted called at (eval 15) line 2
ich habs mittlerweile deinstalliert, da ich das lutel-iptables-script verwende und darin pfusche ich nur von hand rum.

Benutzeravatar
ChinaRot
Beiträge: 17
Registriert: 12.01.2003 19:22:05

Httpd und sshd

Beitrag von ChinaRot » 24.01.2003 14:31:31

Hi :-)

... erstmal Danke für das Skript und die Tips ... inzwischen läuft der Router und die Firewall funktioniert auch ... nur leider ein bissel zu gut :wink:

so sieht es aus :
eth 0 --> internes Interface 192.168.xxx.xxx
eth 1 --> externes Interface 141.45.xxx.xxx
auf dem router läuft auch noch ein Webserver und sshd

das benötige ich:
1. die Nachrichten vom Firewallskript landen immer auf dem Bildschirm (was ziemlich nervig ist) ... kann man die Ausgaben des Firewallskrips generell vom Bildschirm verbannen und in ein Log-file umleiten ? Was muss ich dazu im Skript ändern ?

2. der Webserver soll von außen unter der IP 141.45.xxx.xxx zugänglich sein, aber auch für die Clienten von Innen über die IP 141.45.xxx.xxx ... Wo muss ich welche Änderung vornehmen ??

3. ssh soll von außen über die IP 141.45.xxx.xxx zu erreichen sein ... Wo muss ich welche Änderung vornehmen ??

Iptables sind ganz schön starker Tobak ... da braucht ein noob wie ich doch etwas mehr Hilfe - Thx im Vorraus !!

Daniel

Antworten