Linux.iptables: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Keine Bearbeitungszusammenfassung |
(kein Unterschied)
|
Version vom 12. März 2006, 22:47 Uhr
iptables -t nat -L -v -n
Alle Arbeitsplatz-Rechner sicher und einfach ins InterNet zu bringen
ist hierbei vorrangiges Ziel.
a) Skript "myfirewall.sh" (in der Anlage sicherlich aktueller als dieser Snapshot)
nach /root kopieren.
--- snip
# !/bin/bash
IPTABLES=/usr/sbin/iptables
DEV_LOC=eth0
DEV_EXT=ppp0
DNS_EXT=194.25.2.129
# for IF in $DEV_LOC $DEV_EXT do
# Kernelmodule laden
echo "1" > /proc/sys/net/ipv4/conf/eth0/rp_filter
echo "0" > /proc/sys/net/ipv4/conf/eth0/accept_redirects
echo "0" > /proc/sys/net/ipv4/conf/eth0/accept_source_route
echo "0" > /proc/sys/net/ipv4/conf/eth0/bootp_relay
echo "1" > /proc/sys/net/ipv4/conf/eth0/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 "5" > /proc/sys/net/ipv4/icmp_destunreach_rate
echo "5" > /proc/sys/net/ipv4/icmp_echoreply_rate
echo "5" > /proc/sys/net/ipv4/icmp_paramprob_rate
echo "10" > /proc/sys/net/ipv4/icmp_timeexceed_rate
# 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 -X
# Verbindungen f?r Testzwecke am eigenen Rechner ?ber das Loopback. Einige
# lokale Prozesse wie BIND verwenden das Loopback f?r die interne Kommunikation
$IPTABLES -A OUTPUT -o lo -j ACCEPT
$IPTABLES -A INPUT -i lo -j ACCEPT
# Alle externen Verbindungsversuche und ander Merkw?rdigkeiten werden hier
# aufgefangen, im SYSLOG vermerkt und dann unsch?dlich gemacht
$IPTABLES -N nirwana
# $IPTABLES -A nirwana -p TCP -j LOG --log-prefix "NIRWANA: TCP "
# $IPTABLES -A nirwana -p UDP -j LOG --log-prefix "NIRWANA: UDP "
# $IPTABLES -A nirwana -p ICMP -j LOG --log-prefix "NIRWANA: ICMP "
# $IPTABLES -A nirwana -p TCP -j DROP
# Kernelmodule masq und forwarding aktivieren (dyn. IP vom Provider)
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
echo "1" > /proc/sys/net/ipv4/ip_forward
$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
# F?e bestehenden ein- und ausgehenden Verbindungen. Dritte Regel
# verhindert alle Verbindungen die Au᥮ kommen
$IPTABLES -A FORWARD -i $DEV_LOC -o $DEV_EXT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i $DEV_EXT -o $DEV_LOC -m state --state ESTABLISHED,RELATED -j ACCEPT
# $IPTABLES -A FORWARD -i $DEV_EXT -o $DEV_LOC -m state --state NEW,INVALID -j nirwana
# Zugriff auf internen WEB-Server
# $IPTABLES -A PREROUTING -t nat -p tcp -i $DEV_EXT --dport 80 -j DNAT --to 192.168.115.8:80
$IPTABLES -t nat -A PREROUTING -i $DEV_EXT -p tcp --dport 80 -j DNAT --to 192.168.115.8:80
$IPTABLES -t nat -A PREROUTING -i $DEV_EXT -p tcp --dport 5900 -j DNAT --to 192.168.115.1:5900
# WinMx auf fred!
$IPTABLES -t nat -A PREROUTING -i $DEV_EXT -p tcp --dport 6699 -j DNAT --to 192.168.115.3:6699
$IPTABLES -t nat -A PREROUTING -i $DEV_EXT -p udp --dport 6257 -j DNAT --to 192.168.115.3:6257
# Ping ins Internet erlauben, eingehende werden von der NIRWANA-Rule abgefangen
$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
--- snap
__zuk?s thema: lokales umlenken lokaler Port traffics. Z.b. aller verkehr aus dem Internet
soll umgeleitet werden von "80" auf "8080".
iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0 -j REDIRECT \
--to-ports 8080
iptables -t nat -A OUTPUT -p tcp --dport 80 -m owner \! --uid-owner 13 \
-j REDIRECT --to-ports 8080
Should work. I tested it on my own firewall, although I just tested it
with netcat, not a real proxy.
Locally generated packets don't go through the PREROUTING chain, so you
have to manipulate them in OUTPUT, and you also have to differentiate
them from the proxy's outgoing packets, hence the match against uid 13
(proxy), taken from /etc/passwd.
Unfortunately, you'll have to enable owner match support in your kernel
for the second line to work, so you might have to recompile (it's one of
the features labelled experimental).
Jason
__zuk?s thema: Bandbreiten verteilung: siehe artikel in c't 01/03. Kommt aber
sicher stablier ab "suse 8.2", das es kernel >2.4.19 erfordert.
b) mit
chmod 755 /root/myfirewall.sh
macht man dieses Script ausf?. Nun starten ...
/root/myfirewall.sh
c) Automatischer Start der Firewall beim booten ...
Als root einloggen und folgende Zeilen eingeben:
ln -s /root/myfirewall.sh /etc/init.d/rc2.d/S30myfirewall <RETURN>
ln -s /root/myfirewall.sh /etc/init.d/rc3.d/S30myfirewall <RETURN>
ln -s /root/myfirewall.sh /etc/init.d/rc5.d/S30myfirewall <RETURN>
fehlt noch: "K" links, myfirewall sollte echtes Script werden, das
"start" und "stop" auswerten kann.
d) Eintrag in /etc/rc.config 䮤ern: IP_FORWARD="no" auf "yes"
Eintrag wirksam machen mit SuSEconfig