Hauptverwendung und ausführliche Erklärung!
(Befehl netstat -na), in diesem Artikel geht es hauptsächlich um das Netstat-Tool unter Linux und anschließend um eine ausführliche Erläuterung der verschiedenen Netzwerkverbindungsstatus.
netstat -nat |awk '{print $6}'|sort|uniq -c|sort -nr
1. Detaillierte Erklärung des Netstat-Befehls
Tatsächlich verwende ich häufig netstat -tnl | 443 (Überprüfen Sie, ob Port 443 belegt ist). Wenn Sie derzeit der Root-Benutzer sind, verwende ich gerne netstat -pnl | (es kann auch die Prozess-PID anzeigen, die den lokalen Port 443 belegt).
netstat
Funktionsbeschreibung: Netzwerkstatus anzeigen.
Syntax: netstat [-acCeFghilMnNoprstuvVwx] [-A
Ergänzender Hinweis: Mit dem Befehl netstat können Sie den Netzwerkstatus des gesamten Linux-Systems ermitteln.
Parameter:
-a oder –all Zeigt alle angeschlossenen Sockets an.
-a & lt; Netzwerktyp & gt; oder-& lt; Netzwerktyp & gt;
-c oder –continuous Netzwerkstatus kontinuierlich auflisten.
-C oder –cache Zeigt Cache-Informationen der Router-Konfiguration an.
-e oder –extend Zeigt andere verwandte Informationen über das Netzwerk an.
-F oder –fib FIB anzeigen.
-g oder –groups Zeigt die Liste der Gruppenmitglieder mit Multicast-Funktion an.
-h oder –help Online-Hilfe.
-i oder –interfaces Zeigt das Formular mit den Informationen zur Netzwerkschnittstelle an.
-l oder –listening Zeigt den Socket des überwachten Servers an.
-M oder –masquerade zeigt maskierte Netzwerkverbindungen an.
-n oder –numeric Verwenden Sie die IP-Adresse direkt, ohne den Domänennamenserver zu durchlaufen.
-N oder –netlink oder –symbolic Zeigt den symbolischen Linknamen des Netzwerk-Hardware-Peripheriegeräts an.
-o oder –timers Zeigt Timer an.
-p oder –programs Zeigt den Programmidentifikationscode und den Programmnamen an, der Socket verwendet.
-r oder –route zeigt die Routing-Tabelle an.
-s oder –statistice zeigt die Statistiktabelle mit Netzwerkarbeitsinformationen an.
-t oder –tcp zeigt den Verbindungsstatus des TCP-Transportprotokolls an.
-u oder –udp zeigt den Verbindungsstatus des UDP-Übertragungsprotokolls an.
-v oder –verbose zeigt den Befehlsausführungsprozess an.
-V oder –version zeigt Versionsinformationen an.
-w oder –raw zeigt den Verbindungsstatus des RAW-Übertragungsprotokolls an.
-x oder –unix Die Wirkung dieses Parameters ist dieselbe wie die Angabe des Parameters „-A unix“.
–ip oder –inet Dieser Parameter hat die gleiche Wirkung wie die Angabe des Parameters „-A inet“.
2. Detaillierte Erläuterung des Netzwerkverbindungsstatus
Es gibt 12 mögliche Zustände. Die ersten 11 werden entsprechend dem Drei-Wege-Handshake des TCP-Verbindungsaufbaus und dem Vier-Wege-Wellenprozess der TCP-Verbindungstrennung beschrieben .
1), LISTEN: Zuerst muss der Server einen Socket zum Abhören öffnen, und der Status ist LISTEN./* Der Socket lauscht auf eingehende Verbindungen von Remote-TCP-Ports*/
2), SYN_SENT: Der Client ruft eine Verbindung über das Anwendungsprogramm für aktives Öffnen auf. Dann sendet der Client-TCP eine SYN-Anfrage, um eine Verbindung herzustellen. Danach wird der Status auf SYN_SENT gesetzt./*Der Socket versucht aktiv um eine Verbindung herzustellen. Warten Sie dann auf die entsprechende Verbindungsanforderung */
3), SYN_RECV: Der Server sollte eine ACK senden, um die SYN des Clients zu bestätigen, und gleichzeitig eine SYN senden Danach wird der Status auf SYN_RECV/* gesetzt. Es wurde eine Verbindungsanfrage vom Netzwerk empfangen. Nach dem Empfang und Senden einer Verbindungsanfrage wird auf die Bestätigung gewartet*/
4), ESTABLISHED: Stellt eine offene Verbindung dar und beide Parteien können Daten austauschen oder sind bereits dabei. /* Der Socket hat eine bestehende Verbindung. Stellt eine offene Verbindung dar und Daten können an den Benutzer übertragen werden */
5), FIN_WAIT1: Die aktive Endanwendung (Active Close) ruft close auf, sodass ihr TCP eine FIN-Anfrage ausgibt, um die Verbindung aktiv zu schließen, und dann in den Status FIN_WAIT1 wechselt./* Der Socket wird geschlossen und die Verbindung wird heruntergefahren . Warten auf die Remote-TCP-Verbindungsunterbrechungsanforderung oder Bestätigung der vorherigen Verbindungsunterbrechungsanforderung*/
6), CLOSE_WAIT: Nachdem das passive Schließen (passives Schließen) TCP die FIN empfangen hat, sendet es eine ACK als Antwort Geben Sie die FIN-Anfrage ein (ihr Empfang wird auch als Dateiendezeichen an die übergeordnete Anwendung übergeben) und geben Sie CLOSE_WAIT ein./* Das entfernte Ende wurde heruntergefahren und wartet auf das Schließen des Sockets. Warten auf eine Verbindungsunterbrechungsanforderung von der lokalen Seite user*/
7 ), FIN_WAIT2: Nach dem aktiven Schließen des Endes und dem Empfang von ACK wird FIN-WAIT-2 eingegeben./* Die Verbindung wird geschlossen und der Socket wartet auf das Herunterfahren vom entfernten Ende. Warten auf eine Verbindungsunterbrechungsanforderung vom Remote-TCP*/
8), LAST_ACK: Nachdem das Ende für einen bestimmten Zeitraum passiv geschlossen wurde, ruft die Anwendung, die das Dateiendezeichen empfängt, CLOSE auf, um die Verbindung zu schließen . Dadurch sendet sein TCP auch eine FIN und wartet auf die Bestätigung der anderen Partei./* Das entfernte Ende wurde heruntergefahren und der Socket wird geschlossen. Warten auf die ursprünglich an die andere Partei gesendete Bestätigung Remote-TCP soll unterbrochen werden. */
9), TIME_WAIT: Nachdem das aktive Schließende FIN empfangen hat, sendet TCP ein ACK-Paket und wechselt in den TIME-WAIT-Status. /* Der Socket wartet nach dem Schließen darauf, Pakete zu verarbeiten, die sich noch im Netzwerk befinden. Warten Sie ausreichend Zeit, um sicherzustellen, dass der Remote-TCP eine Bestätigung der Verbindungsunterbrechungsanfrage erhält*/
10), SCHLIESSEN: relativ selten./* Beide Sockets sind heruntergefahren, aber wir haben immer noch nicht alle unsere Daten gesendet. Wir warten darauf, dass der Remote-TCP die Verbindungsunterbrechung bestätigt*/
11), GESCHLOSSEN: Das passive geschlossene Ende tritt ein, nachdem das ACK-Paket empfangen wurde geschlossener Zustand. Die Verbindung wird beendet./* Der Socket wird nicht verwendet. Es gibt keinen Verbindungsstatus */
12), UNBEKANNT: Unbekannter Socket-Status. /* Der Status des Sockets ist unbekannt. */
SYN: (Sequenznummern synchronisieren) Dieses Flag ist nur gültig, wenn der Drei-Wege-Handshake eine TCP-Verbindung aufbaut. Stellt eine neue TCP-Verbindungsanforderung dar.
ACK: (Acknowledgement Number) ist ein Bestätigungszeichen für die TCP-Anfrage und zeigt außerdem an, dass das Peer-System alle Daten erfolgreich empfangen hat.
FIN: (End-Flag, FINish) wird verwendet, um eine TCP-Konversation zu beenden, aber der entsprechende Port ist noch offen und bereit, nachfolgende Daten zu empfangen.
PS: Es ist gut, ein kleines Tool unter Windows zu haben, das Ihnen detaillierte Listen aller TCP- und UDP-Endpunkte auf Ihrem System anzeigt, einschließlich der lokalen und Remote-Adressen und des Status von TCP Verbindungen. Siehe http://technet.microsoft.com/en-us/sysinternals/bb897437. Wenn Sie die Datenpakete im Detail analysieren möchten, können Sie natürlich leistungsfähigere Tools wie Sniffer und Wireshark verwenden.
Referenz:
http://linux.sheup.com/linux/4/31225.html
http://hi.baidu.com/mqbest_come_on/ Blog /item/18526dcef73d791a00e928e5.html
http://www.daxigua.com/archives/1355
Systemverbindungsstatus:
1. TCP-Verbindungsstatus anzeigen
netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn
netstat -n |. END {for(a in S) print a, S[a]}' oder
awk '/^tcp/ {++state[$NF]}; key,"t",state[key]}'
netstat -n |. awk '/^tcp/ {++arr[$NF]};END {for(k in arr) print k,"t ", arr[k]}'
netstat -n |awk '/^tcp/ {print $NF}'|sort|uniq -c|sort -rn
netstat -ant awk '. {print $NF}' |. grep -v '[a-z]' |. sort | >netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20
netstat -ant |awk '/:80/{split($5,ip,":");++A[ip[1]]}END{for(i in A) print A[i],i}' |sort -rn |head -n20
3. Verwenden Sie tcpdump, um den Zugriff auf Port 80 zu überwachen
tcpdump -i eth0 -tnn dst port 80 -c 1000 |.“ {print $1 ″.“$2″.“$4}' |. sort |. uniq -c | grep TIME_WAIT |awk '{print $5}'|sort|uniq -c|sort -rn|head -n20
5. Weitere SYN-Verbindungen finden
netstat -an | $5}' |. awk -F: '{print $1} |. sort -c | '{print $7}' |. cut -d/ -f1
Website-Protokollanalyse 1 (Apache):
1. Erhalten Sie die 10 am häufigsten aufgerufenen IP-Adressen
Cat-Protokoll| awk '{print $1}'|sort|uniq -c|sort -nr|head -10
cat access.log|awk '{counts[$(11)]+=1}; END {for( url in counts) print counts[url], url}'
2. Die am häufigsten besuchten Dateien oder Seiten, nehmen Sie die Top 20
cat access.log|awk '{print $11}'|sort|. c|sort -nr|head -20
3. Listen Sie die größten Exe-Dateien auf (wird häufig bei der Analyse von Download-Sites verwendet)
cat access.log |awk '($7~/ .exe/){print $10 ” ” $1 ” ” $4 ” ” $7}'|sort -nr|head -20
4. Listen Sie die Exe-Dateien mit einer Ausgabegröße von mehr als 200.000 Byte (ca. 200 KB) und die entsprechenden Dateivorkommen auf
cat access.log |awk '($10 > 200000 && $7~/.exe/){print $7}'|sort -n|uniq -c|sort -nr|head -100
5 Die letzte Spalte des Protokolls zeichnet die Übertragungszeit der Auslagerungsdatei auf, und die Seite mit der höchsten Zeitaufwendung zum Client wird aufgeführt
cat access.log |awk '($7~/.php/){print $NF ” ” $1 ” ” $4 ” ” $7}'|sort -nr|head -100
6. Listen Sie die Seiten auf, die am meisten Zeit in Anspruch nehmen (mehr als 60 Sekunden) und die Anzahl der entsprechenden Seitenauftritte
Cat-Zugriffe. log |. awk '($NF > 60 && $7~/.php/){print $7}'|sort -n|uniq -c|sort -nr|head -100
7 Zeit länger als 30 Sekunden Datei
cat access.log |awk '($NF > 30){print $7}'|sort -n|uniq -c|sort -nr|head -20
8 . Statistik Website-Traffic (G)
cat access.log |awk '{sum+=$10} END {print sum/1024/1024/1024}'
9. Statistik 404 Verbindungen
awk ' ($9 ~/404/)' access.log |. awk '{print $9,$7}' |. Statistik http-Status.
cat access.log |awk '{counts[$( 9)]+=1}; END {for(code in counts) print code, counts[code]}'
cat access.log |awk '{print $9}'|sort|uniq -c|sort -rn
10. Spider-Analyse
Überprüfen Sie, welche Spider den Inhalt crawlen.
/usr/sbin/tcpdump -i eth0 -l -s 0 -w - dst port 80 |
Tägliche Website-Analyse 2 (Squid)
2. Traffic-Statistiken nach Domain
zcat squid_access.log.tar.gz| "[ /]"}{trfc[$4]+=$1}END{for(domain in trfc){printf "%st%dn",domain,trfc[domain]}}'
Effizienter für High-End-Perl-Versionen können Sie hier herunterladen: http://docs.linuxtone.org/soft/tools/tr.pl
Datenbankkapitel
1. Sehen Sie sich die von der Datenbank ausgeführte SQL an
/usr/ sbin/tcpdump -i eth0 -s 0 -l -w - dst port 3306 |. egrep -i 'SELECT|UPDATE|DELETE|INSERT|SET|COMMIT|ROLLBACK|CREATE|DROP|ALTER|CALL'
System-Debug-Analyse
1. Debugging-Befehl
strace -p pid
2. Verfolgen Sie die PID des angegebenen Prozesses
gdb -p pid