ubuntuusers.de

IPTables auf DROP oder REJECT

Status: Gelöst | Ubuntu-Version: Ubuntu 8.04 (Hardy Heron)
Antworten |

Tzwenn

Avatar von Tzwenn

Anmeldungsdatum:
6. Mai 2009

Beiträge: 138

Wohnort: Mainz

Hallo ich hab eine frage zu meinen Iptables.

Wenn ich damit unter www.grc.com SHIELD UP! alle Service Ports teste dann werden alle Ports als gesperrt angezeigt, ich würde es besser finden wenn die im Steahlt Modus wären, quasi unsichtbar. Ich weiß ich hab da schon einiges drüber gelesen und auch schon im Forum mit getickert, aber irgendwie bin ich immer noch sehr unsicher was für mich besser ist.

Das Problem ist folgendes, ich nutze eine DSL Verbindung die keine FLAT ist, d.h. ich zahle wenn ich Online bin für meinen Traffic. Wenn ich jetzt eine Anfrage auf einen Port bekomme der nicht auf DROP steht, dann sende ich ja ein Packet zurück auch wenn's nur REJECT ist (also nicht angenommen) dadurch entstehen mir kosten und die will ich nicht.

Ich müsste also eigentlich alles auf DROP setzen oder wie seht ihr das?

Gruß TZWENN

#!/bin/bash
# ---------------------------------------------------------------------
#
# RT-Firewall
#
# --------------------------------------------------------------------


#######################################################
# Start Script - Startet die Firewall
#
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

# Loechen von alten Ketten und Regeln
    # Tabelle flushen
    iptables -F
    iptables -t nat -F
    iptables -t mangle -F
    iptables -X
    iptables -t nat -X
    iptables -t mangle -X

# Standard Einstellungen alles gesperrt
    # Default-Policies setzen
    iptables -P INPUT DROP
    iptables -P OUTPUT DROP
    iptables -P FORWARD DROP

# Erstellen einer Kette
    # MY_REJECT-Chain
    iptables -N MY_REJECT

# Kette mit Regeln fuelen
    # 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

# DROP Kette
    # 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 "
    iptables -A FORWARD -m state --state INVALID -m limit --limit 7200/h -j LOG --log-prefix "FORWARD INVALID "

    # Korrupte Pakete zurueckweisen
    iptables -A INPUT -m state --state INVALID -j DROP
    iptables -A OUTPUT -m state --state INVALID -j DROP
    iptables -A FORWARD -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
    iptables -A FORWARD -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
    iptables -A FORWARD -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
    iptables -A FORWARD -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
    iptables -A FORWARD -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
    iptables -A FORWARD -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
    iptables -A FORWARD -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
    iptables -A FORWARD -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

    # Maximum Segment Size (MSS) fuer das Forwarding an PMTU anpassen
    iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

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

# SSH als einziger Port von aussen offen
    # SSH
    iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 22 -j ACCEPT
    iptables -A INPUT -i eth2 -m state --state NEW -p tcp --dport 22 -j ACCEPT
    iptables -A INPUT -i ppp0 -m state --state NEW -p tcp --dport 22 -j ACCEPT


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

    # LAN-Zugriff (eth2) auf eth0
    iptables -A INPUT -m state --state NEW -i eth0 -j ACCEPT

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

# Routing
    # Forwarding/Routing
    echo "Aktiviere IP-Routing"
    echo 1 > /proc/sys/net/ipv4/ip_forward 2> /dev/null

# Masquerading
#iptables -t nat -A POSTROUTING -o eth0 -s 192.167.1.0/24 -j MASQUERADE

# Masquerading fuer das Testen direkt am DSL Anschluss
iptables -t nat -A POSTROUTING -o ppp0 -s 0.0.0.0/0.0.0.0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -s 0.0.0.0/0.0.0.0 -j MASQUERADE

# NAT fuer die Clients im LAN
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

    # 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

    # Ungueltige 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 fuer 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

# Starten von Fail 2 Ban

echo "Starte Fail2Ban"
/etc/init.d/fail2ban start
    ;;

####################################################
# Stop Script - Beendet die Firewall -
#
stop)
echo "Stoppe Fail2Ban"
/etc/init.d/fail2ban 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
echo "Deaktiviere IP-Routing"
echo 0 > /proc/sys/net/ipv4/ip_forward

# Default-Policies setzen
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
;;

#####################################################
# Status Script - Zeigt den Aktuellen Status der Firewall an
#
status)
echo "Tabelle filter"
iptables -L -vn
echo "Tabelle nat"
iptables -t nat -L -vn
echo "Tabelle mangle"
iptables -t mangle -L -vn
;;

#######################################################
# ERROR Script - Wirft fehler bei der Eingabe von Befehlen aus
#
*)
echo "Fehlerhafter Aufruf"
echo "Syntax: $0 {start|stop|status}"
exit 1
;;
esac

Chrissss Team-Icon

Anmeldungsdatum:
31. August 2005

Beiträge: 37971

Tzwenn schrieb:

Wenn ich damit unter www.grc.com SHIELD UP! alle Service Ports teste dann werden alle Ports als gesperrt angezeigt, ich würde es besser finden wenn die im Steahlt Modus wären, quasi unsichtbar. Ich weiß ich hab da schon einiges drüber gelesen und auch schon im Forum mit getickert, aber irgendwie bin ich immer noch sehr unsicher was für mich besser ist.

Dann sollte dir doch unsere Position dazu bekannt sein 😉 Der "Steahlt Modus" ist etwas aus dem Begriff der Legenden und Mythen der Personal Firewalls. Bitte lass die Spielerei sein...Personal_Firewalls#Unsichtbarmachen

Tzwenn

(Themenstarter)
Avatar von Tzwenn

Anmeldungsdatum:
6. Mai 2009

Beiträge: 138

Wohnort: Mainz

Chrissss schrieb:

Dann sollte dir doch unsere Position dazu bekannt sein 😉

Ohja !!! Das ist sie !!!

Jedoch hab ich das Problem des Traffics, jedes bit das ich sende muss halt bezahlt werden. Darum denke ich halt noch das DROP also nix senden billiger ist, damit liege ich doch eigentlich richtig, auch wenn's für ein Standard Ubuntu nicht notwendig wäre, da es ja alle Ports zu hat.

Chrissss Team-Icon

Anmeldungsdatum:
31. August 2005

Beiträge: 37971

Tzwenn schrieb:

Jedoch hab ich das Problem des Traffics, jedes bit das ich sende muss halt bezahlt werden. Darum denke ich halt noch das DROP also nix senden billiger ist, damit liege ich doch eigentlich richtig, auch wenn's für ein Standard Ubuntu nicht notwendig wäre, da es ja alle Ports zu hat.

Das Thema hatten wir doch hier http://forum.ubuntuusers.de/topic/drop-oder-reject/ schonmal...

Into_the_Pit Team-Icon

Ehemalige
Avatar von Into_the_Pit

Anmeldungsdatum:
25. Juni 2008

Beiträge: 9490

Wohnort: Bochum

Chrissss schrieb:

Das Thema hatten wir doch hier http://forum.ubuntuusers.de/topic/drop-oder-reject/ schonmal...

Und deswegen ist hier jetzt zu.

Antworten |