Grepping apenas conexões SSH com netstat

0

Eu tenho alguns comandos adicionados ao meu .bashrc , então toda vez que eu fizer login, eu posso ver conexões SSH ativas. No entanto, às vezes mostra mais do que apenas conexões SSH devido a um número de porta similar contendo "22", por ex. "223346"

Este é o comando que é executado:

netstat -tan | grep ":22\|ssh" | grep -v "LISTEN" | awk '{print "     "$4" -> "$5"      "$6}'

Às vezes, é produzido algo assim:

192.168.1.75:52623 -> 213.174.2.30:22650   SYN_SENT
192.168.1.75:22 -> 192.168.1.109:60561     ESTABLISHED

Existe uma maneira de usar o grep para mostrar apenas conexões SSH? Obrigado!

    
por Jack 22.07.2017 / 16:30

2 respostas

2

Se no Linux, observe que a página do manual de ss tem um exemplo exatamente para isso:

ss -o state established '( dport = :ssh or sport = :ssh )'
    
por 22.07.2017 / 21:36
0

Eu abordaria isso com esse teste:

  • uma conexão ESTABLISHED e
  • inclua conexões entrada (o campo 3 é 22) ou saída (o campo 4 é 22) - aqui ancorado entre o : e o final do o campo $ .

Você pode ajustar a lógica para incluir qualquer entrada ou saída, se for isso que você procura.

Se você usar o -n flag do netstat, não precisará procurar por "ssh"; para ser mais granular e solicitar que apenas as portas sejam numéricas (no Linux) ao tentar resolver os IPs, use --numeric-ports . Também descartei o sinalizador -a netstat para filtrar as linhas "LISTEN" (já que elas não estão conectadas a outro endpoint). Como estou apenas imprimindo conexões estabelecidas, também abandonei o campo 6 ("ESTABELECIDO") da saída; isso é fácil o suficiente para adicionar de volta, estaticamente ou dinamicamente.

netstat -n | awk '$6 == "ESTABLISHED" && ($3 ~ /:22$/ || $4 ~ /:22$/) { print $4 " -> " $5}'

ou

netstat --numeric-ports | awk '$6 == "ESTABLISHED" && ($3 ~ /:22$/ || $4 ~ /:22$/) { print $4 " -> " $5}'
    
por 22.07.2017 / 21:30