#!/usr/bin/perl
# backsniff - log attempts to connect to particular ports

# In der Datei /etc/inetd-conf muss folgende Zeile
# eingetragen und dann ein HUP-Signal an den inetd
# gesendet werden:
#
# echo    stream  tcp nowait  nobody /usr/local/bin/sniffer sniffer

use strict;
use warnings;
use Sys::Syslog;
use Socket;

# identify my port and address
my $sockname       = getsockname(STDIN)
                        or die "Couldn't identify myself: $!\n";
my ($port, $iaddr) = sockaddr_in($sockname);
my $my_address     = inet_ntoa($iaddr);

# get a name for the service
my $service = (getservbyport ($port, "tcp"))[0] || $port;
# now identify remote address
$sockname          = getpeername(STDIN)
                         or die "Couldn't identify other end: $!\n";
($port, $iaddr)    = sockaddr_in($sockname);
my $ex_address     = inet_ntoa($iaddr);

# and log the information
openlog("sniffer", "ndelay", "daemon");
syslog("notice", "Connection from %s to %s:%s\n", $ex_address,
        $my_address, $service);
closelog();
