diff --git a/nginx/denySpammer.sh b/nginx/denySpammer.sh new file mode 100644 index 0000000..4ce3388 --- /dev/null +++ b/nginx/denySpammer.sh @@ -0,0 +1,49 @@ +#!/bin/bash +# A Nginx Shell Script To Block Spamhaus Lasso Drop Spam IP Address +# Run this script once a day and drop all spam network IPs (netblock) with http 403 client error. +# The script will get executed every day via /etc/cron.daily (make sure crond +# is running). +# ------------------------------------------------------------------------- +# Copyright (c) 2008 nixCraft project +# This script is licensed under GNU GPL version 2.0 or above +# ------------------------------------------------------------------------- +# This script is part of nixCraft shell script collection (NSSC) +# Visit http://bash.cyberciti.biz/ for more information. +# ------------------------------------------------------------------------- +# Last updated on Jan/11/2010 +# ------------------------------------------------------------------------- +# +# include drop.lasso.conf; +# +# tmp file +FILE="/tmp/drop.lasso.txt.$$" + +# nginx config file - path to nginx drop conf file +OUT=/etc/nginx/drop.lasso.conf + +URLS=( + "https://www.spamhaus.org/drop/drop.txt" + "https://www.spamhaus.org/drop/edrop.txt" + "https://www.spamhaus.org/drop/dropv6.txt" +) + +# reload command +NGINX="/etc/init.d/nginx reload" + +# remove old file +[[ -f $FILE ]] && /bin/rm -f $FILE + +# emply nginx deny file +>$OUT + +# get database +for i in "${URLS[@]}" +do + curl "$i" >> $FILE +done + +# format in nginx deny netblock; format +/bin/egrep -v '^;' $FILE | awk '{ print "deny " $1";"}' >>$OUT + +# reload nginx +/bin/sync && ${NGINX} \ No newline at end of file