ippl is a *nix packet logger. By configuring it to log suspicous packets in a longer format than mundane packets, and by resolving their source address, you can trivially extract info on nefarious goings-on. The example log below illustrates my web server being probed for nonexistant FTP, DNS, and WINS services.
* relevent chunk from ippl.conf:
noresolve all logformat normal all log options resolve,detaild tcp port ftp log options resolve,detaild tcp port domain # zone xfer log options resolve,detaild udp port netbios-ns etc...
* sample lines from ippl.log:
Nov 2 20:14:19 www connection attempt from 199.8.65.44 Nov 2 22:03:34 last message repeated 47 time(s) Nov 2 22:34:49 ftp connection attempt from ts1-850.f1781.quebectel.co +m [142.169.225.139] (142.169.225.139:21->204.27.0.137:21) Nov 3 18:03:09 domain connection attempt from cha213245016252.chello. +fr [213.245.16.252] (213.245.16.252:4709->204.27.0.137:53) Nov 4 09:34:28 netbios-ns connection attempt from pD905543D.dip.t-dia +lin.net [217.5.84.61] (217.5.84.61:4642->204.27.0.137:137)
* sample munged output:
Nov 2 22:34:49 ftp connection attempt from ts1-850.f1781.quebectel.co +m [142.169.225.139] (142.169.225.139:21->204.27.0.137:21) Nov 3 18:03:09 domain connection attempt from cha213245016252.chello. +fr [213.245.16.252] (213.245.16.252:4709->204.27.0.137:53) Nov 4 09:34:28 netbios-ns connection attempt from pD905543D.dip.t-dia +lin.net [217.5.84.61] (217.5.84.61:4642->204.27.0.137:137)
* from a perlish perspective, it matches any line containing an open-paren *unless* the paren is immediately preceeded by the word "time". perldoc perlre says that's a zero-width positive lookahead assertion.
Update: Hmmm... props to blakem for cleaner and more recognizable syntax below. I vaguely recall seeing that in perlre, but must've already had this'un working.
perl -ne 'print if (/\(/ && $` !~ /time$/)' < ippl.log > ippl.noteworthy