¿Cómo puedo hacer un script (linux) para saber quien intenta ingresar en mi máquina?

Imagen de eduloachamin
0 puntos

Encontré este codigo en internet pero no me funciona ya tengo instalado el ssh y hasta donde entiendo este codigo deberia del registro auth.log deberia copiar sus a este archivo theeye.log el programa se me ejecuta y no me genera un error pero no realiza la validación deseada su ayuda por favor.
#!/usr/bin/perl

use Getopt::Std;
# SSH BRUTEFORCE ATTACK

my $file = "/var/log/auth.log";
my $log = "/var/log/theeye.log";
my %iplist;
my %options=();
my ($sec,$min,$hour,$mday,$mon,$year,
$wday,$yday,$isdst) = localtime time;

getopts("hl:f:",%options);

sub usage {
print "$0 -h => Muestra la ayuda
";
print "$0 -f /var/log/auth.log -l /var/log/theeye.log => Procesa el fichero auth.log y guarda los resultados en theeye.log
";
exit 0;
}

if(defined $options{h}) {
usage();
}

if(defined $options{'f'}) {
$file = $options{'f'};
}

if(defined $options{'l'}) {
$log = $options{'l'};
}

open AUTH,">$log" or die ("No puedo abrir el fichero de registro
");

print LOG "
-- Fecha: $mday/$mon/$year - $hour:$min:$sec --
";

while() {

$data = $_;
if ($data =~ /(illegal user)(.+)from (d+.d+.d+.d+)/i) {
if(!$iplist{$3}) { $iplist{$3} = 1; }
else { $iplist{$3} += 1; }
next;
}

if ($data =~ /(failed password)(.+)from (d+.d+.d+.d+)/i) {
if(!$iplist{$3}) { $iplist{$3} = 1; }
else { $iplist{$3} += 1; }
next;
}
}

foreach $ip (keys %iplist) {
print LOG "Detectado scaneo desde $ip => $iplist{$ip} intentos fallidos
";
}
close AUTH;
close LOG;