O Linux usa comandos de script para auditar a operação e a segurança de manutenção
Todos devem estar bem familiarizados com o comando history do Linux.O registro do comando gerado por este comando pode nos ajudar a auditar as operações durante a operação e manutenção.No entanto, o período de registro gerado não é gerado desde o login no sistema até o logout. Embora você possa adicionar algum conteúdo ao registro chamando variáveis de ambiente do sistema, como tempo de execução do comando, qual IP está conectado, etc., não é em tempo real. Simplificando, existem muitas deficiências, 1, não em tempo real, 2, incapaz de controlar o processo geral. 3. A informação registrada não é completa, mesmo após transformação por meio de variáveis.
Então, o comando de script embutido do sistema Linux, uma arma de auditoria de segurança de operação e manutenção, pode basicamente atender às nossas necessidades.
Quando o comando de script é iniciado, ele gravará automaticamente todos os comandos do terminal Linux (o conteúdo da edição de texto não será gravado, referindo-se à edição de texto do vim ou vi, o que também pode ser uma consideração de segurança, e as alterações de conteúdo de texto específico são gravados Se for, também é um teste de segurança). Em geral, o comando script é como uma câmera embutida no sistema Linux. Todas as ações podem ser lidas através do comando scripreplay para ler o arquivo de registro gerado pelo comando script para restaurar a operação gravada.
Como o título diz, para projetar tal sistema de auditoria, a primeira consideração é determinar o escopo da auditoria de segurança de operação e manutenção (auditoria de segurança de O&M se refere à revisão de várias operações durante a operação e manutenção). A operação do servidor não pode ser Uma pessoa opera e mantém, e às vezes várias pessoas precisam colaborar ao mesmo tempo, então vários terminais podem precisar ser abertos e muitas operações podem ser operações remotas, como xshell, conexão putty e o usuário envolvido pode não ser Single, ou usuários root, ou usuários oracle comuns, multi-espaço, multi-dimensional, multi-nível complexo de operação e ambiente de manutenção.
a, primeiro familiarizado com o comando de script
O comando script está embutido nas distribuições básicas do Linux, portanto, basicamente não precisa ser instalado e pode ser usado imediatamente. Dê uma olhada na ajuda deste comando primeiro.
[root@centos9 ~]# script --help
Usage:
script [options] [file]
Options:
-a, --append append the output
-c, --command <command> run command rather than interactive shell
-e, --return return exit code of the child process
-f, --flush run flush after each write
--force use output file even when it is a link
-q, --quiet be quiet
-t, --timing[=<file>] output timing data to stderr (or to FILE)
-V, --version output version information and exit
-h, --help display this help and exit
A ajuda também é relativamente curta, onde -a -t -f -q são parâmetros comumente usados, -a significa anexar sem sobrescrever a gravação, -t significa adicionar dados de tempo, que podem ser gravados como um arquivo separado, -f significa real- hora de escrever para cada arquivo de comando, gravá-lo e atualizar o conteúdo ao mesmo tempo. -q é executado silenciosamente, inicia e interrompe este comando sem emitir nenhum prompt.
b , script
Que tal executar diretamente sem adicionar nenhum parâmetro?
[root@centos9 ~]# script
Script started, file is typescript
Execute o comando de script diretamente, ele avisa que o comando de script foi executado e o arquivo é datilografado. Você pode realmente ver o arquivo datilografado e o vim no diretório atual. Neste momento, o conteúdo do arquivo está vazio , ctrl + d saia do comando de script e verifique novamente. Você pode ver que há conteúdo no arquivo datilografado, gravando todas as operações de comando agora mesmo. Isso nos diz que o comando de script pode ser considerado um software de gravação de tela. Ele requer um início e um fim para salvar o conteúdo da tela em um arquivo. O nome do arquivo padrão é typescript.
c ,
[root@centos9 ~]# script -a
Script started, file is typescript
[root@centos9 ~]# df -ah
Filesystem Size Used Avail Use% Mounted on
sysfs 0 0 0 - /sys
中间省略了
tmpfs 396M 0 396M 0% /run/user/0
[root@centos9 ~]# exit
Script done, file is typescript
[root@centos9 ~]# script -a
Script started, file is typescript
[root@centos9 ~]# ls
anaconda-ks.cfg bash-5.0 bash-5.0.tar.gz createrepo.sh typescript
[root@centos9 ~]# exit
Script done, file is typescript
Neste ponto, um parâmetro é adicionado, anexado, dois comandos, um df e um comando ls, são executados separadamente, primeiro inicie o script, grave o comando df, pare o comando de script e grave o comando ls ao iniciar o comando de script Vê se esses dois comandos são gravados em texto digitado?
Como você pode ver, os dois comandos são gravados, ou seja, o efeito adicional está disponível.
d ,
O parâmetro -t do script é para especificar o arquivo de temporização.O arquivo de temporização registra o tempo de execução do comando, de forma que ao usar o scripreplay, a gravação anterior possa ser restaurada com precisão com base neste arquivo de temporização. -f atualiza o conteúdo do arquivo em tempo real. O exemplo a seguir ainda usa o nome digitado. Claro, qualquer nome é adequado, desde que você saiba o significado. -t pode ser adicionado sem espaços, especifique o nome do arquivo de tempo, aqui eu uso o nome myfirst.time
[root@centos9 ~]# script -tmyfirst.time -f typescript
Script started, file is typescript
[root@centos9 ~]# ls -alh typescript
-rw-r--r-- 1 root root 7.6K Feb 12 20:55 typescript
[root@centos9 ~]# ls -alh typescript
-rw-r--r-- 1 root root 7.7K Feb 12 20:55 typescript
[root@centos9 ~]# ls -alh typescript
-rw-r--r-- 1 root root 7.9K Feb 12 20:55 typescript
[root@centos9 ~]# ls -alh typescript
-rw-r--r-- 1 root root 8.0K Feb 12 20:55 typescript
Como você pode ver, quando o arquivo está continuamente executando o comando ls, o arquivo está constantemente aumentando. Se você visualizar o conteúdo, é claro, ele será exibido em tempo real. Não vou demonstrar isso aqui.
f ,
Uso de scriptreplay: O comando de script anterior gera dois arquivos, um arquivo de temporização e um arquivo de gravação de conteúdo. Deve-se notar que esses dois arquivos são um par de arquivos e devem estar disponíveis para reprodução.
[root@centos9 ~]# scriptreplay -t myfirst.time typescript
Durante a gravação, você pode ver o progresso do comando de script até que Ctrl + d termine o comando de script. Durante a reprodução, se você abrir um terminal e executar o comando ps, poderá ver o processo de scriptreplay até que a reprodução termine, o processo terminará automaticamente.
O par de arquivos gerados deve ser gerado pelo mesmo comando de script antes que possam ser reproduzidos, isso precisa ser mantido em mente ~! ! ! ! !
g ,
Todas as demonstrações anteriores estão usando a conta root, então a operação e a segurança de manutenção de login em outras contas podem ser auditadas? Claro, você pode escrever o comando no arquivo de variável de ambiente global / etc / profile.
Abra / etc / profile e adicione script -t -f -q 2> ~ / script.time -a ~ / script.his no final
Esta frase significa que dois arquivos são gerados na pasta / mnt, script.time e script.his, que são anexados, escritos em tempo real e silenciosamente. Os arquivos são armazenados no diretório inicial do usuário e registrados após o login por usuários comuns Os arquivos estão no diretório inicial de usuários comuns e o root está naturalmente no diretório inicial do root.
Basta fazer login e começar a gravar todo o conteúdo do comando imediatamente. Se você deseja visualizar a reprodução, o comando é: scriptreplay -t script.time script.his
Resumindo:
O script pode ser considerado um software de gravação de tela em tempo real, mas não pode ser reproduzido seletivamente durante a reprodução. Ao gravar a tela, o arquivo de tempo e o arquivo de conteúdo devem ter um nome de arquivo que você possa lembrar e entender, e esses dois arquivos É um par e apenas o pareado pode ser reproduzido .