htaccess
hans
- webserver
Hallo,
ich habe ein verzeichnis mit .htaccess geschützt, würde jetzt zusätzlich gerne mitprotokollieren wer sich eingeloggt hat.
im archiv habe ich dazu nix gefunden.
hätte jemand dazu eine idee?
danke
hans
Hallo Hans,
ich habe ein verzeichnis mit .htaccess geschützt, würde jetzt zusätzlich gerne mitprotokollieren wer sich eingeloggt hat.
In den Logfiles des Apache-Webservers wird bei normaler Konfiguration der Benutzer eines jeden Requests mitgeloggt. Du musst natürlich Zugriff auf diese Logfiles haben.
Christian
In den Logfiles des Apache-Webservers wird bei normaler Konfiguration der Benutzer eines jeden Requests mitgeloggt. Du musst natürlich Zugriff auf diese Logfiles haben.
Christian
Genau hier liegt das Problem,den zugriff habe ich leider nicht.
(uni-rechenzentrum wird die auch nicht rausrücken.)
gibt es überhaupt alternativen ?
evtl. in der access-datei einen pfad für die log-datei anzugeben?
hans
Hallo Hans,
gibt es überhaupt alternativen ?
Wenn Du PHP hast, könnte ich Dir das anbieten: </archiv/2003/1/33818/#m184760> (dann kannst Du auch protokollieren)
Du könntest die Variante auch so modifizieren, dass Du keine .php-Endung brauchst:
|- hauptverzeichnis/
|- privat (PHP-Datei ohne Endung)
|- privat_dir (Das Originalverzeichnis, das jetzt komplett gesperrt ist)
|- .htaccess (Inhalt unten)
Inhalt der .htaccess:
RewriteEngine On
RewriteBase /pfad/vom/webserverstammbaum/zum/hauptverzeichnis
RewriteRule ^privat/(.*) privat.php/$1
(Sofern Du mod_rewrite hast, sonst musst Du mit der .php-endung leben)
Wenn PHP sogar als Modul installiert ist, kannst Du auch auf die Sessions verzichten, dann kannst Du direkt HTTP-Authentifizierung nehmen:
http://de3.php.net/manual/de/features.http-auth.php
Ich hoffe, Du kannst was damit anfangen.
evtl. in der access-datei einen pfad für die log-datei anzugeben?
Nein, das geht nicht, die Logdateien kannst Du nur in der zentralen Serverkonfigurationsdatei oder in den Virtaul-Hosts-Einstellungen (die fast immer auch in der zentralen Serverkonfigurationsdatei liegen) einstellen.
Christian
Moin Moin !
Genau hier liegt das Problem,den zugriff habe ich leider nicht.
(uni-rechenzentrum wird die auch nicht rausrücken.)
Seltsam, normalerweise sind Logfiles world-readable. Je nachdem, wie der Apache installiert wurde, liegen sie in einem von vielleicht 10 Standard-Verzeichnissen. Ein Aufruf von /bin/ls wird ja wohl noch erlaubt sein. ;-)
Die Standard-Pfade findest Du bei www.apache.org, ein guter Start ist aber auch folgende Liste:
/var/log/
/var/apache/log/
/var/log/apache/
/opt/apache/log
/usr/local/apache/log
Variationen:
httpd oder www statt apache
/usr statt /var
logs statt log
Der einfachste Weg ist aber wohl, einfach mal mit dem Webmaster bzw. root@www zu reden.
Alexander
Hi hans,
In den Logfiles des Apache-Webservers wird bei normaler Konfiguration der Benutzer eines jeden Requests mitgeloggt. Du musst natürlich Zugriff auf diese Logfiles haben.
Genau hier liegt das Problem,den zugriff habe ich leider nicht.
(uni-rechenzentrum wird die auch nicht rausrücken.)
hm, das kann ja ggf. auch ein datenschutzrechtliches Problem sein. (Auf dem Server meines Providers ist das access_log auch nicht world readable.)
Hast Du innerhalb des Servers der Uni einen eigenen Virtual Host, also eine Subdomain?
Wenn ja, dann wäre es einfach, für diesen Virtual Host ein separates access_log zu definieren, welches dann nur genau die Zugriffe auf Deinen Verzeichnisbaum enthalten würde:
http://httpd.apache.org/docs/mod/mod_log_config.html#customlog
Dieses könnte Dir das Rechenzentrum problemlos zur Verfügung stellen, ohne daß Du automatisch auch die Zugriffe auf andere Seiten sehen darfst. Das wäre dann nur eine Zeile mehr in der Server-Konfiguration - also kein besonderer Aufwand für Euer Rechenzentrum.
Es könnte allerdings sein, daß Du nur ein generisches Benutzerverzeichnis besitzt (mit einem "~" als ersten Zeichen des URL nach der Domain) ... und die CustomLog-Direktive geht nun mal nicht für Verzeichnisse, sondern nur für Server und Virtual Hosts.
Viele Grüße
Michael
#!/usr/local/bin/perl -w
$logfile = "/log/stat.log";
$exclude = 0;
$my_addr = "http://www.Deinhost.de/";
$HomeDirURL = "member/index.html";
$username = $ENV{'REMOTE_USER'};
########## So much for that.. On with the show! #######
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
# Un-Webify plus signs and %-encoding
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
# Stop people from using subshells to execute commands
# Not a big deal when using sendmail, but very important
# when using UCB mail (aka mailx).
$value =~ s/~!/ ~!/g;
# Uncomment for debugging purpose
# print "Setting $name to $value<P>";
$FORM{$name} = $value;
}
($sec,$min,$hour,$mday,$mon,$wday,$yday,$isdst) = localtime(time);
if ($sec < 10) {
$sec = "0$sec";
}
if ($min < 10) {
$min = "0$min";
}
if ($hour < 10) {
$hour = "0$hour";
}
if ($mon < 10) {
$mon = "0$mon";
}
if ($mday < 10) {
$mday = "0$mday";
}
$month = ($mon + 1);
@months = ("January","February","March","April","May","June","July","August","September","October","November","December");
$date = "$hour:$min:$sec $mday/$month";
{
if ($exclude == 1)
{
&log unless ($ENV{'HTTP_REFERER'} eq $my_addr);
} else {
&log;
}
&redir;
exit;
}
sub log {
if (! open(LOG,">>$logfile")) {
print "Content-type: text/html\n\n";
print "Couldn't open $logfile so I'm bugging out..\n";
exit;
}
print LOG "At $date, $username $ENV{'HTTP_REFERER'}, IP $ENV{'REMOTE_ADDR'} use $ENV{'HTTP_USER_AGENT'}.\n";
close (LOG);
}
sub redir {
Grüsse vom Alain