Linux.iptables: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Zeile 53: | Zeile 53: | ||
echo "0" > /proc/sys/net/ipv4/conf/$DEV_EXT/bootp_relay | echo "0" > /proc/sys/net/ipv4/conf/$DEV_EXT/bootp_relay | ||
echo "1" > /proc/sys/net/ipv4/conf/$DEV_EXT/log_martians | echo "1" > /proc/sys/net/ipv4/conf/$DEV_EXT/log_martians | ||
# done | # done | ||
Version vom 13. März 2006, 12:19 Uhr
iptables ist ein Paket-Gutachter der in den Kernel integriert ist. Es gibt viele Bildchen, die erklären wollen wie ein Paket durch den Kernel läuft. Ich habe aber bisher keines Verstanden und whrheitsgemäss die Wirklichkeit abgebildet haben. Ich stelle mir die Sache so vor:
- Auf einem Laufband sieht der Kernel wie ALLE Pakete durch das System ziehen. Auf dem Adressaufkleber jedes Paketes sind diverse Eintragungen gemacht. iptables kann nun durch ein Regelwerk zu diversen Fälschungen an diesem Adressaufkleber gewzungen werden. iptables kann Pakete auch einfach vom Band kicken (DROP) oder dem versender mitteilen, dass die Annahme verweigert wurde (REJECT).
- Einzelne Zeilen des Adressaufkleber sind:
# Inhaltsinfo Typ Grösse
# Herkunft Quell-IP Quell-Port Quell-Interface
# Ziel Ziel-IP Ziel-Port Ziel-Interface
and-firewall
#!/bin/bash
#
#
# to-do
# =====
#
# 1) umstellen auf /etc/init.d/skeleton
# 2) ev. keepcon ein interface ppp0,ippp0 übergeben lassen, wenn
# der erste parameter leer ist
#
#
IPTABLES=/usr/sbin/iptables
DEV_LOC=eth0
DEV_EXT=$2
# DEV_EXT=dsl0
# Kernelmodule laden
. /etc/rc.status
rc_reset
echo -n "Wolff firewall Rev. 1.000 device $2"
rc_status -v
echo "1" > /proc/sys/net/ipv4/conf/$DEV_LOC/rp_filter
echo "0" > /proc/sys/net/ipv4/conf/$DEV_LOC/accept_redirects
echo "0" > /proc/sys/net/ipv4/conf/$DEV_LOC/accept_source_route
echo "0" > /proc/sys/net/ipv4/conf/$DEV_LOC/bootp_relay
echo "1" > /proc/sys/net/ipv4/conf/$DEV_LOC/log_martians
echo "1" > /proc/sys/net/ipv4/conf/$DEV_EXT/rp_filter
echo "0" > /proc/sys/net/ipv4/conf/$DEV_EXT/accept_redirects
echo "0" > /proc/sys/net/ipv4/conf/$DEV_EXT/accept_source_route
echo "0" > /proc/sys/net/ipv4/conf/$DEV_EXT/bootp_relay
echo "1" > /proc/sys/net/ipv4/conf/$DEV_EXT/log_martians
# done
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
echo "1" > /proc/sys/net/ipv4/ip_forward
# Zu Anfang alles verbieten (Default Policy)
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
# Alle Regelketten, die sich noch im Speicher befinden könnten, löschen
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F
$IPTABLES -X
# Kernelmodule masq und forwarding aktivieren (dyn. IP vom Provider)
$IPTABLES -t nat -A POSTROUTING -o $DEV_EXT -j MASQUERADE
$IPTABLES -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
# XML RPC
$IPTABLES -t nat -A PREROUTING -i $DEV_EXT -p tcp --dport 3049 -j DNAT --to 192.168.115.34:3048
# sewa3
$IPTABLES -t nat -A PREROUTING -i $DEV_EXT -p tcp --dport 8082 -j DNAT --to 192.168.115.34:5900
# sewa4
$IPTABLES -t nat -A PREROUTING -i $DEV_EXT -p tcp --dport 8083 -j DNAT --to 192.168.115.35:80
$IPTABLES -t nat -A PREROUTING -i $DEV_EXT -p tcp --dport 8084 -j DNAT --to 192.168.115.35:5900
/etc/tcshape
/etc/mac-filter.sh
rc_exit
Diagnose, Techniken
- Anzeigen aller aktueller Portumleitungen
iptables -t nat -L -v -n
- Bei der DROP Polyci etwas erlauben:
$IPTABLES -A FORWARD -o $DEV_EXT -p ICMP --icmp-type echo-request -j ACCEPT
# DNS
$IPTABLES -A FORWARD -o $DEV_EXT -p tcp --sport 1024:65535 --dport domain -d $DNS_EXT -m state --state NEW -j ACCEPT
# HTTP
$IPTABLES -A FORWARD -o $DEV_EXT -p tcp --sport 1024:65535 --dport http -m state --state NEW -j ACCEPT
# $IPTABLES -A FORWARD -o $DEV_EXT -p tcp --sport 1024:65535 --dport https -m state --state NEW -j ACCEPT
# FTP
# $IPTABLES -A FORWARD -o $DEV_EXT -p tcp --sport 1024:65535 --dport ftp -m state --state NEW -j ACCEPT
# $IPTABLES -A FORWARD -o $DEV_EXT -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state NEW -j ACCEPT
# Alle Pakete, die bis hierher kommen nach nirwana
$IPTABLES -A INPUT -j nirwana
$IPTABLES -A OUTPUT -j nirwana
$IPTABLES -A FORWARD -j nirwana
- Fraglich: IP_FORWARDING, muss das im Kernel extra aktiviert werden? Irgendwie gab es da bei mir schwierigkeiten. Mal sehen was die nächste Server-Installation dazu sagt!