Gostaria de modificar as configurações do histórico para todos os usuários nos sistemas que eu gerencio. Gostaria que ele contivesse as informações do terminal de conexão, como dewho
sysadmin:/ # who
sysadmin pts/0 Mar 26 07:11 (sysadmin.doofus.local)
Atualmente, modifico meu histórico das seguintes maneiras. Eu sei que muitas dessas configurações foram abordadas aqui várias vezes. No entanto, eu peguei esse código de " Linux System Administration Recipes por: Juliet Kemp " há muito tempo.
shopt -s histappend
PROMPT_COMMAND='history -n;history -a'
HISTSIZE=100000
HISTFILESIZE=100000
HISTTIMEFORMAT="%m/%d/%y %T "
shopt -s histappend
corrige o problema quando você tem vários terminais. As informações abertas podem ser perdidas.
PROMPT_COMMAND='history -n;history -a'
se estende para fornecer anexos em tempo real ao histórico em vários terminais.
HISTSIZE=100000
HISTFILESIZE=100000
estende a quantidade de history
retenção
HISTTIMEFORMAT="%m/%d/%y %T
"precede cada linha do histórico com um carimbo de hora
O que você normalmente recebe history
835 ls
836 cd ..
Meus history
resultados atuais modificados
5853 03/26/12 07:16:49 ls
5854 03/26/12 07:16:50 ll
O retorno de history
eu gostaria de ver
5853 03/26/12 07:16:49 sysadmin.doofus.local ls
5854 03/26/12 07:16:50 sysadmin.doofus.local ll
001 03/26/12 05:11:29 demo_user.doofus.local cd
002 03/26/12 05:11:30 demo_user.doofus.local ll
Eu não sou "casado" em ver o DNS
nome. Eu só o desejaria lá se ele o puxar de who
ou de outro local sem a necessidade de realizar uma pesquisa ou consulta de qualquer tipo. Eu ficaria feliz com o endereço IP.
002 03/26/12 05:11:30 192.168.0.2 ll
Por quê? Eu gerencio vários sistemas nos quais um usuário compartilha vários usuários do mesmo grupo para realizar suas tarefas diárias. Isso me permitiria correlacionar a localização real e o usuário real dentro da organização com o que eles fizeram na história.
Estou ciente de que isso não é o ideal e gostaria de alterá-lo, mas quando você está em um navio do tamanho de um navio de cruzeiro, não tenta fazer curvas fechadas. (Nota: quando você faz os passageiros, tenta jogá-lo ao mar)
De qualquer forma, até que eu possa migrá-los para uma solução melhor, eu gostaria de ter essa capacidade de rastreamento.
Além disso, se você tiver alguma recomendação sobre o que estou usando atualmente para minhas history
modificações, adoraria ouvi-lo.
Obrigado,
Editar: 1
Eu não quero executar outros programas ou tenho que configurar algo adicional "dentro do razoável".
Quero adicionar 0
despesas gerais, se precisar adicioná-las, ela precisa ser pequena.
Confio nos meus usuários. Gostaria apenas (caso algo aconteça) de ver quais dos, digamos, 10 usuários que efetuaram login no sistema com o mesmo usuário: a senha fez isso. Ou, pode não ter sido um usuário, poderia ter sido esquecido cron
em um sistema que executa uma conexão como usuário para fazer alguma coisa. Ou um aplicativo Ex: BMC Control-M
que se conecta ssh
e executa tarefas. Não se trata apenas de encontrar "usuários ruins", mas de encontrar com um mínimo de esforço.
Edição 2:
Os sistemas estão executando SLES e RHEL
/proc
/dev
e de usuários /home
. Isso adiciona sobrecarga. Considerando que history
já está sendo gravado e suas informações de conexão são conhecidas pelo sistema que está conectando o IP, etc ... Essas informações, se ainda não estiverem disponíveis "estaticamente", podem ser configuradas dessa maneira ou armazenadas em uma variável ou arquivo e inseridas nos history
registros e no desempenho atingido seria muito pequeno ou 0.
auditd
. Não tenho certeza se os logs fornecerão informações suficientes. A dificuldade do que você quer é exatamente o motivo pelo qual as contas compartilhadas são tão reprovadas.
auditd
é muito parecido com o que inotify
você precisa dizer para monitorar as alterações. Arquivos individuais, diretórios, etc. Não quero ir para esse nível de configuração. De fato (sim), mas essencialmente não me importo tanto. Eu tenho puppet
que lidar com isso. auditd
também vem com carga e tempo adicionais para a instalação. Se uma conta estiver modificando algo, eu ainda gostaria de olhar para trás no histórico e ver quem ou o que está fazendo login e tentando.
PROMPT_COMMAND=
apenas executa comandos normais antes do próximo prompt, você não poderia escrever uma função chamada sed / awk que funcione na última linha do arquivo de histórico para adicionar as informações. então chame essa função PROMPT_COMMAND=
para acrescentar os dados? seria hackish, mas deveria fazer o trabalho.