Spring Sale! Save 30% on all books w/ code: PLANET24
Web Dev + WordPress + Security

BBQ Firewall – Customize Rules

BBQ Firewall BBQ Firewall is a lightweight, super-fast plugin that protects your site against a wide range of threats. BBQ checks all incoming traffic and quietly blocks bad requests containing nasty stuff like eval(, base64_, and excessively long request-strings. This is a simple yet solid solution for sites that are unable to use a strong Apache/.htaccess firewall.

Contents

Got BBQ? Get advanced firewall protection with BBQ Pro. BBQ Pro features a settings page with options for customizing firewall rules and much more.

About Customize Rules addon

BBQ is kept as lightweight as possible, so there are no options to configure the firewall rules. The default rules are context-neutral and work great on any WordPress setup. But there may be cases where you want to add or remove patterns from the firewall rules. So to give the plugin more flexibility, here are a couple of free addons that enable you to customize firewall patterns as desired.

Remove rules from firewall (whitelist)

If you’re running BBQ and discover that it’s blocking some legitimate URL, you can “whitelist” the offending pattern to restore access. Let’s look at an example. Let’s say that BBQ is blocking a page located at the following URL:

http://example.com/page/?referer=http://example.org/

This URL is blocked by BBQ because of the colon :, which is a reserved character.

To resolve the issue, we can install the BBQ whitelist plugin and remove the matching pattern from $request_uri_array, which matches against the requested URI. To do so, open the plugin file and edit the “whitelist items” like so:

$bbq_whitelist_request_uri_items  = array('\/http\:', '\:\/\/');

Here we have added two items to the whitelist array, \/http\: and \:\/\/. Save, upload, and done. BBQ now will ignore the specified patterns and thus restore access to the URL. This solution can be used to resolve any false positive.

Another example

The previous example shows how to allow/whitelist the specified strings in the request URI. In this example, we want to allow instances of a string in all fields: request URI, query string, user agent, and referrer. To do it, open the whitelist plugin and replace the four empty variables near the top of the file with this:

$bbq_whitelist_request_uri_items  = array('allow-some-string');
$bbq_whitelist_query_string_items = array('allow-some-string');
$bbq_whitelist_user_agent_items   = array('allow-some-string');
$bbq_whitelist_referrer_items     = array('allow-some-string');
$bbq_whitelist_post_items         = array('allow-some-string');

Then replace allow-some-string with whatever string you want to allow. Save changes, upload and done.

Add rules to firewall (blacklist)

On the other side of the coin, let’s say that you have some string that you would like BBQ to block. For example, the infamous fckeditor seems to be a perpetual target for malicious scanning and wannabe exploits. So let’s block once and for all by adding it to BBQ. To do it, first install the BBQ blacklist plugin. Then open the plugin file and edit the “blacklist items” like so:

$bbq_blacklist_request_uri_items  = array('fckeditor');
$bbq_blacklist_query_string_items = array('fckeditor');
$bbq_blacklist_user_agent_items   = array('fckeditor');
$bbq_blacklist_referrer_items     = array('fckeditor');
$bbq_blacklist_post_items         = array('fckeditor');

Here we have added the offending string to each of the four blacklist arrays, so we’re covered if the string appears in the request URL, query string, user agent, referrer, and/or POST data. Then save, upload, and done. BBQ now will block the pesky fckeditor pattern whenever and wherever it’s found.

Download addons

Here you may download the BBQ Block List (blacklist) and Allow List (whitelist). These are 100% free addons licensed via GPL version 2 or later.

Download BBQ Block ListVersion 2.3 ( 770 bytes ZIP )
Download BBQ Allow ListVersion 2.3 ( 817 bytes ZIP )

More addons

Here are some available addons for BBQ Firewall (free version).

About the Author
Jeff Starr = Web Developer. Book Author. Secretly Important.
GA Pro: Add Google Analytics to WordPress like a pro.

5 responses to “BBQ Firewall – Customize Rules”

  1. Steve and Sally Wharton 2015/03/27 9:03 am

    Hi Jeff,

    So to block buttons-for-website.com traffic/bots/whatever-they-are from my WordPress site (Linux/WP hosting on MediaTemple if that matters) I would add:

    (1) to BBQ Blacklist:

    $bbq_blacklist_request_uri_items  = array('buttons-for-website');
    $bbq_blacklist_query_string_items = array('buttons-for-website');
    $bbq_blacklist_user_agent_items   = array('buttons-for-website');

    Is it really that easy, or am I missing something? Or,

    (2) I would add this to my .htaccess file:

    # Block all http and https referrals from "buttons-for-website.com" and all subdomains of "buttons-for-website.com"
    RewriteCond %{HTTP_REFERER} ^https?://([^.]+.)*buttons-for-website.com [NC,OR]

    with no RewriteRule needed (like the RewriteRule ^(.*)$ http://semalt.com/ [L] seen in .htaccess) ????

    Thanks for clarifying for me. Awesome plugin/s; much appreciated!

    Cheers, Steve

  2. Hey Jeff,

    I found an infoo.php file in the root of my website. Inside the file it has the following code: <?phpinfo();?>

    Do you think this is malicious script? Or maybe it was placed in my root directory by a plugin perhaps?

    I’ve got your 5G firewall in place, do you have an updated version? I can only see a 6G Beta from a while ago.

    Many thanks

    • That PHP function displays information about your server, PHP, Apache, etc. Whether or not it’s malicious depends on who put it there and for what reason. If you or maybe one of your associates put the file, then it’s probably nothing to worry about. Otherwise, if you are sure it was placed there by some unauthorized person/script, then yeah I would investigate asap. Bottom line is that it should not be there, or it should be locked down to prevent anyone else from accessing it.

  3. Vladimír Smitka 2015/05/28 6:37 am

    Hi, I made a simple plugin to manage custom rules for BBQ.

    I prefer the original way – edit files by hand (plugin uses DB, so there is a little impact in the performance), but it may be useful for somebody.

    https://github.com/LyntServices/bbq-gui

Comments are closed for this post. Something to add? Let me know.
Welcome
Perishable Press is operated by Jeff Starr, a professional web developer and book author with two decades of experience. Here you will find posts about web development, WordPress, security, and more »
Digging Into WordPress: Take your WordPress skills to the next level.
Thoughts
I live right next door to the absolute loudest car in town. And the owner loves to drive it.
8G Firewall now out of beta testing, ready for use on production sites.
It's all about that ad revenue baby.
Note to self: encrypting 500 GB of data on my iMac takes around 8 hours.
Getting back into things after a bit of a break. Currently 7° F outside. Chillz.
2024 is going to make 2020 look like a vacation. Prepare accordingly.
First snow of the year :)
Newsletter
Get news, updates, deals & tips via email.
Email kept private. Easy unsubscribe anytime.