Monitorar logins realizados via SSH [RESOLVIDO]

1. Monitorar logins realizados via SSH [RESOLVIDO]

Wagner
wagner31

(usa CentOS)

Enviado em 02/12/2016 - 17:54h

E ai galera blz?
preciso monitorar os logins de meus servidores linux, toda vez que um usuário logar enviar um email com o usuário e IP do mesmo.
porém preciso abrir uma exceção para um endereço IP específico que é nosso servidor de monitoramento de serviços para ele não ser monitorado, pois ele valida de 1 em 1 min. e dessa forma ficaria impossível ativar essa função em nosso servidores, o script que usei foi o seguinte:


# Notificacao login ssh por SMS/E-mail

to="destino@a.com.br"
from="remetente@a.com.br"

# Pega informacoes do login feito por SSH

SSHCLIENT=$(echo $SSH_CLIENT| awk '{print $1}')

if [ -n "$SSH_TTY" ]; then

subject="URGENTE – Login realizado no SERVER"
mensagem="Usuario: $USER realizou o login partir do IP: $SSHCLIENT"

# Notifica via e-mail

cat <<EOF | sendmail -t
From:$from
To:$to
Subject:$subject

$mensagem

EOF
fi



  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 05/12/2016 - 19:15h

wagner31 escreveu:

msoliver escreveu:

wagner31 escreveu:

msoliver escreveu:

wagner31 escreveu:

Marcelo, desculpa sou leigo nessa parte ainda de scripts,
fiz oq vc falou adicionei os outros 2 campos com o "_" ainda para ele não ficar só o endereço.

172.16.3.4_root-18:03

#SEGUE O SCRIPT COMO FICOU

to="wagner@a.com.br"
from="login_server@.com.br"
subject="URGENTE - Login realizado no SERVER163"
IGNIP="/var/log/IP_IGNORE.txt"
w|awk '/([0-9]{1,3}\.){3}[0-9]{1,3}/{print $3,$1,$4}' > /var/log/CONECTADOS.txt #GERA ARQUIVO
if [ -s /var/log/CONECTADOS.txt ];then #SE O ARQUIVO FOR MAIOR QUE ZERO . . .
while IFS=" " read -r C01 C02 C03;do #PEGA "LINHA A LINHA" IP, LOGIN e HORA
if ! grep -q "^$C01$" $IGNIP;then #SE O "IP" NÃO FOR ENCONTRADO NO ARQUIVO $IGNIP, ENVIA EMAIL
mensagem="Usuario: $C02 realizou o login partir do IP: $C01 as: $C03"
#Notifica via e-mail
cat <<EOF | sendmail -t
From:$from
To:$to
Subject:$subject
$mensagem
EOF
echo "$C01"_"$C02"-"$C03" >> $IGNIP # ATUALIZA O ARQUIVO "IP_IGNORE.txt" . . .
fi
done</var/log/CONECTADOS.txt
fi


e quando logo no server ele está dando a seguinte mensagem:

No recipient addresses found in header 



Wagner,
Muito boa a sua iniciativa de tentar!!!! Tente sempre, assim que aprendi....
172.16.3.4_root-18:03
Foram usados dois SEPARADORES, "_" e "-"
E não alterou o "grep" . . . Erro comum . . . No script é "tudo ligado", Um detalhe alterado..... muda tudo

Fiz aqui, testei e funcionou!!!
Fiz LOGOFF e LOGIN, mandou a mensagem.
Segue:
#!/bin/bash
to="destino@a.com.br"
from="remetente@a.com.br"
subject="URGENTE - Login realizado no SERVER"
IGNIP="IP_IGNORE.txt"

w|awk '/([0-9]{1,3}\.){3}[0-9]{1,3}/{print $1,$3,$4}' > CONECTADOS.txt
if [ -s CONECTADOS.txt ];then
while IFS=" " read -r user ip hora ;do
if ! grep -qx "^$user $ip $hora$" $IGNIP;then
mensagem="Usuario: $user realizou o login a partir do IP: $ip as: $hora"
#TESTANDO
#echo "$mensagem"
#Notifica via e-mail
cat <<EOF | sendmail -t
From:$from
To:$to
Subject:$subject
$mensagem
EOF
echo "$user $ip $hora" >> $IGNIP
fi
done<CONECTADOS.txt
fi

Alterei o nome das variáveis "no while", fica mais fácil o entendimento.

Att.
Marcelo Oliver

acho que está quase agora Marcelo, ele envia o email mas sem nada no corpo, só o assunto.


Faça o teste, vai mostrar na TELA:

#!/bin/bash
to="destino@a.com.br"
from="remetente@a.com.br"
subject="URGENTE - Login realizado no SERVER"
IGNIP="IP_IGNORE.txt"

w|awk '/([0-9]{1,3}\.){3}[0-9]{1,3}/{print $1,$3,$4}' > CONECTADOS.txt
if [ -s CONECTADOS.txt ];then
while IFS=" " read -r user ip hora ;do
if ! grep -qx "^$user $ip $hora$" $IGNIP;then
mensagem="Usuario: $user realizou o login a partir do IP: $ip as: $hora"
#TESTANDO
echo -e " To:$to\n From:from\n Assunto:$subject\n MENSAGEM:mensagem"
#Notifica via e-mail
# cat <<EOF | sendmail -t
# From:$from
# To:$to
# Subject:$subject
# $mensagem
# EOF
echo "$user $ip $hora" >> $IGNIP
fi
done<CONECTADOS.txt
fi


mso


Marcelo agora deu certo, só precisei fazer uma mudança no script dar um "enter" entre o assunto e a mensagem ficando assim:

Subject:$subject

$mensagem

EOF


dessa forma ele trouxe o conteúdo no corpo do email, obrigado mais uma vez Marcelo, não é a primeira vez q vc me ajuda aqui... abraços


-----------------------------------------------------------
Bom que deu certo Wagner....
Se a ajuda foi satisfatória . . .
Marque a resposta como A MELHOR, dessa forma ganho uns pontos, o que incentiva a contribuir . . .

Abraço, Marcelo Oliver

3. Re: Monitorar logins realizados via SSH [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 02/12/2016 - 20:07h

wagner31 escreveu:

E ai galera blz?
preciso monitorar os logins de meus servidores linux, toda vez que um usuário logar enviar um email com o usuário e IP do mesmo.
porém preciso abrir uma exceção para um endereço IP específico que é nosso servidor de monitoramento de serviços para ele não ser monitorado, pois ele valida de 1 em 1 min. e dessa forma ficaria impossível ativar essa função em nosso servidores, o script que usei foi o seguinte:


# Notificacao login ssh por SMS/E-mail

to="destino@a.com.br"
from="remetente@a.com.br"

# Pega informacoes do login feito por SSH

SSHCLIENT=$(echo $SSH_CLIENT| awk '{print $1}')

if [ -n "$SSH_TTY" ]; then

subject="URGENTE – Login realizado no SERVER"
mensagem="Usuario: $USER realizou o login partir do IP: $SSHCLIENT"

# Notifica via e-mail

cat <<EOF | sendmail -t
From:$from
To:$to
Subject:$subject

$mensagem

EOF
fi


Boa noite Wagner.
Coloca um "test", verificando se o "IP" é diferente do IP_DO_SERVER
O script postado esta completo?

Att.:
Marcelo Oliver


4. Re: Monitorar logins realizados via SSH

Wagner
wagner31

(usa CentOS)

Enviado em 03/12/2016 - 01:01h

msoliver escreveu:

[quote]wagner31 escreveu:

E ai galera blz?
preciso monitorar os logins de meus servidores linux, toda vez que um usuário logar enviar um email com o usuário e IP do mesmo.
porém preciso abrir uma exceção para um endereço IP específico que é nosso servidor de monitoramento de serviços para ele não ser monitorado, pois ele valida de 1 em 1 min. e dessa forma ficaria impossível ativar essa função em nosso servidores, o script que usei foi o seguinte:


# Notificacao login ssh por SMS/E-mail

to="destino@a.com.br"
from="remetente@a.com.br"

# Pega informacoes do login feito por SSH

SSHCLIENT=$(echo $SSH_CLIENT| awk '{print $1}')

if [ -n "$SSH_TTY" ]; then

subject="URGENTE – Login realizado no SERVER"
mensagem="Usuario: $USER realizou o login partir do IP: $SSHCLIENT"

# Notifica via e-mail

cat <<EOF | sendmail -t
From:$from
To:$to
Subject:$subject

$mensagem

EOF
fi



Boa noite Wagner.
Coloca um "test", verificando se o "IP" é diferente do IP_DO_SERVER
O script postado esta completo?

Att.:
Marcelo Oliver[/quot.]

tá completo sim Oliver
mas eu não manjo como
faço esse teste
meu forte não é script ainda... poderia me ajudar?




5. Re: Monitorar logins realizados via SSH

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 04/12/2016 - 13:03h

wagner31 escreveu:
msoliver escreveu:
[quote]wagner31 escreveu:
E ai galera blz?
preciso monitorar os logins de meus servidores linux, toda vez que um usuário logar enviar um email com o usuário e IP do mesmo.
porém preciso abrir uma exceção para um endereço IP específico que é nosso servidor de monitoramento de serviços para ele não ser monitorado, pois ele valida de 1 em 1 min. e dessa forma ficaria impossível ativar essa função em nosso servidores, o script que usei foi o seguinte:

#!/bin/bash
# Notificacao login ssh por SMS/E-mail
to="destino@a.com.br"
from="remetente@a.com.br"
# Pega informacoes do login feito por SSH
SSHCLIENT=$(echo $SSH_CLIENT| awk '{print $1}')
if [ -n "$SSH_TTY" ]; then
subject="URGENTE – Login realizado no SERVER"
mensagem="Usuario: $USER realizou o login partir do IP: $SSHCLIENT"
# Notifica via e-mail
cat <<EOF | sendmail -t

From:$from
To:$to
Subject:$subject
$mensagem
EOF
fi


Boa noite Wagner.
Coloca um "test", verificando se o "IP" é diferente do IP_DO_SERVER
O script postado esta completo?

Att.:
Marcelo Oliver[/quot.]

tá completo sim Oliver
mas eu não manjo como faço esse teste
meu forte não é script ainda... poderia me ajudar?


Boa tarde Wagner.
Não entendi a lógica...
1º - SSHCLIENT=$(echo $SSH_CLIENT| awk '{print $1}')
"PEGA" o campo 01 de $SSH_CLIENT, e atribui p/ SSHCLIENT.
Como atribuiu o valor p/ "$SSH_CLIENT"?

2º - if [ -n "$SSH_TTY" ]; then
Se "$SSH_TTY" não é nula, dispara o e-mail.
Como atribuiu o valor p/ "$SSH_TTY"?

Fiz um novo script . . .
Segue:
#!/bin/bash
IP_SERVER=""
to="destino@a.com.br"
from="remetente@a.com.br"
subject="URGENTE - Login realizado no SERVER"

w|awk '/([0-9]{1,3}\.){3}[0-9]{1,3}/{print $3":"$1}'|sort -t":" -k2|uniq > CONETADOS.txt
if [ -s CONETADOS.txt ];then
while IFS=":" read -r C01 C02;do
if [ $C01 != $IP_SERVER ];then
mensagem="Usuario: $C02 realizou o login partir do IP: $C01"
# Notifica via e-mail
cat <<EOF | sendmail -t
From:$from
To:$to
Subject:$subject
$mensagem
EOF
fi
done<CONETADOS.txt
fi
Obs.: "Os comandos da NOTIFICAÇãO por EMAIL, não foram alterados, copiei do seu script e não TESTEI.

Os comandos:
w|awk '/([0-9]{1,3}\.){3}[0-9]{1,3}/{print $3":"$1}'|sort -t":" -k2|uniq > CONECTADOS.txt
while IFS=":" read -r C01 C02;do
if [ $C01 != "192.168.1.8" ];then
echo "ENVIA EMAIL => $C01 $C02"
done<CONECTADOS

Foram testados e funcionam satisfatoriamente.

E não ESQUEÇA!
Se a resposta foi SATISFATóRIA, marque-a como A MELHOR....


Att.:
Marcelo Oliver


6. Re: Monitorar logins realizados via SSH

Wagner
wagner31

(usa CentOS)

Enviado em 05/12/2016 - 10:49h

msoliver escreveu:

wagner31 escreveu:
msoliver escreveu:
[quote]wagner31 escreveu:
E ai galera blz?
preciso monitorar os logins de meus servidores linux, toda vez que um usuário logar enviar um email com o usuário e IP do mesmo.
porém preciso abrir uma exceção para um endereço IP específico que é nosso servidor de monitoramento de serviços para ele não ser monitorado, pois ele valida de 1 em 1 min. e dessa forma ficaria impossível ativar essa função em nosso servidores, o script que usei foi o seguinte:

#!/bin/bash
# Notificacao login ssh por SMS/E-mail
to="destino@a.com.br"
from="remetente@a.com.br"
# Pega informacoes do login feito por SSH
SSHCLIENT=$(echo $SSH_CLIENT| awk '{print $1}')
if [ -n "$SSH_TTY" ]; then
subject="URGENTE – Login realizado no SERVER"
mensagem="Usuario: $USER realizou o login partir do IP: $SSHCLIENT"
# Notifica via e-mail
cat <<EOF | sendmail -t

From:$from
To:$to
Subject:$subject
$mensagem
EOF
fi



Boa noite Wagner.
Coloca um "test", verificando se o "IP" é diferente do IP_DO_SERVER
O script postado esta completo?

Att.:
Marcelo Oliver[/quot.]

tá completo sim Oliver
mas eu não manjo como faço esse teste
meu forte não é script ainda... poderia me ajudar?


Boa tarde Wagner.
Não entendi a lógica...
1º - SSHCLIENT=$(echo $SSH_CLIENT| awk '{print $1}')
"PEGA" o campo 01 de $SSH_CLIENT, e atribui p/ SSHCLIENT.
Como atribuiu o valor p/ "$SSH_CLIENT"?


2º - if [ -n "$SSH_TTY" ]; then
Se "$SSH_TTY" não é nula, dispara o e-mail.
Como atribuiu o valor p/ "$SSH_TTY"?


Fiz um novo script . . .
Segue:
#!/bin/bash
IP_SERVER=""
to="destino@a.com.br"
from="remetente@a.com.br"
subject="URGENTE - Login realizado no SERVER"

w|awk '/([0-9]{1,3}\.){3}[0-9]{1,3}/{print $3":"$1}'|sort -t":" -k2|uniq > CONETADOS.txt
if [ -s CONETADOS.txt ];then
while IFS=":" read -r C01 C02;do
if [ $C01 != $IP_SERVER ];then
mensagem="Usuario: $C02 realizou o login partir do IP: $C01"
# Notifica via e-mail
cat <<EOF | sendmail -t
From:$from
To:$to
Subject:$subject
$mensagem
EOF
fi
done<CONETADOS.txt
fi

Obs.: "Os comandos da NOTIFICAÇãO por EMAIL, não foram alterados, copiei do seu script e não TESTEI.

Os comandos:
w|awk '/([0-9]{1,3}\.){3}[0-9]{1,3}/{print $3":"$1}'|sort -t":" -k2|uniq > CONECTADOS.txt
while IFS=":" read -r C01 C02;do
if [ $C01 != "192.168.1.8" ];then
echo "ENVIA EMAIL => $C01 $C02"
done<CONECTADOS

Foram testados e funcionam satisfatoriamente.

E não ESQUEÇA!
Se a resposta foi SATISFATóRIA, marque-a como A MELHOR....


Att.:
Marcelo Oliver



Marcelo,

coloquei esse script no arquivo /etc/profile e aconteceu o seguinte problema.
o "IP_SERVIDOR" é para eu definir qual IP não quero que ele gere a monitoração correto?
porém ele está enviando o email com o IP da minha máquina agora de 2 em 2 minutos como se eu estivesse logando, acredito que ele sempre vá pegar os dados do arquivo CONECTADOS.txt correto?
isso não seria um problema? pq a informação sempre vai existir ali dentro dele com os ips que logaram?
a minha idéia é receber um email cada vez que um usuário logar na maquina, com o ip e o usuário que logou.

Quanto as suas dúvidas de como "montei" o script infelizmente não sei te responder, achei esse script na net e dei uma mudada, segue o link do site
https://lucianoborguetti.wordpress.com/2009/11/01/monitorar-logins-realizados-via-ssh/



7. Re: Monitorar logins realizados via SSH [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 05/12/2016 - 11:49h

wagner31 escreveu:

msoliver escreveu:

wagner31 escreveu:
msoliver escreveu:
[quote]wagner31 escreveu:
E ai galera blz?
preciso monitorar os logins de meus servidores linux, toda vez que um usuário logar enviar um email com o usuário e IP do mesmo.
porém preciso abrir uma exceção para um endereço IP específico que é nosso servidor de monitoramento de serviços para ele não ser monitorado, pois ele valida de 1 em 1 min. e dessa forma ficaria impossível ativar essa função em nosso servidores, o script que usei foi o seguinte:

#!/bin/bash
# Notificacao login ssh por SMS/E-mail
to="destino@a.com.br"
from="remetente@a.com.br"
# Pega informacoes do login feito por SSH
SSHCLIENT=$(echo $SSH_CLIENT| awk '{print $1}')
if [ -n "$SSH_TTY" ]; then
subject="URGENTE – Login realizado no SERVER"
mensagem="Usuario: $USER realizou o login partir do IP: $SSHCLIENT"
# Notifica via e-mail
cat <<EOF | sendmail -t

From:$from
To:$to
Subject:$subject
$mensagem
EOF
fi


Boa noite Wagner.
Coloca um "test", verificando se o "IP" é diferente do IP_DO_SERVER
O script postado esta completo?

Att.:
Marcelo Oliver[/quot.]

tá completo sim Oliver
mas eu não manjo como faço esse teste
meu forte não é script ainda... poderia me ajudar?


Boa tarde Wagner.
Não entendi a lógica...
1º - SSHCLIENT=$(echo $SSH_CLIENT| awk '{print $1}')
"PEGA" o campo 01 de $SSH_CLIENT, e atribui p/ SSHCLIENT.
Como atribuiu o valor p/ "$SSH_CLIENT"?

2º - if [ -n "$SSH_TTY" ]; then
Se "$SSH_TTY" não é nula, dispara o e-mail.
Como atribuiu o valor p/ "$SSH_TTY"?

Fiz um novo script . . .
Segue:
#!/bin/bash
IP_SERVER=""
to="destino@a.com.br"
from="remetente@a.com.br"
subject="URGENTE - Login realizado no SERVER"

w|awk '/([0-9]{1,3}\.){3}[0-9]{1,3}/{print $3":"$1}'|sort -t":" -k2|uniq > CONETADOS.txt
if [ -s CONETADOS.txt ];then
while IFS=":" read -r C01 C02;do
if [ $C01 != $IP_SERVER ];then
mensagem="Usuario: $C02 realizou o login partir do IP: $C01"
# Notifica via e-mail
cat <<EOF | sendmail -t
From:$from
To:$to
Subject:$subject
$mensagem
EOF
fi
done<CONETADOS.txt
fi
Obs.: "Os comandos da NOTIFICAÇãO por EMAIL, não foram alterados, copiei do seu script e não TESTEI.

Os comandos:
w|awk '/([0-9]{1,3}\.){3}[0-9]{1,3}/{print $3":"$1}'|sort -t":" -k2|uniq > CONECTADOS.txt
while IFS=":" read -r C01 C02;do
if [ $C01 != "$IP_SERVER" ];then
echo "ENVIA EMAIL => $C01 $C02"
done<CONECTADOS

Foram testados e funcionam satisfatoriamente.

E não ESQUEÇA!
Se a resposta foi SATISFATóRIA, marque-a como A MELHOR....


Att.:
Marcelo Oliver



Marcelo,

coloquei esse script no arquivo /etc/profile e aconteceu o seguinte problema.
o "IP_SERVIDOR" é para eu definir qual IP não quero que ele gere a monitoração correto?
porém ele está enviando o email com o IP da minha máquina agora de 2 em 2 minutos como se eu estivesse logando, acredito que ele sempre vá pegar os dados do arquivo CONECTADOS.txt correto?
isso não seria um problema? pq a informação sempre vai existir ali dentro dele com os ips que logaram?
a minha idéia é receber um email cada vez que um usuário logar na maquina, com o ip e o usuário que logou.


Wagner, bom dia.
o "IP_SERVIDOR" é para eu definir qual IP não quero que ele gere a monitoração correto?
Correto.
Sim, ele "pega" os dados de CONECTADOS.txt, que tem os IP's e usuários que estão logados no momento em que o arquivo foi gerado.

A informação sempre vai existir ali dentro dele com os ips que logaram?
Não, a informação é referente aos IP's que estão logados.

Se o usuário permanecer logado, voce gostaria que enviasse o email somente uma vez?
Caso positivo, será necessário gerar um log dos "EMAIL's" enviados . . . e ignorar os mesmos . . .

No aguardo.
Marcelo



8. Re: Monitorar logins realizados via SSH

Wagner
wagner31

(usa CentOS)

Enviado em 05/12/2016 - 12:03h

msoliver escreveu:

[quote]wagner31 escreveu:

[quote]msoliver escreveu:

Wagner, bom dia.
o "IP_SERVIDOR" é para eu definir qual IP não quero que ele gere a monitoração correto?
Correto.
Sim, ele "pega" os dados de CONECTADOS.txt, que tem os IP's e usuários que estão logados no momento em que o arquivo foi gerado.

A informação sempre vai existir ali dentro dele com os ips que logaram?
Não, a informação é referente aos IP's que estão logados.

Se o usuário permanecer logado, voce gostaria que enviasse o email somente uma vez?
Caso positivo, será necessário gerar um log dos "EMAIL's" enviados . . . e ignorar os mesmos . . .

No aguardo.
Marcelo


Bom dia Marcelo

gostaria que enviasse o email somente uma vez sim, é mais para controlar a hora do acesso e de qual maquina veio o login.
não teria como usar o script q eu utilizei mas colocando uma variavel que se for diferente desse IP que não quero que envie ele não envia?


9. Re: Monitorar logins realizados via SSH [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 05/12/2016 - 15:21h

wagner31 escreveu:

msoliver escreveu:

[quote]wagner31 escreveu:

[quote]msoliver escreveu:

Wagner, bom dia.
o "IP_SERVIDOR" é para eu definir qual IP não quero que ele gere a monitoração correto?
Correto.
Sim, ele "pega" os dados de CONECTADOS.txt, que tem os IP's e usuários que estão logados no momento em que o arquivo foi gerado.

A informação sempre vai existir ali dentro dele com os ips que logaram?
Não, a informação é referente aos IP's que estão logados.

Se o usuário permanecer logado, voce gostaria que enviasse o email somente uma vez?
Caso positivo, será necessário gerar um log dos "EMAIL's" enviados . . . e ignorar os mesmos . . .

No aguardo.
Marcelo


Bom dia Marcelo

gostaria que enviasse o email somente uma vez sim, é mais para controlar a hora do acesso e de qual maquina veio o login.
não teria como usar o script q eu utilizei mas colocando uma variavel que se for diferente desse IP que não quero que envie ele não envia?


Wagner, boa tarde.
Quanto ao seu script, ele acusa erros . . . .
Conforme citei na postagem de Nº 4.

Adequei o script para enviar o E-MAIL somente 01 vez, e com a hora do login . . .
Segue:
#!/bin/bash
to="destino@a.com.br"
from="remetente@a.com.br"
subject="URGENTE - Login realizado no SERVER"
IGNIP="IP_IGNORE.txt"
w|awk '/([0-9]{1,3}\.){3}[0-9]{1,3}/{print $3,$1,$4}' > CONECTADOS.txt #GERA ARQUIVO
if [ -s CONECTADOS.txt ];then #SE O ARQUIVO FOR MAIOR QUE ZERO . . .
while IFS=" " read -r C01 C02 C03;do #PEGA "LINHA A LINHA" IP, LOGIN e HORA
if ! grep -q "^$C01$" $IGNIP;then #SE O "IP" NÃO FOR ENCONTRADO NO ARQUIVO $IGNIP, ENVIA EMAIL
mensagem="Usuario: $C02 realizou o login partir do IP: $C01 as: $C03"
#Notifica via e-mail
cat <<EOF | sendmail -t
From:$from
To:$to
Subject:$subject
$mensagem
EOF
echo "$C01" >> $IGNIP # ATUALIZA O ARQUIVO "IP_IGNORE.txt" . . .
fi
done<CONECTADOS.txt
fi

OBS.: Coloque o IP do SERVER, no ARQUIVO IP_IGNORE.txt
Testei aqui e envia somente um vez.

E não ESQUEÇA!
Se a resposta foi SATISFATóRIA, marque-a como A MELHOR.... :)


É isso . . .

Marcelo Oliver






10. Re: Monitorar logins realizados via SSH

Wagner
wagner31

(usa CentOS)

Enviado em 05/12/2016 - 16:05h

msoliver escreveu:

wagner31 escreveu:

msoliver escreveu:

[quote]wagner31 escreveu:

[quote]msoliver escreveu:

Wagner, bom dia.
o "IP_SERVIDOR" é para eu definir qual IP não quero que ele gere a monitoração correto?
Correto.
Sim, ele "pega" os dados de CONECTADOS.txt, que tem os IP's e usuários que estão logados no momento em que o arquivo foi gerado.

A informação sempre vai existir ali dentro dele com os ips que logaram?
Não, a informação é referente aos IP's que estão logados.

Se o usuário permanecer logado, voce gostaria que enviasse o email somente uma vez?
Caso positivo, será necessário gerar um log dos "EMAIL's" enviados . . . e ignorar os mesmos . . .

No aguardo.
Marcelo


Bom dia Marcelo

gostaria que enviasse o email somente uma vez sim, é mais para controlar a hora do acesso e de qual maquina veio o login.
não teria como usar o script q eu utilizei mas colocando uma variavel que se for diferente desse IP que não quero que envie ele não envia?


Wagner, boa tarde.
Quanto ao seu script, ele acusa erros . . . .
Conforme citei na postagem de Nº 4.

Adequei o script para enviar o E-MAIL somente 01 vez, e com a hora do login . . .
Segue:
#!/bin/bash
to="destino@a.com.br"
from="remetente@a.com.br"
subject="URGENTE - Login realizado no SERVER"
IGNIP="IP_IGNORE.txt"
w|awk '/([0-9]{1,3}\.){3}[0-9]{1,3}/{print $3,$1,$4}' > CONECTADOS.txt #GERA ARQUIVO
if [ -s CONECTADOS.txt ];then #SE O ARQUIVO FOR MAIOR QUE ZERO . . .
while IFS=" " read -r C01 C02 C03;do #PEGA "LINHA A LINHA" IP, LOGIN e HORA
if ! grep -q "^$C01$" $IGNIP;then #SE O "IP" NÃO FOR ENCONTRADO NO ARQUIVO $IGNIP, ENVIA EMAIL
mensagem="Usuario: $C02 realizou o login partir do IP: $C01 as: $C03"
#Notifica via e-mail
cat <<EOF | sendmail -t
From:$from
To:$to
Subject:$subject
$mensagem
EOF
echo "$C01" >> $IGNIP # ATUALIZA O ARQUIVO "IP_IGNORE.txt" . . .
fi
done<CONECTADOS.txt
fi

OBS.: Coloque o IP do SERVER, no ARQUIVO IP_IGNORE.txt
Testei aqui e envia somente um vez.

E não ESQUEÇA!
Se a resposta foi SATISFATóRIA, marque-a como A MELHOR.... :)


É isso . . .

Marcelo Oliver






Marcelo, não está mandando o email com IP do servidor que estiver no arquivo IP_IGONORE, porém ele está adicionando o IP da minha maquina quando logo no server, fazendo com que não envie o email informando o login da minha maquina no server....

quando voce faz a atualização do arquivo ele pega o ip da minha maquina e adiciona nele, qual a necessidade de fazer isso? pois ele está pegando o ip da minha maquina e colocando entre os Ip's que não quero receber o email, esto confuso.

quanto ao meu script ele funcionou aqui, porem fica enviando email toda vez que o servidor d monitoração loga nele.. e é isso que eu não queria.

segue o script como ficou

to="wagner@a.com.br"
from="login_server@a.com.br"
subject="URGENTE - Login realizado no SERVER"
IGNIP="/var/log/IP_IGNORE.txt"
w|awk '/([0-9]{1,3}\.){3}[0-9]{1,3}/{print $3,$1,$4}' > /var/log/CONECTADOS.txt #GERA ARQUIVO
if [ -s /var/log/CONECTADOS.txt ];then #SE O ARQUIVO FOR MAIOR QUE ZERO . . .
while IFS=" " read -r C01 C02 C03;do #PEGA "LINHA A LINHA" IP, LOGIN e HORA
if ! grep -q "^$C01$" $IGNIP;then #SE O "IP" NÃO FOR ENCONTRADO NO ARQUIVO $IGNIP, ENVIA EMAIL
mensagem="Usuario: $C02 realizou o login partir do IP: $C01 as: $C03"
#Notifica via e-mail
cat <<EOF | sendmail -t
From:$from
To:$to
Subject:$subject
$mensagem
EOF
echo "$C01" >> $IGNIP # ATUALIZA O ARQUIVO "IP_IGNORE.txt" . . .
fi
done</var/log/CONECTADOS.txt
fi


OBS: mudei o EOF de lugar pois se eu deixasse ele na mesma linha, ficaria vermelho como o resto do comando abaixo dele.


11. Re: Monitorar logins realizados via SSH [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 05/12/2016 - 17:06h

wagner31 escreveu:

msoliver escreveu:

wagner31 escreveu:

msoliver escreveu:

[quote]wagner31 escreveu:

[quote]msoliver escreveu:

Wagner, bom dia.
o "IP_SERVIDOR" é para eu definir qual IP não quero que ele gere a monitoração correto?
Correto.
Sim, ele "pega" os dados de CONECTADOS.txt, que tem os IP's e usuários que estão logados no momento em que o arquivo foi gerado.

A informação sempre vai existir ali dentro dele com os ips que logaram?
Não, a informação é referente aos IP's que estão logados.

Se o usuário permanecer logado, voce gostaria que enviasse o email somente uma vez?
Caso positivo, será necessário gerar um log dos "EMAIL's" enviados . . . e ignorar os mesmos . . .

No aguardo.
Marcelo


Bom dia Marcelo

gostaria que enviasse o email somente uma vez sim, é mais para controlar a hora do acesso e de qual maquina veio o login.
não teria como usar o script q eu utilizei mas colocando uma variavel que se for diferente desse IP que não quero que envie ele não envia?


Wagner, boa tarde.
Quanto ao seu script, ele acusa erros . . . .
Conforme citei na postagem de Nº 4.

Adequei o script para enviar o E-MAIL somente 01 vez, e com a hora do login . . .
Segue:
#!/bin/bash
to="destino@a.com.br"
from="remetente@a.com.br"
subject="URGENTE - Login realizado no SERVER"
IGNIP="IP_IGNORE.txt"
w|awk '/([0-9]{1,3}\.){3}[0-9]{1,3}/{print $3,$1,$4}' > CONECTADOS.txt #GERA ARQUIVO
if [ -s CONECTADOS.txt ];then #SE O ARQUIVO FOR MAIOR QUE ZERO . . .
while IFS=" " read -r C01 C02 C03;do #PEGA "LINHA A LINHA" IP, LOGIN e HORA
if ! grep -q "^$C01$" $IGNIP;then #SE O "IP" NÃO FOR ENCONTRADO NO ARQUIVO $IGNIP, ENVIA EMAIL
mensagem="Usuario: $C02 realizou o login partir do IP: $C01 as: $C03"
#Notifica via e-mail
cat <<EOF | sendmail -t
From:$from
To:$to
Subject:$subject
$mensagem
EOF
echo "$C01" >> $IGNIP # ATUALIZA O ARQUIVO "IP_IGNORE.txt" . . .
fi
done<CONECTADOS.txt
fi

OBS.: Coloque o IP do SERVER, no ARQUIVO IP_IGNORE.txt
Testei aqui e envia somente um vez.

E não ESQUEÇA!
Se a resposta foi SATISFATóRIA, marque-a como A MELHOR.... :)


É isso . . .

Marcelo Oliver


Marcelo, não está mandando o email com IP do servidor que estiver no arquivo IP_IGONORE, porém ele está adicionando o IP da minha maquina quando logo no server, fazendo com que não envie o email informando o login da minha maquina no server....

quando voce faz a atualização do arquivo ele pega o ip da minha maquina e adiciona nele, qual a necessidade de fazer isso? pois ele está pegando o ip da minha maquina e colocando entre os Ip's que não quero receber o email, esto confuso.

quanto ao meu script ele funcionou aqui, porem fica enviando email toda vez que o servidor d monitoração loga nele.. e é isso que eu não queria.

segue o script como ficou

to="wagner@a.com.br"
from="login_server@a.com.br"
subject="URGENTE - Login realizado no SERVER163"
IGNIP="/var/log/IP_IGNORE.txt"
w|awk '/([0-9]{1,3}\.){3}[0-9]{1,3}/{print $3,$1,$4}' > /var/log/CONECTADOS.txt #GERA ARQUIVO
if [ -s /var/log/CONECTADOS.txt ];then #SE O ARQUIVO FOR MAIOR QUE ZERO . . .
while IFS=" " read -r C01 C02 C03;do #PEGA "LINHA A LINHA" IP, LOGIN e HORA
if ! grep -q "^$C01$" $IGNIP;then #SE O "IP" NÃO FOR ENCONTRADO NO ARQUIVO $IGNIP, ENVIA EMAIL
mensagem="Usuario: $C02 realizou o login partir do IP: $C01 as: $C03"
#Notifica via e-mail
cat <<EOF | sendmail -t
From:$from
To:$to
Subject:$subject
$mensagem
EOF
echo "$C01" >> $IGNIP # ATUALIZA O ARQUIVO "IP_IGNORE.txt" . . .
fi
done</var/log/CONECTADOS.txt
fi


OBS: mudei o EOF de lugar pois se eu deixasse ele na mesma linha, ficaria vermelho como o resto do comando abaixo dele.

----------------------------------------------------------------
Wagner, veja bem,
Temos o ip do server, que devemos excluir do "envio de email", e também os que já foram enviados . . .
ao inves da VAR "IP_SERVER", coloco os IPs em $IGNIP.
A INCLUSãO do IP no $IGNIP, somente deve ocorrer após o envio do email.
ENVIE a SAIDA do COMANDO w, e assinale qual é a sua maquina

No aguardo,
Marcelo



12. Re: Monitorar logins realizados via SSH

Wagner
wagner31

(usa CentOS)

Enviado em 05/12/2016 - 17:19h

msoliver escreveu:

Wagner, bom dia.
o "IP_SERVIDOR" é para eu definir qual IP não quero que ele gere a monitoração correto?
Correto.
Sim, ele "pega" os dados de CONECTADOS.txt, que tem os IP's e usuários que estão logados no momento em que o arquivo foi gerado.

A informação sempre vai existir ali dentro dele com os ips que logaram?
Não, a informação é referente aos IP's que estão logados.

Se o usuário permanecer logado, voce gostaria que enviasse o email somente uma vez?
Caso positivo, será necessário gerar um log dos "EMAIL's" enviados . . . e ignorar os mesmos . . .

No aguardo.
Marcelo


Bom dia Marcelo

gostaria que enviasse o email somente uma vez sim, é mais para controlar a hora do acesso e de qual maquina veio o login.
não teria como usar o script q eu utilizei mas colocando uma variavel que se for diferente desse IP que não quero que envie ele não envia?[/quote]

Wagner, boa tarde.
Quanto ao seu script, ele acusa erros . . . .
Conforme citei na postagem de Nº 4.

Adequei o script para enviar o E-MAIL somente 01 vez, e com a hora do login . . .
Segue:
#!/bin/bash
to="destino@a.com.br"
from="remetente@a.com.br"
subject="URGENTE - Login realizado no SERVER"
IGNIP="IP_IGNORE.txt"
w|awk '/([0-9]{1,3}\.){3}[0-9]{1,3}/{print $3,$1,$4}' > CONECTADOS.txt #GERA ARQUIVO
if [ -s CONECTADOS.txt ];then #SE O ARQUIVO FOR MAIOR QUE ZERO . . .
while IFS=" " read -r C01 C02 C03;do #PEGA "LINHA A LINHA" IP, LOGIN e HORA
if ! grep -q "^$C01$" $IGNIP;then #SE O "IP" NÃO FOR ENCONTRADO NO ARQUIVO $IGNIP, ENVIA EMAIL
mensagem="Usuario: $C02 realizou o login partir do IP: $C01 as: $C03"
#Notifica via e-mail
cat <<EOF | sendmail -t
From:$from
To:$to
Subject:$subject
$mensagem
EOF
echo "$C01" >> $IGNIP # ATUALIZA O ARQUIVO "IP_IGNORE.txt" . . .
fi
done<CONECTADOS.txt
fi

OBS.: Coloque o IP do SERVER, no ARQUIVO IP_IGNORE.txt
Testei aqui e envia somente um vez.

E não ESQUEÇA!
Se a resposta foi SATISFATóRIA, marque-a como A MELHOR.... :)


É isso . . .

Marcelo Oliver
[/quote]

Marcelo, não está mandando o email com IP do servidor que estiver no arquivo IP_IGONORE, porém ele está adicionando o IP da minha maquina quando logo no server, fazendo com que não envie o email informando o login da minha maquina no server....

quando voce faz a atualização do arquivo ele pega o ip da minha maquina e adiciona nele, qual a necessidade de fazer isso? pois ele está pegando o ip da minha maquina e colocando entre os Ip's que não quero receber o email, esto confuso.

quanto ao meu script ele funcionou aqui, porem fica enviando email toda vez que o servidor d monitoração loga nele.. e é isso que eu não queria.

segue o script como ficou

to="wagner@a.com.br"
from="login_server@a.com.br"
subject="URGENTE - Login realizado no SERVER163"
IGNIP="/var/log/IP_IGNORE.txt"
w|awk '/([0-9]{1,3}\.){3}[0-9]{1,3}/{print $3,$1,$4}' > /var/log/CONECTADOS.txt #GERA ARQUIVO
if [ -s /var/log/CONECTADOS.txt ];then #SE O ARQUIVO FOR MAIOR QUE ZERO . . .
while IFS=" " read -r C01 C02 C03;do #PEGA "LINHA A LINHA" IP, LOGIN e HORA
if ! grep -q "^$C01$" $IGNIP;then #SE O "IP" NÃO FOR ENCONTRADO NO ARQUIVO $IGNIP, ENVIA EMAIL
mensagem="Usuario: $C02 realizou o login partir do IP: $C01 as: $C03"
#Notifica via e-mail
cat <<EOF | sendmail -t
From:$from
To:$to
Subject:$subject
$mensagem
EOF
echo "$C01" >> $IGNIP # ATUALIZA O ARQUIVO "IP_IGNORE.txt" . . .
fi
done</var/log/CONECTADOS.txt
fi


OBS: mudei o EOF de lugar pois se eu deixasse ele na mesma linha, ficaria vermelho como o resto do comando abaixo dele.[/quote]
----------------------------------------------------------------
Wagner, veja bem,
Temos o ip do server, que devemos excluir do "envio de email", e também os que já foram enviados . . .
ao inves da VAR "IP_SERVER", coloco os IPs em $IGNIP.
A INCLUSãO do IP no $IGNIP, somente deve ocorrer após o envio do email.
ENVIE a SAIDA do COMANDO w, e assinale qual é a sua maquina

No aguardo,
Marcelo
[/quote]


Marcelo,

segue o resultado, esse ip é o da minha maquina, a minha dúvida é: se eu fechar a sessão e futuramente abrir novamente da minha máquina, ele não vai enviar o email avisando certo? (desculpe minha ignorancia Marcelo)


[root@server163 ~]# w
17:17:40 up 1:50, 1 user, load average: 0.15, 0.16, 0.14
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/1 172.16.3.4 16:47 4.00s 0.04s 0.00s w





01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts