What's new

How to Dynamically Ban Malicious IP's using IPSet (Martineau version)

  • SNBForums Code of Conduct

    SNBForums is a community for everyone, no matter what their level of experience.

    Please be tolerant and patient of others, especially newcomers. We are all here to share and learn!

    The rules are simple: Be patient, be nice, be helpful or be gone!

And here's the code to above comparison:
Code:
#!/bin/sh

# A safe color chart to compare colors in terminal
# By thelonelycoder
# http://www.snbforums.com/members/thelonelycoder.25480/

# Usage:
# sh /path/to/file/filename

# Reset
Color_Off='\033[0m'       # Text Reset

# Regular Colors
Black='\033[0;30m'        # Black
Red='\033[0;31m'          # Red
Green='\033[0;32m'        # Green
Yellow='\033[0;33m'       # Yellow
Blue='\033[0;34m'         # Blue
Purple='\033[0;35m'       # Purple
Cyan='\033[0;36m'         # Cyan
White='\033[0;37m'        # White

# Bold
BBlack='\033[1;30m'       # Black
BRed='\033[1;31m'         # Red
BGreen='\033[1;32m'       # Green
BYellow='\033[1;33m'      # Yellow
BBlue='\033[1;34m'        # Blue
BPurple='\033[1;35m'      # Purple
BCyan='\033[1;36m'        # Cyan
BWhite='\033[1;37m'       # White

# Underline
UBlack='\033[4;30m'       # Black
URed='\033[4;31m'         # Red
UGreen='\033[4;32m'       # Green
UYellow='\033[4;33m'      # Yellow
UBlue='\033[4;34m'        # Blue
UPurple='\033[4;35m'      # Purple
UCyan='\033[4;36m'        # Cyan
UWhite='\033[4;37m'       # White
echo -e "\n \"Safe color chart\" by thelonelycoder\n"
echo -e " Regular Colors     Bold        Underline"
echo -e "$Black Black $Color_Off        $BBlack BBlack $Color_Off        $UBlack UBlack $Color_Off"
echo -e "$Red Red $Color_Off        $BRed BRed $Color_Off        $URed URed $Color_Off"
echo -e "$Green Green $Color_Off        $BGreen BGreen $Color_Off    $UGreen UGreen $Color_Off"
echo -e "$Yellow Yellow $Color_Off    $BYellow BYellow $Color_Off    $UYellow UYellow $Color_Off"
echo -e "$Blue Blue $Color_Off        $BBlue BBlue $Color_Off        $UBlue UBlue $Color_Off"
echo -e "$Purple Purple $Color_Off    $BPurple BPurple $Color_Off    $UPurple UPurple $Color_Off"
echo -e "$Cyan Cyan $Color_Off        $BCyan BCyan $Color_Off        $UCyan UCyan $Color_Off"
echo -e "$White White $Color_Off        $BWhite BWhite $Color_Off    $UWhite UWhite $Color_Off"

# High Intensity
IBlack='\033[0;90m'       # Black
IRed='\033[0;91m'         # Red
IGreen='\033[0;92m'       # Green
yellow='\033[0;93m'      # Yellow
IBlue='\033[0;94m'        # Blue
IPurple='\033[0;95m'      # Purple
ICyan='\033[0;96m'        # Cyan
IWhite='\033[0;97m'       # White

# Bold High Intensity
BIBlack='\033[1;90m'      # Black
BIRed='\033[1;91m'        # Red
BIGreen='\033[1;92m'      # Green
BIYellow='\033[1;93m'     # Yellow
BIBlue='\033[1;94m'       # Blue
BIPurple='\033[1;95m'     # Purple
BICyan='\033[1;96m'       # Cyan
BIWhite='\033[1;97m'      # White

echo -e "\n High Intensity     Bold"   
echo -e "$IBlack IBlack $Color_Off    $BIBlack BIBlack $Color_Off"
echo -e "$IRed IRed $Color_Off        $BIRed BIRed $Color_Off"
echo -e "$IGreen IGreen $Color_Off    $BIGreen BIGreen $Color_Off"
echo -e "$yellow yellow $Color_Off    $BIYellow BIYellow $Color_Off"
echo -e "$IBlue IBlue $Color_Off        $BIBlue BIBlue $Color_Off"
echo -e "$IPurple IPurple $Color_Off    $BIPurple BIPurple $Color_Off"
echo -e "$ICyan ICyan $Color_Off        $BICyan BICyan $Color_Off"
echo -e "$IWhite IWhite $Color_Off    $BIWhite BIWhite $Color_Off"

# Background
On_Black='\033[40m'       # Black
On_Red='\033[41m'         # Red
On_Green='\033[42m'       # Green
On_Yellow='\033[43m'      # Yellow
On_Blue='\033[44m'        # Blue
On_Purple='\033[45m'      # Purple
On_Cyan='\033[46m'        # Cyan
On_White='\033[47m'       # White

# High Intensity backgrounds
On_IBlack='\033[0;100m'   # Black
On_IRed='\033[0;101m'     # Red
On_IGreen='\033[0;102m'   # Green
On_IYellow='\033[0;103m'  # Yellow
On_IBlue='\033[0;104m'    # Blue
On_IPurple='\033[0;105m'  # Purple
On_ICyan='\033[0;106m'    # Cyan
On_IWhite='\033[0;107m'   # White

echo -e "\n Background    High Intensity"
echo -e "$On_Black On_Black $Color_Off    $On_IBlack On_IBlack $Color_Off"
echo -e "$On_Red On_Red $Color_Off    $On_IRed On_IRed $Color_Off"
echo -e "$On_Green On_Green $Color_Off    $On_IGreen On_IGreen $Color_Off"
echo -e "$On_Yellow On_Yellow $Color_Off    $On_IYellow On_IYellow $Color_Off"
echo -e "$On_Blue On_Blue $Color_Off    $On_IBlue On_IBlue $Color_Off"
echo -e "$On_Purple On_Purple $Color_Off    $On_IPurple On_IPurple $Color_Off"
echo -e "$On_Cyan On_Cyan $Color_Off    $On_ICyan On_ICyan $Color_Off"
echo -e "$On_White On_White $Color_Off    $On_IWhite On_IWhite $Color_Off"
echo -e "\n End colors\n"
 
And here's the code to above comparison:
Code:
#!/bin/sh

# A safe color chart to compare colors in terminal
# By thelonelycoder
# http://www.snbforums.com/members/thelonelycoder.25480/

# Usage:
# sh /path/to/file/filename

# Reset
Color_Off='\033[0m'       # Text Reset

# Regular Colors
Black='\033[0;30m'        # Black
Red='\033[0;31m'          # Red
Green='\033[0;32m'        # Green
Yellow='\033[0;33m'       # Yellow
Blue='\033[0;34m'         # Blue
Purple='\033[0;35m'       # Purple
Cyan='\033[0;36m'         # Cyan
White='\033[0;37m'        # White

# Bold
BBlack='\033[1;30m'       # Black
BRed='\033[1;31m'         # Red
BGreen='\033[1;32m'       # Green
BYellow='\033[1;33m'      # Yellow
BBlue='\033[1;34m'        # Blue
BPurple='\033[1;35m'      # Purple
BCyan='\033[1;36m'        # Cyan
BWhite='\033[1;37m'       # White

# Underline
UBlack='\033[4;30m'       # Black
URed='\033[4;31m'         # Red
UGreen='\033[4;32m'       # Green
UYellow='\033[4;33m'      # Yellow
UBlue='\033[4;34m'        # Blue
UPurple='\033[4;35m'      # Purple
UCyan='\033[4;36m'        # Cyan
UWhite='\033[4;37m'       # White
echo -e "\n \"Safe color chart\" by thelonelycoder\n"
echo -e " Regular Colors     Bold        Underline"
echo -e "$Black Black $Color_Off        $BBlack BBlack $Color_Off        $UBlack UBlack $Color_Off"
echo -e "$Red Red $Color_Off        $BRed BRed $Color_Off        $URed URed $Color_Off"
echo -e "$Green Green $Color_Off        $BGreen BGreen $Color_Off    $UGreen UGreen $Color_Off"
echo -e "$Yellow Yellow $Color_Off    $BYellow BYellow $Color_Off    $UYellow UYellow $Color_Off"
echo -e "$Blue Blue $Color_Off        $BBlue BBlue $Color_Off        $UBlue UBlue $Color_Off"
echo -e "$Purple Purple $Color_Off    $BPurple BPurple $Color_Off    $UPurple UPurple $Color_Off"
echo -e "$Cyan Cyan $Color_Off        $BCyan BCyan $Color_Off        $UCyan UCyan $Color_Off"
echo -e "$White White $Color_Off        $BWhite BWhite $Color_Off    $UWhite UWhite $Color_Off"

# High Intensity
IBlack='\033[0;90m'       # Black
IRed='\033[0;91m'         # Red
IGreen='\033[0;92m'       # Green
yellow='\033[0;93m'      # Yellow
IBlue='\033[0;94m'        # Blue
IPurple='\033[0;95m'      # Purple
ICyan='\033[0;96m'        # Cyan
IWhite='\033[0;97m'       # White

# Bold High Intensity
BIBlack='\033[1;90m'      # Black
BIRed='\033[1;91m'        # Red
BIGreen='\033[1;92m'      # Green
BIYellow='\033[1;93m'     # Yellow
BIBlue='\033[1;94m'       # Blue
BIPurple='\033[1;95m'     # Purple
BICyan='\033[1;96m'       # Cyan
BIWhite='\033[1;97m'      # White

echo -e "\n High Intensity     Bold" 
echo -e "$IBlack IBlack $Color_Off    $BIBlack BIBlack $Color_Off"
echo -e "$IRed IRed $Color_Off        $BIRed BIRed $Color_Off"
echo -e "$IGreen IGreen $Color_Off    $BIGreen BIGreen $Color_Off"
echo -e "$yellow yellow $Color_Off    $BIYellow BIYellow $Color_Off"
echo -e "$IBlue IBlue $Color_Off        $BIBlue BIBlue $Color_Off"
echo -e "$IPurple IPurple $Color_Off    $BIPurple BIPurple $Color_Off"
echo -e "$ICyan ICyan $Color_Off        $BICyan BICyan $Color_Off"
echo -e "$IWhite IWhite $Color_Off    $BIWhite BIWhite $Color_Off"

# Background
On_Black='\033[40m'       # Black
On_Red='\033[41m'         # Red
On_Green='\033[42m'       # Green
On_Yellow='\033[43m'      # Yellow
On_Blue='\033[44m'        # Blue
On_Purple='\033[45m'      # Purple
On_Cyan='\033[46m'        # Cyan
On_White='\033[47m'       # White

# High Intensity backgrounds
On_IBlack='\033[0;100m'   # Black
On_IRed='\033[0;101m'     # Red
On_IGreen='\033[0;102m'   # Green
On_IYellow='\033[0;103m'  # Yellow
On_IBlue='\033[0;104m'    # Blue
On_IPurple='\033[0;105m'  # Purple
On_ICyan='\033[0;106m'    # Cyan
On_IWhite='\033[0;107m'   # White

echo -e "\n Background    High Intensity"
echo -e "$On_Black On_Black $Color_Off    $On_IBlack On_IBlack $Color_Off"
echo -e "$On_Red On_Red $Color_Off    $On_IRed On_IRed $Color_Off"
echo -e "$On_Green On_Green $Color_Off    $On_IGreen On_IGreen $Color_Off"
echo -e "$On_Yellow On_Yellow $Color_Off    $On_IYellow On_IYellow $Color_Off"
echo -e "$On_Blue On_Blue $Color_Off    $On_IBlue On_IBlue $Color_Off"
echo -e "$On_Purple On_Purple $Color_Off    $On_IPurple On_IPurple $Color_Off"
echo -e "$On_Cyan On_Cyan $Color_Off    $On_ICyan On_ICyan $Color_Off"
echo -e "$On_White On_White $Color_Off    $On_IWhite On_IWhite $Color_Off"
echo -e "\n End colors\n"
Thank you for this!
This is a bit above my ability.
I temporarily fixed this by changing the background color:
Summary Blacklist: 135+0 Successful blocks! ( 22803 IPs currently banned - 23 added ), Entries auto-expire after 7 days 00:00:00hrs, 13 permanently banned
TEXT=$cRESET"Summary Blacklist: $cRED_${IHITS}+$FHITS Successful blocks!$cRESET ( $cRED_$OLDAMOUNT IPs currentl$
It makes the boxes both red, but at least the output is correct. You can't see the colors on this text, but they are there from the command line.
Once again. Thank you for the help!
 
Hi,

I am getting the following error when running the script:

IPSET_Block.sh: line 4: ©: not found

IPSET_Block.sh: line 7: you: not found

IPSET_Block.sh: line 9: etc.: not found

IPSET_Block.sh: line 11: syntax error: unexpected ")"

Also, where can I download a copy of hackerports? You mention it in your code but there are no links to it etc.

Thanks for the help.

J
 
Hi,

I am getting the following error when running the script:

IPSET_Block.sh: line 4: ©: not found

IPSET_Block.sh: line 7: you: not found

IPSET_Block.sh: line 9: etc.: not found

IPSET_Block.sh: line 11: syntax error: unexpected ")"

Also, where can I download a copy of hackerports? You mention it in your code but there are no links to it etc.

Thanks for the help.

J
HackerPorts.sh is created by the program.
You need to edit those lines in the program and look for errors(Usually from over-run on those lines.).
Use nano to edit and press control-w to find the lines one at a time.
If you are not used to editing you will have problems correcting the lines.
 
Hi,

I am getting the following error when running the script:

IPSET_Block.sh: line 4: ©: not found

IPSET_Block.sh: line 7: you: not found

IPSET_Block.sh: line 9: etc.: not found

IPSET_Block.sh: line 11: syntax error: unexpected ")"

Also, where can I download a copy of hackerports? You mention it in your code but there are no links to it etc.

Thanks for the help.

J
You may need to run the dos2unix IPSET_Block.sh command to get rid of dos characters. There is an earlier post in this thread with the pastebin link to the report. Not sure if it still works though.
 
upload_2017-7-21_13-25-29.png


I tried to install the script on my RT-AC88U with Firmware:380.67. When i start it this is the results. From yesterday 0 Ip blocked or banned. Are there any problems or it is ok?
thanx
 
Last edited:
I would like to try this script on my old RT-N66U with the latest LTS firmware from John.

Question is will this also block my OpenVPN connection I use a lot on my router?
I use this on my smartphone on Public WiFi to setup a safe VPN connection to my home router.
So a lot of valid different WAN IP addresses connecting to port 443. (My OpenVPN server runs on port 443.)

Not sure if this keeps working so that's why I ask. Thx!
 

Attachments

  • IPSET_Block v3.05.png
    IPSET_Block v3.05.png
    98.9 KB · Views: 630
Cr@p! I now see it's about iptables.
I'm out with iptables v1.3.8 on the RT-N66U. :(
 
Thank you. I updated IPSET block from 3.05 to 4.03


/jffs/scripts# ./IPSET_Block.sh init

v4.03 ▒ 2016-2017 Martineau, Dynamic IPSET Blocking.....

IPSETs: 'Blacklist*/Whitelist*' created empty - reset!
iptables: No chain/target/match by that name.
iptables: No chain/target/match by that name.

Summary Blacklist: 0+0 Successful blocks! ( 0 IPs currently banned - 0 added ), Entries auto-expire after 7 days 00:00:00hrs



/jffs/scripts# ./IPSET_Block.sh

v4.03 ▒ 2016-2017 Martineau, Dynamic IPSET Blocking.....

Summary Blacklist: 716+0 Successful blocks! ( 17 IPs currently banned - 1 added since: Jul 23 10:24 ), Entries auto-expire after 7 days 00:00:00hrs

Now it worls (i think)

i tried to start HackerPorts.sh also

./HackerPorts.sh


***ERROR Tracking not enabled? - check '/jffs/scripts/firewall-start' 'IPSET_Block.sh init' is used WITHOUT 'nolog'

how i can fix?

Thank you
 
i tried to start HackerPorts.sh also

how i can fix?

Thank you

The error message:

***ERROR Tracking not enabled? - check '/jffs/scripts/firewall-start' 'IPSET_Block.sh init' is used WITHOUT 'nolog'

informs you that that you have specified the 'nolog' directive in firewall-start.

So there are no tracking messages produced in Syslog, and as you have also not opted for the IPSET tracking method ('ipset' directive), HackerPorts.sh cannot create any report.
 
The error message:

***ERROR Tracking not enabled? - check '/jffs/scripts/firewall-start' 'IPSET_Block.sh init' is used WITHOUT 'nolog'

informs you that that you have specified the 'nolog' directive in firewall-start.

So there are no tracking messages produced in Syslog, and as you have also not opted for the IPSET tracking method ('ipset' directive), HackerPorts.sh cannot create any report.


Have i to enable Logged packets type? Dropped or both?
Thank you
 
Have i to enable Logged packets type? Dropped or both?
Thank you

The Firewall GUI option may be left as 'Logged Packets type=NONE'

If you want IPSET_Block.sh to write its tracking messages to Syslog then remove the 'nolog' directive from /jffs/scripts/firewall-start.

If you wish to keep the Syslog free from these tracking 'spam' messages, then alternatively you may specify the 'ipset' directive, and IPSET_Block.sh will not write anything to Syslog, but will keep the tracking information (for use by HackerPorts.sh ) in the IPSET.
 
Last edited:
The Firewall GUI option may be left as 'Logged Packets type=NONE'

If you want IPSET_Block.sh to write its tracking messages to Syslog then remove the 'nolog' directive from /jffs/scripts/firewall-start.

If you wish to keep the Syslog free from these tracking 'spam' messages, then alternatively you may specify the 'ipset' directive, and IPSET_Block.sh will not write anything to Syslog, but will keep the tracking information (for use by HackerPorts.sh ) in the IPSET.

/jffs/scripts/IPSET_Block.sh init ipset
it is right?
 
Last edited:
Numbers in log seem very high.
Does this seem feasable?
Jul 28 08:00:06 (IPSET_Block.sh): 27244 Summary Blacklist: 74,284 Successful blocks! ( 31801 IPs currently banned - 161 expired )
 
Similar threads
Thread starter Title Forum Replies Date
devhell How I can dynamically manage VPN director rules list by CLI Asuswrt-Merlin 0

Similar threads

Latest threads

Support SNBForums w/ Amazon

If you'd like to support SNBForums, just use this link and buy anything on Amazon. Thanks!

Sign Up For SNBForums Daily Digest

Get an update of what's new every day delivered to your mailbox. Sign up here!
Top