Bash: encontre todos os endereços IP que foram usados ​​para uma tentativa de acesso não autorizado

Bash: encontre todos os endereços IP que foram usados ​​para uma tentativa de acesso não autorizado

Estou trabalhando na minha máquina virtual no bash. Me pedem para encontrar todos os endereços IP que foram usados ​​para uma tentativa de acesso à máquina sem autorização, usando o arquivo auth.log. Parece que não encontro nenhuma resposta para o meu problema. Aqui está um exemplo :insira a descrição da imagem aqui

todas as linhas retornadas devem ser escritas em meu arquivo compartilhado /mnt/analyse/traitement/cueillette.txt. Por favor ajude ! Obrigado

Responder1

Você não precisa canalizar grep para grep (isso é quase sempre um sinal de que você está adotando uma abordagem ineficiente e equivocada. sedpor si só é suficiente para esta tarefa. ou awk. ou perl), e isso sudo su root caté simplesmente um absurdo.

Experimente isto:

$ sudo sed -n -E -e '/sshd.*authentication failure/{s/^.*rhost=([0-9.]+).*/\1/p}' \ 
    /media/sf_partageAuth/auth.log > /mnt/analyse/traitement/cueillette.txt 

Para cada linha que corresponda a "falha de autenticação" (observe,não"autenticofication"), esse sedscript remove tudo desde o início da linha até (e inclusive) rhost=e tudo depois do endereço IP e, em seguida, imprime a linha.

Ele usa a opção sed' -Epara expressões regulares estendidas, para que ()funcione +sem a necessidade de escape.

Observe que, embora o sedcomando seja executado como root com sudo, o redirecionamento de saída não é - isso é feito em seu shell não-root original. Se você precisar de privilégios de root para gravar também no arquivo de saída, execute teecom sudo, por exemplo:

$ sudo sed -n -E -e '/sshd.*authentication failure/{s/^.*rhost=([0-9.]+).*/\1/p}' \
    /media/sf_partageAuth/auth.log | 
    sudo tee /mnt/analyse/traitement/cueillette.txt > /dev/null

informação relacionada