Penguin
Diff: HowToSnortStatisticsHOWTO
EditPageHistoryDiffInfoLikePages

Differences between current version and predecessor to the previous major change of HowToSnortStatisticsHOWTO.

Other diffs: Previous Revision, Previous Author, or view the Annotated Edit History

Newer page: version 3 Last edited on Tuesday, October 26, 2004 11:08:04 am by AristotlePagaltzis
Older page: version 2 Last edited on Friday, June 7, 2002 1:07:35 am by perry Revert
@@ -1,2558 +1 @@
-Snort-Setup for Statistics HOWTO  
-!!!Snort-Setup for Statistics HOWTO  
-!Sandro Poppi  
-  
- spoppi at gmx.de  
-  
-  
-  
-  
-v1.01, Feb 23, 2002  
-  
-  
-__Revision History__Revision 1.012002-02-23Revised by: sp- added "Setting up Linux for Snort" section  
-- added mysql option -p  
-- added some clarifications in mysql sectionRevision 1.02002-01-01Revised by: sp- first release version  
-- moved to snort version 1.8.3  
-- changed RPMS to point to www.snort.org  
-- added link for my snortd initscript  
-- added warning about automatic rule update  
-- added hint to IDSPM  
-- changed for rule files to /etc/snort to reflect snort.org's RPMS  
-- as allways: clarified some partsRevision .052001-11-14Revised by: sp- renamed HOWTO to Snort-Setup for Statistics HOWTO  
-- added short statistic script which I was inspired by Greg Sarsons  
-- clarified some parts and corrected some typosRevision .042001-09-29Revised by: sp- added section "snort internal statistics" suggested from Greg Sarson  
-- added short statistic script contributed by Greg Sarson but  
-commented it out to get a more general versionRevision .032001-09-19Revised by: sp- added throttle option to swatch.conf  
-- changed ACID to version .9.6b15  
-- added some comments in ACID section  
-- added MD5 checksum section but commented it outRevision .022001-09-16Revised by: spSome clarifications as suggested from Greg Sarsons, thx ;)Revision .012001-09-04Revised by: spInitial version  
-  
-  
-  
-  
-  
- This HOWTO describes how to configure Snort version 1.8.3 to be used in  
-conjunction with the statistical tools ACID (Analysis Console for Intrusion  
-Databases) and !SnortSnarf. It also intends to get some internal statistics  
-out of snort, e.g. if there are packets dropped.  
-  
-  
-  
-  
- Additionally a description of how to automatically update Max Vision's  
-rules, some scripts which may be helpful and a demo swatch configuration is  
-included.  
-  
-  
-  
-  
-  
-  
-----; __Table of Contents__; 1. Introduction: ; 1.1. Copyright Information; 1.2. Disclaimer; 1.3. New Versions; 1.4. Credits; 1.5. Feedback; 1.6. Translations; 2. Structure; 3. Technical Overview; 4. Configuration: ; 4.1. Setting up Linux for Snort; 4.2. Configuring Snort; 4.3. Configuring MySQL; 4.4. Configuring ADODB; 4.5. Configuring PHPlot; 4.6. Configuring ACID; 4.7. Configuring !SnortSnarf; 4.8. Configuring Arachnids_upd; 4.9. Configuring Swatch; 5. Security Issues; 6. Getting Help; 7. Questions and Answers  
-!!!1. Introduction  
-  
- This document was written when I created an IDS sensor with Snort and  
-using some statistic tools in order to help others implementing it. If at  
-least one out there can be helped it has been worth the work.  
-  
-  
-  
-  
- Snort is an excellent Network Intrusion Detection System (NIDS) for various  
-unices. The Snort homepage can be found at http://www.snort.org/. The version  
-described here is 1.8.3 which was the actual version at the time of writing.  
-  
-  
-  
-  
- The statistic tools I will describe here are ACID, a database analysis tool  
-for Snort which can be found at http://www.cert.org/kb/acid/ and  
-!SnortSnarf, a statistic tool for Snort logs downloadable from  
- http://www.silicondefense.com/software/snortsnarf/index.htm.  
-  
-  
-  
-  
- Additional support packages are needed for ACID. These are a PHP4 capable  
-webserver like ''apache'' (http://www.apache.org/), PHPlot used for  
-creating graphs in PHP (http://www.phplot.com/) and ADODB used  
-for connecting to databases with PHP (http://php.weblogs.com/ADODB/).  
-  
-  
-  
-  
- The description also includes which additional software is needed for ACID  
-and how to configure along with some scripts I use including a changed  
-version of the snortd initscript and a short chapter about swatch (http://www.stanford.edu/~atkins/swatch) a log file watcher script written  
-in perl. I created a swatch RPM which can be found at http://www.lug-burghausen.org/projects/Snort-Statistics/swatch-3..2-1.noarch.rpm.  
-  
-  
-  
-  
- One hint for those interested in maintaining more than one snort sensor: You  
-might take a look at IDSPM (IDS Policy Manager) at http://www.activeworx.com/ which is  
-an application to maintain various sensors with different policies along with  
-merging capabilities for new rules and a lot more. The only "nasty" thing is  
-that it runs on W2K/XP and is not (yet?) Open Source.  
-  
-  
-----  
-!!1.1. Copyright Information  
-  
- This document is copyrighted (c) 2001, 2002 Sandro Poppi and is  
-distributed under the terms of the Linux Documentation Project  
-(LDP) license, stated below.  
-  
-  
-  
-  
- Unless otherwise stated, Linux HOWTO documents are  
-copyrighted by their respective authors. Linux HOWTO documents may  
-be reproduced and distributed in whole or in part, in any medium  
-physical or electronic, as long as this copyright notice is  
-retained on all copies. Commercial redistribution is allowed and  
-encouraged; however, the author would like to be notified of any  
-such distributions.  
-  
-  
-  
-  
- All translations, derivative works, or aggregate works  
-incorporating any Linux HOWTO documents must be covered under this  
-copyright notice. That is, you may not produce a derivative work  
-from a HOWTO and impose additional restrictions on its  
-distribution. Exceptions to these rules may be granted under  
-certain conditions; please contact the Linux HOWTO coordinator at  
-the address given below.  
-  
-  
-  
-  
- In short, we wish to promote dissemination of this  
-information through as many channels as possible. However, we do  
-wish to retain copyright on the HOWTO documents, and would like to  
-be notified of any plans to redistribute the HOWTOs.  
-  
-  
-  
-  
- If you have any questions, please contact  
-`linux-howto at metalab.unc.edub  
-  
-  
-----  
-!!1.2. Disclaimer  
-  
- No liability for the contents of this documents can be accepted.  
-Use the concepts, examples and other content at your own risk.  
-As this is a new edition of this document, there may be errors  
-and inaccuracies, that may of course be damaging to your system.  
-Proceed with caution, and although this is highly unlikely,  
-the author(s) do not take any responsibility for that.  
-  
-  
-  
-  
- All copyrights are held by their respective owners, unless  
-specifically noted otherwise. Use of a term in this document  
-should not be regarded as affecting the validity of any trademark  
-or service mark.  
-  
-  
-  
-  
- Naming of particular products or brands should not be seen  
-as endorsements.  
-  
-  
-  
-  
- You are strongly recommended to take a backup of your system  
-before major installation and backups at regular intervals.  
-  
-  
-----  
-!!1.3. New Versions  
-  
- This is the initial release.  
-  
-  
-  
-  
- The main site for this HOWTO is http://www.lug-burghausen.org/projects/Snort-Statistics/.  
-  
-  
-  
-  
- Mirrors may be found at the Linux  
-Documentation Project or Snort homepages.  
-  
-  
-  
-  
- The newest version of this HOWTO will always be made available on  
-the main website, in a variety of formats:  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-****  
-  
- HTML.  
-  
-  
-  
-****  
-****  
-  
- compressed  
-postscript (A4).  
-  
-  
-  
-****  
-****  
-  
- SGML  
-source.  
-  
-  
-  
-****  
-  
-  
-----  
-!!1.4. Credits  
-  
- Credits go to a variaty of people including  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-****  
-  
- Martin Roesch `roesch at sourcefire.comb Author of Snort  
-  
-  
-  
-****  
-****  
-  
- Roman Danyliw `roman at danyliw.comb Author of ACID  
-  
-  
-  
-****  
-****  
-  
- James Hoagland `hoagland at !SiliconDefense.comb Author of  
-!SnortSnarf  
-  
-  
-  
-****  
-****  
-  
- Stuart Staniford `stuart at !SiliconDefense.comb Author of  
-!SnortSnarf  
-  
-  
-  
-****  
-****  
-  
- Joe !McAlerney `joey at siliconDefense.comb Author of  
-!SnortSnarf  
-  
-  
-  
-****  
-****  
-  
- John Lim `jlim at natsoft.com.myb Author of ADODB  
-  
-  
-  
-****  
-****  
-  
- Afan Ottenheimer `afan at users.sourceforge.netb Author of  
-PHPlot  
-  
-  
-  
-****  
-****  
-  
- Andreas Östling `andreaso at it.su.seb Author of  
-arachnids_upd  
-  
-  
-  
-****  
-****  
-  
- Max Vision `vision at whitehats.comb "Distributor" of  
-vision.rules and maintainer of http://www.whitehats.com/  
-  
-  
-  
-****  
-****  
-  
- Greg Sarsons `gsarsons at home.comb for proof reading and  
-suggestions  
-  
-  
-  
-****  
-****  
-  
- All the peaople on the ''snort-users'' mailinglist, they  
-helped me and of course they will help YOU b;)  
-  
-  
-  
-****  
-****  
-  
- ...  
-  
-  
-  
-****  
-  
-  
-  
-  
- If I missed someone it was not because of not honoring her or his work!  
-  
-  
-----  
-!!1.5. Feedback  
-  
- Feedback is most certainly welcome for this document. Without  
-your submissions and input, this document wouldn't exist. Please  
-send your additions, comments and criticisms to the following  
-email address : `spoppi at gmx.deb.  
-  
-  
-----  
-!!1.6. Translations  
-  
- There are currently no translations available.  
-  
-  
-----  
-!!!2. Structure  
-  
- This document is supposed to be a step by step guide on how to install and  
-configure snort version 1.8.3, ACID, a web based frontend for  
-statistical realtime snort data with the underlying MySQL database and its  
-support packages PHPlot and ADODB, !SnortSnarf, also a statistical tool with a  
-web frontend for analysing the snort logfile, arachnids_upd for always  
-getting the actual rules from Max Vision's http://www.whitehats.com/ site,  
-and a sample swatch configuration I use to check if snort reports errors  
-which I do not get because snort has stopped.  
-  
-  
-----  
-!!!3. Technical Overview  
-  
- Snort is mainly a so called Network Intrusion Detection System (NIDS), it is  
-Open Source and available for a variaty of unices as well as Microsoft  
-Windows (R).  
-  
-  
-  
-  
- A NIDS cares for a whole network segment in contrast to a host based IDS  
-which only cares for the host it is running on.  
-  
-  
-  
-  
- Since NIDS are mostly used in conjunction with firewalls it is vital to not  
-being vulnerable for attacks itself. Therefor all interfaces used with snort  
-bound to should be set up without ip addresses. Since this can not be achieved  
-in every configuration, e.g. if you want to bind snort on an isdn interface  
-ippp0, it should be considered to use a standalone computer for snort and set  
-it up as a firewall and router for the dial-up connection too.  
-  
-  
-  
-  
- For more information on that topic see the  
-''Firewall-HOWTO'' or my  
-''Firewalling+Masquerading+Diald+dynamic IP-HOWTO''.  
-  
-  
-  
-  
- Snort can be used to care for more than one network segment which we will  
-discuss later.  
-  
-  
-  
-  
- Snort also can be used as a sniffer to troubleshoot network problems, but  
-that's not a topic in this document.  
-  
-  
-  
-  
- ACID, the Analysis Console for Intrusion Databases, is part of the AIR-CERT  
-project. It makes use of PHPlot, a library for creating nice graphs in PHP,  
-and ADODB, an abstraction library for combining PHP and various database  
-systems like MySQL and PostgreSQL. The ACID homepage says:  
-  
-  
-  
-  
- ''"The Analysis Console for Intrusion Databases (ACID) is a PHP-based  
-analysis engine to search and process a database of incidents generated by  
-security-related software such as IDSes and firewalls."''  
-  
-  
-  
-  
- Max Vision's IDS rules (referred to as ''vision.rules''  
-because this is the name of the downloadable file) are used to complete the  
-rules shipped with snort.  
-  
-  
-  
-  
- arachnids_upd is a small but fine perl script which downloads the actual  
-''vision.rules'' using ''wget'' and optionally deletes  
-single rules given in an ASCII file.  
-  
-  
-----  
-!!!4. Configuration  
-  
- This chapter describes the various configuration tasks to get snort and the  
-tools up and running.  
-  
-  
-  
-  
- Since I am using !RedHat linux 7.x all the given pathnames and configuration  
-options are eventually !RedHat specific while there should be no big problem to  
-transfer it to any other distribution.  
-  
-  
-----  
-!!4.1. Setting up Linux for Snort  
-  
- Instead of doing the work twice I only provide a link to a document  
-describing the various tasks of compiling/installing MySQL, Apache, ACID  
-etc. by Jason Lewis: http://www.packetnexus.com/docs/packetnexus/  
-  
-  
-  
-  
- Please keep in mind that I'm not the author of either the document or the  
-scripts mentioned there. I didn't even test the scripts so please don't ask  
-me about them ;)  
-  
-  
-----  
-!!4.2. Configuring Snort  
-  
- You can start installing snort by getting the actual tarball from http://www.snort.org/  
-and compile it yourself or try to find precompiled binaries for your  
-distribution.  
-  
-  
-  
-  
- For version 1.8.3 you can find precompiled binaries for rpm based linux  
-distributions, FreeBSD, Solaris and Windows at www.snort.org.  
-  
-  
-  
-  
- I'm no longer maintaining my own RPMS since work hasn't to be done more than  
-once. But I will offer you my adjusted ''snortd.multi''  
-initscript at http://www.lug-burghausen.org/projects/Snort-Statistics/snortd.multi.  
-  
-  
-  
-  
- My old 1.8.1 RPMS with MySQL support (but without PostgreSQL support!) can  
-still be found at http://www.lug-burghausen.org/projects/Snort-Statistics/snort-1.8.1-4.i386.rpm.  
-To create a postgreSQL enabled version, download the Source  
-RPM, edit the spec file and rebuild the RPM. If you are not familiar  
-with creating RPMs you should have a look on the ''RPM-HOWTO'' or http://www.rpm.org/ where  
-''Maximum RPM'' is located, a downloadable book about RPM  
-along with other good sources about RPM.  
-  
-  
-----  
-!4.2.1. /etc/snort/snort.conf  
-  
- After installing the RPM we have to edit  
-''/etc/snort/snort.conf'' to reflect our needs. Martin  
-Roesch created the Snort Users Manual which is shipped with the snort  
-tarball and the RPMS as a PDF version. You should have a look on it to see  
-which options you would like to use as not all but only the ones needed for  
-our configuration here will be covered in this document.  
-  
-  
-  
-  
- Also the example configuration ''/etc/snort/snort.conf''  
-shipped with the tarball/RPM is a good place to start because of the  
-detailed remarks.  
-  
-  
-----__4.2.1.1. Snort Variables__  
-  
- First we define various variables like HOME_NET, EXTERNAL_NET and  
-DNS_SERVERS to reflect our network topology. Make sure you use the right  
-addresses or you get weird, or worse, no alarms.  
-  
-  
-  
-  
- When using snort in a complex environment, let's say one sensor with  
-multiple interfaces to watch, the definition of HOME_NET and EXTERNAL_NET  
-may be hard or at least results in a very long list, you can set both  
-variables to ''any''. You loose some kind of pre-filtering  
-for the sake of not having to put in dozens of network ranges in a large  
-internal network. And you minimize the performance impact of having snort  
-run through a huge list of addresses for each packet.  
-  
-  
-  
-  
- To get rid of some nasty messages of (false) portscans define the variable  
-DNS_SERVERS to hold all ip addresses of dns-servers along with other nodes  
-like network management stations triggering snort's portscan module. This  
-is an ongoing process.  
-  
-  
-  
-  
- You also can define your own variables here which you can refer to in your  
-own rules. This is helpful e.g. if using ''pass rules'' to  
-suite your environment.  
-  
-  
-  
-  
- Define all other variables to appropriate values or as in the shipped  
-''/etc/snort/snort.conf'' to $HOME_NET.  
-  
-  
-  
-  
-  
- var HOME_NET any  
-var EXTERNAL_NET any  
-# DNS_SERVERS holds the addresses of "noisy" computers like DNS or NWM  
-# to be ignored from portscans  
-var DNS_SERVERS [[1.1.1.1/32,2.2.2.2/32 ]  
-var SMTP_SERVERS $HOME_NET  
-...  
-  
-  
-  
-----__4.2.1.2. Snort Preprocessors__  
-  
- Next we have to set up the preprocessors to be used. While the more  
-preprocessors you use you get more triggers for alarms but for the cost of  
-performance. So be careful in choosing preprocessors.  
-  
-  
-  
-  
- You should also have a look on Marty's ''Snort Users  
-Manual'' because some preprocessors are deprecated. For those you  
-should use the new introduced ones.  
-  
-  
-  
-  
- The preprocessors ''minfrag'' and  
-''stream'' are depricated in favor of  
-''stream4'', and ''defrag'' is deprecated  
-by ''frag2''.  
-  
-  
-  
-  
- ''frag2'' is the new IP defragmentation processor  
-introduced in snort v1.8 which should be more memory efficient than  
-''defrag/minfrag''.  
-  
-  
-  
-  
- From the Snort Users Manual:  
-''The stream4 module provides TCP stream reassembly and stateful  
-analysis capabilities to Snort. Robust stream reassembly capabilities allow  
-Snort to ignore ''stateless'' attacks such as stick and snot  
-produce.Stream4 also gives large scale users the ability to track more than  
-256 simultaneous TCP streams. Stream4 should be able to scale to handle  
-64,000 simultaneous TCP connections.''  
-  
-  
-  
-  
- The ''stream4'' module consists of two preprocessors  
-called ''stream4'' and  
-''stream4_reassemble'', which both have to be used.  
-  
-  
-  
-  
- There are various options for both preprocessors while we will use only -  
-for ''stream4'' - ''detect_scans'' for  
-getting alarms for portscan events and  
-''detect_state_problems'' to be informed when stream  
-events like evasive RST packets, data on SYN packets and out of window  
-sequence numbers occur.  
-  
-  
-  
-  
- With ''stream4_reassemble'' we use the option  
-''ports all'' what makes the reassembly catch all ports  
-instead of only some predefined ones. To be honest, this is some kind of  
-paranoic and impacts the cpu utilization of the snort sensor, but since I  
-didn't get any bad results listening on a Pentium III 800 MHz on three 100  
-Mbit/s full duplex lines with average to low utilization I think it's the  
-better solution.  
-  
-  
-  
-  
- Two other preprocessors we will use are ''portscan'' and  
-''portscan-ignorehosts'' which are responsible for  
-portscan detection (''portscan'') and for which hosts  
-portscan detection has to be ignored  
-(''portscan-ignorehosts'').  
-  
-  
-  
-  
- For ''portscan'' we define to look for every network using  
-the form ''.../'', set the number of port numbers to  
-be accessed in the also to be defined detection period in seconds.  
-Additionally we have to provide the complete path to the portscan logfile.  
-  
-  
-  
-  
- With ''portscan-ignorehosts'' we get rid of some weird  
-alarms from hosts which talk too much and trigger portscan detection like  
-name servers and network management stations (see variable  
-''DNS_SERVERS'' above).  
-  
-  
-  
-  
- Some preprocessors which are not (yet) mentioned in Marty's Users Manual  
-but we will use are ''unidecode'' which is a replacement  
-of ''http_decode'' and normalizes http and UNICODE  
-attacks, ''rpc_decode'' to normalize rpc traffic on a  
-given port, ''bo'' to check for back orifice traffic and  
-''telnet_decode'' to normalize telnet negotiation strings.  
-  
-  
-  
-  
- Other preprocessors like SPADE are not yet covered here but may be in a  
-future version. Contributions are very welcome b;)  
-  
-  
-  
-  
- After all that theoretical stuff here is the preprocessor part of  
-''/etc/snort/snort.conf'':  
-  
-  
-  
-  
-  
- preprocessor frag2  
-preprocessor stream4: detect_scans detect_state_problems  
-preprocessor stream4_reassemble: ports all  
-preprocessor unidecode: 80 8080  
-preprocessor rpc_decode: 111  
-preprocessor bo: -nobrute  
-preprocessor telnet_decode  
-preprocessor portscan: .../0 6 3 /var/log/snort/portscan.log  
-preprocessor portscan-ignorehosts: $DNS_SERVERS  
-  
-  
-  
-----__4.2.1.3. Snort Output Modules__  
-  
- The next part is the configuration of the output modules of which we will  
-use the syslog module ''alert_syslog'' to send alerts to  
-syslog and ''database'' to additionally log to a MySQL  
-database.  
-  
-  
-  
-  
- The ''alert_syslog'' module requires some options for what  
-has to be logged. If like in my case you are using !SnortSnarf to analyse  
-the logfile you'll have to add the option ''LOG_PID'' else  
-!SnortSnarf has problems.  
-  
-  
-  
-  
- As stated before we will use ACID and thus we need to set up snort to log  
-to a database. I chose MySQL for no particular reason (well, I've heard more  
-from MySQL than from postgreSQL but that's all).  
-  
-  
-  
-  
- The ''database'' output module requires the following  
-parameters:  
-  
-  
-  
-  
-  
-  
-  
-  
-; log | alert:  
-  
- Log to the ''alert'' facility. Also possible would be  
-the ''log'' facility. If you would like to get  
-portscan alerts into the database you have to use  
-''alert'' here.  
-  
-  
-; mysql|postgrsql|odbc|oracle|mssql:  
-  
-This is the type of database.  
-  
-; user=`usernameb:  
-  
-Here you define the username to be used with the database.  
-  
-; password=`passwordb:  
-  
-The required password for the given user.  
-  
-; dbname=`databasenameb:  
-  
-The name of the database to be used for logging into.  
-  
-; host=`hostnameb:  
-  
- Here you define the host on which the database is running. Use  
-localhost if the database is running on the snort sensor itself.  
-  
-  
-; sensor_name=`sensor nameb:  
-  
- Here you put in a unique name which is used to differentiate  
-between various sensors if more than one is logging into a single  
-database.  
-  
-  
-  
-  
-  
-  
-  
- Now let's take a look on the output module part of  
-''/etc/snort/snort.conf'':  
-  
-  
-  
-  
-  
- output alert_syslog: LOG_AUTH LOG_ALERT LOG_PID  
-output database: alert, mysql, user=snort password=mypassword dbname=snort host=localhost sensor_name=mysensor  
-  
-  
-  
-  
-  
- If you are using more than one physical snort sensor and would log to a  
-database I would recommend using a central database on a separate machine.  
-You then can correlate alert data with a single console getting a better  
-overview when attacks are found.  
-  
-  
-----__4.2.1.4. Snort Rule Sets__  
-  
- The rules are the vital part of snort. There are various categories of  
-rules shipped with snort. They can be found in  
-''/etc/snort/'', ending with  
-''*.rules''. The format in version 1.8+ has changed to  
-reflect the classification types. In addition priority settings of the  
-classtypes can also be defined.  
-  
-  
-  
-  
- If you're using the original snort tarball I suggest copying all rule  
-files and ''classification.config'' into it.  
-  
-  
-  
-  
- The configuration of classification types is done in  
-''/etc/snort/classification.config''. Normally you  
-don't have to touch it since it is preconfigured for the shipped snort  
-rules. But if you (again like me) are using Max Vision's  
-''vision.rules'' you'll have to add some lines because  
-the classtypes are different. Just copy and paste all ''config  
-classification:'' lines from ''vision.conf'' to  
-''/etc/snort/classification.config''. And remember  
-to take the ''vision.rules'' for snort 1.8 (called  
-''vision18.rules'' and  
-''vision18.conf'' on http://www.whitehats.com/) as the  
-older ones are not prepared for the new format introduced in snort 1.8!  
-  
-  
-  
-  
- Here's the ''/etc/snort/classification.config'' I  
-used with ''vision.rules'':  
-  
-  
-  
-  
-  
- #  
-# config classification:shortname,short description,priority  
-#  
-#config classification: not-suspicious,Not Suspicious Traffic,  
-config classification: unknown,Unknown Traffic,1  
-config classification: bad-unknown,Potentially Bad Traffic, 2  
-config classification: attempted-recon,Attempted Information Leak,3  
-config classification: successful-recon-limited,Information Leak,4  
-config classification: successful-recon-largescale,Large Scale Information Leak,5  
-config classification: attempted-dos,Attempted Denial of Service,6  
-config classification: successful-dos,Denial of Service,7  
-config classification: attempted-user,Attempted User Privilege Gain,8  
-config classification: unsuccessful-user,Unsuccessful User Privilege Gain,7  
-config classification: successful-user,Successful User Privilege Gain,9  
-config classification: attempted-admin,Attempted Administrator Privilege Gain,10  
-config classification: successful-admin,Successful Administrator Privilege Gain,11  
-# added from vision18.conf  
-# classification for use with a management interface  
-# low risk  
-config classification: not-suspicious,policy traffic that is not suspicious,  
-config classification: suspicious,suspicious miscellaneous traffic,1  
-config classification: info-failed,failed information gathering attempt,2  
-config classification: relay-failed,failed relay attempt,3  
-config classification: data-failed,failed data integrity attempt,4  
-config classification: system-failed,failed system integrity attempt,5  
-config classification: client-failed,failed client integrity attempt,6  
-# med risk  
-config classification: denialofservice,denial of service,7  
-config classification: info-attempt,information gathering attempt,8  
-config classification: relay-attempt,relay attempt,9  
-config classification: data-attempt,data integrity attempt,10  
-config classification: system-attempt,system integrity attempt,11  
-config classification: client-attempt,client integrity attempt,12  
-config classification: data-or-info-attempt,data integrity or information gathering attempt,13  
-config classification: system-or-info-attempt,system integrity or information gathering attempt,14  
-config classification: relay-or-info-attempt,relay of information gathering attempt,15  
-# high risk  
-config classification: info-success,successful information gathering attempt,16  
-config classification: relay-success,successful relay attempt,17  
-config classification: data-success,successful data integrity attempt,18  
-config classification: system-success,successful system integrity attempt,19  
-config classification: client-success,successful client integrity attempt,20  
-  
-  
-  
-  
-  
- The classification and rule files are included in  
-''/etc/snort/snort.conf''. Some rule files used here have  
-been copied from the CVS, e.g. ''virus.rules'' because  
-they were not shipped with the standard distribution.  
-  
-  
-  
-  
- As stated before the ''vision.rules'' file will be  
-fetched via the tool ''arachnids_upd'' which is discussed  
-later.  
-  
-  
-  
-  
- Arachnids_upd changes the name from ''vision18.rules'' to  
-''vision.rules'' but the rules are of course the ones  
-prepared for snort 1.8+.  
-  
-  
-  
-  
- Since the variable definitions for INTERNAL and EXTERNAL in  
-''vision.rules'' are not the same as with the snort rules  
-I use a script to change these names. Take a look at the  
-''arachnids_upd'' section below.  
-  
-  
-  
-  
-  
- # Include classification 8 priority settings  
-include /etc/snort/classification.config  
-include /etc/snort/exploit.rules  
-include /etc/snort/scan.rules  
-include /etc/snort/finger.rules  
-include /etc/snort/ftp.rules  
-include /etc/snort/telnet.rules  
-include /etc/snort/smtp.rules  
-include /etc/snort/rpc.rules  
-include /etc/snort/rservices.rules  
-include /etc/snort/backdoor.rules  
-include /etc/snort/dos.rules  
-include /etc/snort/ddos.rules  
-include /etc/snort/dns.rules  
-include /etc/snort/netbios.rules  
-include /etc/snort/web-cgi.rules  
-include /etc/snort/web-coldfusion.rules  
-include /etc/snort/web-frontpage.rules  
-include /etc/snort/web-iis.rules  
-include /etc/snort/web-misc.rules  
-include /etc/snort/sql.rules  
-include /etc/snort/x11.rules  
-include /etc/snort/icmp.rules  
-include /etc/snort/shellcode.rules  
-include /etc/snort/misc.rules  
-include /etc/snort/policy.rules  
-include /etc/snort/info.rules  
-#include /etc/snort/icmp-info.rules  
-include /etc/snort/virus.rules  
-include /etc/snort/local.rules  
-# vision.rules will be catched by arachnids_upd  
-include /etc/snort/vision.rules  
-  
-  
-  
-  
-  
- When you are done with setting up  
-''/etc/snort/snort.conf'' you should start snort by  
-calling ''/etc/rc.d/init.d/snortd start'' and correct any  
-errors you get in the log file ''/var/log/messages''  
-(ignore any database related messages since the database has not been set  
-up at this time, you also may have to document out the output module  
-database). If everything is ok you can go on with configuring the other  
-parts.  
-  
-  
-----  
-!4.2.2. /etc/rc.d/init.d/snortd  
-  
- In ''/etc/rc.d/init.d/snortd'' you should edit at least the  
-line with the interface to be "snort'ed". Replace the definition of  
-''INTERFACE="eth0"'' with the interface you use. This can  
-be another ethernet (''ethx'') but also a  
-''pppx'' or ''ipppx'' interface, e.g. if  
-you are using ISDN your definition should be like  
-  
-  
-  
-  
-  
- INTERFACE="ippp0"  
-  
-  
-  
-  
-  
- If your snort sensor is only listening on one interface it's sufficient to  
-use the shipped snortd initscript. But if you have more than one interface  
-you may be interested in having a look onto the script I extended for  
-exactly that case. Even when you only have one interface but wish to use  
-swatch the way I do you could copy the swatch parts to the shipped snortd  
-script (see the contrib section of the RPM's documentation).  
-  
-  
-  
-  
- Next you find the mentioned snortd initscript I extended for snort to listen  
-on more than one interface. One could now say that you can also use  
-''any'' as an interface name since the underlying  
-''libpcap'' makes this possible, but that's not what I  
-intended to use because I'm not interested in "snorting" the local network  
-where the snort sensor is set up. This should - in a secure environment - be  
-a separate network segment with additional security set up, e.g. a firewall  
-for that segment, so sniffing does not make much sense except if you want  
-to sniff attacks targeted to the snort network itself. Even then, if you use  
-more than one sensor concentrated in that segment you only need to set up  
-one but not all of the sensors for protecting the segment.  
-  
-  
-  
-  
- I added a new function ''daemonMult'' derived from !RedHat's  
-''daemon'' function found in  
-''/etc/rc.d/init.d/functions'' which is capable of starting  
-a program more than once. I sent !RedHat a patch for their  
-''daemon'' function to introduce a new option  
-''--mult'' which eventually will be added. If that happens  
-the ''daemonMult'' function will be obsolete and the call  
-to snort would change from ''daemonMult ...'' to  
-''daemon --mult ...''. Let's wait and see.  
-  
-  
-  
-  
- I also changed the subsystem name from snort to snortd to get rid of error  
-messages when rebooting (the killall script on a redhat box depends on the  
-correct name), just a little typo.  
-  
-  
-  
-  
- With my script you can now define multiple interfaces to be watched on,  
-just use a space separated list with the ''INTERFACE''  
-variable, like in the listing shown below.  
-  
-  
-  
-  
- Some sanity checks are also included to see if the interface to listen on is  
-already up and if there is an IP address defined. If there is an IP address  
-defined the correspondig config which on a !RedHat linux box is found in  
-''/etc/sysconfig/network-scripts/ifcfg-`interface  
-nameb'' will be used, else the interface is set up as IP-less in  
-promiscuous mode.  
-  
-  
-  
-  
- THIS HAS NOT YET BEEN TESTED WITH ANYTHING ELSE THAN ETHERNET INTERFACES! I  
-WILL HOPEFULLY SOON REVIEW IT WITH ISDN INTERFACES AND REPORT HOW THE  
-DIFFERENCES ARE!  
-  
-  
-  
-  
- A single snort process is then started on each interface, and also  
-''swatch'' will be started to check for errors when  
-restarting snort for rule updates (see the ''swatch''  
-section below).  
-  
-  
-  
-  
- When shutting down snort all IP-less interfaces will be shut down but not  
-any interfaces with existing IP configurations because that could last to  
-inaccessability if the "snort'ed" interface is vital for the snort sensor  
-(learned that the hard way b;)  
-  
-  
-  
-  
- Maybe a better solution would be to check the interface's config file for an  
-entry like  
-  
-  
-  
-  
-  
- ONBOOT=yes  
-  
-  
-  
-  
-  
- and only if there is not ''yes'' then the interface will be  
-shut down. But that's not yet implemented.  
-  
-  
-  
-  
- Now here is the extended snort initscript:  
-  
-  
-  
-  
-  
-#!/bin/sh  
-#  
-# snortd Start/Stop the snort IDS daemon.  
-#  
-# chkconfig: 2345 40 60  
-# description: snort is a lightweight network intrusion detection tool that  
-# currently detects more than 1100 host and network  
-# vulnerabilities, portscans, backdoors, and more.  
-#  
-# June 10, 2000 -- Dave Wreski Dave Wreski `dave at linuxsecurity.comb  
-# - initial version  
-# July 08, 2000 Dave Wreski ``dave at guardiandigital.comb  
-# - added snort user/group  
-# - support for 1.6.2  
-# April 11, 2001 Sandro Poppi `spoppi at gmx.deb  
-# - added multiple interfaces option for use with dial up lines  
-# or more than one sniffer interface  
-# I don't think the libpcap option to use "-i any" is a good choice,  
-# because snort would be set up to monitor one or more ip-less interfaces  
-# while leaving the monitor interface "unprotected"  
-# - changed the subsystem name from snort to snortd to get rid of error messages  
-# when rebooting (the killall script on a redhat box depends on the correct name)  
-# - added a function daemonMult derived from the function daemon in /etc/rc.d/init.d/functions  
-# to allow starting multiple instances of snort with the convenience of the daemon function  
-# (eventually this could be integrated into the normal daemon function of redhat, have to get  
-# in touch with the author)  
-# January 01, 2002 Sandro Poppi `spoppi at gmx.deb  
-# - added check if swatch is installed  
-# - added check for interfaces other than ethernet since only those are expected to work with ifconfig  
-#  
-# Source function library.  
-. /etc/rc.d/init.d/functions  
-# A function to start a program even more than once  
-# rewritten version of the daemon function in /etc/rc.d/init.d/functions  
-daemonMult() {  
-# Test syntax.  
-gotbase=  
-user=  
-nicelevel=  
-while [[ "$1" != "${1##-}" -o "$1" != "${1##+}" ]; do  
-case $1 in  
-'') echo '$: Usage: daemon [[+/-nicelevel] {program}'  
-return 1;;  
---check)  
-shift  
-base=$1  
-gotbase="yes"  
-shift  
-;;  
---user)  
-shift  
-daemon_user=$1  
-shift  
-;;  
--*|+*) nicelevel=$1  
-shift  
-;;  
-*) nicelevel=  
-;;  
-esac  
-done  
-# Save basename.  
-[[ -z $gotbase ] 88 base=`basename $1`  
-# make sure it doesn't core dump anywhere; while this could mask  
-# problems with the daemon, it also closes some security problems  
-ulimit -S -c 0 b/dev/null 2b81  
-# Echo daemon  
-[[ "$BOOTUP" = "verbose" ] 88 echo -n " $base"  
-# And start it up.  
-if [[ -z "$daemon_user" ]; then  
-nice -n $nicelevel initlog $INITLOG_ARGS -c "$*" 88 success "$base startup" || failure "$base startup"  
-else  
-nice -n $nicelevel initlog $INITLOG_ARGS -c "su $daemon_user -c \"$*\"" 88 success "$base startup" || failure "$base startup"  
-fi  
-}  
-# Specify your network interface(s) here  
-INTERFACE="eth1 eth2"  
-# See how we were called.  
-case "$1" in  
-start)  
-if [[ -x /usr/bin/swatch ] ; then  
-echo -n "Starting swatch: "  
-# inserted poppi to make use of swatch  
-# starting it before snort to get hints on startup errors of snort  
-# if using the snort option -s use /var/log/secure,  
-# if using output alert_syslog: in snort.conf use /var/log/messages  
-/usr/bin/swatch --daemon --tail /var/log/messages --config-file /etc/swatch/swatchrc 8  
-touch /var/lock/subsys/swatch  
-echo "done."  
-echo  
-fi  
-# added multiple interfaces option  
-for i in `echo "$INTERFACE"` ; do  
-echo -n "Starting snort on interface $i: "  
-# inserted to implement ip-less sniffer interface for snort at startup  
-# if the interface is not yet loaded or if the interface isn't up yet  
-if [[ `/sbin/ifconfig $i 2b81 | /bin/grep -c "Device not found"` = "" \  
--o `/sbin/ifconfig $i 2b81 | /bin/grep -c "UP"` = "" ] ; then  
-# check for interfaces other than ethernet!  
-if [[ `echo $i | /bin/grep -c "^eth"` = "1" ] ; then  
-# check if there is a config for the given interface  
-# normally this should be omitted for security reasons for a sniffer interface  
-if [[ -s "/etc/sysconfig/network-scripts/ifcfg-$i" ]; then  
-# use the config  
-/sbin/ifup $i  
-else  
-# ip less sniffer interface  
-/sbin/ifconfig $i up promisc  
-fi  
-fi  
-fi  
-# call the rewritten daemon function from above  
-daemonMult /usr/sbin/snort -u snort -g snort -d -D \  
--i $i -I -l /var/log/snort -c /etc/snort/snort.conf  
-echo  
-done  
-touch /var/lock/subsys/snortd  
-;;  
-stop)  
-echo -n "Stopping snort: "  
-killproc snort  
-rm -f /var/lock/subsys/snortd  
-# inserted Poppi  
-if [[ -x /usr/bin/swatch ] ; then  
-echo  
-echo -n "Stopping swatch: "  
-kill `ps x|grep "/usr/bin/swatch"|grep -v grep|awk '{ print $1 }'`  
-rm -f /var/lock/subsys/swatch  
-fi  
-# shutdown interface if and only if it has NO ip address  
-# and if it is a ethernet interface  
-# this is done because we don't want to shutdown interfaces still needed  
-for i in `echo "$INTERFACES"`; do  
-if [[`echo $i | /bin/grep -c "^eth"` = "1" -a \  
-`/sbin/ifconfig $i 2b81 | /bin/grep -c "inet addr:"` = "" ] ; then  
-/sbin/ifconfig $i down  
-fi  
-done  
-echo  
-;;  
-restart)  
-$0 stop  
-$0 start  
-;;  
-status)  
-status snort  
-#status swatch  
-;;  
-*)  
-echo "Usage: $0 {start|stop|restart|status}"  
-exit 1  
-esac  
-exit  
-  
-  
-  
-----  
-!4.2.3. /etc/snort/snort-check  
-  
- This shell script is used to generate winpopups via  
-''smbclient'' or sending emails to given persons. It was  
-inspired by Bill Richardson's script published on the snort homepage.  
-  
-  
-  
-  
- The winpopup part may be obsoleted by the ''smb'' output  
-module introduced in snort 1.8 but I haven't tested it yet.  
-  
-  
-  
-  
-  
-#!/bin/sh  
-# Script to be run from within swatch to send alerts in multiple formats  
-# inspired from script on www.snort.org by Bill Richardson  
-# extended to read a file called "hosts" with names of  
-# workstation to send a winpopup, syntax is the same as with snortd option -M  
-# Poppi, 02.05.2001  
-# Prerequisites:  
-# Samba set up correctly  
-# Change the following variables according to your system (for !RedHat 7.x user it should be ok)  
-# hostfile holds the name of the file containing the workstation for winpopups  
-hostfile="/etc/snort/hosts"  
-# recipientfile holds the addresses of all recipients in a single file,  
-# seperated by newline  
-recipientfile="/etc/snort/recipients"  
-# if a recipient file exists  
-if [[ -s "$recipientfile" ] ; then  
-# generate the recipientlist with email adresses.  
-for i in `cat $recipientfile` ; do  
-recipients="$recipients "$i  
-done  
-echo "$*" | mail -s "Snort-Alert!!!" "$recipients"  
-fi  
-# if a hostfile exists, send winpopups  
-if [[ -s "$hostfile" ] ; then  
-for i in `cat $hostfile` ; do  
-echo "Snort-Alert! $*" | smbclient -M $i b /dev/null 2b81  
-done  
-fi  
-  
-  
-  
-----__4.2.3.1. /etc/snort/hosts__  
-  
- In this file you put in all the workstation names of the hosts which  
-should get the snort message, one per line:  
-  
-  
-  
-  
-  
- ws001  
-ws002  
-ws003  
-  
-  
-  
-----__4.2.3.2. /etc/snort/recipients__  
-  
- In ''/etc/snort/recipients'' you put in email addresses  
-of recipients who wish (or are urged to ;) receive your snort alarms, one  
-address per line:  
-  
-  
-  
-  
-  
- jane@internal.local.com  
-henk@snort.info  
-sandro@snort.info  
-  
-  
-  
-  
-  
- If any of these two files is omitted then the corresponding feature is  
-disabled.  
-  
-  
-----  
-!4.2.4. Snort internal Statistics  
-  
- Snort has the ability built in to print out some internal statistics. This  
-can be achieved using the following command:  
-  
-  
-  
-  
- __ /bin/kill -SIGUSR1 `pid of snortb  
-__  
-  
-  
-  
-  
- or if you have more than one snort process running on the same machine and  
-want to get info about all at once:  
-  
-  
-  
-  
- __ /bin/killall -USR1 snort  
-__  
-  
-  
-  
-  
- With either of these commands you get internal statistics in the following  
-way in your syslog (''/var/log/messages'' with !RedHat):  
-  
-  
-  
-  
-  
-Sep 29 07:51:48 ids01 snort[[8000]: ===============================================================================  
-Sep 29 07:51:48 ids01 snort[[8000]: Snort analyzed 27316 out of 27316 packets,  
-Sep 29 07:51:48 ids01 snort[[8000]: dropping (.000%) packets  
-Sep 29 07:51:48 ids01 snort[[8000]: Breakdown by protocol: Action Stats:  
-Sep 29 07:51:48 ids01 snort[[8000]: TCP: 27152 (99.400%) ALERTS:  
-Sep 29 07:51:48 ids01 snort[[8000]: UDP: 0 (.000%) LOGGED:  
-Sep 29 07:51:48 ids01 snort[[8000]: ICMP: 164 (.600%) PASSED:  
-Sep 29 07:51:48 ids01 snort[[8000]: ARP: 0 (.000%)  
-Sep 29 07:51:48 ids01 snort[[8000]: IPv6: 0 (.000%)  
-Sep 29 07:51:48 ids01 snort[[8000]: IPX: 0 (.000%)  
-Sep 29 07:51:48 ids01 snort[[8000]: OTHER: 0 (.000%)  
-Sep 29 07:51:48 ids01 snort[[8000]: DISCARD: 0 (.000%)  
-Sep 29 07:51:48 ids01 snort[[8000]: ===============================================================================  
-Sep 29 07:51:48 ids01 snort[[8000]: Fragmentation Stats:  
-Sep 29 07:51:48 ids01 snort[[8000]: Fragmented IP Packets: 0 (.000%)  
-Sep 29 07:51:48 ids01 snort[[8000]: Fragment Trackers:  
-Sep 29 07:51:48 ids01 snort[[8000]: Rebuilt IP Packets:  
-Sep 29 07:51:48 ids01 snort[[8000]: Frag elements used:  
-Sep 29 07:51:48 ids01 snort[[8000]: Discarded(incomplete):  
-Sep 29 07:51:48 ids01 snort[[8000]: Discarded(timeout):  
-Sep 29 07:51:48 ids01 snort[[8000]: Frag2 memory faults:  
-Sep 29 07:51:48 ids01 snort[[8000]: ===============================================================================  
-Sep 29 07:51:48 ids01 snort[[8000]: TCP Stream Reassembly Stats:  
-Sep 29 07:51:48 ids01 snort[[8000]: TCP Packets Used: 27152 (99.400%)  
-Sep 29 07:51:48 ids01 snort[[8000]: Stream Trackers: 1  
-Sep 29 07:51:48 ids01 snort[[8000]: Stream flushes:  
-Sep 29 07:51:48 ids01 snort[[8000]: Segments used:  
-Sep 29 07:51:48 ids01 snort[[8000]: Stream4 Memory Faults:  
-Sep 29 07:51:48 ids01 snort[[8000]: ===============================================================================  
-  
-  
-  
-  
-  
- But remember: With versions prior to 1.8.3 you have to restart snort to get  
-new statistics, so always combine the __kill -SIGUSR1__ with  
-a snort restart if not using the actual version!  
-  
-  
-  
-  
- You first should have a look on the first 2 lines. If snort tells you that  
-there are dropped packets you have to take a very close look on your  
-configuration of the snort box itself not only (but including) the snort  
-configuration.  
-  
-  
-  
-  
- E.g. stop all unnecessary services which are not vital for the box. And  
-take a look on the output of the __top__ command. If the  
-idle counter is very low you should figure out which processes eat up all  
-of your cpu time and eventually outsource the corresponding program  
-packets. This is e.g. true when using ACID and the underlying database and  
-snort on the same machine with less memory and/or cpu.  
-  
-  
-  
-  
- The other statistical data lines give you an overview of some of the  
-preprocessors and their work. You should also have a look on the memory  
-faults sections. If the number is not 0 you should have a look on your  
-memory usage and eventually configure the preprocessors to use more memory  
-(take a look to the appropriate section in  
-''/etc/snort/snort.conf'').  
-  
-  
-  
-  
- Now a short script which I was inspired by Greg Sarsons to get snort's  
-internal statistics, save them to a file and restart snort.  
-  
-  
-  
-  
- The statistics file will be archived to  
-''/var/log/snort/archive'' so you have to create that  
-directory first ;)  
-  
-  
-  
-  
-  
-#!/bin/bash  
-# Script to generate and extract snort statistics from syslog or given file  
-# generated after kill -USR1 `snort-pidb  
-#  
-# This script assumes that the pid is logged into the logfile!  
-# This can be obtained using the following line in snort.conf:  
-# output alert_syslog: LOG_AUTH LOG_ALERT LOG_PID  
-#  
-# (c) Sandro Poppi 2001  
-# Released under GPL  
-echo "Starting gathering snort internal statistics. Please be patient..."  
-if [[ "$1." == "." -o ! -e "$1" ] ; then  
-# no or unexistent file given, using default  
-log_file="/var/log/messages"  
-else  
-# when using non-standard logfile location make sure snort uses this logfile  
-# when sending signal USR1 else this script won't work!  
-log_file="$1"  
-fi  
-# find out snort pids  
-snort_pid=`/sbin/pidof snort`  
-# get internal statistics for all snort processes  
-# not using killall to get already sorted output  
-for i in `echo $snort_pid` ; do  
-kill -USR1 $i  
-# sleep for 2 secs to let snort time to send statistics to syslog ;)  
-sleep 2  
-done  
-# immediately restart snort after sending signal USR1  
-# this may be ommitted when using CVS version of snort after about 01.11.2001  
-# or any version from 1.8.2 or higher  
-/etc/rc.d/init.d/snortd restart  
-for i in `echo $snort_pid` ; do  
-# process logfile  
-filename=/var/log/snort/archive/snort.`date "+%Y-%m-%d"`.$i.log  
-# check for existing file and rename it if existing  
-if [[ -e "$filename" ] ; then  
-mv "$filename" "$filename.bak"  
-fi  
-egrep "snort\[[$i\]:" $log_file b "$filename"  
-# check if there are dropped packets using lines like  
-# Oct 22 18:02:06 xbgh17183 snort[[573]: dropping (.000%) packets  
-if [[ "`egrep "dropping" $filename | awk -F "[[ (]" '{ print $7 }'`" != "" -a \  
-"`egrep -c "dropping" $filename`" != "" ] ; then  
-echo "Snort's dropping packets!!! Take a look on the configuration and/or the system's performance!!!"  
-fi  
-done  
-echo "Gathering snort internal statistics finished..."  
-  
-  
-  
-----  
-!4.2.5. Testing Snort  
-  
- To test snort you should edit ''/etc/rc.d/init.d/snortd''  
-and make the interface listen on the loopback device  
-''lo''. For people with a network card installed you can  
-use ''eth0'' instead but you have to use a second pc to  
-run snot because no packet is sent over the interface if snot and snort are  
-run on the same machine!  
-  
-  
-  
-  
- Probably the simplest way to test snort is to use ''snot''  
-which can be found on http://www.sec33.com/sniph/.  
-  
-  
-  
-  
- You have to have libnet installed for snot. Since on !RedHat 7.x there is no  
-RPM available you could use ''libnet-1..2-6mdk.i586.rpm''  
-from Mandrake Soft, which can be found on http://rpmfind.net/ and of course on  
-Mandrake's site http://www.mandrake.com/. Most  
-Mandrake RPMs could be used with no problem on a !RedHat system. But be  
-warned: Mandrake does not provide ''i386'' RPMs so you  
-can't use them with a processor less than an old Pentium P5. In such a case  
-you have to get the sources from http://www.packetfactory.net/projects/libnet  
-and compile it from scratch yourself.  
-  
-  
-  
-  
- To compile snot you only have to untar the tarball, cd into the snot  
-directory and call ''make''. If compilation exits without  
-an error snot is ready to use, if not you are almost always missing some  
-development packages.  
-  
-  
-  
-  
- To prepare snot you should first copy  
-''/etc/snort/snort.conf'' into the snot directory and  
-''cat'' one or more rule files to the end of the copied  
-''snort.conf'' using e.g.:  
-  
-  
-  
-  
- __ cat /etc/snort/backdoor.rules bb snort.conf  
-__  
-  
-  
-  
-  
- Then on one console you should call __tail -f  
-/var/log/messages__, while on another you should try to run the  
-tests.  
-  
-  
-  
-  
- Snot can then be called the following way assuming you used  
-''lo'' as the interface name in the snortd initscript:  
-  
-  
-  
-  
- __ ./snot -r snort.conf -d localhost -n 5  
-__  
-  
-  
-  
-  
- With that command you tell snot to use the copied  
-''snort.conf'', the destination  
-is ''localhost'' and for not triggering too many alerts  
-restrict it to a maximum of 5.  
-  
-  
-  
-  
- You'll probably get some messages saying ignoring additional parameters  
-because snot can not handle yet the new parameters introduced in snort 1.8.  
-Don't panic, just ignore the messages, snot works fine though.  
-  
-  
-  
-  
- In ''/var/log/messages'' you should now see some snort  
-alerts, e.g.:  
-  
-  
-  
-  
-  
-Sep 10 18:22:33 ids01 snort[[1536]: `lob !GateCrasher access: 192.168.213.151:6969 -b 127...1:3170  
-Sep 10 18:22:33 ids01 snort[[1536]: `lob !GateCrasher access: 192.168.213.151:6969 -b 127...1:3170  
-Sep 10 18:22:33 ids01 snort[[1536]: `lob !GateCrasher access: 192.168.155.231:6969 -b 127...1:57580  
-Sep 10 18:22:33 ids01 snort[[1536]: `lob !GateCrasher access: 192.168.155.231:6969 -b 127...1:57580  
-Sep 10 18:22:33 ids01 snort[[1536]: `lob Deep Throat access: 192.168.170.42:2140 -b 127...1:60521  
-  
-  
-  
-  
-  
- If you get similiar alerts it's ok, if not please take again a look on your  
-configuration until you get this far.  
-  
-  
-  
-  
- Now it's time to edit ''/etc/snort/snort.conf'' again and  
-put in the correct value to the ''INTERFACE'' variable,  
-restart snort and get a cup of coffee. You have deserved it!  
-  
-  
-----  
-!!4.3. Configuring MySQL  
-  
- To allow Snort to send alerts to MySQL you first have to install MySQL. With  
-most linux distributions there are MySQL packages available so you should  
-use them. If not you'll probably have to compile and install it from scratch  
-by downloading the tarball from http://www.mysql.org/. Take a look at  
-the documentation shipped with MySQL to set it up.  
-  
-  
-  
-  
- When you have a running MySQL daemon (with !RedHat after installing the RPMs  
-run __/etc/rc.d/init.d/mysql start__) you have to initialize  
-a snort database. This is documented in the next section.  
-  
-  
-  
-  
- Since there should be a password set for each account you'll have to use the  
-''-p'' option on the mysql commandline.  
-  
-  
-  
-  
-  
-[[root@ids01 /root]# mysql -u root -p  
-Reading table information for completion of table and column names  
-You can turn off this feature to get a quicker startup with -A  
-Welcome to the MySQL monitor. Commands end with ; or \g.  
-Your MySQL connection id is 133 to server version: 3.23.32  
-Type 'help;' or '\h' for help. Type '\c' to clear the buffer  
-mysqlbcreate database snort;  
-Query OK, 1 row affected (.00 sec)  
-mysqlb connect snort  
-Reading table information for completion of table and column names  
-You can turn off this feature to get a quicker startup with -A  
-Connection id: 139  
-Current database: snort  
-mysqlb status  
---------------  
-mysql Ver 11.12 Distrib 3.23.32, for redhat-linux-gnu (i386)  
-Connection id: 139  
-Current database: snort  
-Current user: root@localhost  
-Current pager: stdout  
-Using outfile: ''  
-Server version: 3.23.32  
-Protocol version: 10  
-Connection: Localhost via UNIX socket  
-Client characterset: latin1  
-Server characterset: latin1  
-UNIX socket: /var/lib/mysql/mysql.sock  
-Uptime: 1 day 2 hours 6 min 21 sec  
-Threads: 14 Questions: 4272 Slow queries: 0 Opens: 58 Flush tables: 1 Open tables: 18 Queries per second avg: .045  
---------------  
-mysqlb grant CREATE,INSERT,SELECT,DELETE,UPDATE on snort.* to snort@localhost;  
-Query OK, 0 rows affected (.00 sec)  
-mysqlb flush privileges;  
-Query OK, 0 rows affected (.00 sec)  
-mysqlb exit  
-Bye  
-  
-  
-  
-  
-  
- To generate the required table structure of the database use the  
-''create_mysql'' script which can be found in the contrib  
-section of the original tarball or my RPM.  
-  
-  
-  
-  
- __ [[root@ids01 /root]# mysql -u root -p snort ` ./contrib/create_mysql  
-__  
-  
-  
-  
-  
- You'll have to add a userid/password pair for the database, remember to  
-change ''xxxx'' to a password suitable for your  
-environment!  
-  
-  
-  
-  
-  
-[[root@ids01 /root]# mysql -u root -p mysql  
-Reading table information for completion of table and column names  
-You can turn off this feature to get a quicker startup with -A  
-Welcome to the MySQL monitor. Commands end with ; or \g.  
-Your MySQL connection id is 148 to server version: 3.23.32  
-Type 'help;' or '\h' for help. Type '\c' to clear the buffer  
-mysqlb insert into user (User,Password) values('snort',PASSWORD('xxxx'));  
-Query OK, 1 row affected (.00 sec)  
-mysqlb exit  
-Bye  
-  
-  
-  
-  
-  
- Now add some extra tables for your convenience shipped in the contrib  
-section of the snort tarball and my RPM using the command  
-  
-  
-  
-  
- __ zcat snortdb-extra.gz | mysql -u root -p snort  
-__  
-  
-  
-  
-  
- If you wish to use the archiving feature of ACID you'll have to create  
-another database ''snort_archive'' (or any other name you  
-prefer) exactly the same way as you defined the ''snort''  
-database.  
-  
-  
-  
-  
- From now on the database is ready to be used for logging with the database  
-output module of snort which you could now activate in  
-''/etc/snort/snort.conf''.  
-  
-  
-----  
-!!4.4. Configuring ADODB  
-  
- ADODB is a required part for ACID. It delivers database connection support  
-for PHP based programs like ACID.  
-  
-  
-  
-  
- Install ADODB in a directory available for your webserver. On a !RedHat box  
-this usually is ''/var/www/html/adodb/''.  
-  
-  
-  
-  
- In ADODB version 1.31 there is a bug in ''adodb.inc.php''  
-which may still exist in newer versions. You'll have to change the path in  
-line 40 to reflect your local requirements. It's vital to delete the command  
-__dirname()__ completely so that it looks like this:  
-  
-  
-  
-  
-  
- if (!defined('_ADODB_LAYER')) {  
-define('_ADODB_LAYER',1);  
-define('ADODB_FETCH_DEFAULT',);  
-define('ADODB_FETCH_NUM',1);  
-define('ADODB_FETCH_ASSOC',2);  
-define('ADODB_FETCH_BOTH',3);  
-GLOBAL  
-$ADODB_vers, // database version  
-$ADODB_Database, // last database driver used  
-$ADODB_COUNTRECS, // count number of records returned - slows down query  
-$ADODB_CACHE_DIR, // directory to cache recordsets  
-$ADODB_FETCH_MODE; // DEFAULT, NUM, ASSOC or BOTH. Default follows native driver default...  
-$ADODB_FETCH_MODE = ADODB_FETCH_DEFAULT;  
-/**  
-* SET THE VALUE BELOW TO THE DIRECTORY WHERE THIS FILE RESIDES  
-* ADODB_!RootPath has been renamed ADODB_DIR  
-*/  
-if (!defined('ADODB_DIR')) define('ADODB_DIR','/var/www/html/adodb');  
-  
-  
-  
-  
-  
- That's all what has to be done with ADODB.  
-  
-  
-----  
-!!4.5. Configuring PHPlot  
-  
- After downloading PHPlot just tar the package into a directory visible for  
-your webserver. On a !RedHat box this usually is  
-''/var/www/html/phplot/''. Nothing to configure here.  
-  
-  
-----  
-!!4.6. Configuring ACID  
-  
- As stated before ACID needs a couple of additional programs installed to  
-work correctly. While a database system like MySQL version 3.23+, a  
-webserver with PHP 4..2+ support like ''apache'' with the  
-PHP module ''mod_php'' and ADODB version .93+ are  
-required, the graphics library ''gd'' version 1.8+ and  
-PHPlot version 4.4.6+ are optional but recommended. Since  
-''apache'', the PHP module and  
-''gd'' are almost always included and installed with any  
-linux distribution they are not covered in this document.  
-  
-  
-  
-  
- For snort 1.8+ you'll need at least ACID .9.6b13. ACID is shipped with my  
-RPM in the contrib section but may be an outdated version since ACID is  
-developed rapidly. So you should always have a look at ACID's homepage if a  
-newer version exists.  
-  
-  
-  
-  
- Install ACID into a directory visible to your webserver like  
-''/var/www/html/acid/''.  
-  
-  
-  
-  
- In ''/var/www/html/acid/acid_conf.php'' you'll have to edit  
-some variables to suit your environment.  
-  
-  
-  
-  
- First of all define the database type in the variable  
-''DBtype''. Next define all ''alert_*''  
-and ''archive_*'' variables.  
-  
-  
-  
-  
- In ''!ChartLib_path'' you define the path to PHPlot, in our  
-case ''/var/www.html/phplot''.  
-  
-  
-  
-  
- The last variable you have to define is ''portscan_file''  
-where you put in the complete path and filename of snort's portscan logfile.  
-  
-  
-  
-  
- All other variables should be sufficient for now. You can edit them to suit  
-your needs.  
-  
-  
-  
-  
- Here's the config I use:  
-  
-  
-  
-  
-  
-`?php  
-$ACID_VERSION = ".9.6b15";  
-/* Path to the DB abstraction library  
-* (Note: DO NOT include a trailing backslash after the directory)  
-* e.g. $foo = "/tmp" [[OK]  
-* $foo = "/tmp/" [[OK]  
-* $foo = "c:\tmp" [[OK]  
-* $foo = "c:\tmp\" [[WRONG]  
-*/  
-$DBlib_path = "/var/www/html/adodb";  
-/* The type of underlying alert database  
-*  
-* MySQL : "mysql"  
-* PostgresSQL : "postgres"  
-*/  
-$DBtype = "mysql";  
-/* Alert DB connection parameters  
-* - $alert_dbname : MySQL database name of Snort alert DB  
-* - $alert_host : host on which the DB is stored  
-* - $alert_port : port on which to access the DB  
-* - $alert_user : login to the database with this user  
-* - $alert_password : password of the DB user  
-*  
-* This information can be gleaned from the Snort database  
-* output plugin configuration.  
-*/  
-$alert_dbname = "snort";  
-$alert_host = "localhost";  
-$alert_port = "";  
-$alert_user = "snort";  
-$alert_password = "xxxx";  
-/* Archive DB connection parameters */  
-$archive_dbname = "snort_archive";  
-$archive_host = "localhost";  
-$archive_port = "";  
-$archive_user = "snort";  
-$archive_password = "xxxx";  
-/* Type of DB connection to use  
-* 1 : use a persistant connection (pconnect)  
-* 2 : use a normal connection (connect)  
-*/  
-$db_connect_method = 1;  
-/* Path to the graphing library  
-* (Note: DO NOT include a trailing backslash after the directory)  
-*/  
-$!ChartLib_path = "/var/www/html/phplot";  
-/* File format of charts ('png', 'jpeg', 'gif') */  
-$chart_file_format = "png";  
-/* Chart default colors - (red, green, blue)  
-* - $chart_bg_color_default : background color of chart  
-* - $chart_lgrid_color_default : gridline color of chart  
-* - $chart_bar_color_default : bar/line color of chart  
-*/  
-$chart_bg_color_default = array(255,255,255);  
-$chart_lgrid_color_default = array(205,205,205);  
-$chart_bar_color_default = array(190, 5, 5);  
-/* Maximum number of rows per criteria element */  
-$MAX_ROWS = 20;  
-/* Number of rows to display for any query results */  
-$show_rows = 50;  
-/* Number of items to return during a snapshot  
-* Last _X_ # of alerts/unique alerts/ports/IP  
-*/  
-$last_num_alerts = 15;  
-$last_num_ualerts = 15;  
-$last_num_uports = 15;  
-$last_num_uaddr = 15;  
-/* Number of items to return during a snapshot  
-* Most Frequent unique alerts/IPs/ports  
-*/  
-$freq_num_alerts = 5;  
-$freq_num_uaddr = 15;  
-$freq_num_uports = 15;  
-/* Number of scroll buttons to use when displaying query results */  
-$max_scroll_buttons = 12;  
-/* Debug mode - how much debugging information should be shown  
-* Timing mode - display timing information  
-* SQL trace mode - log SQL statements  
-* 0 : no extra information  
-* 1 : debugging information  
-* 2 : extended debugging information  
-*  
-* HTML no cache - whether a no-cache directive should be sent  
-* to the browser (should be = 1 for IE)  
-*  
-* SQL trace file - file to log SQL traces  
-*/  
-$debug_mode = ;  
-$debug_time_mode = 1;  
-$html_no_cache = 1;  
-$sql_trace_mode = ;  
-$sql_trace_file = "";  
-/* Auto-Screen refresh  
-* - Refresh_Stat_Page - Should certain statistics pages refresh?  
-* - Stat_Page_Refresh_Time - refresh interval (in seconds)  
-*/  
-$refresh_stat_page = 1;  
-$stat_page_refresh_time = 180;  
-/* Display First/Previous/Last timestamps for alerts or  
-* just First/Last on the Unique Alert listing.  
-* 1: yes  
-* : no  
-*/  
-$show_previous_alert = 1;  
-/* Sets maximum execution time (in seconds) of any particular page.  
-* Note: this overrides the PHP configuration file variable  
-* max_execution_time. Thus script can run for a total of  
-* ($max_script_runtime + max_execution_time) seconds  
-*/  
-$max_script_runtime = 180;  
-/* How should the IP address criteria be entered in the Search screen?  
-* 1 : each octet is a separate field  
-* 2 : entire address is as a single field  
-*/  
-$ip_address_input = 2;  
-/* Resolve IP to FQDN (on certain queries?)  
-* 1 : yes  
-* 0 : no  
-*/  
-$resolve_IP = ;  
-/* Should summary stats be calculated on every Query Results page  
-* (Enabling this option will slow page loading time)  
-*/  
-$show_summary_stats = 1;  
-/* DNS cache lifetime (in minutes) */  
-$dns_cache_lifetime = 20160;  
-/* Whois information cache lifetime (in minutes) */  
-$whois_cache_lifetime = 40320;  
-/* Snort spp_portscan log file */  
-$portscan_file = "/var/log/snort/portscan.log";  
-/* Event cache Auto-update  
-*  
-* Should the event cache be verified and updated on every  
-* page log? Otherwise, the cache will have to be explicitly  
-* updated from the 'cache and status' page.  
-*  
-* Note: enabling this option could substantially slow down  
-* the page loading time when there are many uncached alerts.  
-* However, this is only a one-time penalty.  
-*  
-* 1 : yes  
-* 0 : no  
-*/  
-$event_cache_auto_update = 1;  
-/* Link to external Whois query */  
-$external_whois_link = "http://www.samspade.org/t/ipwhois?a=";  
-?b  
-  
-  
-  
-  
-  
- You wonder why I use ''xxxx'' as password? Well, do you  
-like your password to be available for everyone in the world? j/k b8)  
-  
-  
-  
-  
- When first calling ACID via your browser you'll get a hint that you have to  
-install ACID support in the chosen database. Click on  
-''Setup'' and ACID should create the required entries in  
-the database. If everything is set up correctly you'll get all informations  
-which are currently in the database, normally nothing at this time ;)  
-  
-  
-  
-  
- Try to trigger some snort rules with ''snot'' (see section  
-above) or e.g. ''nmap'' (see http://www.nmap.org/, a portscanner with  
-many more capabilities) or ''nessus'' (see http://www.nessus.org/, a security  
-scanner to find vulnerabilities of a system).  
-  
-  
-  
-  
- Now you should get all alarms right the time they happen with ACID.  
-  
-  
-----  
-!!4.7. Configuring !SnortSnarf  
-  
- !SnortSnarf is another tool which analyses snort's logfile instead of a  
-database.  
-  
-  
-  
-  
- Install !SnortSnarf by taring it into a directory you like, I use  
-''/opt/!SnortSnarf/''.  
-  
-  
-  
-  
- Copy ''/opt/!SnortSnarf/Time-modules/lib/Time'' to  
-''/opt/!SnortSnarf/include/!SnortSnarf/Time'' to make the  
-required perl modules available for !SnortSnarf .  
-  
-  
-  
-  
- Copy the following files to the webserver's ''cgi-bin''  
-directory (e.g. ''/var/www.cgi-bin/''):  
-  
-  
-  
-  
-  
- /opt/!SnortSnarf/cgi/*  
-/opt/!SnortSnarf/include/ann_xml.pl  
-/opt/!SnortSnarf/include/web_utils.pl  
-/opt/!SnortSnarf/include/xml_help.pl  
-  
-  
-  
-  
-  
- If you would like to use the annotation feature with which you can create  
-notes to an incident in !SnortSnarf you first have to create the directory  
-''/var/www/html/!SnortSnarf/annotations'', copy  
-''/opt/!SnortSnarf/new-annotation-base.xml'' to  
-''/var/www/html/!SnortSnarf/annotations'' and call  
-  
-  
-  
-  
- __./setup_anns_dir.pl -g apache /var/www/html/!SnortSnarf/annotations__  
-  
-  
-  
-  
- in ''/opt/!SnortSnarf/utilities''.  
-  
-  
-  
-  
- Check the rights in  
-''/var/www/html/!SnortSnarf/annotations'' and make them look  
-like this:  
-  
-  
-  
-  
-  
-[[root@ids01 !SnortSnarf]# ll -a /var/www/html/!SnortSnarf/annotations/  
-total 16  
-drwxrwx--- 2 root apache 4096 May 23 14:31 .  
-drwxr-xr-x 8 root root 4096 May 23 14:17 ..  
--rw-r--r-- 1 apache apache 478 May 23 14:31 new-annotation-base.xml  
-  
-  
-  
-  
-  
- I created a wrapper script called  
-''/opt/!SnortSnarf/snortsnarf.sh'' to get rid of the nasty  
-@INC errors (someone with better perl know-how could give me a hint how to  
-get rid of the errors, thx). I'm calling  
-''/opt/!SnortSnarf/snortsnarf.sh'' via cron every hour from  
-6 am to 6 pm.  
-  
-  
-  
-  
- My crontab enrty looks like this:  
-  
-  
-  
-  
-  
-# generate !SnortSnarf statistics every hour from 6am to 6pm  
-0 6,7,8,9,10,11,12,13,14,15,16,17,18 * * * /opt/!SnortSnarf/snortsnarf.sh  
-  
-  
-  
-  
-  
- !SnortSnarf is called to analyse five logfiles  
-''/var/log/messages*'', put the generated HTML files into  
-''/var/www/html/!SnortSnarf'' and make use of the annotation  
-feature which is described above.  
-  
-  
-  
-  
- Here's the ''/opt/!SnortSnarf/snortsnarf.sh'' listing:  
-  
-  
-  
-  
-  
-#!/bin/sh  
-# wrapper for use with crontab to get rid of the @INC problem  
-# Poppi, 22.05.2001  
-cd /opt/!SnortSnarf  
-./snortsnarf.pl -d /var/www/html/!SnortSnarf -db /var/www/html/!SnortSnarf/annotations/new-annotation-base.xml -dns -rulesfile /etc/snort/snort.conf -ldir "file://var/log/snort/" /var/log/messages /var/log/messages.1 /var/log/messages.2 /var/log/messages.3 /var/log/messages.4  
-  
-  
-  
-  
-  
- Test !SnortSnarf by calling ''snortsnarf.sh'' and take a  
-look with your browser to ''/var/www/html/!SnortSnarf/''.  
-  
-  
-----  
-!!4.8. Configuring Arachnids_upd  
-  
- Be warned: Automatic updating the rules without any encryption or  
-athentication can create backdoors because the rules could be compromised to  
-allow an attacker to be hidden from your IDS! So use that with care!  
-  
-  
-  
-  
- Another issue is that www.whitehats.com is often offline so no rules can be  
-downloaded.  
-  
-  
-  
-  
- Untar the arachnids_upd package to a directory of your choice, I choose  
-''/opt/arachnids_upd/''.  
-  
-  
-  
-  
- For snort 1.8+ you'll have to edit  
-''/opt/arachnids_upd/arachnids_upd.pl'' and change the  
-filename of the file to download to:  
-  
-  
-  
-  
-  
- my $url = "http://www.whitehats.com/ids/vision18.rules.gz"; # Default URL.  
-  
-  
-  
-  
-  
- Since Arachnids_upd makes use of ''wget'' it should be  
-installed on your system and configured to work with your internet  
-connection.  
-  
-  
-  
-  
- An example version of ~.wgetrc is shown here for connecting via a proxy  
-server with user authentication:  
-  
-  
-  
-  
-  
- proxy_user = user  
-proxy_passwd = xxxx  
-http_proxy = `proxyb:`portb  
-ftp_proxy = `proxyb:`portb  
-use_proxy = on  
-  
-  
-  
-  
-  
- Replace `proxyb with the name or ip address of your proxy and  
-`portb with the port number the proxy uses. If you don't use a proxy  
-you don't need any of these entries.  
-  
-  
-  
-  
- Again I created a shell script to get new rules, change the variable names  
-of ''vision.rules'' to suite the definition in  
-''/etc/snort/snort.conf'' and restart snort for the new  
-rules to take effect.  
-  
-  
-  
-  
-  
-#!/bin/sh  
-# Script to generate the correct updates of vision.rules using arachnids_upd.pl  
-# Poppi 22.05.2001  
-# get new rules (requires ~/.wgetrc to be set up to access internet)  
-/opt/arachnids_upd/arachnids_upd.pl -o /opt/arachnids_upd/vision.rules -b /opt/arachnids_upd/rules.backup/ -c  
-# change the variable names according to the ones used in /etc/snort/snort.conf and copy the new file to the right place  
-cat /opt/arachnids_upd/vision.rules | sed s/EXTERNAL/EXTERNAL_NET/g | sed s/INTERNAL/HOME_NET/g b /etc/snort/vision.rules  
-# restart snort for the rules to take effect  
-/etc/rc.d/init.d/snortd restart  
-  
-  
-  
-  
-  
- As arachnids_upd is also capable of deleting rules in  
-''vision.rules'' while downloading you can if you like  
-edit ''/opt/arachnids_upd/arachnids.ignore'' and put in the  
-IDS numbers which should be ignored.  
-  
-  
-  
-  
-  
- # Put the IDS numbers of the rules that should be disabled in here.  
-# One number per line.  
-# Examples:  
-1 # Ignore IDS1  
-2 # Ignore IDS2  
-3 # Ignore ISD3  
-# I think you get it now :)  
-  
-  
-  
-----  
-!!4.9. Configuring Swatch  
-  
- Swatch is an excellent package to take care for any logfile. It can be  
-configured using regular expressions to alert if anything bad is logged in  
-the logfile.  
-  
-  
-  
-  
- Swatch requires the following perl modules to be installed:  
-  
-  
-  
-  
-  
- perl-!TimeDate  
-perl-Date-Calc  
-perl-Time-!HiRes  
-perl-File-Tail  
-  
-  
-  
-  
-  
- Swatch is available as an RPM from http://www.lug-burghausen.org/projects/Snort-Statistics/swatch-3..2-1.noarch.rpm  
-along with the source RPM I created http://www.lug-burghausen.org/projects/Snort-Statistics/swatch-3..2-1.src.rpm.  
-  
-  
-  
-  
- Swatch is configured via a single config file  
-''/etc/swatch/swatch.conf''.  
-  
-  
-  
-  
- I'm shipping it with a demo ''swatch.conf'' containing two  
-rules for snort messages and snort errors shown below along with some other  
-examples from the original swatch package.  
-  
-  
-  
-  
-  
-# global swatch.conf file  
-# * Poppi, 30.04.2001  
-# - initial version  
-#  
-# * Poppi, 08.06.2001  
-# - added error support; make sure to start swatch BEFORE snort ;)  
-#  
-# Poppi, 19.09.2001  
-# - added throttle for not getting too much alarms of the same incident  
-# normal snort messages (with PID)  
-# get rid of double alerts for 10 secs, e.g. pings  
-watchfor /snort\[[/  
-bell  
-exec /etc/snort/snort-check $  
-throttle 00:00:10  
-# snort error messages could be with or without the [[!] indicator  
-watchfor /snort: (\[[\!\])* ERROR/  
-bell  
-exec /etc/snort/snort-check $  
-  
-  
-  
-  
-  
- The first rule is for getting all alerts generated via the output module  
-''alert_syslog'', the second for getting any error messages  
-snort generates at startup if anything went wrong (like errors in a rule  
-file).  
-  
-  
-  
-  
- Both rules do ring the pc bell (well, if the sensor is used in a room  
-without operators in sight this does not make much sense ;) and make use of  
-the ''snort-check'' script described before to alert the  
-given persons. In ''$'' swatch gives you the complete line  
-of the logfile entry which triggered swatch.  
-  
-  
-  
-  
- Swatch has to be started prior to snort. Instead of generating an own swatch  
-initscript with the correct ''chkconfig'' dates I chose to  
-include it in ''/etc/rc.d/init.d/snortd'' because the  
-dependencies of my use of swatch are such that I - again for me - decided to  
-do that. I know that's not the "fine english way", and the swatch part can  
-be put into an own initscript relatively easy. Maybe I will change this in  
-the future.  
-  
-  
-----  
-!!!5. Security Issues  
-  
- Snort is running under an own userid/group pair  
-''snort/snort''. This should make sure that any buffer  
-overflow not yet fixed (if any) only gets the rights the snort user has. For  
-people for whom this is not enough you might use a changeroot'ed environment  
-using snort's command line option ''-t''. But please don't  
-ask me how to create it, I've never done it and maybe will not do it anytime.  
-  
-  
-  
-  
- As with all security related systems don't allow more services as needed. If  
-you do a standard installation of any linux distribution take a look into  
-''/etc/inetd.conf'' if your distribution is still using the  
-older inetd or ''/etc/xinetd.d/*'' on an  
-''xinetd'' based system and disable all services  
-not really vital for your system. E.g. you don't want to use telnet, replace  
-it with ssh.  
-  
-  
-  
-  
- Also take a look at the initscripts, on a Sytem V based system like !RedHat  
-found in ''/etc/rc.d/init.d/*''. If there are any services  
-like ''nfs'' and ''portmap'' which you  
-don't use on such a system delete the corresponding packages completely.  
-  
-  
-  
-  
- And you should read a lot of security related papers and HOWTOs, like the  
-''Security-HOWTO'', the ''System Administrators  
-Guide'' or ''Network Administrator guide.''  
-  
-  
-  
-  
- Or take a look on various security related websites like http://www.securityfocus.com/,  
-http://www.linuxsecurity.org/ or  
-http://www.insecure.org/  
-  
-  
-----  
-!!!6. Getting Help  
-  
- In the end you might find yourself unable to solve your problems  
-and need help from someone else. The most efficient way is either  
-to ask someone local or in your nearest Linux user group, search  
-the web for the nearest one.  
-  
-  
-  
-  
- But first of all try a look on http://www.snort.org/ and the snort  
-mailinglists. The people out there helped me very much.  
-  
-  
-  
-  
- Another possibility is to ask on Usenet News in one of the many,  
-many newsgroups available. The problem is that these have such a  
-high volume and noise (called low signal-to-noise ratio) that your  
-question can easily fall through unanswered.  
-  
-  
-  
-  
- No matter where you ask it is important to ask well or you will  
-not be taken seriously. Saying just ''snort  
-does not work'' is not going to help you and instead the  
-noise level is increased even further and if you are lucky someone  
-will ask you to clarify.  
-  
-  
-  
-  
- Instead describe your problems in some detail that will enable  
-people to help you. The problem could lie somewhere you did not  
-expect. Therefore you are advised to list the following information  
-about your system:  
-  
-  
-  
-  
-  
-  
-  
-  
-; Software:  
-  
-  
-  
-  
-  
-  
-****  
-  
-/etc/snort/snort.conf  
-  
-  
-****  
-****  
-  
-/etc/swatch/swatch.conf if used  
-  
-  
-****  
-****  
-  
- excerpt of /var/log/messages, but only filter the relevant  
-entries  
-  
-  
-  
-****  
-****  
-  
- used Linux distribution or operating system and version  
-  
-  
-  
-****  
-****  
-  
- Software that shows the error (with version number  
-or date)  
-  
-  
-  
-****  
-  
-  
-  
-  
-  
-  
-  
- And you can ask me directly. But please remember: I'm having a live beyond  
-computers and my spare time is rare. I will almost always answer my emails  
-but this can take some times. Also I'm subscribed to the snort-users  
-mailinglist too so you reach me this way too.  
-  
-  
-----  
-!!!7. Questions and Answers  
-  
- This is just a collection of what I believe are the most common  
-questions people might have. Give me more feedback and I will turn  
-this section into a proper FAQ .  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-****  
-  
- Q:  
-  
-  
-  
-  
- A:  
-  
-  
-  
-****  
+Describe [HowToSnortStatisticsHOWTO ] here.