Como você pode dizer o que um servidor realmente faz? [fechadas]

42

Recebi três caixas Linux, uma frontal com apache e outras duas que, até onde eu sei, não fazem muita coisa. Tudo rodando em Redhat.

A pergunta é simples: como posso saber o que o servidor está realmente fazendo? Nenhuma documentação está disponível no criador.

Bizmark
fonte
7
O processlist, os ouvintes de rede (talvez comparar com que deveria ter sido executado com base em scripts de inicialização) ...
HBruijn
5
Droga! certamente alguém sabe para que servem? então eles querem que você os apoie, mas não sabem o que fazem ?!
Digital Lightcraft
11
Desligue-os. Alguém informará, quase imediatamente , o que não está funcionando.
jscott
58
NÃO DESLIGUE. Desconecte o cabo Ethernet, se desejar fazer um teste de grito. Se você nunca teve uma caixa com um tempo de atividade de dois anos em falha na reinicialização, em algum momento. Não é hora de adicionar essa frustração à mistura.
Aaron Copley
7
O que todo mundo disse, mas também: execute o nmap contra eles.
Katherine Villyard

Respostas:

42

Desconecte o cabo Ethernet e veja quem fica chateado.

Sério, máquinas misteriosas como essa criam muita sobrecarga mental para uma equipe e geralmente não fornecem absolutamente nenhum valor comercial. Converse com seu chefe, se ninguém souber o que faz, talvez ninguém se importe com o que faz.

Josh Rumbut
fonte
43
NÃO DESLIGUE. Desconecte o cabo Ethernet, se desejar fazer um teste de grito. Se você nunca teve uma caixa com um tempo de atividade de dois anos em falha na reinicialização, em algum momento. Não é hora de adicionar essa frustração à mistura. (Copiar isso aqui porque ele precisa ser lido.)
Aaron Copley
3
Você está 100% certo, editei a postagem para refletir isso. Eu estava sendo um pouco brincalhão, mas ainda posso ser brincalhão sem promover um desastre.
Josh Rumbut 9/15
8
Antes que a rede seja desconectada, é uma boa idéia salvar uma lista de processos em execução e abrir soquetes em cada servidor - caso algo esteja contando com uma conexão TCP entre os servidores, que permaneceu ESTABELECIDO por muitos meses sem que ninguém pensasse em automatizando as etapas necessárias para abri-lo no primeiro caso. (Por exemplo, se alguém precisava de um encaminhamento de porta ssh temporariamente e depois esqueceu.)
kasperd
4
Não faça isso. Que conselho ridículo. As pessoas de TI estúpidas e impensadas que fazem isso me custam muito tempo e trabalho. PERGUNTE PRIMEIRO. Se você não sabe a quem perguntar, PERGUNTE A TODOS .
Lightness Races com Monica
4
Certifique-se de deixar tempo suficiente para alguém gritar - a única vez em que fiz isso com uma máquina empoeirada ou de mesa sentada em um rack da sala do servidor - ninguém sabia o que fazia; levou um mês inteiro para alguém perceber quando o desconectávamos da tomada. . Acontece que fazia parte do sistema de folha de pagamento, sem esse servidor, a Contabilidade não poderia gerar folha de pagamento mensal. Ele estava em funcionamento há pelo menos três anos sem que ninguém prestasse atenção a ele - então o "teste de grito" foi um sucesso, se não o tivéssemos feito, o servidor acabaria por morrer por conta própria. Acabamos p2v'ing-lo em nosso cluster vmware.
Johnny
30

Esta é uma pergunta bastante ampla para o formato Serverfault, mas aqui está um bom começo:

  • Verifique se há processos em execução e aqueles agendados para serem executados na inicialização do sistema.
    • Revise a configuração em execução de cada um.
    • Procure em qualquer diretório de dados definido. (Talvez alguém tenha instalado o MySQL e o tenha ativado, mas não há bancos de dados.)
  • Verifique as tarefas agendadas.
  • Verifique os logs para ver;
    • que fez login recentemente (e pergunte a eles)
    • e para ter uma idéia do que está acontecendo.

Você não mencionou a versão, por isso omiti os detalhes.

Aaron Copley
fonte
8
Há algo mais importante do que quais serviços estão configurados para iniciar quando o sistema é inicializado. Quais serviços estão sendo executados agora? Iniciar um serviço e esquecer de configurá-lo para iniciar na inicialização não é um erro difícil de cometer. Em uma nota relacionada, é uma boa ideia examinar outros estados do sistema, como: pontos de montagem, tabela de roteamento, regras do iptables. Tudo isso pode ser facilmente alterado enquanto o sistema está em execução sem lembrar de atualizar os arquivos de configuração usados ​​durante a inicialização.
kasperd
Além disso, eu usaria um scanner de portas para ver quais portas estão abertas e, em seguida, tentaria conectar-me a ele usando as ferramentas usuais. Para um exemplo (simples), se a porta 443 estiver aberta, você pode tentar usar um navegador da Web para conectar-se a ela. Eu tive que explorar esses servidores aparentemente abandonados com frequência e uma das minhas ferramentas favoritas para navegar rapidamente pelos arquivos de configuração em / etc e em outros lugares é usar "lynx" ou "links", se você preferir. Estes são navegadores da Web baseados em caracteres que também fazem um bom trabalho como um navegador de arquivos, com navegação conveniente pelas teclas do cursor.
aseq
1
@kasperd Fair play em execução vs. serviços persistentes. Mas, pensei em regras de firewall, pontos de montagem etc. Eles me pareciam componentes auxiliares que já estarão vinculados a um dos pontos de bala existentes. YMMV.
Aaron Copley
Por favor, adicione - verifique se há conexões de rede ativas e anote os nomes dos serviços e números de porta. O melhor método para fazer isso varia de acordo com o sistema operacional. EG net stat. Além disso, coloque algum tipo de rastreamento no computador para poder ver o que ele faz ao longo do dia. Você também pode querer considerar os cenários em que as coisas em execução nos servidores PODEM ser maliciosas.
IceMage 12/06
19

Existem algumas coisas que você pode fazer para tentar verificar o que está sendo executado no seu sistema.

Você pode verificar em quais portas o servidor está ouvindo para ter uma idéia do que está lá. Um bom comando para usar seria:

 [root@server ~]# netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             Stat    e       PID/Program name
tcp        0      0 0.0.0.0:139                 0.0.0.0:*                   LIST    EN      1880/smbd
tcp        0      0 0.0.0.0:5666                0.0.0.0:*                   LIST    EN      1911/nrpe
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LIST    EN      1759/sshd

Como você pode ver no exemplo de saída acima, ele apresenta a versão do protocolo (tcp ou udp), o endereço que está sendo ouvido, a porta que está aberta e o programa que está ouvindo.

No exemplo truncado acima (uma máquina servidor), você pode ver as portas tcp 139, 5666 e 22 estão escutando. Eles resolvem samba, nrpe (agente Nagios) e ssh, respectivamente, e são confirmados quando você verifica o programa que está ouvindo nessa porta.

Além disso, você pode verificar a lista de daemons configurados para iniciar na inicialização, para fazer isso, execute: chkconfig --list | grep "3:on"

Exemplo:

[root@server ~]# chkconfig --list | grep "3:on"
NetworkManager  0:off   1:off   2:on    3:on    4:on    5:on    6:off
acpid           0:off   1:off   2:on    3:on    4:on    5:on    6:off
sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
sysstat         0:off   1:on    2:on    3:on    4:on    5:on    6:off
udev-post       0:off   1:on    2:on    3:on    4:on    5:on    6:off
vncserver       0:off   1:off   2:on    3:on    4:on    5:on    6:off
webmin          0:off   1:off   2:on    3:on    4:off   5:on    6:off
x2gocleansessions       0:off   1:off   2:on    3:on    4:on    5:on    6:off
.
.
.

ou:

service --status-all

Itai Ganot
fonte
5
Acho netstat -pluntmais fácil lembrar.
abligh
2
Além disso, tcpdumppode ser útil determinar quem está realmente usando cada serviço.
abligh
18

Outro método envolve verificar o /etcdiretório e verificar as datas de modificação. Após uma nova instalação, todos os arquivos deste diretório deverão ter aproximadamente a mesma data / hora. E como uma instalação geralmente instala muitas coisas que as pessoas geralmente não usam, apenas os arquivos que possuem uma data de modificação posterior refletem o objetivo real do servidor . Se for ext4, você também poderá extrair a data de nascimento dos diretórios, para que a tarefa seja bem fácil.

Outro método envolveria a verificação dos .bash_historyarquivos para ver o que os administradores estavam fazendo. Este arquivo pode fornecer uma riqueza de conhecimentos.

Konrad Gajewski
fonte
7

Verifique as regras do firewall. Com um pouco de sorte, está configurado para negar por padrão. Isso significa que há uma regra explícita para cada serviço permitido.

Isso é melhor, netstatpois também pode mostrar portas que estão abertas, por exemplo, para backups noturnos.

MSalters
fonte
6

Uma resposta que ainda não vi: verifique os arquivos modificados mais recentemente. Logs, arquivos de banco de dados, outros arquivos de saída, etc., podem ser gravados ainda, o que pode fornecer pistas:

find . -mtime -3 

Isso encontraria arquivos modificados no diretório atual e mais profundos, alterados nos últimos 3 dias. Aumente o número 3 para um palpite fundamentado até obter alguma saída que possa investigar.

Não é infalível, pois as caixas podem apenas processar algumas chamadas de serviço da web, retornando alguns dados sem nunca escrever nada. Mas, adicionado à excelente mistura mencionada acima, pode apenas render algumas pistas.

JayMcTee
fonte