Zunächstmal solltest du das Webinterface von AWStats nicht öffentlich zugänglich machen. Das hatte in der Vergangenheit schon böse Sicherheitslücken und der Quellcode ist nicht gerade ein Vorbild an Codekunst. Benutze statt dessen statische Reports (awstats_buildstaticpages.pl).
Bezüglich der Rechte des Apache-Logs lässt sich nichts ändern, sofern AWStats weiterhin unter der UID des Webservers läuft. Die Logs gehören normalerweise 'root'.
habe das AWStat-Webinterface mit BasicAuth gesichert, haltet Ihr das für ausreichend?
Zum Log hatte ich folgende Idee.
Im cronjob, der die Aktualisierung (bzb. Aufbereitung der statischen Seiten) vornimmt, die apachelogfiles kopieren, an apacheuser verschenken (chown), awstat updaten, kopierte logs löschen.
Was haltet Ihr von der Idee, bringt das nen Sicherheitszuwachs?
Außerdem halte ich es für fahrlässig, mit dem CGIs von Awstats Statistiken on the fly zu generieren (Gründe siehe Post von Roger Wilco). Dafür gibt es das awstats.pl Skript. Zusammen mit einer passenden Konfiguration generiert man damit Statistiken als statisches HTML, was sich wunderbar per Cron-Job erledigen lässt, ohne dass dafür die Logs world-readable sein müssen.
Hatte gar nicht bedacht, dass ich das readable Promlem mit den statischen statistiken gleich miterschlage, wenn der cronjob als root läuft. (das ist OK, oder)
micho wrote:Hatte gar nicht bedacht, dass ich das readable Promlem mit den statischen statistiken gleich miterschlage, wenn der cronjob als root läuft. (das ist OK, oder)
Nein, da man beispielsweise per Referrer wunderbar belibiege Befehle in die Logs schreiben kann, um diese von diversen (anfälligen) Tools ausführen zu lassen. Insbesondere bei root tödlich...
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
sollen die logs nicht root gehören?, wenn ja, wie kann man das änderen?
oder ist es gefährlich den cronjob der die logs auswertet als root laufen zu lassen?
Logs, wie alle anderen Files auch, sollten immer sowenig Rechte wie möglich besitzen. Daraus ergibt sich für Logs im Allgemeinen maximal root:root/0640, nur selten mehr. Will man Logs automatisiert auswerten, nutzt man dafür einen (stark) eingeschränkten User und lässt ihn eine Kopie (user:group/0600) auswerten.
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Am einfachsten erstellst du eine eigene Gruppe für AWStats und gibst dieser Gruppe dann Leserechte auf die Datei. So muss AWStats nicht als root laufen und die Logdatei ist trotzdem nicht für alle lesbar.
- logs gehören root:root mit rechten /0640
- cronjob als root, der das logfile kopiert und dem wenig-privilegierten user schenkt (chown)
- cronjob als wenig-privilegierten user der die Statistiken erzeugt und das kopierte log löscht.
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.