Am 3.8.2000 erzählte Attila Kinali vor grossem Publikum einiges über
ipchains. Hier ist das, was er uns als Folien gezeigt hat.
IPCHAINS - Paketfilter des 2.2er Kernels
Was ist ipchains?
- Ein Filterkonzept auf IP Ebene
- Ein Userspace Programm
Wofür ist ipchains zu gebrauchen?
- Paket Firewall
- Masquerading Firewall
- Transparent Proxies
- Port redirection
Wie funktioniert ipchains ?
- Ipchains filtert auf IP Ebene.
- Ipchains ist dem Routing zwischengeschaltet
benötigte Kerneloptionen
- Network Firewall
- IP: Firewalling
- IP: Masquerading
- IP: ICMP Masquerading
Synopsis
ipchains <Befehl> <Chain> <Optionen>
ipchains -A input -j REJECT
ipchains -I output -j ACCEPT
ipchains -P forward -j DENY
ipchains -N internet
ipchains -I input -s 0.0.0.0/0 -j internet
ipchains -I internet -d 192.168.1.0/24 -j DENY
ipchains -A internet -p UDP -j REJECT
Ein Beispiel Firewall
#!/bin/sh
local_net=192.168.1.0/24
Forwarding einschalten
echo "1" > /proc/sys/net/ipv4/ip_forward
Port Bereich für Ausgehende Verbindungen setzen
echo "32768 61000" \
> /proc/sys/net/ipv4/ip_local_port_range
fragmentierte IP Packete wieder zusammensetzen
echo "1" > /proc/sys/net/ipv4/ip_always_defrag
Zusätzliche Module laden
modprobe ip_masq_ftp
modprobe ip_masq_irc
Default Rules setzen
ipchains -P input REJECT
ipchains -P forward REJECT
ipchains -P output ACCEPT
Alles auf lo freigeben
ipchains -A input -i lo -j ACCEPT
ipchains -A output -i lo -j ACCEPT
Auf dem lokalen Netz alles erlauben
ipchains -A input -s ${local_net} \
-i eth0 -j ACCEPT
ipchains -A output -d ${local_net} \
-i eth0 -j ACCEPT
Masquerading einschalten und Rückweg für Verbindungen öffnen
ipchains -A forward -s ${local_net} \
-d 0.0.0.0/0 -j MASQ
ipchains -A input -s 0.0.0.0/0 \
! -y -i eth1 \
--destination-port ! 0:32767 \
-p TCP
-j ACCEPT
ipchains -A input -s 0.0.0.0/0\
-i eth1 \
--destination-port ! 0:32767 \
-p UDP -j ACCEPT
ssh und http öffnen
ipchains -A input -s 0.0.0.0/0\
-i eth1 \
--destination-port 80\
-p TCP -j ACCEPT
ipchains -A output -d 0.0.0.0/0\
--source-port 80 \
-p TCP -j ACCEPT
ipchains -A input -s 0.0.0.0/0\
-i eth1 \
--destination-port 22 \
-p TCP -j ACCEPT
ipchains -A output -d 0.0.0.0/0\
--source-port 22 \
-p TCP -j ACCEPT
ICMPs erlauben/sperren:
ICMPs erlauben
ipchains -I input -p ICMP\
-j ACCEPT
ipchains -I output -p ICMP\
-j ACCEPT
ICMP Redirects sperren
ipchains -I input -p ICMP\
--icmp-type redirect\
-j DENY
|