Startseite LUG Untermain

Startseite
 
Über uns
Stammtisch
 
Über Linux
SW-Patente
Rezensionen
 
Mailingliste
Online-Mail-Archiv
 
LUG-IRC Channel
LUG-IRC Statistik-NEU-
 
Gästebuch
 
Arbeitsgruppen
Softwaredownloads
Vorträge
FAQ & Hints
HOWTOs
Doku-Wiki -NEU-
 
LUG-Kalender
Links
 
Blog
LUGUM-Planet


hosted by
logo

User-Bereich
(passwortgeschützt)
Passwort vergessen?
148 Mitglieder

Anmelden - HIER -






Firewall

Wie richte ich eine Firewall auf meinem Linux-Rechner ein (Kernel 2.4.*)?

Außer einem neuen Systemkern mit den notwendigen Modulen

  • ipt_MASQUERADE
  • ipt_LOG
  • ipt_limit
  • ipt_state
  • ipt_REJECT
  • iptable_filter
  • ip_conntrack_ftp
  • ip_nat_ftp
  • iptable_nat
  • ip_conntrack
  • at
  • ip_conntrack
  • ip_tables

sind noch folgende Programme notwendig:

Das folgende Script hat folgende Ziele:

  • Der Host 192.168.2.1 (PDA) darf von der PPP-Schnittstelle über die ISDN-Schnittstelle überal hin.
  • Das lokale Netz 192.168.0.0/255.255.255.0 nicht über die ISDN-Schnittstelle (= Internet).
  • Auf bestehende Verbindungen darf geantwortet werden (statefull inspection).
  • Neue Verbindungen, sofern sie nicht über das ISDN-Interface erfolgen, sind erlaubt.
  • Alles was bisher nicht erlaubt ist wird geblockt.
  • Alle Pakete die über das ISDN-Pakete die über das ISDN-Interface den Rechner verlassen bekommen als Absende-IP-Adresse die vom Provider zugewiesene IP-Adresse eingetragen (masquerade).

Damit das Script bei jedem Systemstart mitgestartet wird sind folgende Konfigurationen notwendig:

  • Erstellen der Datei /etc/rc.config.local mit dem Inhalt START_FIREWALL="yes"
  • Erstellen folgender symbolischer links:
    • ln -s /sbin/init.d/firewall /sbin/init.d/rc2.d/S10firewall
    • ln -s /sbin/init.d/firewall /sbin/init.d/rc2.d/K70firewall
    • ln -s /sbin/init.d/firewall /sbin/init.d/rc3.d/S10firewall
    • ln -s /sbin/init.d/firewall /sbin/init.d/rc3.d/K70firewall

/sbin/init.d/firewall

#!/bin/sh
#
# Author: Joerg Schuetter
# joerg.schuetter@gmx.de
#
# /sbin/init.d/firewall
#

. /etc/rc.config.local

# Determine the base and follow a runlevel link name
base=${0##*/}
link=${base#*[SK][0-9][0-9]}

# Force execution of not called by a runlevel directory.
test $link = $base && START_FIREWALL=yes
test "$START_FIREWALL" = yes || exit 0

PATH=$PATH:/usr/local/bin

isp_dev=ippp0
pda_dev=ppp0
pda_net=192.168.2.1/32
local_net=192.168.0.0/24

# The echo return value for succes (t=192.168.0.0/24

# The echo return value for succes (defined in /etc/rc.config).
return=$rc_done
case "$1" in
    start)
        echo -n "Starting service firewall"

        # load modules
        modprobe iptable_nat
        modprobe ip_nat_ftp
        modprobe ip_conntrack
        modprobe ip_conntrack_ftp

        # allow from palm (192.168.2.1)
        iptables -A FORWARD -s $pda_net -i $pda_dev -o $isp_dev -j ACCEPT

        # block from local net
        iptables -A FORWARD -s $local_net -o $isp_dev -j REJECT

        # protect from outside
        iptables -N block
        iptables -A block -m state --state ESTABLISHED,RELATED -j ACCEPT
        iptables -A block -m state --state NEW -i ! $isp_dev -j ACCEPT
        iptables -A block -i $isp_dev -j LOG -m limit --log-prefix "Bad packet from ippp0 "
        iptables -A block -i ! $isp_dev -j LOG -m limit --log-prefix "Bad packet not from ippp0 "
        iptables -A block -j DROP
        iptables -A INPUT -j block
        iptables -A FORWARD -j block

        # masq everything leaving through ippp0
        iptables -t nat -A POSTROUTING -o $isp_dev -j MASQUERADE

        echo -e "$return"
        ;;
    stop)
        echo -n "Shutting down service firewall"

        # masq everything leaving through ippp0
        iptables -t nat -D POSTROUTING -o $isp_dev -j MASQUERADE

        # protect from outside
        iptables -D FORWARD -j block
        iptables -D INPUT -j block
        iptables -D block -j DROP
        iptables -D block -i ! $isp_dev -j LOG -m limit --log-prefix "Bad packet not from ippp0 "
        iptables -D block -i $isp_dev -j LOG -m limit --log-prefix "Bad packet from ippp0 "
        iptables -D block -m state --state NEW -i ! $isp_dev -j ACCEPT
        iptables -D block -m state --state ESTABLISHED,RELATED -j ACCEPT
        iptables -X block

        # block from local net
        iptables -D FORWARD -s $local_net -o $isp_dev -j REJECT

        # allow from palm (192.168.2.1)
        iptables -D FORWARD -s $pda_net -i $pda_dev -o $isp_dev -j ACCEPT

        # load modules
        rmmod iptable_nat
        rmmod ip_nat_ftp
        rmmod ip_conntrack
        rmmod ip_conntrack_ftp

        echo -e "$return"
        ;;
    restart)
        $0 stop && $0 start || return=$rc_failed
        ;;
    *)
        echo "Usage: $0 {start|stop|restart}"
        exit 1
        ;;
esac

# Inform the caller not only verbosely and set an exit status
test "$return" = "$rc_done" || exit 1
exit 0


Nächster Stammtisch
Sa 7.8.10
Ernst-Klug-Haus, Goldbach


Disclaimer
Impressum


News
- FBI soll leichter auf Nutzerspuren im Netz zugreifen dürfen
 
- Apps telefonieren nach Hause
 
- IETF will Standardisierung beschleunigen
 
- France Telecom meldet Umsatz- und Gewinnrückgang
 
- Software AG mit Umsatz- und Gewinnsprung
 
- Bundesnetzagentur greift gegen Telefonwerber durch
 
- Nintendo schreibt rote Zahlen
 
- Geldautomaten schlecht gesichert
 
- "Mehr IPv4-Adressen, bitte!"
 
- Vodafone nimmt Nexus One aus dem Regal