De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.


AIX - Identificando portas abertas

Colaboração: André Luiz Facina

Data de Publicação: 13 de agosto de 2010

É muito importante conhecer o ambiente que está sendo administrado. Em se tratando de servidores, muitas vezes temos em um ambiente muitas portas abertas ( em modo listen ), e é importante saber qual processo está ouvindo em uma determinada porta, por questões de segurança e até em situações de troubleshooting. A dica de hoje é identificar, no AIX, qual processo está sendo executado em uma porta específica.

Método 1 - Usando os comandos netstat e rmsock

Protocolo TCP

  #  netstat -Aan |grep *.1334
  f1000e0002b753b0 tcp4       0      0  *.1334             *.*                LISTEN
  
  # rmsock f1000e0002b753b0 tcpcb
  The socket 0x2b75008 is being held by proccess 5701822 (writesrv).
  
  # ps -ef |grep 5701822
  root  5701822  1507536   0   Jun 10      -  0:00 /usr/sbin/writesrv

Como podem ver o processo writesrv está sendo executado na porta 1334

Protocolo UDP

  # netstat -Aan |grep *.514
  f1000e0002a67e00 udp4       0      0  *.514              *.*
  
  # rmsock f1000e0002a67e00 inpcb
  The socket 0x2a64c08 is being held by proccess 5308580 (syslogd).
  
  # ps -ef |grep 5308580
  root  5308580  1507536   0   Jun 10      -  0:36 /usr/sbin/syslogd

A porta 514 UDP está sendo utilizada pelo processo do syslogd.

Método 2 - Utilizando os comandos netstat e kdb (kernel debuger)

  #  netstat -Aan |grep 1334
  f1000e0002b753b0 tcp4       0      0  *.1334             *.*                LISTEN
  
  # kdb
  
  (0)>
  (0)> sockinfo f1000e0002b753b0 tcpcb

... A saída do comando kdb é bem detalhado, e por isso foi truncado. O importante para nós é a ultima linha, como mostrado abaixo ...

  proc/fd:  87/3
  proc/fd: fd: 3
              SLOT NAME     STATE      PID    PPID          ADSPACE  CL #THS
  
  pvproc+015C00   87*writesrv ACTIVE 05700BE 01700D0 0000001190239480   0 0001

O importante é saber o PID do processo, que está em hexadecimal na coluna PID. Para converter de hexadecimal para decimal, basta utilizar o comando hcal, dentro do prompt do kdb. Como mostrado abaixo.

  (0)>
  (0)>
  (0)> hcal 05700BE
  Value hexa: 005700BE          Value decimal: 5701822
  (0)> quit

De volta ao shell, verificar qual programa pertence ao PID 5701822

  # ps -ef |grep 5701822
    root  5701822  1507536   0   Jun 10      -  0:00 /usr/sbin/writesrv

O mesmo procedimento pode ser utilizado para portas UDP, sempre trocando o parâmetro tcpcb por inpcb.

André Facina atualmente trabalha na IBM como especialista em Unix e Storage.

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


Veja a relação completa dos artigos de André Luiz Facina