Brute Force Detection

Current Release:

BFD is a modular shell script for parsing application logs and checking for authentication failures. It does this using a rules system where application-specific options are stored including regular expressions for each unique auth format. The regular expressions are parsed against logs using the ‘sed’ tool (stream editor) which allows for excellent performance in all environments. In addition to the benefits of parsing logs in a single stream with sed, BFD also uses a log tracking system so logs are only parsed from the point which they were last read. This greatly assists in extending the performance of BFD even further as we are not constantly reading the same log data. The log tracking system is compatible with syslog/logrotate style log rotations which allows it to detect when rotations have happened and grab log tails from both the new log file and the rotated log file.

You can leverage BFD to block attackers using any number of tools such as APF, Shorewall, raw iptables, ip route or execute any custom command. There is also a fully customizable e-mail alerting system with an e-mail template that is well suited for everyday use or you can open it up and modify it. The attacker tracking in BFD is handled using simple flat text files that are size-controlled to prevent space constraints over time, ideal for diskless devices. There is also an attack pool where trending data is stored on all hosts that have been blocked including which rule the block was triggered by.

In the execution process, there is simply a cron job that executes BFD once every 3 minutes by default. The cronjob can be run more frequently for those that desire it and doing so will not cause any performance issues (no less than once a minute). Although cron execution does not permit BFD to act in real time, the log tracking system ensures it never misses a beat in authentication failures. Further, using cron provides a reliable framework for consistent execution of BFD in a very simplified fashion across all *nix platforms.

Funding for the continued development and research into this and other projects is solely dependent on public contributions and donations. If this is your first time using this software we ask that you evaluate it and consider a small donation; for those who frequent and are continued users of this and other projects we also ask that you make an occasional small donation to help ensure the future of our public projects.

100 Replies to “Brute Force Detection”

  1. also I’d like to know if the number of allowed failures is related to a certain time frame, i.e. 10 failures / 10 minutes?

    # how many failure events must an address have before being blocked?
    # you can override this on a per rule basis in /usr/local/bfd/rules/

    1. The max failures (TRIG) is per IP address and is an incrementing value across each BFD execution, so even if you have BFD run every 1 minute or 10 minutes, it will track the authentication failures for an IP address in total and when it reaches TRIG failures, it gets banned.

  2. I am trying to use BFD instead of fail2ban but I am unsure about it because I can’t seem to find a setting as to how long a misbehaving hostname is being blocked.
    And does BFD act similar to fail2ban and unblocks a certain hostname after a specific amount of time?

Leave a Reply

Your email address will not be published. Required fields are marked *