|
Das folgende Script dient zum starten einer iptables Firewall. Das Script sollte im Verzeichnis /etc/init.d abgespeichert und mit dem entsprechenden Runlevel verlinkt werden.
iptables Firewall Startscript #!/bin/sh # # Script zum starten eines IP Packetfilters # # Description: Script zum starten und stoppen eines IPTABLES Firewall # Autor: Sven Neukirchner <
Diese E-Mail-Adresse ist gegen Spambots geschützt! JavaScript muss aktiviert werden, damit sie angezeigt werden kann.
> # Date 07.04.2006 # Lizenz: GPL # CONFIG=/etc/sysconfig/firewall test -x $CONFIG || exit 1 # Connection-Tracking-Module modprobe ip_conntrack modprobe ip_conntrack_irc modprobe ip_conntrack_ftp case "$1" in start) echo -n "Starte iptable Firewall... " echo "" echo "" echo " Loesche vorhandene Ketten..." iptables -F iptables -X $CONFIG echo ;; stop) echo -n "Beende iptable Firewall... " echo " " echo " Leere Ketten..." iptables -F iptables -X echo " Oeffne Firewall..." iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT echo " " echo -n " !!ACHTUNG Firewall offen!!" echo " " echo " " ;; panic) echo -n "Schliesse Firewall... " echo " " echo " Leere Ketten..." iptables -F iptables -X iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP ;; show) iptables -L ;; restart) echo " Loesche vorhandene Ketten..." iptables -F iptables -X $CONFIG ;; *) echo "Syntax: firewall {start|stop|restart|panic|show}" exit 1 esac exit 0 Das folgende Script kann genutzt werden wenn der Asterisk Server direkt mit dem Internet verbunden ist. Diese Script sollte im Verzeichnis /etc/sysconfig abgepeichert werden. iptables Firewall Stand-Alone # # einfaches Konfigurationsscript einer Firewall auf einem # Stand-Alone Rechner ohne NAT # # # Description: Script zum Konfigurieren einer IPTABLES Firewall # Autor: Sven Neukirchner <
Diese E-Mail-Adresse ist gegen Spambots geschützt! JavaScript muss aktiviert werden, damit sie angezeigt werden kann.
> # mit Hilfe von Newsgroups und Beispielen aus dem Internet # Date 07.04.2006 # Version: 3.0 # Lizenz: GPL # ## Inhalt aller Chains loeschen ist nicht notwendig da das schon im Startscript # /etc/init.d/firewall durchgefuehrt wird # ################################################################################# #--- Hier werden ein paar Einstellungen vorgenommen ----------------------------# ################################################################################# # meine beiden Netzwerkkarten EXTERN="dsl0" INTERN="eth0" # TCP Dienste die der Rechner im Internet nutzt TCP_OUT="21 25 53 80 110 443" # UDP Dienste die der Rechner im Internet nutzt UDP_OUT="53 5060" # TCP Dienste die der Rechner zur Verfuegung stellt TCP_IN="22" # UDP Dienste die der Rechner zur Verfuegung stellt UDP_IN="" # erlaubte ICMP von aussen ICMP_IN="8" # VoIP RTP Ports RTP_RANGE=10000:10020 ################################################################################# #--- Ab hier keine Aenderungen vornehmen ---------------------------------------# ################################################################################# #------------------------------------------------------------------------# #---Ketten loeschen------------------------------------------------------# #------------------------------------------------------------------------# # echo " Setze Firewall zurueck..." # # Firewall Ketten loeschen # iptables -F # iptables -X #------------------------------------------------------------------------# #---POLICY setzen--------------------------------------------------------# #------------------------------------------------------------------------# echo " Schliesse Firewall..." # erst mal alles dicht machen iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP #------------------------------------------------------------------------# #--- INTERNER NETZVERKEHR------------------------------------------------# #------------------------------------------------------------------------# echo " Konfiguriere Interface $INTERN..." # Kommunikation Auf Loopback iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT # Kommunikation interner Netzwerkkarte iptables -A INPUT -i $INTERN -j ACCEPT iptables -A OUTPUT -o $INTERN -j ACCEPT #------------------------------------------------------------------------# #--- VERBINDUNGEN ZUM INTERNET ------------------------------------------# #------------------------------------------------------------------------# echo " Konfiguriere Interface $EXTERN..." # TCP Verbindung zum Internet for port_range in $TCP_OUT ; do iptables -A OUTPUT -o $EXTERN -p tcp --dport $port_range -j ACCEPT iptables -A INPUT -i $EXTERN -p tcp --sport $port_range -m state --state ESTABLISHED -j ACCEPT done # UDP Verbindung zum Internet for port_range in $UDP_OUT ; do iptables -A OUTPUT -o $EXTERN -p udp --dport $port_range -j ACCEPT iptables -A INPUT -i $EXTERN -p udp --sport $port_range -m state --state ESTABLISHED -j ACCEPT done # ICMP darf raus iptables -A OUTPUT -o $EXTERN -p ICMP -j ACCEPT iptables -A INPUT -i $EXTERN -p ICMP -m state --state ESTABLISHED -j ACCEPT #------------------------------------------------------------------------# #--- VERBINDUNGEN VOM INTERNET ------------------------------------------# #------------------------------------------------------------------------# # TCP Verbindung vom Internet for port_range in $TCP_IN ; do iptables -A INPUT -i $EXTERN -p tcp --dport $port_range -j ACCEPT iptables -A OUTPUT -o $EXTERN -p tcp --sport $port_range -m state --state ESTABLISHED -j ACCEPT done # UDP Verbindung vom Internet for port_range in $UDP_IN ; do iptables -A INPUT -i $EXTERN -p udp --dport $port_range -j ACCEPT iptables -A OUTPUT -o $EXTERN -p udp --sport $port_range -m state --state ESTABLISHED -j ACCEPT done # ICMP com Internet for icmp_type in $ICMP_IN ; do iptables -A INPUT -i $EXTERN -p icmp --icmp-type $icmp_type -j ACCEPT iptables -A OUTPUT -o $EXTERN -p icmp --icmp-type $icmp_type -m state --state ESTABLISHED -j ACCEPT done #------------------------------------------------------------------------# #--- RTP Stream -------------- ------------------------------------------# #------------------------------------------------------------------------# # ---VoIP RTP for port_range in $RTP_RANGE ; do iptables -A OUTPUT -o $EXTERN -p udp --sport $port_range -j ACCEPT iptables -A INPUT -i $EXTERN -p udp --dport $port_range -j ACCEPT done ################## ENDE FIREWALL ######################################## Das folgende Script kannauf einem Linux Router verwendet werden, wenn der Asterisk Server sich im Netzwerk auf einem separaten Rechner befindet. Diese Script sollte im Verzeichnis /etc/sysconfig abgepeichert werden. iptables Firewall NAT # # einfaches Konfigurationsscript einer Firewall auf einem # Rechner mit NAT Unterstuetzung # # Gestartet wird diese Datei mit Hilfe der /etc/rc.d/init.d/firewall # Description: Script zum Konfigurieren einer IPTABLES Firewall # Autor: Sven Neukirchner <
Diese E-Mail-Adresse ist gegen Spambots geschützt! JavaScript muss aktiviert werden, damit sie angezeigt werden kann.
> # mit Hilfe von Newsgroups und Beispielen aus dem Internet # Date 07.04.2006 # Version: 3.0 # Lizenz: GPL # # Inhalt aller Chains loeschen ist nicht notwendig da das schon im Startscript # /etc/init.d/firewall durchgefuehrt wird # ################################################################################# #--- Hier werden ein paar Einstellungen vorgenommen ----------------------------# ################################################################################# # meine beiden Netzwerkkarten EXTERN="dsl0" INTERN="eth0" #--- Aktivierung der verwendeten Dienste ------------------------------ # TCP Dienste die auf dem Gateway laufen TCP_SERVICES_IN="22 10000" # UDP Dienste die auf dem Gateway laufen UDP_SERVICES_IN="" # erlaubte ICMP Typen zum Gateway ICMP_IN="8" # TCP Dienste die das Gateway im Internet nutzt TCP_SERVICES_OUT="20 21 22 25 53 80 110 " # UDP Dienste die das Gateway im Internet nutzt UDP_SERVICES_OUT="53 20 21" # TCP Dienste die Netwerkclients im Internet nutzen TCP_SNAT="80 53 20 21 22 25 110" # UDP Dienste die Netwerkclients im Internet nutzen UDP_SNAT="53 20 21" # ICMP darf mein Netzwerk verlassen # ICMP Antworen von ausserhalb sind erlaubt # Diese Einstellungen sind für ein SIP Client hinter dem Router # hier wird Port Forwarding durchgefuehrt VoIP=1 # VoIP unterstuetzen 0=aus 1=an VoIP_IP=192.168.255.150 # IP Adresse des SIP Client SIP_PORT=5060 # SIP UDP Port RTP_RANGE=10000:10020 # RTP Range ####################################################################################### #--- Ab hier bitte keine Aenderungen mehr vornehmen - oder Du weisst was Du machst ---# ####################################################################################### #------------------------------------------------------------------------# #---POLICY setzen--------------------------------------------------------# #------------------------------------------------------------------------# echo " Schliesse Firewall..." # erst mal alles dicht machen iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP #------------------------------------------------------------------------# #--- INTERNER NETZVERKEHR------------------------------------------------# #------------------------------------------------------------------------# echo " Konfiguriere Interface $INTERN..." # Kommunikation Auf Loopback iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT # Kommunikation interner Netzwerkkarte iptables -A INPUT -i $INTERN -j ACCEPT iptables -A OUTPUT -o $INTERN -j ACCEPT #------------------------------------------------------------------------# #--- EXTERNER NETZVERKEHR------------------------------------------------# #------------------------------------------------------------------------# echo " Konfiguriere Interface $EXTERN..." #--- Verbindungen die aus dem INERNET zum GATEWAY erlaubt sind ------------------------------------ # erlaubte TCP Nachrichten zum Gateway for port_range in $TCP_SERVICES_IN ; do iptables -A INPUT -i $EXTERN -p tcp --dport $port_range -j ACCEPT iptables -A OUTPUT -o $EXTERN -p tcp --sport $port_range -m state --state ESTABLISHED -j ACCEPT done # erlaubte UDP Nachrichten zum Gateway for port_range in $UDP_SERVICES_IN ; do iptables -A INPUT -i $EXTERN -p udp --dport $port_range -j LOG --log-prefix "IN GATEWAY " --log-level 6 -m limit --limit 3/m iptables -A INPUT -i $EXTERN -p udp --dport $port_range -j ACCEPT iptables -A OUTPUT -o $EXTERN -p udp --sport $port_range -m state --state ESTABLISHED -j ACCEPT done # erlaubte ICMP Nachrichten zum Gateway for icmp_type in $ICMP_IN ; do iptables -A INPUT -i $EXTERN -p icmp --icmp-type $icmp_type -j ACCEPT iptables -A OUTPUT -o $EXTERN -p icmp --icmp-type $icmp_type -m state --state ESTABLISHED -j ACCEPT done #--- Dienste das Gateway im Internet nutzen -------------------# # definierte TCP Dienste im Internet for port_range in $TCP_SERVICES_OUT ; do iptables -A OUTPUT -o $EXTERN -p tcp --dport $port_range -j ACCEPT iptables -A INPUT -i $EXTERN -p tcp --sport $port_range -m state --state ESTABLISHED -j ACCEPT done # definierte UDP Dienste im Internet for port_range in $UDP_SERVICES_OUT ; do iptables -A OUTPUT -o $EXTERN -p udp --dport $port_range -j ACCEPT iptables -A INPUT -i $EXTERN -p udp --sport $port_range -m state --state ESTABLISHED -j ACCEPT done # ICMP darf raus iptables -A OUTPUT -o $EXTERN -p ICMP -j ACCEPT #------------------------------------------------------------------------# #--- FORWARD KETTE-------------------------------------------------------# #------------------------------------------------------------------------# echo " Konfiguriere NAT..." # Packete fuer Detination NAT maskieren iptables -t nat -A POSTROUTING -o $EXTERN -j MASQUERADE #--- Dienste die Netzwerkclients im Internet nutzen -------------------# # definierte TCP Dienste im Internet for port_range in $TCP_SNAT ; do iptables -A FORWARD -i $INTERN -p tcp --dport $port_range -j ACCEPT iptables -A FORWARD -i $EXTERN -p tcp --sport $port_range -m state --state ESTABLISHED -j ACCEPT done # definierte UDP Dienste im Internet for port_range in $UDP_SNAT ; do iptables -A FORWARD -i $INTERN -p udp --dport $port_range -j ACCEPT iptables -A FORWARD -i $EXTERN -p udp --sport $port_range -m state --state ESTABLISHED -j ACCEPT done # ICMP darf raus iptables -A FORWARD -i $INTERN -p ICMP -j ACCEPT #--- FTP nach aussen ermoeglichen -------------------------------------- # aktives FTP iptables -A FORWARD -i $EXTERN -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -i $EXTERN -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT # passives FTP iptables -A FORWARD -i $EXTERN -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED -j ACCEPT iptables -A FORWARD -i $INTERN -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED,RELATED -j ACCEPT #--- Portforwarding zu einem VoIP Client im Netzwerk -------------------- if [ $VoIP = 1 ] then iptables -t nat -A PREROUTING -i $EXTERN -p UDP --dport $SIP_PORT -j DNAT --to $VoIP_IP iptables -t nat -A PREROUTING -i $EXTERN -p UDP --dport $RTP_RANGE -j DNAT --to $VoIP_IP iptables -A FORWARD -i $INTERN -s $VoIP_IP -p UDP --sport $SIP_PORT -j ACCEPT iptables -A FORWARD -i $INTERN -s $VoIP_IP -p UDP --sport $RTP_RANGE -j ACCEPT iptables -A FORWARD -i $EXTERN -d $VoIP_IP -p UDP --dport $SIP_PORT -j ACCEPT iptables -A FORWARD -i $EXTERN -d $VoIP_IP -p UDP --dport $RTP_RANGE -j ACCEPT fi ################## ENDE FIREWALL ########################################
|