como ver conexões específicas estabelecidas?

2

Eu sei sobre netstat , ncat , tcpdump e algumas outras ferramentas que mostram todas as conexões, mas qual ferramenta devo usar se eu quiser ver uma conexão específica estabelecida com um servidor específico?

Por exemplo: estou me conectando a www.google.com port 80 de um cliente da Web simples; Eu preciso de um comando que mostra apenas minha conexão com "www.google.com port 80" .

    
por Maria 07.06.2015 / 10:07

3 respostas

4

Você precisa analisar a saída de netstat . No meu sistema, netstat não exibe a string "Google" ao listar os hosts. Então, ao invés de simplesmente usar netstat -t | grep -i Google , você precisaria procurar o nome do host. Algo como:

$ sudo netstat -tn | awk '/EST/{print $5}' | sed 's/:.*//' | 
    while read ip; do 
        whois $ip | grep -qi google && echo "$ip"; 
    done
173.194.67.189
74.125.140.105
216.58.209.5

Explicação

  • sudo netstat -tn : executar netstat mostrando apenas conexões tcp (-t) e IPs numéricos ( -n );
  • awk '/EST/{print $5}' : imprime o quinto campo (o IP) se esta linha corresponder a EST (mostre somente conexões estabelecidas);
  • sed 's/:.*//' : remova a porta, deixando apenas o IP;
  • while read ip; do ...; done : iterar sobre cada IP encontrado;
  • whois $ip | grep -qi google : pesquisa o IP e procura a saída por google . O -i significa busca insensível a maiúsculas e o -q suprime a saída.
  • && echo "$ip" : se o grep for bem sucedido, imprima este IP.
por terdon 07.06.2015 / 12:23
1

A execução do comando netstat com os sinalizadores -tanp no Ubuntu listará todos os PIDs (Process Identification Numbers) e portas de cada conexão.

OBSERVAÇÃO : para ver todos os PIDs, você deve executar o comando com sudo permissions, então sudo netstat -tanp

por exemplo,

    
por oOpSgEo 07.06.2015 / 10:24
0

Eu escrevi um programa c ++ chamado addressid, que emprega o comando netstat com o utilitário whois. No dia 14.04, o utilitário whois não vem 'pronto para o uso', então você terá que instalar via linha de comando assim como construir-essencial para compilar o arquivo de classe em binário.

:~$ sudo apt-get install build-essential -y

:~$ sudo apt-get install whois -y  

O programa também espera que existam outros dois diretórios, / usr / local / addressId e / var / log / addressid, então você terá que criá-los:

:~$ sudo mkdir -p -m0755 /usr/local/addressId

:~$ sudo mkdir -p -m0755 /var/log/adressid

Copie o programa no editor de texto gedit e compile o programa conforme mostrado abaixo:

:~$ g++ -o adressid addressId.cpp

Em seguida, mova o programa para / usr / bin (que já está em seu $ PATH) e use o novo utilitário a partir da linha de comando, conforme mostrado abaixo

:~$ sudo mv addressid /usr/bin/

:~$ sudo addressid

Você tem que executar o programa como root, porque o utilitário netstat requer privilégios de root para exibir todas as informações do sistema tcp.

//*******************************************************************
// This addressId.cpp class is created to input the output from   
// the netstat -tanp command and create a shell script that will be         
// executed performing the ip address (a dotted quad) look up on the   
// whois server (with whois utility).  
// author:GeoWade
//*******************************************************************

#include <iostream>
#include <fstream>
#include <string>
#include <list>
#include <cstdlib>
#include <cstring>
#include <locale>

using namespace std;

const int MAX_INDY = 300;

int main()
{

    // create string variables
    string line;
    string holdWord = "";

    // create a string array to hold the ip addresses
    string holdArry[MAX_INDY];

    // create string variables to be used as test vars in regexs
    string theTcp = "tcp";
    string firstLn = "0.0.0.0";
    string theSix = "tcp6"; 

    // create list<string> container object to hold input strings
    list<string> addressList;

    // create integer variables
    int index;
    int cardex;
    int count = 0;

    // use the system function to execute the netstat command and the data
    system("sudo netstat -tanp > /usr/local/addressId/Ntstat.txt");

    // create an ifstream object 
    ifstream inFile("/usr/local/addressId/Ntstat.txt");

    while ( getline( inFile, line ) ) {

        if ( !line.compare(44,7,firstLn) == 0 ) {

            if ( line.compare(0,3,theTcp) == 0 ) {

                if ( !line.compare(0,4,theSix) == 0 ) {

                    // find the index position of the line at which point it ends 
                    cardex = line.find('
:~$ cat /var/log/addressid/addressid.log
'); // store the substring of the line based on index positions string intermStr = line.substr(44,cardex); // locate the index position of the substring at which a colon // resides index = intermStr.find(":"); // create a second substr out of the first substring. holdWord = intermStr.substr(0,index); addressList.push_back(holdWord); } // null the holdWord var and increment the count integer holdWord = ""; count++; } } } inFile.close(); cout << "The data has been inputted to the program!" << endl; for (int i = 0; i < count; i++) { string outStack = addressList.front(); addressList.pop_front(); holdWord = outStack; holdArry[i] = holdWord; holdWord = ""; } // create an ofstream object ofstream outOne; outOne.open("/usr/local/addressId/myWhois.sh"); outOne << "#! /bin/bash\n\nMYWH=\"whois\"\nUPD=\"updatedb\"\n" << "TDTD=\"date\"\n\n$TDTD >> " << "/var/log/addressid/addressid.log\n" << endl; for (int j = count-1; j >= 0; j--) { string outHold = holdArry[j]; holdArry[j] = ""; holdWord = outHold; outOne << "$MYWH " << holdWord << " >> " << "/var/log/addressid/addressid.log" << "\n" << endl; holdWord = ""; } outOne << "$UPD\n\nexit\n" << endl; outOne.close(); system("chmod +x /usr/local/addressId/myWhois.sh"); system("/usr/local/addressId/myWhois.sh"); // delete the previously created and executed my system("rm -rf /usr/local/addressId/myWhois.sh"); count = 0; addressList.clear(); // output a statement to the user of the binary cout << "The operation has completed successfully!" << endl; return 0; }

Eu escrevi este programa há cerca de 3 anos, em 12.04 como parte de uma suíte de segurança e registro que eu criei. Não obstante, ele registrará todos os endereços e as informações desses endereços quando forem executados, além de adicionar a data ao log toda vez que for executado. Você pode ver o log usando o comando cat ou fazer um back-up como mostrado abaixo

:~$ cat /var/log/addressid/addressid.log >> $HOME/addressid.log.bak

ou

:~$ sudo apt-get install build-essential -y

:~$ sudo apt-get install whois -y  

O Programa é legítimo, eu apenas deletei meu / usr / bin / addressid, copiei o programa (para verificar se não houve erros) desta página web, compilei-o e executei o sudo mv addressid / usr / bin / e correu como sudo addressid.

    
por oOpSgEo 08.06.2015 / 03:57