#!/bin/sh
# 1. Beispiel fuer Paketfiler-Firewall-Regeln
#
######## Variablen werden definiert ###########################################
netdev="fxp0" # Netzwerk-Device auf der Internet-Seite (nach draussen)
###############################################################################
#
######## Alle Rgeln werden geloescht (RESET) ##################################
ipfw -f flush
###############################################################################
#
######## Nicht-Routingfaehige IP's werden verboten (Faelschung) ###############
ipfw add 1 deny all from 127.0.0.0/8 to any in via "${netdev}"
ipfw add 2 deny all from 192.168.0.0/16 to any in via "${netdev}"
ipfw add 3 deny all from 172.16.0.0/12 to any in via "${netdev}"
ipfw add 4 deny all from 10.0.0.0/8 to any in via "${netdev}"
###############################################################################
#
######## Loopback erlauben ####################################################
ipfw add 5 allow all from any to any via lo0
ipfw add 6 deny all from any to 127.0.0.0/8
###############################################################################
#
######## "state-full-Paketfilter-Regeln" werden ermoeglicht ###################
ipfw add 7 check-state
###############################################################################
#
######## ermoeglicht die Einwahl per SSH von ueberall #########################
ipfw add 10 allow tcp from any to any 22 keep-state
###############################################################################
#
######## unterdrueckt jeden Ping von draussen. ################################
ipfw add 20 deny icmp from any to any icmptypes 8 in via "${netdev}"
###############################################################################
#
######## unterdruecken bestimmten ICMP-Typen. #################################
ipfw add 40 deny icmp from any to any icmptypes 3 out via "${netdev}"
ipfw add 41 deny log icmp from any to any icmptypes 5
ipfw add 42 deny icmp from any to any icmptypes 15
ipfw add 43 deny log icmp from any to any icmptypes 30
###############################################################################
#
######## restlichen icmp-Verkehr wird erlaubt #################################
ipfw add 100 allow log icmp from any to any
###############################################################################
#
######## NAMESERVER-Anfragen - erlauben #######################################
######## Alle Rechner im Netz muessen die selben DNS eingetragen haben! #######
ipfw add 1100 allow tcp from any to any 53 keep-state
ipfw add 1150 allow udp from any to any 53 keep-state
ipfw add 1200 allow tcp from any to any 53 keep-state
ipfw add 1250 allow udp from any to any 53 keep-state
###############################################################################
#
###############################################################################
# Alle Ports, die zum serven wichtig sein koennten. #
# Port 20 (tcp) FTP # FTP - Datenkanal
# Port 21 (tcp) FTP # FTP - Verbindungsaufbau
# Port 22 (tcp) SSH # SSH ist oben general frei gemacht #
# Port 25 (tcp) SMTP # Server fuer raus gehende Mails
# Port 53 (tcp/udp) DNS # Domain-Name-Services
# Port 67 (udp) DHCPS # Server
# Port 68 (udp) DHCPC # Client
# Port 80 (tcp) HTTP # unverschluesselte Verbindung ins Web
# Port 110 (tcp) POP # Server fuer rein kommende Mails
# Port 123 (udp) NTP # NTP-Server siehe Regeln 11 und 12 #
# Port 443 (tcp) HTTPS # verschluesselte Verbindung ins Web
# Port 8080 (tcp/udp) Proxy #
###############################################################################
#
######## DHCP - Zugriffe werden hier erlaubt ##################################
ipfw add 1302 allow log udp from any to any 67,68 keep-state
###############################################################################
#
######## aktualisieren der Uhrzeit mittels Network-Time-Protocol ##############
ipfw add 1303 allow udp from any to any 123 keep-state via "${netdev}"
###############################################################################
#
######## fuer HTTPS erforderlich ##############################################
ipfw add 1304 allow tcp from any to any 443 keep-state via "${netdev}"
###############################################################################
#
#
#
#
#
# Von den folgenden beiden Regelbloecken sollte, je nach dem Anwendungsgebiet,
# nur der obere oder untere Regelblock aktiv sein!
#
######## Der Zugriff in das Internet wird erlaubt #############################
######## Ist fuer einen Desktop-Rechner gedacht. ##############################
ipfw add 3000 allow tcp from any to any 21,25,80,110 keep-state out via "${netdev}"
ipfw add 3500 allow tcp from any to any 25 keep-state in via "${netdev}"
###############################################################################
#
######## Der Zugriff aus dem Internet wird erlaubt ############################
######## Ist fuer einen Web-Server gedacht. ###################################
#ipfw add 5000 allow tcp from any to any 21,25,80,110 keep-state in via "${netdev}"
#ipfw add 5500 allow tcp from any to any 25 keep-state out via "${netdev}"
###############################################################################
#
#
#
#
#
######## Der Rest wird verboten ###############################################
ipfw add 40000 deny all from any to any
###############################################################################