Comandos para aprender sobre um sistema desconhecido [fechado]

19

Você efetua login em um sistema UNIX ou Linux desconhecido (como raiz). Quais comandos você executa para se orientar e descobrir em que tipo de sistema você está? Como você descobre que tipo de hardware está em uso, que tipo de sistema operacional está em execução e qual é a situação atual quando se trata de permissões e segurança?

Qual é o primeiro e o segundo comando digitado?

Alexander
fonte
3
Eu usaria uname -aentão apropos whatever é seu amigo.
Fd0
1
nmap -A -T4 localhosttambém poderia lhe dar algumas informações úteis
seumasmac
O @seumasmac netstat seria melhor e mais eficiente do que nmapping a máquina local.
André Borie
@ AndréBorie nmap e netstat produzem resultados bastante diferentes. Portanto, não faz muito sentido compará-los com relação à eficiência (qualquer que seja o tipo).
moooeeeep
@ AndréBorie Eu tinha planejado colocar um :) no final disso. Eu estava verificando a segurança em uma de minhas próprias máquinas e, enquanto segurava meu nmapmartelo, de localhostrepente parecia um prego. Mas então eu percebi que, na verdade, fornece algumas informações interessantes, então deixei como uma sugestão semi-séria.
Seumasmac

Respostas:

22

uma pergunta de uso duplo! Um arqueólogo de software ou um hacker do mal podem usar as respostas para esta pergunta! Agora, quem sou eu?

Eu sempre usava ps -efversus ps -augxwwpara descobrir o que estava usando. As caixas Linux e System V tendem a gostar de "-ef" e de erro em "-augxww", vice-versa para BSD e máquinas antigas do SunOS. A saída de pspode informar muito também.

Se você puder fazer login como root, e for uma máquina Linux, deverá fazê-lo lsusbe lspci- isso levará você a 80% do caminho para saber qual é a situação do hardware. dmesg | morepode ajudar a entender os problemas atuais em praticamente qualquer coisa.

Está começando a ser eliminado gradualmente, mas o procedimento ifconfig -ageralmente pode dizer muito sobre as interfaces de rede e a rede. A execução mii-toole / ou ethtoolnas interfaces que você vê na ifconfigsaída que parecem com Ethernet com cabo também pode fornecer algumas informações.

Executar ip routeou netstat -rpode ser informativo sobre roteamento de Protocolo da Internet e talvez algo sobre interfaces de rede em uso.

Uma mountchamada pode falar sobre o (s) disco (s) e como eles são montados.

Em execução uptimee, em seguida, last | morepode dizer algo sobre o estado atual da manutenção. Uptimes de mais de 100 dias provavelmente significam "é hora de mudar o óleo e os fluidos", metaforicamente falando. Correr whotambém é

Olhando /etc/resolv.confe /etc/hostsposso falar sobre a configuração de DNS dessa máquina. Talvez faça nslookup google.comou dig bing.compara ver se o DNS é principalmente funcional.

Sempre vale a pena observar quais erros ("comando não encontrado") e quais variantes de comando ("ps -ef" vs "ps augxww") funcionam para determinar em qual variante do Unix ou Linux ou BSD você acabou.

A presença ou ausência de um compilador C e onde ele mora é importante. Faça which ccou melhor, which -a ccpara encontrá-los.

Bruce Ediger
fonte
Eu prefiro netstat -tulpanwmais produção, mas é realmente uma questão de gosto.
Ned64 #
Também existe lshwno Linux.
Shahbaz
mounté bagunçado, findmnté muito limpo.
Edmz 2/10
10

cat /etc/*release* é um bom comando para obter uma visão geral de qual distribuição está sendo executada.

Alexander
fonte
9

http://bhami.com/rosetta.html pode ser útil para revisar, caso contrário, eu costumo vasculhar /etc(contas, itens de inicialização, dicas sobre o sabor do SO etc.) crontab -le ver a pslista de coisas para aprender.

Também "como root" é super assustador, pois tive que consertar sistemas nos quais um administrador do Linux que faz essa investigação define todos os nomes de host do Solaris -f.

Também dfé um comando perigoso, uma ótima maneira de interromper o bloqueio de E / S. Portanto, nunca execute isso até que você tenha ao menos investigado as montarias ou saiba que pode abrir outra sessão de alguma forma.

Use comandos muito simples ( uname, cd /etc; ls, cat, $PAGER) até você descobrir o que o anfitrião é, e se você não estiver familiarizado com ele, verifique a rosetta ou sempre ler a página de manual antes de assumir algum comando ou bandeira para um comando faz o que faz em sistemas mais populares.

agitar
fonte
Me faz pensar: existe uma maneira robusta de (temporariamente) entrar em um ambiente de menor privilégio? Ou isso não é viável ou de alguma forma não é uma boa ideia?
Oliphaunt - reinstala Monica
1
Por que é dfperigoso? Existem sistemas onde ele faz algo diferente de mostrar o uso do sistema de arquivos?
terdon
1
bloqueio de E / S do kernel @terdon, por exemplo, em uma montagem NFS rígida que está inativa; na melhor das hipóteses, você pode abrir uma nova sessão ou terminal de alguma forma (tempo perdido durante uma interrupção) ou, na pior das hipóteses, esse era seu único console no antigo sistema Solaris e, sim ... talvez ele seja inicializado, talvez não, vergonha informações a montagem não foi olhou para primeira e que a linha servidor NFS problemática reconhecido ...
thrig
1
Se dftravar, basta pressionar CTRL-Z e kill -9ele. Também encontrei esse problema e isso sempre funcionou para mim. Além disso, idealmente, suas montagens não devem ser penduradas. Também não acho que muitas pessoas pensem nos programas suspensos como "perigosos", e é por isso que acho que o Terdon estava confuso.
Bratchley
3
@Bratchley oh, nunca teve uma conexão de console que você não pode enviar caracteres de controle? Onde estava o manual do zmodem, ou como é que nós os enviamos através do buggy Java para aquela outra buggy ah geez que tem acesso físico?
thrig
5

dmidecodee lspcigeralmente lhe dará uma boa idéia do que é o hardware em execução no sistema. Se este for um servidor geralmente em execução netstat -tlpn, a finalidade do servidor será revelada. df -hPé um bom comando para verificar o armazenamento atual no sistema. lsb_release -avocê deve saber em que distro está:

[root@vle02 ~]# lsb_release -a
LSB Version:    :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: RedHatEnterpriseServer
Description:    Red Hat Enterprise Linux Server release 6.7 (Santiago)
Release:        6.7
Codename:       Santiago

A execução lastdeve informar quem usa o sistema. Supondo que você tenha acessado esse servidor legitimamente, muitas vezes você pode simplesmente pedir a uma das pessoas que faz login nele para obter mais informações sobre ele.

Para verificações de segurança neutras do fornecedor: Geralmente, o firewall possui dados de configuração exclusivos, portanto, executar a iptables -nvLé útil. Você também deve verificar os arquivos de configuração pam da sua distribuição para ver se você está usando apenas usuários locais ou se está configurado para usar ldap / kerberos / winbind / sssd / o que for.

Você também pode inspecionar a configuração dos serviços que aparecem no seu netstat -tlpn. Por exemplo, se você vê o apache, pode ver /etc/http/conf/httpd.conf(no RHEL, /etc/apache2no Ubuntu) e tentar ver quais sites estão em execução. Como alternativa, você pode fazer um apachectl -Spara obter uma lista de todos os hosts virtuais configurados. É meio que fãs de lá, então tudo o que posso fazer é oferecer o apache como exemplo e apenas dizer para verificar a configuração do daemon, se houver outra coisa.

No RHEL, eu também verificaria rpm -qa --last | headquando da última vez que eles fizeram atualizações do sistema. Eu também verificaria se o SELinux está ativado viagetenforce

Bratchley
fonte
0

Algumas outras idéias:

  • A presença ou ausência do /procsistema de arquivos pode indicar se você está no Mac , FreeBSD ou Linux.
  • O gerenciamento de pacotes difere da distribuição Linux para distribuição. Os baseados em Debian possuem apt, como Deepin, Ubuntu, Mint; A Red Hat e o Fedora tiveram algum impacto até agora, mas agora o Fedora tem DNF ; Arch usa pacman. Então, poderíamos fazer algo assim:ls /usr/bin | grep 'apt\|yum\|pacman'
  • Presença de determinados serviços em determinadas portas ao visualizar netstat -tulpan. O poderia ser sshdservidor da web ftp;
Sergiy Kolodyazhnyy
fonte
Observe que a presença de um determinado executável no sistema não significa realmente nada. O Debian, por exemplo, tem um yumpacote. Como a presença de um servidor ssh indica o sistema? AFAIK você pode encontrar sshdem praticamente qualquer coisa.
terdon
@terdon True. Estou apenas abordando isso do ponto de vista de um novo administrador de sistema, no qual você é informado "Temos algumas caixas de Linux por aí, faça algo a respeito". Nesse ponto, você pode estar se perguntando, bem: ele tem acesso remoto? Esse acesso remoto é reforçado? Possui gerenciamento de pacotes com o qual estou familiarizado ou preciso aprender um novo gerenciador de pacotes? O objetivo não é necessariamente determinar o que OS você começa, Bruce Ediger já cobertas isso, mas eu estou mais focado em investigar o próprio sistema
Sergiy Kolodyazhnyy