IP Ranges blocking for voices.occupyboston.org

From wiki.occupyboston.org
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

I've installed the ip_ranges module on voices.occupyboston.org. We keep getting these spam posts from Raul\d+, originating from a set of Chinese IP Addresses. No disrespect intended to Raul, but I'm going to start blocking entire non-us ARIN ranges.

In admin/config, there are two options for blocking ip addresses

  • "IP address blocking". This is drupal's built-in facility for blocking single ip addresses.
  • "IP range bans". This comes from the ip_ranges module.

ip_range stores its blocks in a table called ip_ranges. If you accidentally lock yourself out, you can delete the offending row.

I've also made a small code change to ip_ranges, so that we log blocks.

diff --git a/sites/all/modules/ip_ranges/ip_ranges.module b/sites/all/modules/ip_ranges/ip_ranges.module
index 7872de6..3129164 100644
--- a/sites/all/modules/ip_ranges/ip_ranges.module
+++ b/sites/all/modules/ip_ranges/ip_ranges.module
@@ -75,8 +75,10 @@ function ip_ranges_boot() {
  * Prints a message and exits if access is denied.
  */
 function ip_ranges_deny_access() {
+  $ip_addr = check_plain(ip_address());
+  watchdog('user', 'blocked by ip-ranges: %ip', array('%ip' => $ip_addr));
   header($_SERVER['SERVER_PROTOCOL'] . ' 403 Forbidden');
-  print 'Sorry, ' . check_plain(ip_address()) . ' has been banned.';
+  print 'Sorry, ' . $ip_addr . ' has been banned.';
   exit();
 }

That's a hack. If ip_ranges works well for us, I'll make the logging configurable, and submit the enhancement to the module maintainers.