Anzeige:
Ergebnis 1 bis 3 von 3

Thema: Hilfe bei Firewall Script

  1. #1
    NashRaider
    Gast

    Hilfe bei Firewall Script

    Hallo liebes Forum !

    Ich brauche Hilfe bei einem Firewall Script....
    Vor einiger Zeit habe ich angefangen mit eine Firewall selbst zu schreiben.
    Ich habe Zuhause 2 Server 1 Server der noch mit Red Hat 9 läuft und
    einen den ich jetzt mit Fedora Core 6 bespielt habe.

    Jetzt der Punkt wo ich nicht weiter komme.....

    Meine Firewall läuft Problemlos auf dem Red Hat Rechner, aber leider
    nicht auf dem Fedora gerät. Jetzt frage ich mich warum ?

    Scriptfeher sind keine darin also der server startet Problemlos mit
    /etc/ppp/nashwall die Firewall in beiden Systemen.

    Zur Erklärung der Firewall. Ich habe eine Firewall gemacht wo man oben
    im Kopf nur noch eine 1 oder 0 eintragen muss um einen Gewisses Verhalten zu starten oder auch nicht.

    So unter Red Hat 9 läuft das ****** Ding wenn ich es aber unter Fedora starte
    .Ist es so wie als ob er die INPUT,FORWARD und OUTPUT Policy auf DROP setzt. Warum ?

    Sind die beiden Systeme so unterschiedlich das bei Fedora gar nichts mehr geht.

    Ja mein Fedora System hat alle Updates und ansonsten läuft auch alles wie immer.
    Bis auf die Firewall und das routing da weis ich aber an was das gelegen hat.

    Zur Erklärung habe ich die Firewall mal ein bisschen erklärt was ich damit vorhabe.

    So jetzt seid Ihr gefragt ich hoffe dieses Forum kann mir helfen....

    Hier der Script

    ----------------------------------------------------------------------

    DEVICE="ppp+"
    PRIVNET="192.168.0.0/24"
    IPTABLES="/sbin/iptables"
    MODPROB="/sbin/modprobe"
    LOGLEVEL="info"
    IP_FORWARD="/proc/sys/net/ipv4/ip_forward"
    # Eingehende Verbindungen erlauben
    ALLOW_HTTP="1" # HTTP erlauben (0 nein, 1 ja)
    ROUTING_HTTP="1" # HTTP Anfragen umleiten (0 nein, 1 ja)
    WEBSERVER="192.168.0.3" # nach
    WEBSERVER_HTTP_PORT="80" # HTTP Port des Webservers
    WEBSERVER_HTTPS_PORT="443" # HTTPS Port des Webservers
    ALLOW_SSH="1" # SSH erlauben (0 nein, 1 ja)
    ALLOW_NESSUS="1" # Nessus erlauben (0 nein, 1 ja)
    ALLOW_EXT_PING="0" # Pings von Extern erlauben (0 nein, 1 ja)
    ALLOW_INT_PING="1" # Pings von Intern erlauben (0 nein, 1 ja)
    # Weiterleitungen erlauben
    FORWARD="1" # Sollen Pakete aus dem Internenlan gerouted werden (0 nein, 1 ja)
    FORWARD_SSH="1" # SSH weiterleiten (0 nein, 1 ja)
    FORWARD_HTTP="1" # HTTP weiterleiten (0 nein, 1 ja)
    FORWARD_POP3="1" # POP3 weiterleiten (0 nein, 1 ja)
    FORWARD_SMTP="1" # SMTP weiterleiten (0 nein, 1 ja)
    FORWARD_FTP="1" # FTP weiterleiten (0 nein, 1 ja)
    FORWARD_EMULE="1" # EMule weiterleiten (0 nein, 1 ja)
    FORWARD_KAZAA="1" # Kazaa weiterleiten (0 nein, 1 ja)
    FORWARD_PINGS="1" # Pings weiterleiten (0 nein, 1 ja)
    # Blacklist (Seiten die generell geblockt werden)
    BLACKLIST=""

    # Hier koennen Sie nochmal ports defienieren die Sie fuer
    # eingehende Verbindungen oeffnen moechten (DIESE PORTS WERDEN FUER DIE PROTOKOLLE TCP UND UDP FREIGEGEBEN)
    ALLOW_INCOMING=""

    # Hier koennen Sie nochmal ports defienieren die Sie fuer
    # ausgehende Verbindungen oeffnen moechten (DIESE PORTS WERDEN FUER DIE PROTOKOLLE TCP UND UDP FREIGEGEBEN)
    ALLOW_OUTGOING=""

    # Hier koennen Sie nochmal ports defienieren die Sie fuer
    # Weiterleitungen oeffnen moechten (DIESE PORTS WERDEN FUER DIE PROTOKOLLE TCP UND UDP FREIGEGEBEN)
    ALLOW_FORWARD=""

    $MODPROB ip_tables
    $MODPROB ip_conntrack
    $MODPROB ip_conntrack_ftp
    $MODPROB ip_conntrack_irc
    $MODPROB iptable_nat
    $MODPROB ip_nat_ftp
    $MODPROB ip_tables ipt_LOG

    ####
    # Alle Regeln loeschen
    ##
    resetChains()
    {
    $IPTABLES -F
    $IPTABLES -t nat -F
    $IPTABLES -X
    }

    ####
    # Alles wieder freigeben
    ##
    allowAll()
    {
    $IPTABLES -P INPUT ACCEPT
    $IPTABLES -P OUTPUT ACCEPT
    $IPTABLES -P FORWARD ACCEPT
    }

    ####
    # Standartverhalten:
    ##
    setPolicy()
    {
    $IPTABLES -P INPUT DROP
    $IPTABLES -P OUTPUT ACCEPT
    $IPTABLES -P FORWARD DROP
    ####
    # Zugirff aus dem eigenen LAN erlauben:
    ##
    $IPTABLES -A INPUT -s $PRIVNET -j ACCEPT
    ####
    # Bestehende Verbindungen erlauben:
    ##
    $IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

    }

    ####
    # Forwards erstellen
    ##
    createForwards()
    {
    # SSH
    if [ $FORWARD_SSH = "1" ]
    then
    $IPTABLES -A FORWARD -p tcp --dport 22 -m state --state NEW -j ACCEPT
    $IPTABLES -A FORWARD -p udp --dport 22 -m state --state NEW -j ACCEPT
    fi
    # HTTP u. HTTPS
    if [ $FORWARD_HTTP = "1" ]
    then
    $IPTABLES -A FORWARD -p tcp --dport 80 -m state --state NEW -j ACCEPT
    $IPTABLES -A FORWARD -p tcp --dport 443 -m state --state NEW -j ACCEPT
    fi
    # POP3
    if [ $FORWARD_POP3 = "1" ]
    then
    $IPTABLES -A FORWARD -p tcp --dport 110 -m state --state NEW -j ACCEPT
    fi
    # SMTP
    if [ $FORWARD_SMTP = "1" ]
    then
    $IPTABLES -A FORWARD -p tcp --dport 25 -m state --state NEW -j ACCEPT
    fi
    # FTP
    if [ $FORWARD_FTP = "1" ]
    then
    $IPTABLES -A FORWARD -p tcp --dport 20:21 -m state --state NEW -j ACCEPT
    fi
    # EMule
    if [ $FORWARD_EMULE = "1" ]
    then
    $IPTABLES -A FORWARD -p tcp --dport 4661 -m state --state NEW -j ACCEPT
    $IPTABLES -A FORWARD -p tcp --dport 4662 -m state --state NEW -j ACCEPT
    $IPTABLES -A FORWARD -p udp --dport 4665 -m state --state NEW -j ACCEPT
    $IPTABLES -A FORWARD -p tcp --dport 4672 -m state --state NEW -j ACCEPT
    $IPTABLES -A FORWARD -p udp --dport 4672 -m state --state NEW -j ACCEPT
    $IPTABLES -A FORWARD -p tcp --dport 4246 -m state --state NEW -j ACCEPT
    $IPTABLES -A FORWARD -p udp --dport 4246 -m state --state NEW -j ACCEPT
    $IPTABLES -A FORWARD -p tcp --dport 4242 -m state --state NEW -j ACCEPT
    $IPTABLES -A FORWARD -p udp --dport 4242 -m state --state NEW -j ACCEPT


    fi
    # Kazaa
    if [ $FORWARD_KAZAA = "1" ]
    then
    $IPTABLES -A FORWARD -p udp --dport 1214 -m state --state NEW -j ACCEPT
    $IPTABLES -A FORWARD -p tcp --dport 1214 -m state --state NEW -j ACCEPT
    fi
    # Ping
    if [ $FORWARD_PINGS = "1" ]
    then
    $IPTABLES -A FORWARD -p icmp -m state --state NEW -j ACCEPT
    fi
    }

    ####
    # Dienste die eine Verbindung oeffnen duerefen
    ##
    allowIncomings()
    {
    # SSH
    if [ $ALLOW_SSH = "1" ]
    then
    $IPTABLES -A INPUT -p tcp -i $DEVICE --dport 22 -m state --state NEW -j ACCEPT
    $IPTABLES -A INPUT -p udp -i $DEVICE --dport 22 -m state --state NEW -j ACCEPT
    fi
    # HTTP u. HTTPS
    if [ $ALLOW_HTTP = "1" ]
    then
    $IPTABLES -A INPUT -p tcp -i $DEVICE --dport 80 -m state --state NEW -j ACCEPT
    $IPTABLES -A INPUT -p tcp -i $DEVICE --dport 443 -m state --state NEW -j ACCEPT
    fi
    # NESSUS
    if [ $ALLOW_NESSUS = "1" ]
    then
    $IPTABLES -A INPUT -p tcp -i $DEVICE --dport 1241 -m state --state NEW -j ACCEPT
    $IPTABLES -A INPUT -p udp -i $DEVICE --dport 1241 -m state --state NEW -j ACCEPT
    fi
    }

    ####
    # Sichten und (oder) vernichten
    ##
    logsAndKills()
    {
    # Logs
    $IPTABLES -N LOGPACKET
    $IPTABLES -A LOGPACKET -j LOG --log-prefix "Firewall packet log: " --log-tcp-options --log-tcp-sequence --log-ip-options --log-level $LOGLEVEL
    $IPTABLES -A LOGPACKET -j ACCEPT

    $IPTABLES -N KILLINCOMMING
    $IPTABLES -A KILLINCOMMING -j LOG --log-prefix "Firewall incomming kill: " --log-tcp-options --log-tcp-sequence --log-ip-options --log-level $LOGLEVEL
    $IPTABLES -A KILLINCOMMING -j DROP

    $IPTABLES -N KILLOUTGOING
    $IPTABLES -A KILLOUTGOING -j LOG --log-prefix "Firewall outgoing kill: " --log-tcp-options --log-tcp-sequence --log-ip-options --log-level $LOGLEVEL
    $IPTABLES -A KILLOUTGOING -j DROP

    $IPTABLES -N KILLFORWARD
    $IPTABLES -A KILLFORWARD -j LOG --log-prefix "Firewall forward kill: " --log-tcp-options --log-tcp-sequence --log-ip-options --log-level $LOGLEVEL
    $IPTABLES -A KILLFORWARD -j DROP

    $IPTABLES -N KILLBADICMP
    $IPTABLES -A KILLBADICMP -j LOG --log-prefix "Firewall bad icmp kill: " --log-tcp-options --log-tcp-sequence --log-ip-options --log-level $LOGLEVEL
    $IPTABLES -A KILLBADICMP -j DROP

    # Pings
    if [ $ALLOW_EXT_PING = "0" ]
    then
    $IPTABLES -A INPUT -p icmp -i $DEVICE -m state --state ! ESTABLISHED,RELATED -j KILLINCOMMING
    fi
    # Pings die sich durchgemogelt haben werden gelogt
    $IPTABLES -A INPUT -p icmp -i $DEVICE -j LOGPACKET
    # Pings aus dem LAN auf diesen Rechner
    if [ $ALLOW_INT_PING = "0" ]
    then
    $IPTABLES -A INPUT -p icmp -s $PRIVNET -j KILLINCOMMING
    fi
    $IPTABLES -A INPUT -p icmp -s $PRIVNET -j LOGPACKET
    # Portscanes oder was auch sonst
    $IPTABLES -A INPUT -j KILLINCOMMING
    $IPTABLES -A FORWARD -j KILLFORWARD
    # Defekte ICMP Pakete killen
    $IPTABLES -A INPUT -p icmp -i $DEVICE --fragment -j KILLBADICMP
    # die Nachricht "Destination-Unreachable" wird nicht gesendet
    $IPTABLES -A OUTPUT -p icmp --icmp-type destination-unreachable -o $DEVICE -j DROP
    }

    ####
    # seiten die generell gespert werden sollen
    ##
    setBlacklist()
    {
    $IPTABLES -N BLACKIN
    $IPTABLES -A BLACKIN -j LOG --log-prefix "Firewall kill bad in: " --log-tcp-options --log-tcp-sequence --log-ip-options --log-level $LOGLEVEL
    $IPTABLES -A BLACKIN -j DROP

    $IPTABLES -N BLACKOUT
    $IPTABLES -A BLACKOUT -j LOG --log-prefix "Firewall kill bad out: " --log-tcp-options --log-tcp-sequence --log-ip-options --log-level $LOGLEVEL
    $IPTABLES -A BLACKOUT -j DROP

    $IPTABLES -N BLACKFORWARD
    $IPTABLES -A BLACKFORWARD -j LOG --log-prefix "Firewall kill bad forward: " --log-tcp-options --log-tcp-sequence --log-ip-options --log-level $LOGLEVEL
    $IPTABLES -A BLACKFORWARD -j DROP

    if [ "$BLACKLIST" ]
    then
    for v in $BLACKLIST; do
    $IPTABLES -A INPUT -s $v -j BLACKIN
    $IPTABLES -A OUTPUT -d $v -j BLACKOUT
    $IPTABLES -A FORWARD -d $v -j BLACKFORWARD
    done
    fi
    }

    ####
    # user spezifische freigaben
    ##
    allowDefPorts()
    {
    $IPTABLES -N ALLOWDEFIN
    $IPTABLES -A ALLOWDEFIN -j LOG --log-prefix "Firewall allow def input: " --log-tcp-options --log-tcp-sequence --log-ip-options --log-level $LOGLEVEL
    $IPTABLES -A ALLOWDEFIN -j ACCEPT

    $IPTABLES -N ALLOWDEFOUT
    $IPTABLES -A ALLOWDEFOUT -j LOG --log-prefix "Firewall allow def out: " --log-tcp-options --log-tcp-sequence --log-ip-options --log-level $LOGLEVEL
    $IPTABLES -A ALLOWDEFOUT -j ACCEPT

    $IPTABLES -N ALLOWDEFFORWARD
    $IPTABLES -A ALLOWDEFFORWARD -j LOG --log-prefix "Firewall def forward: " --log-tcp-options --log-tcp-sequence --log-ip-options --log-level $LOGLEVEL
    $IPTABLES -A ALLOWDEFFORWARD -j ACCEPT
    if [ "$ALLOW_INCOMING" ]
    then
    for v in $ALLOW_INCOMING; do
    $IPTABLES -A INPUT -p tcp -i $DEVICE --dport $v -m state --state NEW -j ALLOWDEFIN
    $IPTABLES -A INPUT -p udp -i $DEVICE --dport $v -m state --state NEW -j ALLOWDEFIN
    done
    fi

    if [ "$ALLOW_OUTGOING" ]
    then
    for v in $ALLOW_OUTGOING; do
    $IPTABLES -A OUTPUT -p tcp --dport $v -m state --state NEW -j ALLOWDEFOUT
    $IPTABLES -A OUTPUT -p udp --dport $v -m state --state NEW -j ALLOWDEFOUT
    done
    fi

    if [ "$ALLOW_FORWARD" ]
    then
    for v in $ALLOW_FORWARD; do
    $IPTABLES -A FORWARD -p tcp --dport $v -m state --state NEW -j ALLOWDEFFORWARD
    $IPTABLES -A FORWARD -p udp --dport $v -m state --state NEW -j ALLOWDEFFORWARD
    done
    fi
    }

    ####
    # Paketweiterleitung
    ##
    preRouting()
    {
    $IPTABLES -A POSTROUTING -t nat -s $PRIVNET -j MASQUERADE
    echo 1 > $IP_FORWARD
    }

    ####
    # Paketumleitung
    ##
    postRouting()
    {
    # HTTP
    $IPTABLES -A PREROUTING -t nat -i $DEVICE -p tcp --dport 80 -j DNAT --to $WEBSERVER:$WEBSERVER_HTTP_PORT
    # HTTPS
    $IPTABLES -A PREROUTING -t nat -i $DEVICE -p tcp --dport 443 -j DNAT --to $WEBSERVER:$WEBSERVER_HTTPS_PORT
    }

    ####
    # Start firewall:
    ##
    doStartFirewall()
    {
    resetChains
    setPolicy
    allowDefPorts;
    setBlacklist;
    if [ $FORWARD = "1" ]
    then
    createForwards
    preRouting
    fi
    allowIncomings
    if [ $ROUTING_HTTP = "1" ]
    then
    postRouting
    fi
    logsAndKills
    }

    case "$1" in
    start)
    doStartFirewall
    ;;
    stop)
    resetChains
    allowAll
    ;;
    restart)
    resetChains
    doStartFirewall
    ;;
    *)
    echo "Usage: $0 {start|stop|restart}"
    ;;
    esac

    ---------------------------------------------------------------------

    Danke schon mal für Eure Hilfe.....

    Liebe Grüße Nash Raider

  2. #2
    Registrierter Benutzer Avatar von bla!zilla
    Registriert seit
    Apr 2001
    Beiträge
    9.884
    Starte das Skript auf beiden Maschinen und schau dir die Policies mit iptables -L -v -n an. Die Ausgabe bitte hier posten.

  3. #3
    Registrierter Benutzer
    Registriert seit
    Dec 2007
    Beiträge
    5
    Grüß dich Sascha!

    Mal als Anmerkung. Das skript das du verwendest ist stark veraltet du solltest das nicht mehr verwenden.

    Aber mal davon abgesehen macht es grundsätzlich keinen Sinn das Skript so 1:1 auf beiden Systemen auszuführen. So wie du es oben eingefügt hast wird die Firewall mit Masquerading und allem drum und drann gestartet. Das macht nur sinn auf der Kiste die auch die Internetverbindung bereitstellt.

    Aber dennoch dürfte das Skript deine FC6-Kiste nicht ausnocken.
    Ich habe da eine andere Vermutung die eher etwas mit der FC6 als mit dem Skript zu tun hat.

    Ich nutze ein Shellskript um automatisiert meine Datenbanken zu sichern. Dieses Skript nutze ich auf diversen Server mit diversen Linux-Distries. Bisher hatte ich nur auf FC6-Systemen Probleme mit meinen Skripts. Daher meine Vermutung das die 6er Fedora die Skripte nicht richtig interpretiert.

    Poste mal wie von Bla!zilla deinen Output der FC6-Kiste und versuche die iptables mal "von Hand" aufzubauen.

Ähnliche Themen

  1. Toshiba Magnia SG20 Firewall Probleme Emule
    Von smh im Forum Linux als Server
    Antworten: 0
    Letzter Beitrag: 18.05.05, 21:28
  2. DSL-Gateway für Win2000 Client
    Von deadkenny666 im Forum Router und Netzaufbau
    Antworten: 40
    Letzter Beitrag: 31.12.02, 00:54
  3. router suse 8.1
    Von gravity im Forum Router und Netzaufbau
    Antworten: 35
    Letzter Beitrag: 05.12.02, 16:11
  4. suse firewall2 probleme
    Von jochenjjj im Forum Sicherheit
    Antworten: 7
    Letzter Beitrag: 13.10.02, 17:49
  5. Wie kann ich FTP auf meinem Server freigeben?
    Von Flash47 im Forum Router und Netzaufbau
    Antworten: 0
    Letzter Beitrag: 18.10.01, 18:17

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •