cron.daily rkhunter

Ogólne pytania dotyczące systemu
Hypnos
Posty: 66
Rejestracja: 07 kwietnia 2014, 15:08

cron.daily rkhunter

Post autor: Hypnos »

Witam
anacron uruchamia cron.daily i cron.weekly
w cron.daily mam skrypt skanujący system w poszukiwaniu rootkitów , który w razie warningów ma powiadamiać mnie lokalnie poprzez email
w cron.weekly klolejny skrypt wykonujący aktualizację rootkithuntera i jego baz.
sam rkhunter skonfigurowany prawidłowo (jak sądzę), po konfiguracji rkhunter -C
Restart.
Mimo to nie otrzymałem żadnego powiadomienia o skanowaniu. Kiedy wykonywane są skrypty z cron.daily ? O jakichś określonych porach czy po pierwszym w danym dniu uruchomieniu maszyny ?


cat anacrontab

Kod: Zaznacz cały

# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.                                                                                                                                     
                                                                                                                                                                                    
SHELL=/bin/sh                                                                                                                                                                       
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin                                                                                                                   
HOME=/root                                                                                                                                                                          
LOGNAME=root                                                                                                                                                                        
                                                                                                                                                                                    
# These replace cron's entries                                                                                                                                                      
1       5       cron.daily      run-parts --report /etc/cron.daily                                                                                                                  
7       10      cron.weekly     run-parts --report /etc/cron.weekly                                                                                                                 
@monthly        15      cron.monthly    run-parts --report /etc/cron.monthly
cat /etc/cron.daily/rkhunter

Kod: Zaznacz cały

#!/bin/sh

RKHUNTER=/usr/bin/rkhunter

test -x $RKHUNTER || exit 0

# source our config
. /etc/default/rkhunter

if [ -z "$NICE" ]; then
    NICE=0
fi

if [ -z "$RUN_CHECK_ON_BATTERY" ]; then
    RUN_CHECK_ON_BATTERY="false"
fi

# Do not run daily check if running on battery except if explicitely allowed
if [ -x /usr/bin/on_ac_power >/dev/null 2>&1 ]; then
    on_ac_power >/dev/null 2>&1
    [ $? -eq 1 -a "$RUN_CHECK_ON_BATTERY" != "true" ] && exit 0
fi

case "$CRON_DAILY_RUN" in
     [YyTt]*)
        OUTFILE=`mktemp` || exit 1
        /usr/bin/nice -n $NICE $RKHUNTER --cronjob --report-warnings-only --appendlog > $OUTFILE
        if [ -s "$OUTFILE" -a -n "$REPORT_EMAIL" ]; then
          (
            echo "Subject: [rkhunter] $(hostname -f) - Daily report"
            echo "To: $REPORT_EMAIL"
            echo ""
            cat $OUTFILE
          ) | /usr/sbin/sendmail $REPORT_EMAIL
        fi
        rm -f $OUTFILE
        ;;
      *)
       exit 0
       ;;
esac


cat /etc/cron.weekly/rkhunter

Kod: Zaznacz cały

 
#!/bin/sh

RKHUNTER=/usr/bin/rkhunter

test -x $RKHUNTER || exit 0

# source our config
. /etc/default/rkhunter

case "$CRON_DB_UPDATE" in
        [YyTt]*)

                if [ ! -x /usr/bin/wget ] && [ ! -x /usr/bin/curl ] && [ ! -x /usr/bin/links ] && \
                   [ ! -x /usr/bin/elinks ] && [ ! -x /usr/bin/lynx ]; then
                     echo "No tool with which to download rkhunter updates was found on your system. Please install wget, curl, (e)links or lynx"
                     exit 1
                fi

                OUTFILE=`mktemp` || exit 1

                case "$DB_UPDATE_EMAIL" in
                    [YyTt]*)
                        (
                        echo "Subject: [rkhunter] $(hostname -f) - Weekly database update"
                        echo "To: $REPORT_EMAIL"
                        echo ""
                        $RKHUNTER --versioncheck --nocolors --appendlog
                        $RKHUNTER --update --nocolors --appendlog
                        ) | /usr/sbin/sendmail $REPORT_EMAIL
                    ;;
                    *)
                        $RKHUNTER --versioncheck --appendlog 1>/dev/null 2>$OUTFILE
                        $RKHUNTER --update --appendlog 1>/dev/null 2>>$OUTFILE
                    ;;
                esac

                if [ -s "$OUTFILE" ]; then
                    (
                    echo "Subject: [rkhunter] $(hostname -f) - Weekly rkhunter database update"
                    echo "To: $REPORT_EMAIL"
                    echo ""
                    cat $OUTFILE
                    ) | /usr/sbin/sendmail $REPORT_EMAIL
                fi
                rm -f $OUTFILE
        ;;

        *)
                exit 0
        ;;
esac


cat /etc/default/rkhunter

Kod: Zaznacz cały

# Defaults for rkhunter automatic tasks
# sourced by /etc/cron.*/rkhunter and /etc/apt/apt.conf.d/90rkhunter
#
# This is a POSIX shell fragment
#

# Set this to yes to enable rkhunter daily runs
# (default: true)
CRON_DAILY_RUN="true"

# Set this to yes to enable rkhunter weekly database updates
# (default: true)
CRON_DB_UPDATE="true"

# Set this to yes to enable reports of weekly database updates
# (default: false)
DB_UPDATE_EMAIL="true"

# Set this to the email address where reports and run output should be sent
# (default: root)
REPORT_EMAIL="hypnos@hypnos-deb"

# Set this to yes to enable automatic database updates
# (default: false)
APT_AUTOGEN="true"

# Nicenesses range from -20 (most favorable scheduling) to 19 (least favorable)
# (default: 0)
NICE="10"

# Should daily check be run when running on battery
# powermgmt-base is required to detect if running on battery or on AC power
# (default: false)
RUN_CHECK_ON_BATTERY="false" 
cat /etc/rkhunter.conf ze względu na rozmiar wrzuciłem na pastebin
http://pastebin.com/raw.php?i=HkZ983Aj

Ręczne skanowanie działa, a dlaczego automatyczne nie?


Edycja:
Ok działa raport o skanowaniu doszedł 00:13 (nie wiedzieć dlaczego w dniu w którym to ustawiałem nic się nie wydarzyło). Teraz pytanie jak w końcu działa ten cron? Kiedy uruchamia zadania z daily? Co będzie gdy wyłączę komputer i włączę go np raz dziennie na 1h?


Edycja 2:
Znalazłem odpowiedzi na moje pytania tutaj:
http://manpages.debian.org/cgi-bin/man. ... &locale=pl

W skrócie. Jak zainstalowany jest anacron to nie działa cron. Anacron przeznaczony jest dla domowych PC, cron na serwery działające 24h/dobę przez 365dni/rok. podczas uruchomienia komputera anacron pobiera konfigurację z /etc/crontab sprawdza czy nie zostało już wykonane w ciągu ostatnich n-zaplanowanych dni, czeka określoną liczbę minut podaną jako parametr zwłoki, wykonuje zadania (defaultowo z cron.daily *weekly *monthly), a przy wyjściu zapisuje specjalne pliki do każdego zadania zawierające znaczniki czasowe (tylko data, bez godziny) ostatniego wykonania (zapisuje je tutaj /var/spool/anacron ) Sprawdza co jest jeszcze do zrobienia i kończy.

Czyli u mnie wyglądało to tak, dodałem zadanie do cron.daily i cron.weekly, ale w /var/spool/anacron w plikach cron.daily i cron.weekly były już zapisane znaczniki czasowe inforumjące anacrona że skrypty z tych katalogów zostały już w danym dniu (cron.daily) , tygodniu (cron.weekly) i miesiącu (cron.monthly) wykonane. Dlatego Anacron czekał na zmianę daty zanim ponownie wykonał zadania z cron.daily
Widzę tutaj dwie niedoskonałości. Po pierwsze może się zdarzyć że skrypty z daily zostaną wykonane tuż przed północą (jeżeli cały dzień nie włączaliśmy peceta) i tuż po północy (wystarczy zrestartować maszynę po północy, zostanie odczytany znacznik z datą z dnia poprzedniego i skrypty z cron.daily wykonaja się powtórnie). Po drugie po dodaniu nowego skryptu do cron.daily nie zostanie on wykonany w tym samym dniu, bo anacron już wykonał zaplanowane zadania. Można sobie pomóc usuwając lub edytując /var/spool/anacron/cron.daily


Solved
ODPOWIEDZ