hab da ein Problem mit meiner Linux Kiste das mich schon seit mehreren Tagen beschäftigt.
Zuerst mal Informationen über die Netzwerk-Interfaces:
eth0: 192.168.0.1 subnetmask 255.255.255.0
wlan0: 10.0.0.1 subnetmask 255.0.0.0
Ich möchte, dass die Linux Kiste als Gateway zwischen diesen 2 Netzen fungiert, d.h. ein Rechner vom 192.168.0.x LAN soll auf einen Rechner im WLAN (10.0.0.x) zugreifen können.
Soweit sogut, habe folgendes IPTABLES-Script verwendet:
- Code: Alles auswählen
#!/bin/bash
# ---------------------------------------------------------------------
# Linux-iptables-Firewallskript, Copyright (c) 2003 under the GPL
# Autogenerated by iptables Generator v1.16 (c) 2002 by Harald BertramÂ
# Please visit http://www.harry.homelinux.org for new versions of
# the iptables Generator (c).
#
# This Script was generated by request from:
# 2003-10-26 8:55.54 MET.
#
# If you have questions about the iptables Generator or about
# your Firewall-Skript feel free to take a look at out website or
# send me an E-Mail to [email protected].
#
# My special thanks are going to Lutz Heinrich ([email protected]) who
# made lots of Beta-Testing and gave me lots of well qualified
# Feedback that made me able to improve the iptables Generator.
# --------------------------------------------------------------------
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 "
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 ! wlan0 -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
# HTTPS
iptables -A INPUT -i wlan0 -m state --state NEW -p tcp --dport 443 -j ACCEPT
# SMTP
iptables -A INPUT -i wlan0 -m state --state NEW -p tcp --dport 25 -j ACCEPT
# POP3
iptables -A INPUT -i wlan0 -m state --state NEW -p tcp --dport 110 -j ACCEPT
# POP3S
iptables -A INPUT -i wlan0 -m state --state NEW -p tcp --dport 995 -j ACCEPT
# IMAP
iptables -A INPUT -i wlan0 -m state --state NEW -p tcp --dport 143 -j ACCEPT
# IMAPS
iptables -A INPUT -i wlan0 -m state --state NEW -p tcp --dport 993 -j ACCEPT
# NNTP
iptables -A INPUT -i wlan0 -m state --state NEW -p tcp --dport 119 -j ACCEPT
# DNS
iptables -A INPUT -i wlan0 -m state --state NEW -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -i wlan0 -m state --state NEW -p udp --dport 53 -j ACCEPT
# FTP
iptables -A INPUT -i wlan0 -m state --state NEW -p tcp --dport 21 -j ACCEPT
# SMB
iptables -A INPUT -i wlan0 -m state --state NEW -p tcp --dport 137 -j ACCEPT
iptables -A INPUT -i wlan0 -m state --state NEW -p tcp --dport 138 -j ACCEPT
iptables -A INPUT -i wlan0 -m state --state NEW -p tcp --dport 139 -j ACCEPT
iptables -A INPUT -i wlan0 -m state --state NEW -p udp --dport 137 -j ACCEPT
iptables -A INPUT -i wlan0 -m state --state NEW -p udp --dport 138 -j ACCEPT
iptables -A INPUT -i wlan0 -m state --state NEW -p udp --dport 139 -j ACCEPT
# SSH
iptables -A INPUT -i wlan0 -m state --state NEW -p tcp --dport 22 -j ACCEPT
# MYSQL
iptables -A INPUT -i wlan0 -m state --state NEW -p tcp --dport 3306 -j ACCEPT
# NTP
iptables -A INPUT -i wlan0 -m state --state NEW -p udp --dport 123 -j ACCEPT
# IRC
iptables -A INPUT -i wlan0 -m state --state NEW -p tcp --dport 6667 -j ACCEPT
# EDONKEY
iptables -A INPUT -i wlan0 -m state --state NEW -p tcp --dport 4661 -j ACCEPT
iptables -A INPUT -i wlan0 -m state --state NEW -p tcp --dport 4662 -j ACCEPT
iptables -A INPUT -i wlan0 -m state --state NEW -p tcp --dport 4663 -j ACCEPT
iptables -A INPUT -i wlan0 -m state --state NEW -p udp --dport 4665 -j ACCEPT
# TELNET
iptables -A INPUT -i wlan0 -m state --state NEW -p tcp --dport 23 -j ACCEPT
# BZFLAG
iptables -A INPUT -i wlan0 -m state --state NEW -p tcp --dport 5155 -j ACCEPT
iptables -A INPUT -i wlan0 -m state --state NEW -p udp --dport 5155 -j ACCEPT
iptables -A INPUT -i wlan0 -m state --state NEW -p tcp --dport 5156 -j ACCEPT
iptables -A INPUT -i wlan0 -m state --state NEW -p udp --dport 5156 -j ACCEPT
# HALF-LIFE
iptables -A INPUT -i wlan0 -m state --state NEW -p tcp --dport 6000:6003 -j ACCEPT
iptables -A INPUT -i wlan0 -m state --state NEW -p tcp --dport 7001:7002 -j ACCEPT
iptables -A INPUT -i wlan0 -m state --state NEW -p udp --dport 27005 -j ACCEPT
iptables -A INPUT -i wlan0 -m state --state NEW -p udp --dport 27010 -j ACCEPT
iptables -A INPUT -i wlan0 -m state --state NEW -p udp --dport 27015:27016 -j ACCEPT
# IPSEC
iptables -A INPUT -i wlan0 -p 50 -j ACCEPT
iptables -A INPUT -i wlan0 -p 51 -j ACCEPT
iptables -A INPUT -i wlan0 -m state --state NEW -p udp --dport 500 -j ACCEPT
# OPENVPN
iptables -A INPUT -i wlan0 -m state --state NEW -p udp --dport 5000 -j ACCEPT
# IP-Adresse des LAN-Interfaces ermitteln
LAN_IP=$(ifconfig eth0 | head -n 2 | tail -n 1 | cut -d: -f2 | cut -d" " -f 1)
# NAT fuer HTTP
iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 80 -j DNAT --to-destination
iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport 80 -j SNAT --to-source $LAN_IP
iptables -A FORWARD -i wlan0 -m state --state NEW -p tcp -d --dport 80 -j ACCEPT
# LAN-Zugriff 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
echo 1 > /proc/sys/net/ipv4/ip_forward 2> /dev/null
# Masquerading
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
# SYN-Cookies
echo 1 > /proc/sys/net/ipv4/tcp_syncookies 2> /dev/null
# Reverse-Path-Filter
# Auskommentiert, da IPSEC mit RP_Filter nicht funktioniert!
# 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
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)
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
Ich kann von einem Rechner im normalen LAN (192.168.0.x) zwar das wlan0 interface anpingen (10.0.0.1), aber nicht andere Rechner im WLAN (=10.0.0.x).
Woran könnte es liegen?
Falls ihr noch Informationen benötigt fragt einfach.
mfg, oe3vsfm4