]> git.wincent.com - bansshee.git/commitdiff
Added Ubunutu Dapper support files
authorWincent Colaiuta <win@wincent.com>
Thu, 7 Dec 2006 14:54:00 +0000 (14:54 +0000)
committerWincent Colaiuta <win@wincent.com>
Thu, 7 Dec 2006 14:54:00 +0000 (14:54 +0000)
support/ubuntu-dapper/etc/bansshee.conf [new file with mode: 0644]
support/ubuntu-dapper/etc/init.d/bansshee [new file with mode: 0755]
support/ubuntu-dapper/etc/logwatch/conf/services/bansshee.conf [new file with mode: 0644]
support/ubuntu-dapper/etc/logwatch/scripts/services/bansshee [new file with mode: 0755]

diff --git a/support/ubuntu-dapper/etc/bansshee.conf b/support/ubuntu-dapper/etc/bansshee.conf
new file mode 100644 (file)
index 0000000..57796c9
--- /dev/null
@@ -0,0 +1,32 @@
+# To override a given setting uncomment the corresponding line (remove the # symbol that begins the line) and alter the setting
+# See the README file for detailed information about each setting.
+
+#
+# General settings
+#
+
+#our $permitted_illegal_user    = 5;      # number of illegal user attempts permitted from a single IP address before it gets blocked 
+#our $permitted_incorrect_pass  = 5;      # number of incorrect pass attempts permitted from a single IP address before it gets blocked
+#our $unban_wait                = 3600;   # minimum number of seconds an IP must wait before it gets removed from the blocklist (1 hour) 
+#our $grace_period              = 3600;   # number of seconds that must pass before prior illegal/incorrect attempt counts are reset (1 hour)
+#our $unblocking_interval       = 300;    # number of seconds between checks of the blocklist for removing old IPs (5 minutes)
+
+#
+# Platform specific settings (Ubuntu Dapper)
+#
+
+our $logpath                   = '/var/log/auth.log';                     # logfile to watch
+our $illegal_user_regex        = 'sshd\[\d+\]: Failed password for invalid user (\S+) from (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})';
+our $incorrect_pass_regex      = 'sshd\[\d+\]: Failed password for (\S+) from ((?:\w[\w0-9\-_\.]+)|(?:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}))';
+
+#our $iptables                  = '/sbin/iptables';                         # for manipulating the firewall
+#our $iptables_create          = '-N BANSSHEE';                             # iptables parameters for creating the BANSSHEE chain
+our $iptables_add             = '-I INPUT -p tcp --dport ssh -j BANSSHEE'; # iptables parameters for adding the JUMP rule
+#our $iptables_remove          = '-D INPUT -p tcp --dport ssh -j BANSSHEE'; # iptables parameters for removing the JUMP rule
+#our $iptables_flush           = '-F BANSSHEE';                             # iptables parameters for flushing the BANSSHEE chain
+#our $iptables_delete          = '-X BANSSHEE';                             # iptables parameters for deleting the BANSSHEE chain
+#our $id                        = '/usr/bin/id -u';                         # for determing if running as root
+our $log_facility :shared      = 'daemon';                                 # Bansshee messages logged to /var/log/daemon.log
+
+1; # required end marker: do not delete this line
+
diff --git a/support/ubuntu-dapper/etc/init.d/bansshee b/support/ubuntu-dapper/etc/init.d/bansshee
new file mode 100755 (executable)
index 0000000..f3f0767
--- /dev/null
@@ -0,0 +1,71 @@
+#! /bin/sh
+#
+# bansshee     Start/Stop the bansshee script
+#
+# Author:      Kai Stannigel <kaist@gmx.net>.
+#
+# Version:     @(#)skeleton  2.85-23  28-Jul-2004  miquels@cistron.nl
+#
+
+set -e
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+DESC="SSH attack detection"
+NAME=bansshee
+DAEMON=/usr/local/sbin/$NAME
+#PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Gracefully exit if the package has been removed.
+test -x $DAEMON || exit 0
+
+#
+#      Function that starts the daemon/service.
+#
+d_start() {
+       if [ -e  /var/lock/bansshee.lock ] ; then
+               echo " failed (already running according to /var/lock/bansshee.lock)"
+               return 1
+       fi
+       $DAEMON
+       RETVAL=$?
+       [ $RETVAL -eq 0 ] && /bin/touch /var/lock/bansshee.lock
+       return $RETVAL
+}
+
+#
+#      Function that stops the daemon/service.
+#
+d_stop() {
+       if [ -e  /var/lock/bansshee.lock ]; then
+               kill $(/bin/pidof -o %PPID -x $DAEMON)
+               rm /var/lock/bansshee.lock
+       fi
+}
+
+case "$1" in
+  start)
+       echo -n "Starting $DESC: $NAME"
+       d_start
+       echo "."
+       ;;
+  stop)
+       echo -n "Stopping $DESC: $NAME"
+       d_stop
+       echo "."
+       ;;
+  restart|force-reload)
+       echo -n "Restarting $DESC: $NAME"
+       d_stop
+       sleep 1
+       d_start
+       echo "."
+       ;;
+  *)
+       echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+       exit 1
+       ;;
+esac
+
+exit 0
+
diff --git a/support/ubuntu-dapper/etc/logwatch/conf/services/bansshee.conf b/support/ubuntu-dapper/etc/logwatch/conf/services/bansshee.conf
new file mode 100644 (file)
index 0000000..6bb22ec
--- /dev/null
@@ -0,0 +1,10 @@
+# $Id$
+
+Title = "Bansshee (secure-log)"
+
+# Logfile group
+LogFile = daemon
+
+# only give lines pertaining to the bansshee service
+*OnlyService = bansshee 
+*RemoveHeaders
diff --git a/support/ubuntu-dapper/etc/logwatch/scripts/services/bansshee b/support/ubuntu-dapper/etc/logwatch/scripts/services/bansshee
new file mode 100755 (executable)
index 0000000..8fcab77
--- /dev/null
@@ -0,0 +1,139 @@
+#!/usr/bin/perl
+#
+# $Id$
+
+use Socket;
+
+#
+# Storage
+#
+
+my %addresses;
+
+#
+# Functions
+#
+
+sub LookupIP($)
+{
+  my $ip = shift;
+  $name = $addresses{$ip};
+  return "$name [$ip]" if defined $name;
+  ($a1, $a2, $a3, $a4) = split /\./, $ip;
+  $name = gethostbyaddr(inet_aton($ip), AF_INET);
+  if ($name)
+  {
+    $addresses{$ip} = $name;
+    return "$name [$ip]";
+  }
+  else
+  {
+    return $ip;
+  }
+}
+
+sub SortIPAddresses
+{
+  ($a1, $a2, $a3, $a4) = split /\./, $a;
+  ($b1, $b2, $b3, $b4) = split /\./, $b;
+  ($a1 <=> $b1) || ($a2 <=> $b2) || ($a3 <=> $b3) || ($a4 <=> $b4);
+}
+
+#
+# Main
+#
+
+$detail = $ENV{'LOGWATCH_DETAIL_LEVEL'};
+
+while (defined($line = <STDIN>))
+{
+  chomp($line);
+
+  if ($line =~ /Performing periodic check of blocked IPs list\./)
+  {
+    $periodicChecks++;
+  }
+  elsif ($line =~ /Bansshee startup\./)
+  {
+    $startups++;
+  }
+  elsif ($line =~ /Failed password attempt for user/)
+  {
+    $failedPasswords++;
+  }
+  elsif ($line =~ /Attempted connection with illegal user/)
+  {
+    $illegalUsers++;
+  }
+  elsif ($line =~ /Adding IP (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}) to blocklist\./)
+  {
+    $additions{$1} += 1; 
+  }
+  elsif ($line =~ /Removing IP (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}) from blocklist\./)
+  {
+    $removals{$1} += 1;
+  }
+  elsif (($line =~ /Reading config file/) ||
+         ($line =~ /Daemonizing\./) ||
+         ($line =~ /Creating new BANSSHEE iptables chain\./) ||
+         ($line =~ /Appending JUMP rule \(redirects all SSH traffic to BANSSHEE chain\)\./) ||
+         ($line =~ /Tailing log:/) ||
+         ($line =~ /Removing JUMP rule from INPUT chain\./) ||
+         ($line =~ /Flushing BANSSHEE iptables chain\./) ||
+         ($line =~ /Deleting BANSSHEE iptables chain\./))
+  {
+    # ignore
+  }
+  else
+  {
+    push @unmatchedEntries, "$line\n";
+  }
+}
+
+if (($startups > 0) && ($detail >= 5))
+{
+  print "\nStart-ups: $startups time(s).\n";
+}
+
+if (($periodicChecks > 0) && ($detail >= 10))
+{
+  print "\nPeriodic checks: $periodicChecks time(s).\n";
+}
+
+if ($failedPasswords > 0)
+{
+  print "\nFailed password attempts: $failedPasswords time(s).\n";
+}
+
+if ($illegalUsers > 0)
+{
+  print "\nIllegal user attempts: $illegalUsers time(s).\n";
+}
+
+if (keys %additions)
+{
+  print "\nIPs added to blocklist:\n";
+  foreach $ip (sort { SortIPAddresses } keys %additions)
+  {
+    $host = LookupIP($ip);
+    print "    $host : $additions{$ip} time(s).\n";
+  }
+}
+
+if (keys %removalss)
+{
+  print "\nIPs removed from blocklist:\n";
+  foreach $ip (sort { SortIPAddresses } keys %additions)
+  {
+    $host = LookupIP($ip);
+    print "    $host : $additions{$ip} time(s).\n";
+  }
+}
+
+if ($#unmatchedEntries > 0)
+{
+  print "\n**Unmatched Entries**\n";
+  print @unmatchedEntries;
+}
+
+exit(0);