A versão 4.N do Bash aparentemente tem a capacidade de escrever o histórico de comandos no syslog, mas não consigo encontrar informações sobre como configurar isso.
Eu li várias páginas que oferecem hacks usando o PROMPT_COMMAND
, e trap, e sei que há um patch disponível, mas isso deve ser desnecessário, pois agora está embutido.
Eu sei que posso usar auditd
para capturar comandos, mas gostaria de usar a combinação bash/syslog.
Esta abordagem parece ser o que você está procurando. Este artigo discute isso, intitulado: Melhorando as capacidades forenses do Bash .
Excerto:
Portanto, parece que, embora o recurso esteja disponível no Bash 4.1+, provavelmente não é compilado por padrão com o Bash na maioria das distribuições populares.
Eu não encontrei um método para ver com quais opções um determinado Bash foi compilado, então para responder a essa pergunta, você provavelmente precisará olhar para o
.spec
arquivo upstream usado ao construir o Bash RPM, por exemplo, em distribuições Redhat, o a mesma abordagem pode ser usada para distribuições baseadas em Debian também.Como confirmação, procurei no
.spec
arquivo Bash o Bash incluído no CentOS 7.2.1511 e ele não tem isso ativado:Rolando seu próprio RPM
Aqui estão os passos que eu usei para construir meu próprio Bash usando a essência do que os detalhes acima explicam.
baixar e instalar fontePara começar , baixei um RPM de origem (SRPM) do Bash que está disponível para CentOS 7.x. Depois de baixá-lo, instalei-o no meu
correçãorpmbuild
diretório:Isso irá descompactar os arquivos em
rpmbuild/SPEC
&rpmbuild/SOURCES
. Agora vamos fazer uma cópia do conteúdo dotar.gz
arquivo Bash descompactado usando estas etapas:Edite
rpmbuild/SOURCES/bash-4.2/config-top.h
e deixe assim:Edite
rpmbuild/SOURCES/bash-4.2/bashhist.c
e faça abash_syslog_history
função ficar assim:Agora gere um
.patch
arquivo que inclua nossas alterações nesses 2 arquivos:Adicione essas linhas a
construir$HOME/rpmbuid/SPEC/bash.spec
. Coloque estas linhas nos locais apropriados no arquivo SPEC:Agora construa:
O final desta compilação ficará assim:
instalarDepois de concluído, podemos instalar o RPM resultante:
configurar rsyslogAgora modifique a
/etc/rsyslog.conf
configuração do rsyslog:Em seguida, reinicie o Rsyslog:
testar e confirmarAgora execute uma nova instância do Bash como root e execute alguns comandos:
E siga o arquivo de log,
/var/log/bash-log/127.0.0.1.log
:Observe as
CMD=...
linhas neste log? Estes são os comandos que acabamos de executar, umls
&tail
.Pré-construído?
Para ajudar as pessoas com isso tomei a liberdade de construir o Bash RPM com as modificações feitas no Copr.