#!/bin/bash # http://giantdorks.org/alain/shell-script-to-query-a-list-of-hostnames-or-ip-addresses-against-a-list-of-local-and-remote-dns-black-lists/ # Modified by Gerard Stanczak gerard@thecamels.org # Usage: blacklist.sh DOMAIN # IPs or hostnames to check if none provided as arguments to the script hosts=' ' # Locally maintained list of DNSBLs to check LocalList=' b.barracudacentral.org ' # pipe delimited exclude list for remote lists Exclude='spamtrap.drbl.drand.net|dnsbl.proxybl.org|^dnsbl.mailer.mobi$|^foo.bar$|^bar.baz$|^.*webiron.*$' # Remotely maintained list of DNSBLs to check WPurl="https://en.wikipedia.org/wiki/Comparison_of_DNS_blacklists" WPlst=$(curl -s $WPurl | egrep "([a-z]+\.){1,7}[a-z]+" | sed -r "s|||g;/$Exclude/d") # --------------------------------------------------------------------- HostToIP() { if ( echo "$host" | egrep -q "[a-zA-Z]" ); then IP=$(host "$host" | awk '/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/ {print$NF}') else IP="$host" fi } Reverse() { echo $1 | awk -F. '{print$4"."$3"."$2"."$1}' } Check() { result=$(dig +short $rIP.$BL) if [ -n "$result" ]; then echo -e "$host LISTED $BL (answer = $result)" else echo -e "$host OK $BL" fi } if [ -n "$1" ]; then hosts=$@ fi if [ -z "$hosts" ]; then hosts=$(netstat -tn | awk '$4 ~ /[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/ && $4 !~ /127.0.0/ {gsub(/:[0-9]+/,"",$4);} END{print$4}') fi for host in $hosts; do HostToIP rIP=$(Reverse $IP) # Checking $IP against BLs from $WPurl" for BL in $WPlst; do Check done # Checking $IP against BLs from a local list" for BL in $LocalList; do Check done done