Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Brauche Hilfe bei Iptables
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German)
View previous topic :: View next topic  
Author Message
gekko247
Tux's lil' helper
Tux's lil' helper


Joined: 02 Oct 2004
Posts: 139
Location: Lancashire, UK

PostPosted: Mon Aug 11, 2008 9:11 am    Post subject: Brauche Hilfe bei Iptables Reply with quote

Hallo Zusammen,

ich habe mir ein IPtables Script generieren lassen.

Code:

    # 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 "
    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) für 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

    # EDONKEY
    iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 4661 -j ACCEPT
    iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 4662 -j ACCEPT
    iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 4663 -j ACCEPT
    iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 4665 -j ACCEPT

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

    # LAN-Zugriff auf lan0
    iptables -A INPUT -m state --state NEW -i wlan0 -j ACCEPT
    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

    # 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 -j MASQUERADE
   

    # 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


Nun habe ich in der manpage von IPtables gelesen , das man das Forwarding auf bestimmte MAC Adressen setzen kann
Code:

iptables -I FORWARD 1 -m mac --mac-source xx:xx:xx:xx:xx:xx -j ACCEPT


Ist es auch möglich die --mac-source als Variable zu setzen.

Code:



iptables -I FORWARD 1 -m mac --mac-source $ACCEPT_LIST -j ACCEPT


1. Nun soll aber die Clients nur Zugriff auf das Internet haben, kein Lan.
2. Wie kann ich das ganze in mein Script einbringen, ich bin wirklich nicht sehr Fit in Sachen IPtables :(

Danke Frank
_________________
Lappi: Compaq 15-h050ng Notebook - Gentoo / FreeBSD
Back to top
View user's profile Send private message
revilootneg
Tux's lil' helper
Tux's lil' helper


Joined: 03 Jun 2007
Posts: 102
Location: /germany/hannover

PostPosted: Mon Aug 11, 2008 5:59 pm    Post subject: Reply with quote

Du machst es einem wirklich nicht leicht zu antworten. Bring deinen Text bitte wenigstens sprachlich in eine lesbare (und vor allem verständliche) Form. Zudem fehlen viel zu viele Informationen:
1. Ist diese Firewall für deinen Router bestimmt, der andere Clients per masquerading ins Netz lassen soll?
2. Was meinst du mit "kein Lan"?
3. Wer oder was hat das Skript generiert?
4. Verstehst du (ansatzweise) was das Skript tut?

Dann schon mal einige Tipps:
1. Lass die Finger vom iptables --insert/-I. Das bringt dir nur deine Regeln durcheinander, da iptables einen top-down-approach verfolgt. Was zuerst passt, dass wird auch genutzt. Nutze stattdessen --append/-A.
2. Du kannst natürlich eine Liste von mac-Adressen definieren und als Variable setzen. Dies sollte dann aber so aussehen:
Code:

MAC_LIST="00:32:56:4B:2A:9C 00:2B:3A:5F:9D:22 ...."
for MAC in $MACLIST; do
     iptables -A FORWARD -m mac --mac-source $MAC -j ACCEPT
done


Die Variante mit einer user-defined-chain könnte so ausschaun:
Code:

MAC_LIST="00:32:56:4B:2A:9C 00:2B:3A:5F:9D:22 ...."

iptables -N mac_allow
for MAC in $MACLIST; do
     iptables -A mac_allow -m mac --mac-source $MAC -j ACCEPT
done
iptables -A mac_allow -j DROP


3. iptables-tutorial.frozentux.org ist _DIE_ Documentation zu iptables schlechthin. Es mag etwas viel wirken, wenn man sich die größe des Scrollbalkens anschaut, man merkt aber schnell, dass einige Bereiche zunächst uninteressant sind und übersprungen werden können.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum