Iptables auf Fritzbox nur für HTTP/S DNS einrichten

mikazoid

Neuer User
Mitglied seit
14 Jun 2009
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
Hallo ich möchte Iptables nur für den Webzugang HTTPS DNS auf meiner Fritzbox einrichten, Zugang über Putty habe ich bereits uns kann über die Shell auf die Verzeichnisse zugreifen, nur weiss ich nicht wohin ich die config der Iptables einspielen soll.

Eine Config habe ich bereits generieren lassen Iptables.cgi habe ich bei der config menu ausgewählt, brauche ich noch weitere Iptables Pakete?

Code:
case "$1" in
  start)
    echo "Starte IP-Paketfilter"

    # iptables-Modul
    modprobe ip_tables
    # Connection-Tracking-Module
    modprobe ip_conntrack
    # Das Modul ip_conntrack_irc ist erst bei Kerneln >= 2.4.19 verfuegbar
    modprobe ip_conntrack_irc
    modprobe ip_conntrack_ftp

    # Tabelle flushen
    iptables -F
    iptables -t nat -F
    iptables -t mangle -F
    iptables -X
    iptables -t nat -X
    iptables -t mangle -X

    # Default-Policies setzen
    iptables -P INPUT DROP
    iptables -P OUTPUT DROP
    iptables -P FORWARD DROP

    # MY_REJECT-Chain
    iptables -N MY_REJECT

    # MY_REJECT fuellen
    iptables -A MY_REJECT -p tcp -m limit --limit 7200/h -j LOG --log-prefix "REJECT TCP "
    iptables -A MY_REJECT -p tcp -j REJECT --reject-with tcp-reset
    iptables -A MY_REJECT -p udp -m limit --limit 7200/h -j LOG --log-prefix "REJECT UDP "
    iptables -A MY_REJECT -p udp -j REJECT --reject-with icmp-port-unreachable
    iptables -A MY_REJECT -p icmp -m limit --limit 7200/h -j LOG --log-prefix "DROP ICMP "
    iptables -A MY_REJECT -p icmp -j DROP
    iptables -A MY_REJECT -m limit --limit 7200/h -j LOG --log-prefix "REJECT OTHER "
    iptables -A MY_REJECT -j REJECT --reject-with icmp-proto-unreachable

    # MY_DROP-Chain
    iptables -N MY_DROP
    iptables -A MY_DROP -m limit --limit 7200/h -j LOG --log-prefix "PORTSCAN DROP "
    iptables -A MY_DROP -j DROP

    # Alle verworfenen Pakete protokollieren
    iptables -A INPUT -m state --state INVALID -m limit --limit 7200/h -j LOG --log-prefix "INPUT INVALID "
    iptables -A OUTPUT -m state --state INVALID -m limit --limit 7200/h -j LOG --log-prefix "OUTPUT INVALID "

    # Korrupte Pakete zurueckweisen
    iptables -A INPUT -m state --state INVALID -j DROP
    iptables -A OUTPUT -m state --state INVALID -j DROP

    # Stealth Scans etc. DROPpen
    # Keine Flags gesetzt
    iptables -A INPUT -p tcp --tcp-flags ALL NONE -j MY_DROP

    # SYN und FIN gesetzt
    iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j MY_DROP

    # SYN und RST gleichzeitig gesetzt
    iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j MY_DROP

    # FIN und RST gleichzeitig gesetzt
    iptables -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j MY_DROP

    # FIN ohne ACK
    iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j MY_DROP

    # PSH ohne ACK
    iptables -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j MY_DROP

    # URG ohne ACK
    iptables -A INPUT -p tcp --tcp-flags ACK,URG URG -j MY_DROP

    # Loopback-Netzwerk-Kommunikation zulassen
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A OUTPUT -o lo -j ACCEPT

    # Connection-Tracking aktivieren
    iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

    # HTTP
    iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 80 -j ACCEPT

    # HTTPS
    iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 443 -j ACCEPT

    # DNS
    iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 53 -j ACCEPT
    iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 53 -j ACCEPT

    # ICMP Echo-Request (ping) zulassen und beantworten
    iptables -A INPUT -m state --state NEW -p icmp --icmp-type echo-request -j ACCEPT

    # Default-Policies mit REJECT
    iptables -A INPUT -j MY_REJECT
    iptables -A OUTPUT -j MY_REJECT

    # SYN-Cookies
    echo 1 > /proc/sys/net/ipv4/tcp_syncookies 2> /dev/null

    # Stop Source-Routing
    for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/accept_source_route 2> /dev/null; done

    # Stop Redirecting
    for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/accept_redirects 2> /dev/null; done

    # Reverse-Path-Filter
    for i in /proc/sys/net/ipv4/conf/*; do echo 2 > $i/rp_filter 2> /dev/null; done

    # Log Martians
    for i in /proc/sys/net/ipv4/conf/*; do echo 1 > $i/log_martians 2> /dev/null; done

    # BOOTP-Relaying ausschalten
    for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/bootp_relay 2> /dev/null; done

    # Proxy-ARP ausschalten
    for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/proxy_arp 2> /dev/null; done

    # Ung�ltige ICMP-Antworten ignorieren
    echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses 2> /dev/null

    # ICMP Echo-Broadcasts ignorieren
    echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts 2> /dev/null

    # Max. 500/Sekunde (5/Jiffie) senden
    echo 5 > /proc/sys/net/ipv4/icmp_ratelimit

    # Speicherallozierung und -timing f�r IP-De/-Fragmentierung
    echo 262144 > /proc/sys/net/ipv4/ipfrag_high_thresh
    echo 196608 > /proc/sys/net/ipv4/ipfrag_low_thresh
    echo 30 > /proc/sys/net/ipv4/ipfrag_time

    # TCP-FIN-Timeout zum Schutz vor DoS-Attacken setzen
    echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout

    # Maximal 3 Antworten auf ein TCP-SYN
    echo 3 > /proc/sys/net/ipv4/tcp_retries1

    # TCP-Pakete maximal 15x wiederholen
    echo 15 > /proc/sys/net/ipv4/tcp_retries2

    ;;

  stop)
    echo "Stoppe IP-Paketfilter"
    # Tabelle flushen
    iptables -F
    iptables -t nat -F
    iptables -t mangle -F
    iptables -X
    iptables -t nat -X
    iptables -t mangle -X
    # Default-Policies setzen
    iptables -P INPUT ACCEPT
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD ACCEPT
    ;;

  status)
    echo "Tabelle filter"
    iptables -L -vn
    echo "Tabelle nat"
    iptables -t nat -L -vn
    echo "Tabelle mangle"
    iptables -t mangle -L -vn
    ;;

  *)
    echo "Fehlerhafter Aufruf"
    echo "Syntax: $0 {start|stop|status}"
    exit 1
    ;;

esac

dankbar wäre ich für eine Schritt für Schritt Erklärung, nachdem ich die Shell gestartet habe.

MFG
 
Die Erklärung findest Du am ehesten dort, wo Du das Skript her hast.

Oder erwartest Du, daß jemand anders hier versucht, das Skript nachzuvollziehen?
 
nein, natürlich nicht.


Ich wollte das Skript 1 : 1 in eine iptables.conf <-- wenn's das gibt einsetzen, damit es von Iptables übernommen wird und ich es auf dem webinterface, dann sehen kann.

Nur, weiss ih eben nicht wohin damit, das war ja auch meine Frage, wohin mit dem Skript?

ich habe das Skript von http://www.harry.homelinux.org/

mit dem Hinweis

Fuehren Sie die folgenden Kommandos aus, nachdem das Skript "firewall" nach /etc/init.d kopiert wurde:
chmod 755 /etc/init.d/firewall
cd /usr/sbin
ln -s ../../etc/init.d/firewall rcfirewall
chkconfig -a firewall
rcfirewall start

ein Ordner init.d werde ich bei meiner Fritzbox nicht finden, desshalb suche ich nach einem Analogordner wohin ich es kopieren kann.
 
um das script zu verwenden, muß erstmal iptables installiert sein.
das ist auf einer normalen fb nicht der fall.
abhilfe schaft freetz.
hast du lust ne crosscompiler umgebung einzurichten?
dann leg mal unter linux mit den freetz skripten los.
 
Einen Ordner /etc/init.d hättest Du schon gefunden, wenn Du dort man nachgeschaut hättest. Dort kannst Du aber nicht so einfach Änderungen vornehmen. Du kannst das Skript auch an jeden anderen Ort kopieren, zum Beispiel nach /var/tmp. Danach kannst Du es aufrufen und es sollte die Regeln setzen.

Wenn auf Deiner Box noch kein iptables ist, kannst Du Freetz verwenden, oder mit Freetz iptables erstellen und anderweitig auf die Box bringen.
 
Freetz habe ich schon drauf mit dem Paket iptables.cgi

unter init.d sind tatsächlich folgende Einträge auch mit rc.iptable

/etc/init.d # ls -1
modlibrc
rc.S
rc.avm-firewall
rc.conf
rc.crond
rc.init
rc.iptables
rc.mod
rc.net
rc.swap
rc.telnetd
rc.ubik
rc.webcfg
rc.websrv

blöde Frage vll, aber wie rufe ich das Skript nachdem ich es in einen Ordner kopiert habe am besten auf? doch nicht mit rcfirewall start
 
Entweder Du machst das Skript ausführbar und startest es mit dem Namen, oder Du rufst die Shell mit dem Namen das Skriptes auf.
 
danke, mir ist inzwischen klar, dass ich .CGI nicht brauche. Ich habe auch schon viele Kombinationen probiert aber ging jedesmal irgendwie schief. Ich werde mich mit Iptables wenn ich später mehr Zeit habe näher beschäftigen.

Was ich momentan brauche ist ein einfaches Skript 3 Zeiler genügt um den Traffic nach außen von meiner BOX auf die jeweiligen Ports zu beschränken z.B. Port 80, die restlichen Ports sollte ich selber ergänzen können.

Wer mir behilflich sein kein, danke ich schonmal im vorraus
 
...
Was ich momentan brauche ist ein einfaches Skript 3 Zeiler genügt um den Traffic nach außen von meiner BOX auf die jeweiligen Ports zu beschränken z.B. Port 80, die restlichen Ports sollte ich selber ergänzen können.
...

Code:
#!/bin/sh

iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X

[COLOR="Red"]iptables -P FORWARD DROP[/COLOR]

iptables -A FORWARD  -p tcp -d 0/0 --dport 80 -j ACCEPT

EDIT:
mit "multiport", als Beispiel:
Code:
iptables -A FORWARD -p tcp -d 0/0 -m multiport --dports 20,21,22,25,80,110,123,443,8080 -j ACCEPT
 
Zuletzt bearbeitet:
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.