PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Logs lesen unter erschwerten Bedingungen/ Kein SSH



403
10.07.07, 21:17
Moin,

Wer beim Logs lesen einem Internetcafe, oder einfach $COMPUTER im
Urlaub ueberhaupt nicht traut (und ggf. keine OTPs will):


Spezielles Verzeichnis im wwwroot anlegen


/var/www/tail/domain
-rw-r--r-- 1 serveruser servergroup 5241363 Jul 10 20:55 domain.tld_access_log


^^ Da bin ich uebrigens nicht ganz sicher, ob die Logs besser root
gehoeren sollten.

htaccess Beispieluser anlegen.

user: view
pass: Q$kke3atkskf-88324987@i:"S"/99~#_+R

screen aufmachen.
tail -f /var/log/httpd/domain >> /var/www/tail/domain umleiten &
screen -d

https://www.domain.tld/tail

Das ganze ginge natuerlich auch mit tail -n Anzahl im cronjob statt
mit tail -f und diversen grep -v/egrep -i Wrappern. Ab sofort wird kein
SSH mehr gebraucht.

Das Passwort ist natuerlich weiterhin zu bekommen, aber waere bei tail -n 10
wohl zu vernachlaessigen. Dagegen koennte man eine Liste mit diversen
Passwoertern pro Monat anlegen, die dann mit htpasswd jeweils passend
angelegt werden.


Gruss 403

drcux
11.07.07, 00:42
der "Kenner" kennt bessere Möglichkeiten, der Anfänger kann mit deinem Geschreibsel nix anfangen.

Was wolltest du uns sagen?

zyrusthc
11.07.07, 01:15
Also ich würde mir einfach die Logs in solch einen Zeitraum per Mail zu stellen lassen.
Und die Mails lassen sich ja auch bequem per Webmail dann lesen!

Greeez Oli

FlorianL
11.07.07, 07:52
hallo auch, hab mir für sowas vor längerer Zeit ein simples script geschrieben das die wichtigsten sachen per mail rausschickt, muss natrülich angepasst werden aber von da aus kann man schon leicht weitere logs/funktionen einbinden :)


#!/usr/bin/perl

# Reporting Script
# (c) F.Luettgens
#
################################################## ################################################## ##########################
# Config:
my $auditlog = "/var/log/audit/audit.log"; # Logfile containing rejected SSH attempts.
my @admins = "fluettgens\@domain.de , admin2\@domain2.de"; # Admin e-mail addresses (dont forget to escape \@).
my @logfiles = glob("/var/log/*.log* /var/log/audit/*.log* /var/log/mail/*.log* /var/log/squid/*.log* /var/log/http/*log*");
my $lines = '10'; # defines how many lines are parsed out of the Logfile.
my $rkhunter = "/usr/local/bin/rkhunter"; # Path to rootkithunter binary
################################################## ################################################## ##########################

use HTTP::Date;
use strict;
#use warnings;

my ($hostname, $choosed);
my (@rkcheck, @from);

chomp(($hostname) = `hostname`);
my $sender = "admin\@";
chomp((@from) = ("$sender$hostname"));
my ($date, $time) = split(" ", HTTP::Date::time2iso());
my ($hour, $min) = split(":",$time);
my (@sshresult_failed) = `cat $auditlog |grep failed |grep sshd |tail -$lines`;
my (@sshresult_accepted) = `cat $auditlog |grep success |grep sshd |tail -3`;
my (@devstats) = `df -h`;
my (@users) = `w`;


sub rkhunter() {
print("Updating rk-Hunter...\n");
system("$rkhunter --update");
print ("\nScanning for Rootkits\n");
system ("$rkhunter -c --createlogfile /var/log/rootkit.log --nocolors --quiet");
system ("cat /var/log/rootkit.log |grep WARNING > .script.dat");
open(ROOTKIT,".script.dat");
@rkcheck=<ROOTKIT>;
close(ROOTKIT);
}

sub logcheck() {
print "\nStarting Logrotate and ";
system ("/usr/sbin/logrotate /etc/logrotate.conf");
print "Checking Logfiles...\n----------------------\n";
foreach (@logfiles) {
print;
my $age = -M;
if ($age > 28) {
print " is older then 4 weeks and will be deleted!!!\n";
unlink;
} else { print " seems to be alive, leaving untouched\n";
}
}
}

sub mail() {
open(MAIL, "| /usr/lib/sendmail -oi -t");
print MAIL <<EMAIL_TO_USER;
To:@admins
From:@from
Subject: \[$hostname\] Daily Log Info \[$date\]
Daily information for $hostname, generated $date at $hour:$min

Parsing the last $lines rejected logins from $auditlog:
------------------------------------------------------------------
@sshresult_failed

Parsing the last 3 successfull logins from $auditlog:
--------------------------------------------------------------------
@sshresult_accepted

HDD Status:
-----------
@devstats

Currently logged in:
--------------------
@users

Rootkithunter:
--------------
@rkcheck


#EOF#
EMAIL_TO_USER
close MAIL or warn $!;


print "\n\nSysreport sent to @admins\n";
unlink (".script.dat");
}

$choosed = $ARGV[0];
if ($choosed eq 'mail') {
mail();
exit 0;
} elsif ($choosed eq 'rootkit') {
rkhunter();
exit 0;
} elsif ($choosed eq 'logcheck') {
logcheck();
exit 0;
} elsif ($choosed eq 'all') {
rkhunter();
logcheck();
mail();
exit 0;
} else {
print("\nValid command-line arguments are: logcheck mail rootkit all\n\n");
exit 0;
}