Execute o rkhunter regularmente em um sistema desktop

1

Eu quero receber um aviso na minha área de trabalho quando o rkhunter encontrar algo estranho no meu sistema.

Eu coloquei na lista de permissões alguns arquivos e diretórios que parecem ok em /etc/rkhunter.conf , por isso não recebo mais avisos.

Agora quero colocar este comando em algum lugar:

sudo rkhunter --checkall --report-warnings-only | while read OUTPUT; do notify-send "$OUTPUT"; done

Eu sei como usar cron , mas isso não funciona, porque meu computador está rodando em horários irregulares, então onde eu tenho que colocar isso para que ele seja executado uma vez por dia mas não durante o sistema inicialização? O ideal seria 30 minutos após a inicialização.

    
por rubo77 14.10.2014 / 01:47

3 respostas

1

Executar na inicialização, exibir com zenity

Crie um arquivo /usr/local/sbin/rkhunter-check e torne-o executável:

sudo touch /usr/local/sbin/rkhunter-check
sudo chmod +x /usr/local/sbin/rkhunter-check

Edite o arquivo gksu gedit /usr/local/sbin/rkhunter-check

#!/usr/bin/env bash
export DISPLAY=:0
MAINUSER="$(awk -F: '==1000{print }' /etc/passwd)"
LOG=/tmp/.rkhunter-warnings
rm -f $LOG
touch $LOG
rkhunter --checkall --report-warnings-only  | while read OUTPUT; do 
  if [ "$OUTPUT" != "" ]; then
    OUTPUT="${OUTPUT//[\'\"\']/}"
    echo "$OUTPUT">>$LOG
  fi
done
if [ "$(cat $LOG)" = "" ]; then
  #like this there is always a notification, even if there is no warning, it will show an empty notification.
  echo "#no warnings">$LOG
fi
if [ "$(cat $LOG)" != "" ]; then
  su $MAINUSER -c 'zenity --text-info --width 800 --title "Rkhunter warnings" < '"$LOG"
fi

Se o rkhunter rodar gerar alguma saída (apenas avisos), este script aparecerá como uma janela rolável com a saída rkhunter.

  1. cria um script de inicialização do systemd

    Crie o script /etc/systemd/system/rkhunter.service :

    [Unit]
    Description=starts rkhunter and displays any findings with zenity
    
    [Service]
    ExecStartPre=/bin/sleep 1800
    ExecStart=/usr/local/sbin/rkhunter-check
    
    [Install]
    WantedBy=default.target
    

    Atualize o systemd com:

    sudo systemctl daemon-reload
    sudo systemctl enable rkhunter
    sudo systemctl start rkhunter
    
  2. inicie por /etc/rc.local

    Em sistemas sem systemd , chame o script em tempo de execução em /etc/rc.local e coloque um sleep antes de todo o comando:

    gksu gedit /etc/rc.local
    

    Adicione este comando antes da última linha em /etc/rc.local que contém exit 0 :

    sleep 1800 && /usr/local/sbin/rkhunter-check &
    

Ambas as soluções aguardarão 30 minutos antes de executar a verificação do rkhunter como root .

Você também pode combinar essa solução com a solução de envio de notificações, pois, caso não haja avisos, a caixa de diálogo do zenity não é perfeita. uma notificação seria suficiente nesse caso

#!/usr/bin/env bash
export DISPLAY=:0
MAINUSER="$(awk -F: '==1000{print }' /etc/passwd)"
LOG=/tmp/.rkhunter-warnings
echo ""> $LOG
rkhunter --checkall --report-warnings-only  | while read OUTPUT; do 
  if [ "$OUTPUT" != "" ]; then
    OUTPUT="${OUTPUT//[\'\"\']/}"
    echo "$OUTPUT">>$LOG
  fi
done
if [ "$(cat $LOG)" = "" ]; then
  MAINUSER="$(awk -F: '==1000{print }' /etc/passwd)"
  if [ -r "/home/$MAINUSER/.dbus/Xdbus" ]; then
    . "/home/$MAINUSER/.dbus/Xdbus"
  fi
  su $MAINUSER -c $"notify-send \"rkhunter: no warnings\""
fi
if [ "$(cat $LOG)" != "" ]; then
  su $MAINUSER -c 'zenity --text-info --width 800 --title "Rkhunter warnings" < '"$LOG"
fi

source: Como executar um script durante a inicialização como raiz

    
por rubo77 14.10.2014 / 21:40
1

Solução com anachron e notify-send

A resposta para o problema é anachron que executa comandos automaticamente como root , onde o root precisa acessar a sessão dbus do usuário principal.

1. Dar acesso root à sua sessão de desktop (como usuário)

Para permitir que o usuário root acesse a área de trabalho do usuário padrão, primeiro você precisa definir a variável DBUS_SESSION_BUS_ADDRESS . Por padrão, o cron não tem acesso à variável que altera todo início do sistema. Para remediar isso, coloque o seguinte script em seu diretório pessoal e chame-o de ~/dbus-session-export

#!/bin/sh
touch ~/.dbus/Xdbus
chmod 600 ~/.dbus/Xdbus
env | grep DBUS_SESSION_BUS_ADDRESS > ~/.dbus/Xdbus
echo 'export DBUS_SESSION_BUS_ADDRESS' >> ~/.dbus/Xdbus
exit 0

Dê a ele direitos executáveis:

chmod +x ~/dbus-session-export

E chame isso em seus programas de inicialização. Isso criará / atualizará o arquivo ~/.dbus/Xdbus contendo a variável necessária do Dbus evironment para o anachron usar em cada inicialização do sistema.

2. Cron script (como root)

Coloque um script na pasta /etc/cron.daily/ e torne-o executável:

sudo touch /etc/cron.daily/rkhunter-check
sudo chmod +x /etc/cron.daily/rkhunter-check

Edite o arquivo gksu gedit /etc/cron.daily/rkhunter-check

#!/usr/bin/env bash
sleep 1800 # wait 30 minutes in case the script is called directly at boot
MAINUSER="$(awk -F: '==1000{print }' /etc/passwd)"
if [ -r "/home/$MAINUSER/.dbus/Xdbus" ]; then
    . "/home/$MAINUSER/.dbus/Xdbus"
fi
su $MAINUSER -c 'notify-send "starting rkhunter scan... "'
rkhunter --checkall --report-warnings-only | while read OUTPUT; do
if [ "$OUTPUT" != "" ]; then
    OUTPUT="${OUTPUT//[\'\"\']/}"
    su $MAINUSER -c $"notify-send \"rkhunter: $OUTPUT\""
fi
done

Isso executará o script todos os dias e, se a execução do rkhunter gerar alguma saída (apenas avisos), esse script aparecerá como uma notificação para cada aviso no canto superior direito da tela como usuário

Fonte:

por rubo77 16.10.2014 / 11:31
0

Você pode usar cron . Edite com:

crontab -e

para mais informações sobre como usar cron , siga este link:

tutorial do crotab

    
por AdigaJo 14.10.2014 / 01:55