Logcheck: SERVER exiting due to errors

 ( kalmarr | 2013. szeptember 18., szerda - 18:37 )

A serverem küldött egy ilyen hibát, de nem igazán értem, hogy mi a baj, illetve mi lenne a megoldása.

Igaz találtam egy leírást: http://www.freebsddiary.org/logcheck-new.php ,de ha jól értem ez egy bug javítás lenne, ami szerintem nem nagyon lehet....

Köszi!

KALMI

---
Warning: If you are seeing this message, your log files may not have been
checked!

Details:
REPORTLEVEL is set to an unknown value

Also verify that the logcheck user can read all files referenced in
/etc/logcheck/logcheck.logfiles!

declare -x HOME="/var/lib/logcheck"
declare -x LANG="hu_HU.UTF-8"
declare -x LOGNAME="logcheck"
declare -x MAILTO="root"
declare -x OLDPWD
declare -x PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"
declare -x PWD="/var/lib/logcheck"
declare -x SHELL="/bin/sh"
declare -x SHLVL="1"
----

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

"REPORTLEVEL is set to an unknown value"
És mi van a konfigodban beállítva?

"Also verify that the logcheck user can read all files referenced in /etc/logcheck/logcheck.logfiles!"
Ezek rendben vannak?

/etc/logcheck/logcheck.logfiles


# these files will be checked by logcheck
# This has been tuned towards a default syslog install
/var/log/syslog
/var/log/auth.log

/etc/logcheck/logcheck.conf

# The following variable settings are the initial default values,
# which can be uncommented and modified to alter logcheck's behaviour

# Controls the format of date-/time-stamps in subject lines:
# Alternatively, set the format to suit your locale

DATE="$(date +'%Y-%m-%d %H:%M')"

# Controls the presence of boilerplate at the top of each message:
# Alternatively, set to "0" to disable the introduction.
#
# If the files /etc/logcheck/header.txt and /etc/logcheck/footer.txt
# are present their contents will be read and used as the header and
# footer of any generated mails.

INTRO=0

# Controls the level of filtering:
# Can be Set to "workstation", "server" or "paranoid" for different
# levels of filtering. Defaults to server if not set.

REPORTLEVEL="server"

# Controls the address mail goes to:
# *NOTE* the script does not set a default value for this variable!
# Should be set to an offsite "emailaddress@some.domain.tld"

SENDMAILTO="mail@mail.com"

# Send the results as attachment or not.
# 0=not as attachment; 1=as attachment
# Default is 0

MAILASATTACH=0

# Should the hostname in the subject of generated mails be fully qualified?

FQDN=1

# Controls whether "sort -u" is used on log entries (which will
# eliminate duplicates but destroy the original ordering); the
# default is to use "sort -k 1,3 -s":
# Alternatively, set to "1" to enable unique sorting

#SORTUNIQ=0

# Controls whether /etc/logcheck/cracking.ignore.d is scanned for
# exceptions to the rules in /etc/logcheck/cracking.d:
# Alternatively, set to "1" to enable cracking.ignore support

#SUPPORT_CRACKING_IGNORE=0

# Controls the base directory for rules file location
# This must be an absolute path

RULEDIR="/etc/logcheck"

# Controls if syslog-summary is run over each section.
# Alternatively, set to "1" to enable extra summary.
# HINT: syslog-summary needs to be installed.

SYSLOGSUMMARY=0

# Controls Subject: lines on logcheck reports:

ATTACKSUBJECT="Security Alerts"
SECURITYSUBJECT="Security Events"
EVENTSSUBJECT="System Events"

# Controls [logcheck] prefix on Subject: lines

ADDTAG="yes"

# Set a different location for temporary files than /tmp
# this is useful if your /tmp is small and you are getting
# errors such as:
# cp: writing `/tmp/logcheck.y12449/checked': No space left on device
# /usr/sbin/logcheck: line 161: cannot create temp file for here document: No space left on device
# mail: /tmp/mail.RsXXXXpc2eAx: No space left on device
# Null message body; hope that's ok
#
# If this is happening, likely you will want to change the following to be some other
# location, such as /var/tmp

TMP="/tmp"

A második kérdésre csak félig válaszoltál, a hibaüzenet és a kérdés lényege az volt, hogy a logchecket futtató user tudja-e olvasni a két logfile-t.

Ha jól rémlik, Debiant használsz. Ott így néznek ki a jogok (root:adm 640):

  # ls -l /var/log/syslog /var/log/auth.log
  -rw-r----- 1 root adm  64249742 Sep 18 20:25 /var/log/auth.log
  -rw-r----- 1 root adm 169925317 Sep 18 20:29 /var/log/syslog
  #

És az adm csoport jogán olvashatja el a logcheck user:

  # getent group adm
  adm:x:4:logcheck
  #

 
 
Nálad nem került ki az adm csoportból a logcheck user?

Szerintem nem (remélem jól látom)

root@server:~# ls -l /var/log/syslog /var/log/auth.log
-rw-r----- 1 root adm 44717 szept 18 21.04 /var/log/auth.log
-rw-r----- 1 root adm 606109 szept 18 21.04 /var/log/syslog
root@server:~# getent group adm
adm:x:4:logcheck

Nem pontosan értem, hogy mi a hiba?

Akkor lássunk egy debugot:

  # su -s /bin/bash -c "/usr/sbin/logcheck -d" logcheck

Egy verziót:
  # su -s /bin/bash -c "/usr/sbin/logcheck -v" logcheck

  # dpkg-query -W logcheck

És egy release-t:
  # cat /etc/debian_version

# su -s /bin/bash -c "/usr/sbin/logcheck -d" logcheck

D: [1379533866] Turning debug mode on
D: [1379533866] Sourcing - /etc/logcheck/logcheck.conf
D: [1379533866] Finished getopts c:dhH:l:L:m:opr:RsS:tTuvw
D: [1379533866] error: Not removing lockfile
D: [1379533866] Error: REPORTLEVEL is set to an unknown value

# su -s /bin/bash -c "/usr/sbin/logcheck -v" logcheck
logcheck 1.3.7

# cat /etc/debian_version
6.0.7

Ajjaj, egy régi hibrid rendszer! Gondolom, Lenny backports 1.3.7_bpo50+1. Hogy maradt ez ott, ha a rendszered Squeeze? (A Squeeze-ben 1.3.13 van. A Lenny 1.2.69 verziót tartalmazott. Majd érdemes lenne Squeezre upgrade-elni, utána meg Wheezy-re, fél év múlva a Squeeze frissítése is megszűnik.)

Nézegetve az 1.3.7-et úgy látom, hogy a default a "server" (57. sor, helyes), majd elsőként a CONFFILE-ból jövő értéket veszi (506. sor, ezt itt nem ellenőrzi), illetve ha van ezt meghatározó parancssori paraméter, annak megfelelően írja felül fix stringgel (560-591. sor, helyes). Majd ezek után ellenőrzi a változó értékét (601-609. sor), és mivel a három szint neve közül egyikkel sem azonos, az általad kapott hibaüzenetet adja.

Azaz a scriptben megfelelő értékadások és feltételek vannak, nem megfelelő érték csak a CONFFILE-ból kerülhet be. A fent bemásolt konfigban jónak tűnik az értékadás, de meg tudnád nézni, hogy valóban jól van-e beírva, a záró idézőjel után már nincs semmi, csak az újsor? Esetleg törölheted is a teljes sort, és beírhatod kézzel újra.

Előtte nézhetünk egy ilyet is:
# su -s /bin/bash -c ' . /etc/logcheck/logcheck.conf ; echo ">${REPORTLEVEL}<"' logcheck

Igen valóban javítottam a .conf ezen részét, úgy értelmeztem, hogy a kiküldött e-mailnél van szerepe...vissza tettem.

Igen a rendszer öszvér... sajnos amikor elkezdtem tanulni a szakmát, akkor még csak ezt tudtam magamból kihozni. Szeretném majd a servert újra telepíteni és akkor remélem ezen hibák megszünnek majd.

Nagyon sokat segítettél a hiba keresésben is ezt még tanulmányozom is.

Viszont ami még nem tiszta (van egy kis káosz), hogy pontosan hogyan lehetne ellenőrizni, hogy rendben fut-e a log, illetve milyen logokat figyel a rendszer, küldi meg e-mailen. Ezt melyik confban lehet látni (pl: logcheck.logfiles), mert az egy kicsit hiányos.
Továbbá, ha a rendszere feltettem még a "syslog-ng", akkor annak a futását elemzését, hogyan láthatom, honnan tudom, hogy melyik log rendszer küldi a maileket, figyelmeztetéseket (szeretnék valahogyan "biztonságba" kerülni a server log dolgaival kapcsolatban, mert egy kicsit még sötétben tapogatózok)?

"hogyan lehetne ellenőrizni, hogy rendben fut-e a log"
Fut-e a syslog szerver, illetve nőnek-e a logfile-ok. (lásd még: lsof /dev/log)

"illetve milyen logokat figyel a rendszer, küldi meg e-mailen. Ezt melyik confban lehet látni (pl: logcheck.logfiles), mert az egy kicsit hiányos."
A logcheck.logfiles-ban vannak a figyelt logok, és ahogy fent is bemásoltad, a syslog és az auth.log szerepel a default konfigban. Ezt azért nem mondanám túlzottan hiányosnak, tekintve, hogy általában az autentikációval kapcsolatos logok mennek az auth.log-ba, a többi pedig a mind a syslogba (is).

"melyik log rendszer küldi a maileket, figyelmeztetéseket"
Figyelmeztető mailt küldeni a logcheck fog. Azt pedig a logfile-ban álalában látod, hogy melyik process generálta a logot. A logokat a klasszikus módon a facility és a severity alapján tudod osztályozni, de a syslog-ng ennél jóval többre képes. Ha kísérletezni szeretnél vele, nézd meg a logger nevű programot.

"Igen valóban javítottam a .conf ezen részét, úgy értelmeztem, hogy a kiküldött e-mailnél van szerepe...vissza tettem."
Ezt nem teljesen értem. Kivetted a "REPORTLEVEL=..." sort a konfigból? Vagy a server, workstation, paranoid hármason kívül más értéket adtál neki? Ha a teljes sort törölted, akkor működnie kellene server módban. Ha viszont nem megfelelő értéket kapott, akkor jogos a hibaüzenet.