Albert E. Whale
    - Discovered bug in 1.1 that made fw_check() too strict with looking for
      precisely FW_MSG_SEARCH in a logging prefix instead of just looking
      for FW_MSG_SEARCH _within_ the logging prefix.
    - Suggested use of CPAN downloads of perl modules in install.pl.
    - Bugfix for "-" character missing from Mandrake version of ps.
    - Bugfix for duplicate lines for tcpwrapper auto block IPs in
      /etc/hosts.deny.
    - Lots of great testing and feedback on new versions and -pre releases.
    - Suggested the ability to re-import scanning IP directories.
    - Bugfix for zero print_scale_factor in --Analyze-msgs mode.
    - Bugfix for auto-ignored addresses appearing in DShield alerts.
    - Bugfix for not timing-out blocked IP addresses from a previous psad
      execution.
    - Suggested putting -pre release versions in psad to make
      troubleshooting easier.
    - Discovered bug in syslog() message generation and --fw-block arg.
    - Lots of great testing for auto-blocking code... even contributed
      root access on some systems to help troubleshoot.
    - Suggested socket communication in --fw-block mode.
    - Contributed the logrotate.psad file.
    - Suggested that the AUTO_IPT_SOCK file get recreated if some other
      process comes in and deletes it.
    - Suggested psadwatchd parse EMAIL_ADDRESSES from psad.conf.
    - Found bug where auto-blocking stops working after receiving a HUP
      signal.
    - Found bug for not properly including elements of the
      @connected_subnets_cidr array.
    - Found bug for not using thresholds in "top attackers" section of
      --Status output.
    - Helped troubleshoot the PL_sv_undef issue for installation on Mandriva
      systems.
    - Discovered IP resolution bug in psad-2.1 for auto_dl lines.
    - Reported an uninitialized variable bug in --fw-block-ip usage (github
      issue #17).

Manual Caphina
    - Greatly assisting in the first version of Bastille-NIDS which
      eventually became psad.

Tim Schaller
    - Identifying and submitting a patch for a particularly nasty bug for
      multiple scanned IPs.

Bruce Meyer
    - Psad testing and suggestions.

Peter Watkins
    - (Bastille Linux) psad/iptables interaction.

Sweth Chandramouli
    - (Bastille Linux) Various suggestions for psad and install.pl,
      including help with various Perl vagaries.

Jay Beale
    - (Bastille Linux) Excellent suggestions for psad reporting and enhanced
      security, and also for integrating psad with Bastille.

Ramiro Morales
    - Developed all pre-1.0 rpm packages of psad (see:
      http://rmrpms.tripod.com/psad/).
    - Various suggestions for psad installation (such as FHS compatibility).
    - Implemented init script patches.

Alexander Hoff
    - Psad stress testing for kmsgsd.

Ryan Delany
    - diskmond testing to help track down the "rdev" bug.

Damien Stuart
    - Suggested the zombie reaper code for whois processes, and uid/gid
      check.
    - Excellent suggestions for coding practices and strategies.

Donnie Armstrong
    - Suggested fix for incorrectly parsing ifconfig output (might have
      previously included ipv6 interfaces).

Ryan Bebeau
    - Suggested fix for AF_INET protocol error.

Cliff Rayman
    - Helped track down a nasty bug in which psad would parse iptables
      messages that included a dns name instead of just an ip address for
      the src and dst.
    - Performed lots of excellent testing and
      troubleshooting.

Henry Jobst
    - Bugfix in install.pl for chomp error.

Ray Curtis
    - Found bug in kmsgsd for undefined $service lines.
    - Comprehensive testing to help remove bugs including a difficult one in
      which psad gets periodically restarted.

Manuel Santos
    - Contributed the first bug report to help troublehshoot a potential bug
      in psad/whois interaction.
    - Suggested the auto blocking code should include support for tcp
      wrappers, and that the auto-blocking alerts should be configurable.

L-P Sundqvist
    - Suggested fix for tab vs. space bug in install.pl for
      /etc/syslog.conf.
    - Contributed design ideas to make psad run on linux distros that use
      BSD-style init scripts.

Eric Sawler
    - Suggested the ability to retain auto-blocked IPs even after a reboot.

C.Holman
    - Found, reported, and helped troubleshoot a bug in the ipchains
      protocol number to name mapping.

Mike McCandless
    - Asked whether or not there is documentation for the various psad
      configuration variables in psad.conf.  The "PSAD CONFIGURATION
      VARIABLES" section of the man page was the result.

Jason Czerak
    - Found and submitted a fix for a bug in which an IP would not be
      ignored even if it was given a 0 danger level in psad_auto_ips.
    - Suggested using the PREROUTING iptables chain along with "-t mangle"
      for the auto-blocking code.

Colin Rose
    - Discovered and helped troubleshoot a bug introduced when psad and
      bastille are installed on the same machine (bastille installs an older
      version of psad).

Ugo Viti
    - Discovered bug in auto-blocking code where the subject line would
      incorrectly identify the action that had been taken.
    - Discovered bug in subject line for alert emails not including the
      source IP if reverse dns did not work.
    - Suggested adding the FORWARD chain to the auto blocking code.
    - Found bug for email alert being reached prematurely.

Leif Westlye
    - Discovered a bug where psad would not allow commands to be different
      than the <cmd>Cmd name.  The bugfix allows someone to specify
      "/usr/bin/mailto" for the mailCmd for example.

Daniel Gubser
    - Wrote the diskmond, kmsgsd, and psadwatchd man pages.
    - Suggested compatibility mods for syslog-ng.
    - Develops and maintains Debian builds.

Amelia Lewis
    - Provided information on syslog-ng configs.

Nick Temple
    - Suggested sending alerts to abuse.net.

James N. Winner
    - Discovered bug that prevented psad from detecting scans through the
      iptables FORWARD chain.

David Krider
    - Discovered iptables path bug on SuSE 8.2.

Ciapato Manfredi
    - Reported psadwatchd bug where multiple useless processes were being
      spawned.

Ben Alcala
    - Helped troubleshoot diskmond utilization bug.

Sebastian Mastropiero
    - Suggested bugfix for missing pipe character in psad man page for
      psadfifo line in syslog.conf.

Jeff Lunglhofer
    - Suggested bugfix for packet counters and multiple scan destinations,
      bugfix for duplicate lines in auto-blocking files, and suggested
      feature by which psad can add auto blocking firewall rules at
      arbitrary points within a policy.

Ruben Vanhoutte
    - Bugfix for incorrect path to psadfifo in syslog.ng config.

Stefan Divjak
    - Suggested that psad ignore addresses such as 0.0.0.0, 127.0.0.1, and
      local interface ips from auto blocking routines.
    - Suggested a generic way to (un)block addresses using an external
      script.
    - Suggested psad offer analysis capabilities for snort alert files.

Martijn Kruissen
    - Suggested putting danger levels into psad email alert subjects.
    - Suggested custom logging line that that will trigger psad to auto
      block an IP.

Jeffrey Sofferin
    - Lots of great testing for conditions that might cause psad to die.
    - Bugfix in man page for -HUP option.
    - Suggested the --status-dl option.
    - Suggested MIN_ARCHIVE_DANGER_LEVEL.
    - Found bug for 24 hour dshield alerting interval.
    - Found bug for not preserving user modifications in auto_dl file.
    - Found bug on SuSE systems running syslog-ng where the syslog-ng.conf
      reconfig added by psad caused the daemon to not start.
    - Found initialization bug that caused signature danger levels to not
      be properly assigned by the /etc/psad/snort_rule_dl file.

Kenneth Grande
    - Suggested protocol-specific thresholds for email alerts.

Lenny Cartier
    - Wrote a spec file for Mandrake Linux.  An rpm built from this spec
      file is in the user contribs section of the Mandrake site now.

Bryan Stine
    - Wrote a psad ebuild script for inclusion in Gentoo Linux.  As of the
      1.2.4 release psad is included in the portage tree.
    - Wrote a much-improved init script for Gentoo systems.

Zenon Panoussis
    - Submitted patch for rpm spec that replaced the "Requires: sendmail"
      line with "Requires: smtpdaemon".

Dennis Freise
    - Submitted a patch to add metalog support to psad.
    - Helped find kmsgsd bug for missing null string in buffer read from
      psadfifo.
    - Submitted patch for kmsgsd to open psadfifo in O_RDWR mode to fix a
      bug where kmsgsd would spike the cpu if the system logger did not keep
      the psadfifo open.
    - Found and submitted patch for improper bounds checking in kmsgsd.c.

Richard K. Szabo
    - Discovered and helped test a bug where psad was not honoring IP's/net
      auto danger level assignments of 0 (ignore).

Stefan Rydberg
    - Discovered a perl internal pp_match bug with psad-1.3.1 on SuSE 8.
    - Helped troubleshoot -pre releases of psad-1.3.2.
    - Provided a system on which to troubleshoot psad-1.3.3 (this
      facilitated the isolation of the pp_match bug to an older version perl
      on SuSE 8).

Joshua Jensen
    - Found bug with the manner in which fwcheck_psad.pl was being called
      from psad (improperly passing --no-fw-search-all option even if
      FW_SEARCH_ALL was set to "Y").

Mate Wierdl
    - Found bug in EMAIL_ADDRESSES format (psad needed to allow addresses
      separated by commas).
    - Submitted patch for new init-scripts directory for psad.spec file.
    - Contributed patch for building the psad RPM on x86_64 platforms.

Stefan (unknown)
    - Sugggested permissions fix for world readable files in /var/log/psad.

David Jacobs
    - Troubleshooting firewall parsing code, lots of great beta testing
      (see: http://www.kungfulinux.com).

Lucas (unknown)
    - Suggested fix for init script directory for Slackware Linux systems.

Peter Abraham
    - Help testing bugfix for auto_dl code.
    - Suggested EMAIL_LIMIT_STATUS_MSG variable to make email limit status
      messages optional.

James Lay
    - Suggested support for OUTPUT chain in auto-blocking mode.

Yuen Boon Jee
    - Found bug in psad init scripts for requiring syslogd config file even
      if syslog-ng is installed.

Michael S. Zick
    - Bugfix for O_RDONLY open flag when kmsgsd receives a HUP signal.
    - Bugfix for psad validation routine that did not accept "0" for a
      PORT_RANGE_SCAN_THRESHOLD value.
    - Suggested the ability to maintain dedicated chains for the iptables
      auto-blocking code.

Nerijus Baliuna
    - Suggested ability to ignore entire protocols.  The IGNORE_PROTOCOLS
      keyword was the result.
    - Suggested adding various psad docs (CREDITS, ChangeLog, INSTALL,
      etc.) to be installed by the psad rpm
    - Suggested the ability to have psadwatchd not send emails even if psad
      dies and has to be restarted.

Michael Hadjimichael
    - Bug report for syslog format that does not necessarily have the
      "kernel:" tag.

Blair Zajac
    - Submitted patch to not install perl modules in that are already
      installed in the system perl lib tree (this was originally submitted
      as a patch for fwknop).
    - Found bug with perl module file paths and naming convention (this bug
      resulted in some modules being needlessly installed).  This find was
      originally for fwknop.
    - Suggested the -O optimization in Makefile (originally suggested for the
      fwknop project).

Troy Swaine
    - Suggested a command line interface to block IP addresses.  The result
      is the --fw-block-ip argument.

Najib Bakari
    - Pointed out that sendmail is not usually required to run psad.  The
      result is the alert.conf file with the ALERTING_METHODS keyword,
      which also gets referenced by psadwatchd.

Sam Weiss
    - Suggested that psad default FW_MSG_SEARCH to "DROP" if no strings are
      defined in fw_search.conf.

Francois Marier
    - Contributed REAME.SYSLOG content to help troubleshoot psad and syslog.

Nathan Colt
    - Suggested customizable email subjects.

Alex Luna
    - Suggested ULOG support.

Torkel Hasle
    - Suggested the ability to assign danger levels based on ports in
      addition to the protocol in auto_dl.  Suggested better sweep detection
      by calculating scan danger levels over all destinations (i.e. 5 packets
      to different destinations should trigger danger level 1).

SiO
    - Reported bug with zero masks in auto_dl file.

Jeroen Vermeulen
    - Suggested that psad collect and report errors that are returned by
      broken iptables commands to the user. This resulted in a redesign of the
      IPTables::ChaingMgr module to collect both stdout and stderr from all
      iptables commands.
    - Found bug where IPTABLES_AUTO_RULENUM misled the user into thinking that
      it governed where the jump rule into a custom chain is added within the
      calling chain.  This resulted in the IPT_AUTO_CHAIN{n} variables being
      updated to support the rule position for both the jump rule and any new
      rules within the chain.

Adam Mottershead
    - Suggested the ability to disable psad email alerts about auto-blocking
      events.

Richard B\351neyt
    - Suggested syslog-ng enhancement to allow a custom source path for
      /proc/kmsg to be defined for the psadfifo file.

Philip Lawrence
    - Contributed patch to fix module path import bug.  This resulted in the
      psad-2.0.1 release.

Stefano Harding
    - Reported bug that caused psad to not acquire iptables data on systems
      running syslog-ng when there is no "source" definition for /proc/kmsg.

Aki Tuomi
    - Reported bug where iptables might report '0' instead of 'all' for the
      protocol under the -nL output.

pyllyukko
    - Contributed the psad.SlackBuild script for building psad on Slackware
      systems.
    - Suggested that the psad.spec file respect the %_initrddir RPM macro.
    - Suggested configurable syslog facility and priority settings.
    - Contributed a suspicious iptables log message that contained a broken
      set of TCP options.  This exposed a bug where psad would consume all
      available memory on the system and would have to be killed.  The result
      is an additional check to ensure that the length fields parsed from TCP
      options are greater than one byte; otherwise, the TLV encoding doesn't
      work out properly.

Christian Lyra
    - Found off-by-one error in number of email alerts that are reported under
      --Status output.

James Neff
    - Provided solution for getting psad to run in Fedora 8 systems by
      pointing psad at the /etc/rsyslog.conf file.

Franck Joncourt
    - Debian psad package maintainer.
    - Performed analysis of locale settings for fwknop installer and suggested
      using the LC_ALL environmental variable instead of the LANG variable
      (which is superseded by LC_* vars).
    - Suggested moving dependencies into the deps/ directory to build a common
      architecture for bundling the cipherdyne.org projects for Debian.
    - Submitted patches for documentation fixes in various psad man pages.
    - Submitted patch to fix missing check against the 'mail' command for the
      fwcheck_psad.pl script.
    - Submitted patch to fix a bug where local server ports were not reported
      correctly under netstat parsing.
    - Submitted patch to correct mail binary usage to redirect stderr.
    - Submitted patch to close stdout, stderr, and stdin when running as a
      daemon.
    - Added --Override-config feature so that alternate configuration files
      can be specified on the command line to override configuration variables
      in the standard /etc/psad/psad.conf file.
    - Found psad man page section errors with manpage-alert.

Erik Heidt
    - Submitted patch to fix fwsnort sid reporting w.r.t. ending newline
      chars.
    - Reported iptables log prefix bug where timestamps that include spaces
      where not being excluded even when IGNORE_KERNEL_TIMESTAMP is set to
      "Y".

Andrew Kaplan
    - Reported the inability of an older version of the bundled whois client
      to query the whois information associated with certain IP addresses.
      Updating to whois-4.7.26 solved the problem.

j.bakshi
    - Reported a bug where IPT_SYSLOG_FILE was not being honored in -A
      (analyze) mode.

Steve B
    - Submitted patch to fix a bug in the start() function in the Gentoo init
      script which caused psad to not be started and the error "* ERROR: psad
      failed to start" to be generated.

Miroslav Grepl
    - Contributed policy files to make psad compatible with SELinux.  The
      files are located in a new "selinux" directory in the
      psad sources.

Stephen Nims
    - Reported 'Date::Calc::Decode_Month(): argument is not a string at
      /usr/sbin/psad line 1103' bug.  This affected DShield processing and a
      few other areas.

Dan A. Dickey
    - Submitted a patch to allow psad to use the "ip" command from the iproute2
      tools to acquire IP addresses from local interfaces.  Dan's description
      is as follows: "...A main reason for doing this is in the case of multi-
      homed hosts. ifconfig sets these up on an interface using aliases,
      iproute2 does not.  So, for a multi-homed interface (eth0 with multiple
      addresses), ifconfig -a only shows the first one configured and not the
      rest.  ip addr shows all of the configured addresses...".
    - Valuable input around whois process handling w.r.t. zombie processes.
      This helped to lead to a solution using fork() and exec(), and was
      tracked by Github issue #15.

Graham Murray
    - Reported a bug where 8-bit data included in some whois output causes mail
      delivery problems with the following error:

        <<< 554 5.6.1 Eight bit data not allowed
        554 5.0.0 Service unavailable

      The fix for this problem was the addition of the ENABLE_WHOIS_FORCE_ASCII
      functionality.

Dean Takemori
    - Reported a condition where whois lookups were being calculated always on
      the source IP of suspicious traffic even if the source IP's were on
      internal directly connected networks (frequently on RFC 1918 address
      space).  This report led to a change where whois lookups are now done
      against non-local IP addresses by default (see the ENABLE_WHOIS_LOCAL
      variable).

Lukas Baxa
    - Reported bug for ICMP packet handling where psad would incorrectly
      interpret ICMP port unreachable messages as UDP packets because the UDP
      specifics are included in the iptables log message.

@pyllyukko
    - Suggested --install-root for the install.pl script so that psad can be
      installed in a directory specified by the user.
    - Suggested the ability to have install.pl read answers to queries from a
      file in the filesystem in order to support easy automated installs of
      psad.

Kat
    - Reported 'Could not resolve sub-var: INSTALL_ROOT to a value' error in
      the legacy kmsgsd daemon for psad-2.2.

Gregorio Narvaez
    - Reported a NetAddr::IP usage bug in "-A --analysis-fields" mode with IP
      searches.

Pui Edylie
    - Reported a problem where psad could not map an fwsnort log message back
      to the corresponding Snort 'msg' field.  Added the FWSNORT_RULES_DIR
      variable to have psad read Snort rules from any installed fwsnort
      instance.

Oscar Marley
    - Suggested configurable auto-blocking timeout values depending on the
      danger level that a scan or attack achieves.  This resulted in the
      implementation of the AUTO_BLOCK_DL*_TIMEOUT variables.

Naji Mouawad
    - Suggested the ability to throttle email alerts that psad sends.  The
      This resulted in the implementation of the EMAIL_THROTTLE variable.

Nicholas Ritter
    - Reported a bug in psad-2.2.1 where the protocols file is not bundled with
      the psad RPM's or included in the psad RPM .spec files.

Gusta-BH
    - Reported a bug in the auto-blocking mode where the danger level for IP
      block renewals was not being initialized properly for FLUSH_IPT_AT_INIT
      set to N.

Tim Kramer
    - Provided guidance on getting psad to be compatible with the upstart init
      daemon on RHEL systems.  This effort was tracked via issue #12 on github.

Wolfgang Breyha
    - Submitted a patch to allow VLAN interfaces and interface aliases in
      IGNORE_INTERFACES.  This fixes issue #8 on github.

Steve Murphy
    - Contributed a patch to exec a script upon only blocking events. Two new
      config variables EXTERNAL_BLOCK_SCRIPT and ENABLE_EXT_BLOCK_SCRIPT_EXEC
      were added for this feature.

Rinck Sonnenberg
    - Spotted install.pl exit code bug when uninstalling psad. Fixed in
      psad-2.2.5.
    - Developed UFW and Logstash integration capabilities for psad:
        Logstash:  https://gist.github.com/netson/cc6ffa751aa4610c13c0
        UFW:       https://gist.github.com/netson/c45b2dc4e835761fbccc

Brad Rubenstein
    - Reported a bug where the exit status returned by 'psad --HUP' indicated
      an error condition even for no error. Fixed as Github issue 11.

Shlomit Afgin
    - Reported a bug where psad was not properly parsing the syslog timestamps.

Paul Versloot
    - Reported a bug where psad did not properly ignore IGMP traffic via the
      IGNORE_PROTOCOLS variable.

itoffshore@github
    - Reported a bug where auto-blocking emails were not respecting the
      EMAIL_ALERT_DANGER_LEVEL variable.
