dns/bind: rndc, dnsbl, logging (#747)

This commit is contained in:
Michael
2018-07-24 07:14:06 +02:00
committed by Franco Fichtner
parent 01e36d6c6c
commit 6e9d0500a5
8 changed files with 75 additions and 13 deletions
@@ -35,4 +35,10 @@
<allownew>true</allownew>
<help>Set one or more hosts to send your DNS queries if the request is unknown.</help>
</field>
<field>
<id>general.logsize</id>
<label>Logsize in MB</label>
<type>text</type>
<help>Set the amount how big a logfile can growth.</help>
</field>
</form>
@@ -1,7 +1,7 @@
<model>
<mount>//OPNsense/bind/general</mount>
<description>BIND configuration</description>
<version>1.0.1</version>
<version>1.0.2</version>
<items>
<enabled type="BooleanField">
<default>0</default>
@@ -28,5 +28,12 @@
<Required>N</Required>
<asList>Y</asList>
</forwarders>
<logsize type="IntegerField">
<default>5</default>
<Required>Y</Required>
<MinimumValue>1</MinimumValue>
<MaximumValue>1000</MaximumValue>
<ValidationMessage>Choose a value between 1 and 1000.</ValidationMessage>
</logsize>
</items>
</model>
@@ -127,7 +127,7 @@ $( document ).ready(function() {
$("#saveAct_dnsbl").click(function(){
saveFormToEndpoint(url="/api/bind/dnsbl/set", formid='frm_dnsbl_settings',callback_ok=function(){
$("#saveAct_acl_progress").addClass("fa fa-spinner fa-pulse");
$("#saveAct_dnsbl_progress").addClass("fa fa-spinner fa-pulse");
ajaxCall(url="/api/bind/service/dnsbl", sendData={}, callback=function(data,status) {
ajaxCall(url="/api/bind/service/reconfigure", sendData={}, callback=function(data,status) {
ajaxCall(url="/api/bind/service/status", sendData={}, callback=function(data,status) {
@@ -38,47 +38,49 @@ mkdir -p ${WORKDIR}
easylist() {
# EasyList
${FETCH} https://justdomains.github.io/blocklists/lists/easylist-justdomains.txt -o ${WORKDIR}/easylist-raw
sed "/\.$/d" ${WORKDIR}/easylist-raw > ${WORKDIR}/easylist
sed "/\.$/d" ${WORKDIR}/easylist-raw | sed "/^#/ d" | sed "/\_/d" > ${WORKDIR}/easylist
rm ${WORKDIR}/easylist-raw
}
easyprivacy() {
# EasyPrivacy
${FETCH} https://justdomains.github.io/blocklists/lists/easyprivacy-justdomains.txt -o ${WORKDIR}/easyprivacy-raw
sed "/\.$/d" ${WORKDIR}/easyprivacy-raw > ${WORKDIR}/easyprivacy
sed "/\.$/d" ${WORKDIR}/easyprivacy-raw | sed "/^#/ d" | sed "/\_/d" > ${WORKDIR}/easyprivacy
rm ${WORKDIR}/easyprivacy-raw
}
adguard() {
# AdGuard
${FETCH} https://justdomains.github.io/blocklists/lists/adguarddns-justdomains.txt -o ${WORKDIR}/adguard-raw
sed "/\.$/d" ${WORKDIR}/adguard-raw > ${WORKDIR}/adguard
sed "/\.$/d" ${WORKDIR}/adguard-raw | sed "/^#/ d" | sed "/\_/d" > ${WORKDIR}/adguard
rm ${WORKDIR}/adguard-raw
}
nocoin() {
# NoCoin
${FETCH} https://justdomains.github.io/blocklists/lists/nocoin-justdomains.txt -o ${WORKDIR}/nocoin
${FETCH} https://justdomains.github.io/blocklists/lists/nocoin-justdomains.txt -o ${WORKDIR}/nocoin-raw
sed "/\.$/d" ${WORKDIR}/nocoin-raw | sed "/^#/ d" | sed "/\_/d" > ${WORKDIR}/nocoin
rm ${WORKDIR}/nocoin-raw
}
rwtracker() {
# RansomWare Tracker abuse.ch
${FETCH} https://ransomwaretracker.abuse.ch/downloads/RW_DOMBL.txt -o ${WORKDIR}/rwtracker-comments
sed '/^#/ d' ${WORKDIR}/rwtracker-comments > ${WORKDIR}/rwtracker
rm ${WORKDIR}/rwtracker-comments
${FETCH} https://ransomwaretracker.abuse.ch/downloads/RW_DOMBL.txt -o ${WORKDIR}/rwtracker-raw
sed "/\.$/d" ${WORKDIR}/rwtracker-raw | sed "/^#/ d" | sed "/\_/d" > ${WORKDIR}/rwtracker
rm ${WORKDIR}/rwtracker-raw
}
mwdomains() {
# MalwareDomains
${FETCH} http://malwaredomains.lehigh.edu/files/justdomains -o ${WORKDIR}/malwaredomains-comments
sed '/^#/ d' ${WORKDIR}/malwaredomains-comments > ${WORKDIR}/malwaredomains
rm ${WORKDIR}/malwaredomains-comments
${FETCH} http://malwaredomains.lehigh.edu/files/justdomains -o ${WORKDIR}/malwaredomains-raw
sed "/\.$/d" ${WORKDIR}/malwaredomains-raw | sed "/^#/ d" | sed "/\_/d" > ${WORKDIR}/malwaredomains
rm ${WORKDIR}/malwaredomains-raw
}
install() {
# Put all files in correct format
for FILE in $(find ${WORKDIR} -type f); do
awk '{ print "zone " $1 " " $2 " {type master; file \"/usr/local/etc/namedb/master/blacklist.db\"; };" }' ${FILE} | sort -u > ${FILE}.inc
awk '{ print "zone " $1 " " $2 " {type master; file \"/usr/local/etc/namedb/master/blacklist.db\"; notify no; };" }' ${FILE} | sort -u > ${FILE}.inc
done
# Merge resulting files (/dev/null in case there are none)
cat $(find ${WORKDIR} -type f -name "*.inc") /dev/null | sort -u > ${DESTDIR}/dnsbl.inc
@@ -11,3 +11,7 @@ chmod 755 /var/dump
mkdir -p /var/stats
chown -R bind:bind /var/stats
chmod 755 /var/stats
mkdir -p /var/log/named
chown -R bind:bind /var/log/named
chmod 755 /var/log/named
@@ -1,3 +1,4 @@
blacklist.db:/usr/local/etc/namedb/master/blacklist.db
named:/etc/rc.conf.d/named
named.conf:/usr/local/etc/namedb/named.conf
rndc.conf:/usr/local/etc/namedb/rndc.conf
@@ -28,6 +28,15 @@ options {
};
key "rndc-key" {
algorithm hmac-sha256;
secret "VxtIzJevSQXqnr7h2qerrcwjnZlMWSGGFBndKeNIDfw=";
};
controls {
inet 127.0.0.1 port 9530
allow { 127.0.0.1; } keys { "rndc-key"; };
};
zone "." { type hint; file "/usr/local/etc/namedb/named.root"; };
zone "localhost" { type master; file "/usr/local/etc/namedb/master/localhost-forward.db"; };
@@ -40,4 +49,27 @@ include "/usr/local/etc/namedb/dnsbl.inc";
{% endif %}
{% endif %}
logging {
channel default_log {
file "/var/log/named/named.log" versions 3 size {{ OPNsense.bind.general.logsize }}m;
print-time yes;
print-severity yes;
print-category yes;
};
channel query_log {
file "/var/log/named/query.log" versions 3 size {{ OPNsense.bind.general.logsize }}m;
print-time yes;
};
channel rpz_log {
file "/var/log/named/rpz.log" versions 3 size {{ OPNsense.bind.general.logsize }}m;
print-time yes;
};
category default { default_log; };
category general { default_log; };
category queries { query_log; };
category rpz { rpz_log; };
};
{% endif %}
@@ -0,0 +1,10 @@
key "rndc-key" {
algorithm hmac-sha256;
secret "VxtIzJevSQXqnr7h2qerrcwjnZlMWSGGFBndKeNIDfw=";
};
options {
default-key "rndc-key";
default-server 127.0.0.1;
default-port 9530;
};