IPTABLES mit benutzerdeefinierten chains

Dieses Thema im Forum "Firewalls" wurde erstellt von nikster77, 04.09.2005.

  1. #1 nikster77, 04.09.2005
    nikster77

    nikster77 Routinier

    Dabei seit:
    15.03.2004
    Beiträge:
    307
    Zustimmungen:
    0
    Hi Leute.
    Ich habe ein Problem mit diesem Script:

    #!/bin/bash

    #################################################
    #

    #################################################
    #Variablendeklaration

    IF_LOOPBACK="lo"
    IF_INET="ppp0"
    IF_LAN="eth1"
    IF_LAN_NET="192.168.1.0/24"
    PRIV="0:1023"
    UNPRIV="1024:65535"

    # (SMB) (NFS) (X11)
    # BAD_TCP="135:139 1433 2049 5999:6063"
    # BAD_UDP="135:139 1433 2049 5999:6063"

    ##################################################
    #Laden der benoetigten Module

    #/sbin/modprobe ip_tables
    #/sbin/modprobe iptable_filter
    #/sbin/modprobe ip_conntrack
    #/sbin/modprobe ip_conntrack_ftp
    #/sbin/modprobe ip_nat_ftp

    case "$1" in
    start)
    ##################################################
    #Flushing Rules

    echo "Cleaning up..."
    echo 0 > /proc/sys/net/ipv4/ip_forward
    iptables -F
    iptables -t nat -F
    iptables -t mangle -F
    iptables --delete-chain
    iptables -t nat --delete-chain
    iptables -t mangle --delete-chain

    ##################################################
    #Adresse der Internetverbindung bestimmen

    echo -n "Determinating IP-Address of Internet Interface... "
    IF_INET_IP="`ifconfig $IF_INET | grep 'inet addr' | awk '{print $2}' | sed -e 's/.*://'`"
    echo $IF_INET_IP

    ##################################################
    #Allgemeine Sicherheitsoptionen und Routing

    echo "Setting sysctl options..."

    #Enable forwarding in kernel
    echo 1 > /proc/sys/net/ipv4/ip_forward
    #Disabling IP Spoofing attacks.
    echo 2 > /proc/sys/net/ipv4/conf/all/rp_filter

    #Don't respond to broadcast pings (Smurf-Amplifier-Protection)
    echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

    #Block source routing
    echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route

    #Kill timestamps
    echo 0 > /proc/sys/net/ipv4/tcp_timestamps

    #Enable SYN Cookies
    echo 1 > /proc/sys/net/ipv4/tcp_syncookies

    #Kill redirects
    echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects

    #Enable bad error message protection
    echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

    #Log martians (packets with impossible addresses)
    echo 1 > /proc/sys/net/ipv4/conf/all/log_martians

    ##################################################
    #Erstellen selbstdefinierter Chains

    for i in INT_INPUT_ACCEPT_TCP INT_INPUT_ACCEPT_UDP INT_OUTPUT_ACCEPT_UDP \
    INT_OUTPUT_ACCEPT_TCP EXT_INPUT_ACCEPT_TCP EXT_INPUT_ACCEPT_UDP EXT_OUTPUT_ACCEPT_TCP \
    EXT_OUTPUT_ACCEPT_UDP INT_FORWARD_ACCEPT_TCP INT_FORWARD_ACCEPT_UDP EXT_FORWARD_ACCEPT_TCP \
    EXT_FORWARD_ACCEPT_UDP; do
    iptables -N $i;
    done

    ##################################################
    #Loopback-Interface Connections erlauben

    echo "Rules for Loopback Interface..."
    iptables -A INPUT -i $IF_LOOPBACK -j ACCEPT
    iptables -A OUTPUT -o $IF_LOOPBACK -j ACCEPT

    ##################################################
    #Masquerading

    echo "Creating IPTABLES rules:"
    echo "Masquerading..."
    iptables -t nat -A POSTROUTING -o $IF_INET -j MASQUERADE

    ##################################################
    #Userdefined INPUT-Chains
    # QA

    echo "setting up userdefined-chains..."

    iptables -A INT_INPUT_ACCEPT_TCP -s $IF_LAN_NET \
    -p tcp -m multiport --destination-port 22,53,67,68,80,123,443,993,995,4662 -j ACCEPT

    iptables -A INT_INPUT_ACCEPT_UDP -s $IF_LAN_NET \
    -p udp -m multiport --destination-port 53,67,68,123 -j ACCEPT

    iptables -A EXT_INPUT_ACCEPT_UDP \
    -p udp -m multiport --source-port 53,67,68,123 -j ACCEPT

    iptables -A EXT_INPUT_ACCEPT_TCP \
    -p tcp -m multiport --source-port 22,53,67,68,123,110,995,993,4662 -j ACCEPT

    #Admin



    ##################################################
    #Userdefined OUTPUT-Chains
    #QA

    iptables -A INT_OUTPUT_ACCEPT_UDP -d $IF_LAN_NET \
    -p udp -m multiport --source-port 53,67,68,80,123,443,993,995,4662 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

    iptables -A INT_OUTPUT_ACCEPT_TCP -d $IF_LAN_NET \
    -p tcp -m multiport --source-port 22,53,67,68,80,123,110,443,993,995,4662 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

    iptables -A EXT_OUTPUT_ACCEPT_UDP \
    -p udp -m multiport --destination-port 53,67,68,80,123,443,993,995,4662 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

    iptables -A EXT_OUTPUT_ACCEPT_TCP \
    -p tcp -m multiport --destination-port 22,53,67,68,80,110,123,443,993,995,4662 -m --state NEW,RELATED,ESTABLISHED -j ACCEPT

    ##################################################
    #Userdefined FORWARD-Chains

    iptables -A INT_FORWARD_ACCEPT_UDP -s $IF_LAN_NET \
    -p udp -m multiport --destination-port 80,123,443,993,995,4662 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

    iptables -A INT_FORWARD_ACCEPT_TCP -s $IF_LAN_NET \
    -p tcp -m multiport --destination-port 22,53,67,68,80,110,123,443,993,995,4662 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

    iptables -A EXT_FORWARD_ACCEPT_UDP \
    -p udp -m multiport --source-port 80,123,443,993,995,4662 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

    iptables -A EXT_FORWARD_ACCEPT_TCP \
    -p tcp -m multiport --source-port 22,53,67,68,80,110,123,443,993,995,4662 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

    #################################################
    #IPTABLES-RULES
    #PPP0

    echo "setting up IPTABLES-Rules..."

    iptables -A OUTPUT -p udp -o $IF_INET -j EXT_OUTPUT_ACCEPT_UDP
    iptables -A OUTPUT -p tcp -o $IF_INET -j EXT_OUTPUT_ACCEPT_TCP

    iptables -A INPUT -p udp -i $IF_INET -j EXT_INPUT_ACCEPT_UDP
    iptables -A INPUT -p tcp -i $IF_INET -j EXT_INPUT_ACCEPT_TCP

    iptables -A FORWARD -p udp -i $IF_INET -o eth0 -j EXT_FORWARD_ACCEPT_UDP
    iptables -A FORWARD -p tcp -i $IF_INET -o eth0 -j EXT_FORWARD_ACCEPT_TCP

    #eth0

    iptables -A OUTPUT -p udp -o $IF_LAN -j INT_OUTPUT_ACCEPT_UDP
    iptables -A OUTPUT -p tcp -o $IF_LAN -j INT_OUTPUT_ACCEPT_TCP

    iptables -A INPUT -p udp -i $IF_LAN -j INT_INPUT_ACCEPT_UDP
    iptables -A INPUT -p tcp -i $IF_LAN -j INT_INPUT_ACCEPT_TCP

    iptables -A FORWARD -p udp -i $IF_LAN -o $IF_INET -j INT_FORWARD_ACCEPT_UDP
    iptables -A FORWARD -p tcp -i $IF_LAN -o $IF_INET -j INT_FORWARD_ACCEPT_TCP

    #################################################
    #Default-Policies

    echo "Setting default policy..."

    iptables -P INPUT DROP
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD DROP
    ;;

    stop)
    echo "Shutting down routing..."
    echo 0 > /proc/sys/net/ipv4/ip_forward
    iptables -P INPUT ACCEPT
    iptables -P OUTPUT ACCEPT
    iptables -F
    iptables -t nat -F
    iptables -t mangle -F
    ;;
    *)
    echo "Usage: ./filter {start|stop}"
    exit 1
    ;;
    esac

    exit 0

    Wie Ihr seht habe ich ein Gateway zwischen meinem LAN und dem Internet und eigentlich auch ein FW-Script das gut funktioniert...
    aber es benutzt keine benutzerdefinierten Ketten (ich habe alles direkt in die INPUT,OUTPUT und FORWARD-Chains geschrieben).
    Ich habe mir die Doku auf netfilter.org schon x-mal durchgelesen kriege es aber nicht ans laufen.
    Sobald er die default-Policies setzt sperre ich mich aus dem Rechner aus, es geht kein Forwarding, kein Input und kein Output mehr.

    Wenn jemand den Fehler sehen wuerde oder mir evtl. mein grundsaetzliches Verstaendnisproblem auseinandersetzen koennte waere ich echt gluecklich...

    Gruss

    Niels

    Niels
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. khs

    khs Routinier

    Dabei seit:
    19.08.2004
    Beiträge:
    408
    Zustimmungen:
    0
    Koenntest du eventuell den Output von iptables -vnL noch anhaengen? Beim Drueberlesen scheint mir dein Script auch logisch - aber irgendwas muss ja kaputt sein... ;)

    -khs
     
  4. #3 nikster77, 04.09.2005
    nikster77

    nikster77 Routinier

    Dabei seit:
    15.03.2004
    Beiträge:
    307
    Zustimmungen:
    0
    Ja, das ist ein Problem, ich sperre mich ja aus dem Rechner aus und kann den Output nur lesen wenn ich einen Monitor daran anschliesse...
    Da das allerdings eine Menge Output ist wuerde es mich Stunden kosten das alles abzutippen...

    Danke schonmal das du alles durchgelesen hast :)

    Niels
     
Thema:

IPTABLES mit benutzerdeefinierten chains

Die Seite wird geladen...

IPTABLES mit benutzerdeefinierten chains - Ähnliche Themen

  1. FTP/FTPS ohne ip_conntrack_ftp oder nf_conntrack_ftp mit iptables

    FTP/FTPS ohne ip_conntrack_ftp oder nf_conntrack_ftp mit iptables: Guten Tag, kennt jemand von euch eine Möglichkeit wie ich vsftpd nutzen kann zusammen mit einer Firewall ohne die im Betreff angegebenen...
  2. iptables und whitelist

    iptables und whitelist: Moin zusammen, Nach einer Ewigkeit melde ich mich mal hier zurück. Ich hab da so ein kleines Problemchen. Ich mach z.Zt. eine Umschulung zum...
  3. iptables blocke nur von bestimmter ip

    iptables blocke nur von bestimmter ip: Hallo, ich habe ein kleines Heimnetzwerk mit einem Router unter openWRT. Dort kann ich mittels iptables -I OUTPUT -p udp --dport 53 -m...
  4. Opensuse iptables (yast FW) + MiniUPnPd

    Opensuse iptables (yast FW) + MiniUPnPd: Hallo zusammen, ich habe ja meine OpenSuse Box momentan als Gateway eingerichtet und der Router dient nur als Access Point für alle Geräte...
  5. IPtables

    IPtables: Hallo Leute, bin zurzeit dabei, einen Proxy aufzusetzen, der die IP meines Webservers vetuschen soll. Es läuft eig. schon alles super, nur eine...