Prerequisites ============= Bro relies on the following libraries and tools, which need to be installed before you begin with the installation: * Libpcap If libpcap is already installed on the system, by default Bro will use that one. Otherwise, it falls back to a version shipped with the Bro distribution. * Flex Flex is already installed on most systems, so with luck you can skip having to install it yourself. * Bison or byacc These come with many systems, but if you get errors compiling parse.y, you will need to install them. bison is available from GNU sites such as ftp.gnu.org. * BIND8 headers and libraries These are usually already installed as well. * Autotools If you have checked the source out from Bro's Subversion repository, you need the autotools suite installed. In this case, run "./autogen.sh" first right after the check out. Otherwise the installation steps below will fail. Bro can also make uses of some optional libraries if they are found at installation time: * OpenSSL For analysis of SSL certificates by the HTTP analyzer, and for encrypted Bro-to-Bro communication. * Libmagic For identifying file types (e.g., in FTP transfers). * LibGeoIP For geo-locating IP addresses. * Libz For decompressing HTTP bodies by the HTTP analyzer, and for compressed Bro-to-Bro communication. * Endace's DAG tools: For native support of Endace DAG cards. Installation ============ To build and install into /usr/local: > ./configure > make > make install This will install the Bro binary into /usr/local/bin/bro and the policy files into /usr/local/share/bro. As usual you can specify a different installation directory with > ./configure --prefix=". Run "./configure --help" for more options. Running Bro =========== Bro is a complex program and it takes a bit of time to get familiar with it. In the following we give a few simple examples. See http://www.bro-ids.org/wiki for more information. To run a policy file from /usr/local/share/bro, such as mt.bro, on a previously captured tcpdump save file named foo: bro -r foo mt.bro To run from interface le0: bro -i le0 mt You can alternatively specify interface and scripts to load in your own policy file: @load mt redef interfaces = "le0"; and then run bro ./my-policy.bro You can see the BPF filter Bro will use (if not overridden) by executing bro mt print-filter To run interactively (e.g., for playing with expression evaluation): bro "bro -h" lists the various options.