View previous topic :: View next topic |
Author |
Message |
gekko247 Tux's lil' helper
![Tux's lil' helper Tux's lil' helper](/images/ranks/rank_rect_1.gif)
![](images/avatars/gallery/The Matrix/movie_the_matrix_agent_smith.gif)
Joined: 02 Oct 2004 Posts: 139 Location: Lancashire, UK
|
Posted: Mon Aug 11, 2008 9:11 am Post subject: Brauche Hilfe bei Iptables |
|
|
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 |
|
![](templates/gentoo/images/spacer.gif) |
revilootneg Tux's lil' helper
![Tux's lil' helper Tux's lil' helper](/images/ranks/rank_rect_1.gif)
Joined: 03 Jun 2007 Posts: 102 Location: /germany/hannover
|
Posted: Mon Aug 11, 2008 5:59 pm Post subject: |
|
|
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 |
|
![](templates/gentoo/images/spacer.gif) |
|
|
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
|
|