dnsmasq: add and enable DNS rebind protections
authorJo-Philipp Wich <jow@openwrt.org>
Fri, 16 Jul 2010 00:06:59 +0000 (00:06 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Fri, 16 Jul 2010 00:06:59 +0000 (00:06 +0000)
SVN-Revision: 22222

package/dnsmasq/Makefile
package/dnsmasq/files/dhcp.conf
package/dnsmasq/files/dnsmasq.init

index 987bc408860963cddddf39609920a1dd7a590db0..852b126fcc4606e1e6ef6d7cc05d43dcc1605b35 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=dnsmasq
 PKG_VERSION:=2.55
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://thekelleys.org.uk/dnsmasq
index 25ecde6f5db980f06cd19d4d9589f1472a67d63f..c79458fb2be4e91213d3b55084db325e5cabd671 100644 (file)
@@ -1,8 +1,11 @@
 config dnsmasq
        option domainneeded     1
        option boguspriv        1
-       option filterwin2k      '0'  #enable for dial on demand
+       option filterwin2k      0  # enable for dial on demand
        option localise_queries 1
+       option rebind_protection 1  # disable if upstream must serve RFC1918 addresses
+       option rebind_localhost 0  # enable for RBL checking and similar services
+       #list rebind_domain example.lan  # whitelist RFC1918 responses for domains
        option local    '/lan/'
        option domain   'lan'
        option expandhosts      1
index 9bf89fa6dfe21d2d49faf4582ac84cb7485334ae..49291a5c8ab7b50f063b78f171345dae8bcdff05 100644 (file)
@@ -99,6 +99,29 @@ dnsmasq() {
 
        config_get hostsfile "$cfg" dhcphostsfile
        [ -e "$hostsfile" ] && append args "--dhcp-hostsfile=$hostsfile"
+
+       local rebind
+       config_get_bool rebind "$cfg" rebind_protection 1
+       [ $rebind -gt 0 ] && {
+               logger -t dnsmasq \
+                       "DNS rebinding protection is active," \
+                       "will discard upstream RFC1918 responses!"
+               append args "--stop-dns-rebind"
+
+               local rebind_localhost
+               config_get_bool rebind_localhost "$cfg" rebind_localhost 0
+               [ $rebind_localhost -gt 0 ] && {
+                       logger -t dnsmasq "Allowing 127.0.0.0/8 responses"
+                       append args "--rebind-localhost-ok"
+               }
+
+               append_rebind_domain() {
+                       logger -t dnsmasq "Allowing RFC1918 responses for domain $1"
+                       append args "--rebind-domain-ok=$1"
+               }
+
+               config_list_foreach "$cfg" rebind_domain append_rebind_domain
+       }
 }
 
 dhcp_subscrid_add() {