Registra le connessioni al programma


9

Inoltre per l'utilizzo di iptables per registrare le connessioni in entrata.

Esiste un modo per registrare le connessioni in entrata stabilite a un servizio a cui non si dispone della fonte (supponiamo che il servizio non registri cose come questa da solo)? Quello che voglio fare è raccogliere alcune informazioni in base a chi si sta connettendo per essere in grado di dire cose come in quali momenti della giornata il servizio viene maggiormente utilizzato, in quale parte del mondo si trova la base di utenti principale, ecc.

Sono consapevole di poterlo utilizzare netstate collegarlo a uno script cron, ma ciò potrebbe non essere accurato, poiché lo script potrebbe essere eseguito con la stessa frequenza di un minuto.

Ecco cosa sto pensando in questo momento:

  • Scrivi un programma che esegue costantemente il polling netstat, cercando connessioni stabilite che non sono state visualizzate nel sondaggio precedente. Questa idea sembra una tale perdita di tempo della CPU, poiché potrebbe non esserci una nuova connessione.
  • Scrivi un programma wrapper che accetta connessioni in entrata su qualsiasi porta su cui è in esecuzione il servizio, ma non saprei come passare tale connessione al servizio reale.

Modifica: Mi è appena venuto in mente che questa domanda potrebbe essere migliore per StackOverflow, anche se non sono sicuro. Scusa se questo è il posto sbagliato.


Perché stai escludendo l'uso di iptables? Su quale porta è in ascolto la nostra applicazione?
user9517

Principalmente perché mi piacerebbe avere un maggiore controllo sulla registrazione. Idealmente, vorrei solo essere in grado di gestire la registrazione come voglio ogni volta che viene rilevata una nuova connessione. Qualsiasi porta. Non esiste una sola applicazione specifica per la quale utilizzerei questo, motivo per cui non sto chiedendo come accedere a qualcosa di approfondito come un nome utente o qualcosa del genere.
Zac,

È possibile utilizzare iptables solo per registrare nuove connessioni in entrata su qualsiasi porta. Lo faccio su un paio di scatole. Quindi ripeto l'eccellente domanda di Iain: perché stai escludendo l'uso di iptables?
MadHatter,

Sei in grado di posizionare un proxy prima dell'applicazione? Deve solo essere molto semplice per ricevere le richieste, registrarle e trasmetterle. È possibile inoltrare il segnale in ingresso al proxy, che quindi inoltra all'applicazione sulla porta originale.
John Gardeniers,

Risposte:


4

In questo modo è possibile registrare nuove connessioni con iptables

iptables -I INPUT -m state --state NEW -j LOG --log-level 1 --log-prefix "New Connection "

Questo aggiungerà un messaggio come questo per una nuova definizione ssh

6 ottobre 10:58:23 kernel centos: Nuova connessione IN = eth0 OUT = MAC = 00: 0c: 29: 5b: a5: ea: 00: 0c: 29: 2d: 94: a0: 08: 00 SRC = 192.168. 1,72 DST = 192.168.254.187 LEN = 52 TOS = 0x00 PREC = 0x00 TTL = 126 ID = 15498 DF PROTO = TCP SPT = 59221 DPT = 22 FINESTRA = 8192 RES = 0x00 SYN URGP = 0

o in questo modo per una nuova connessione http

6 ott 11:03:56 kernel centos: Nuova connessione IN = eth0 OUT = MAC = 00: 0c: 29: 5b: a5: ea: 00: 0c: 29: d2: 2c: 38: 08: 00 SRC = 192.168. 254.188 DST = 192.168.254.187 LEN = 60 TOS = 0x10 PREC = 0x00 TTL = 64 ID = 10345 DF PROTO = TCP SPT = 52488 DPT = 80 FINESTRA = 14600 RES = 0x00 SYN URGP = 0

e così via per ogni nuova connessione al tuo sistema. Verrà registrato ovunque il tuo syslog sia configurato per inviare messaggi kern.warning.


Dopo aver fatto di più guardando in giro, in questo modo sembra essere la mia scommessa migliore. Combinerò solo questo con rsyslog per accedere a un file separato. Grazie mille per la tua risposta informativa Iain!
Zac,

0

puoi usare auditd e alla fine della giornata calcolare alcune statistiche basate su tali logline. Oppure potresti anche andare a una soluzione snmp ma probabilmente hai scritto il tuo mib


0

Che ne dici di tcpdump o WireShark?


Espandi la tua risposta un po 'di più. Forse suggerendo all'utente in che modo tcpdump e WireShark trarrebbero beneficio gli sforzi di risoluzione dei problemi.
Magellan,

Manuale di tcpdump con cui è possibile registrare i pacchetti completi. Puoi anche acquisire pacchetti con tcpdump e analizzarli in WireShark tcpdump -i <interface> -s 65535 -w <some-file>Inoltre, dovrai terminare l'acquisizione con ^ C quando ritieni di aver acquisito abbastanza pacchetti.
Guntis,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.