_jo
Well-Known Member
Hallo,
nach der Einleitung von asg hier im Forum und von marzl
(http://www.bsdbox.de/firewall.html)
hab ich den Versuch gestartet meinen Router auf FreeBSD umzustellen.
An dieser Stelle vielen Dank an euch beiden für die Anleitungen, sie
waren mir sehr hilfreich.
Ein Problem trat jedoch auf, was ich versucht hab in den letzten Tagen
zu lösen und um das ich euch um Hilfe bitte:
Ich habe nat mittels IPDIVERT im KERNEL ermöglicht und in der rc.conf
starten lassen, aber trotzdem deutet alles darauf hin, dass es nicht richtig
aktiviert wird... :/
Das erste Mal beunruhigt wurde ich, als bei mir im LAN auf keinem Klienten
mehr der Internetzugriff ging, sobald ich die Zeile
in die rc.conf hinzufügte.
Zusätzlich kam es in den letzten Tagen zu vielen Fehlfunktionen mit ipfw,
so dass ich weitere Nachforschungen angestellt hab.
1. Dmesg liefert mir folgende Fehlermeldungen:
2. Starte ich das Regelset (ist identisch mit dem dynamischen von marzl)
so bekomme ich folgendes zu sehen:
Der Stand ist, dass wenn ich ppp_nat="NO" auskommentiere aus der rc.conf,
dann funktioniert das Internet im LAN, jedoch gibt es dann viele Probleme
mit ipfw zum Beispiele werden Dienste nicht abgeschirmt oder portforwading
geht nicht.
Auf dem Server läuft FreeBSD 4.10-RELEASE-p2, welches ich von einem 4.8
geupgraded hab (mittels make build&installworld).
Weiter unten hab ich ein paar Debug-Informationen angehängt, die vielleicht
hilfreich sein können.
Ich bin hier echt schon ein wenig verzweifelt und freue mich über jede Hilfe!
mfg
jo
nach der Einleitung von asg hier im Forum und von marzl
(http://www.bsdbox.de/firewall.html)
hab ich den Versuch gestartet meinen Router auf FreeBSD umzustellen.
An dieser Stelle vielen Dank an euch beiden für die Anleitungen, sie
waren mir sehr hilfreich.
Ein Problem trat jedoch auf, was ich versucht hab in den letzten Tagen
zu lösen und um das ich euch um Hilfe bitte:
Ich habe nat mittels IPDIVERT im KERNEL ermöglicht und in der rc.conf
starten lassen, aber trotzdem deutet alles darauf hin, dass es nicht richtig
aktiviert wird... :/
Das erste Mal beunruhigt wurde ich, als bei mir im LAN auf keinem Klienten
mehr der Internetzugriff ging, sobald ich die Zeile
Code:
ppp_nat="NO"
Zusätzlich kam es in den letzten Tagen zu vielen Fehlfunktionen mit ipfw,
so dass ich weitere Nachforschungen angestellt hab.
1. Dmesg liefert mir folgende Fehlermeldungen:
Code:
IP packet filtering initialized, divert disabled, rule-based forwarding enabled, default to deny, logging disabled
ip_fw_ctl: invalid command
2. Starte ich das Regelset (ist identisch mit dem dynamischen von marzl)
so bekomme ich folgendes zu sehen:
Code:
fileserver# /etc/ipfwrules
ip_fw_ctl: invalid command
ipfw: getsockopt(IP_FW_ADD): Invalid argument
ipfw: unknown argument ``established''
Der Stand ist, dass wenn ich ppp_nat="NO" auskommentiere aus der rc.conf,
dann funktioniert das Internet im LAN, jedoch gibt es dann viele Probleme
mit ipfw zum Beispiele werden Dienste nicht abgeschirmt oder portforwading
geht nicht.
Auf dem Server läuft FreeBSD 4.10-RELEASE-p2, welches ich von einem 4.8
geupgraded hab (mittels make build&installworld).
Weiter unten hab ich ein paar Debug-Informationen angehängt, die vielleicht
hilfreich sein können.
Ich bin hier echt schon ein wenig verzweifelt und freue mich über jede Hilfe!
mfg
jo
Code:
fileserver# cat /etc/rc.conf
# -- sysinstall generated deltas -- # Sat Jul 12 23:35:57 2003
# Created: Sat Jul 12 23:35:57 2003
# Enable network daemons for user convenience.
# Please make all changes to this file, not to /etc/defaults/rc.conf.
# This file now contains just the overrides from /etc/defaults/rc.conf.
hostname="fileserver.jotech.lan"
gateway_enable="YES"
ifconfig_txp0="inet 192.168.10.1 netmask 255.255.255.0"
ifconfig_xl0="up"
#
kern_securelevel_enable="NO"
firewall_enable="YES"
#firewall_type="OPEN"
firewall_script="/etc/ipfwrules"
firewall_logging="YES"
linux_enable="YES"
nfs_client_enable="YES"
nfs_reserved_port_only="YES"
nfs_server_enable="YES"
portmap_enable="YES"
mountd_flags="-r"
sendmail_enable="NO"
usbd_enable="NO"
inetd_enable="NO"
ppp_enable="YES"
ppp_mode="ddial"
ppp_profile="default"
ppp_nat="NO"
natd_program="/sbin/natd"
natd_enable="YES"
natd_interface="tun0"
natd_flags="-dynamic -f /etc/natd.conf"
named_enable="YES"
named_flags="-u bind -g bind"
syslogd_enable="YES"
syslogd_flags="-ss"
tcp_extensions="NO" # disables RFC 1323
tcp_drop_synfin="YES" # ignore TCP frames that have both the SYN and FIN flags set
tcp_keepalive="NO" # disable probing idle TCP connections
icmp_drop_redirect="YES" # ignore ICMP REDIRECT packets.
icmp_bmcastecho="NO" # disable respond to broadcast ping packets
Code:
fileserver# sysctl -a net.inet.ip
net.inet.ip.portrange.lowfirst: 1023
net.inet.ip.portrange.lowlast: 600
net.inet.ip.portrange.first: 1024
net.inet.ip.portrange.last: 5000
net.inet.ip.portrange.hifirst: 49152
net.inet.ip.portrange.hilast: 65535
net.inet.ip.portrange.randomized: 1
net.inet.ip.forwarding: 1
net.inet.ip.redirect: 1
net.inet.ip.ttl: 64
net.inet.ip.rtexpire: 3600
net.inet.ip.rtminexpire: 10
net.inet.ip.rtmaxcache: 128
net.inet.ip.sourceroute: 0
net.inet.ip.intr_queue_maxlen: 50
net.inet.ip.intr_queue_drops: 0
net.inet.ip.accept_sourceroute: 0
net.inet.ip.fastforwarding: 0
net.inet.ip.keepfaith: 0
net.inet.ip.gifttl: 30
net.inet.ip.subnets_are_local: 0
net.inet.ip.maxfragpackets: 78
net.inet.ip.maxfragsperpacket: 16
net.inet.ip.sendsourcequench: 0
net.inet.ip.check_interface: 0
net.inet.ip.fw.enable: 1
net.inet.ip.fw.one_pass: 1
net.inet.ip.fw.debug: 1
net.inet.ip.fw.verbose: 1
net.inet.ip.fw.verbose_limit: 0
net.inet.ip.fw.dyn_buckets: 256
net.inet.ip.fw.curr_dyn_buckets: 256
net.inet.ip.fw.dyn_count: 197
net.inet.ip.fw.dyn_max: 1000
net.inet.ip.fw.static_count: 23
net.inet.ip.fw.dyn_ack_lifetime: 300
net.inet.ip.fw.dyn_syn_lifetime: 20
net.inet.ip.fw.dyn_fin_lifetime: 1
net.inet.ip.fw.dyn_rst_lifetime: 1
net.inet.ip.fw.dyn_udp_lifetime: 10
net.inet.ip.fw.dyn_short_lifetime: 5
net.inet.ip.fw.dyn_grace_time: 10
Code:
fileserver# cat /etc/ipfwrules
#!/bin/sh
#
# Erstmal alles saubermachen bevor wir anfangen
# Also die Regeln auf "Null" stellen
/sbin/ipfw -q -f flush
# IPFW-Kommando "Quiet"
fwcmd="/sbin/ipfw -q add"
# Das setzen unserer eigenen Variabeln
int_interface="txp0" # ${int_interface} Internes Interface
natd_interface="tun0" # ${natd_interface} Externes Interface
dns_server2="194.25.2.130" # ${dns_server1} 1. DNS-Server des ISP
dns_server1="194.25.2.129" # ${dns_server2} 2. DNS-Server des ISP
open_tcpports="" # 22,80,21,22,25,80,443,465,993,49152-65535" ${open_tcpports} Offene Ports
open_udpports="" # 7777,7778,7787,28902" ${open_udpports} Offene Ports
# Erlaubt Loopbackverbindungen
${fwcmd} 00100 allow ip from any to any via lo0
# Hiermit dürfen alle ins Internet
${fwcmd} 00150 divert natd all from any to any via ${natd_interface}
# Stateful Packet Inspection
${fwcmd} 00200 check-state
# Erlaubt internen Verkehr
${fwcmd} 00210 allow ip from any to any via ${int_interface} keep-state
# Anti-Spoofing
${fwcmd} 00220 deny log ip from 10.0.0.0/8 to any in via ${natd_interface}
${fwcmd} 00230 deny log ip from 172.16.0.0/12 to any in via ${natd_interface}
${fwcmd} 00240 deny log ip from 192.68.0.0/16 to any in via ${natd_interface}
# Fragmentiert Packete werden verworfen
${fwcmd} 00250 deny all from any to any frag in via ${natd_interface}
# Ack Packete ohne vorheriges Req werden geblockt
${fwcmd} 00260 deny tcp from any to any established in via ${natd_interface}
# Erlaubt alle Verbindungen welche von hier initiiert wurden
${fwcmd} 00300 allow tcp from any to any out via ${natd_interface} setup keep-state
${fwcmd} 00310 allow udp from any to any out via ${natd_interface} keep-state
# Wenn die Verbindung einmal hergestellt wurde, erlaube dieser offen zu stehen
${fwcmd} 00320 allow tcp from any to any via ${natd_interface} established
${fwcmd} 00330 allow udp from any to any via ${natd_interface} established
# Erlaubte Dienste die ausm Internet erreicht werden dürfen
${fwcmd} 00400 allow tcp from any to any ${open_tcpports} setup keep-state
${fwcmd} 00410 allow udp from any to any ${open_udpports} keep-state
# This sends a RESET to all ident packets.
${fwcmd} 00500 reset log tcp from any to me 113 in via ${natd_interface}
# Erlaubt ausgehende DNS queries NUR auf angegebenem DNS-Server
${fwcmd} 00600 allow udp from any to ${dns_server1} 53 out via ${natd_interface} keep-state
${fwcmd} 00610 allow tcp from any to ${dns_server1} 53 out via ${natd_interface} setup keep-state
${fwcmd} 00620 allow udp from any to ${dns_server2} 53 out via ${natd_interface} keep-state
${fwcmd} 00630 allow tcp from any to ${dns_server2} 53 out via ${natd_interface} setup keep-state
# Loggt ICMP Anfragen (echo und dest. unreachable) == script kiddies
${fwcmd} 00700 allow log icmp from any to any in recv ${natd_interface} icmptype 3
${fwcmd} 00710 allow log icmp from any to any in recv ${natd_interface} icmptype 8
# ICMP erlauben
${fwcmd} 00750 allow icmp from any to any
# Alles andere verbieten (Wird nicht geloggt)
${fwcmd} deny ip from any to any