主な使い方と詳しい解説!
(netstat -na コマンド)、この記事では主に Linux での netstat ツールについて説明し、その後、さまざまなネットワーク接続ステータスについて詳しく説明します。
netstat -nat |awk '{print $6}'|sort|uniq -c|sort -nr
1. netstat コマンドの詳細な説明
実際、私がよく使うのは netstat -tnl | ポート 443 かどうかを確認します。現在 root ユーザーの場合は、 netstat -pnl | grep 443 を使用します (ローカル マシンのポート 443 を占有しているプロセスの PID も表示できます)。
netstat
機能説明: ネットワークの状態を表示します。
構文: netstat [-acCeFghilMnNoprstuvVwx] [-A
補足: netstat コマンドを使用すると、Linux システム全体のネットワーク状態を知ることができます。
パラメータ:
-a または –all 接続されているすべてのソケットを表示します。 & lt; ネットワーク タイプ & gt; または - & lt; ネットワーク タイプ接続の関連アドレスをリストします。
-c または –continuous ネットワークステータスを継続的にリストします。
-C または –cache ルーター設定のキャッシュ情報を表示します。
-e または –extend ネットワークに関するその他の関連情報を表示します。
-F または –fib は FIB を表示します。
-g または –groups マルチキャスト機能を使用するグループメンバーのリストを表示します。
-h または –help オンライン ヘルプ。
-i または –interfaces ネットワークインターフェース情報フォームを表示します。
-l または –listening 監視対象サーバーのソケットを表示します。
-M または –masquerade マスカレードされたネットワーク接続を表示します。
-n または –numeric ドメインネームサーバーを経由せずに、IP アドレスを直接使用します。
-N または –netlink または –symbolic ネットワーク ハードウェア周辺機器のシンボリック リンク名を表示します。
-o または –timers タイマーを表示します。
-p または –programs Socket を使用しているプログラム識別コードとプログラム名を表示します。
-r または –route ルーティング テーブルを表示します。
-s または –statistice は、ネットワーク稼働情報統計テーブルを表示します。
-t または –tcp は、TCP トランスポート プロトコルの接続ステータスを表示します。
-u または –udp は、UDP 伝送プロトコルの接続状態を表示します。
-v または –verbose は命令の実行プロセスを表示します。
-V または –version はバージョン情報を表示します。
-w または –raw は、RAW 転送プロトコルの接続ステータスを表示します。
-x または –unix このパラメータの効果は、「-A unix」パラメータを指定した場合と同じです。
–ip または –inet このパラメータの効果は、「-A inet」パラメータを指定した場合と同じです。
2. ネットワーク接続ステータスの詳細な説明
考えられる状態は 12 あります。最初の 11 は、TCP 接続確立の 3 ウェイ ハンドシェイクと TCP 接続切断の 4 ウェイ ウェーブ プロセスに従って説明されています。
1)、LISTEN: まず、サーバーはリッスンするためにソケットを開く必要があり、ステータスは LISTEN です。/* ソケットはリモート TCP ポートからの接続リクエストをリッスンしています*/
2)、SYN_SENT。 : クライアント アクティブ オープンは、アプリケーションを通じて connect を呼び出すことによって実行されます。その後、クライアント tcp が SYN を送信して接続の確立を要求し、ステータスが SYN_SENT に設定されます。/*送信後、ソケットはアクティブに接続を確立しようとします。 */
3)、SYN_RECV: サーバーはクライアントの SYN を確認するために ACK を送信し、同時にクライアントに SYN を送信する必要があります。は SYN_RECV/* に設定されます。ネットワークから接続要求を受信しました。送受信後、接続要求の確認を待機しています*/
4)、ESTABLISHED: オープン接続を表し、両方の当事者が次のいずれかを行うことができます。すでにデータを操作しています。 /* ソケットには接続が確立されており、オープンな接続を表し、データをユーザーに送信できます */
5)、FIN_WAIT1: アクティブ クローズ (アクティブ クローズ) 終了アプリケーションが close を呼び出すため、その TCP は FIN 要求を発行して接続をアクティブに閉じ、FIN_WAIT1 状態に入ります。/* ソケットが閉じられ、接続がシャットダウンされます。リモート TCP 接続中断要求を待機中、または前回の接続中断要求の確認*/
6)、CLOSE_WAIT: パッシブ クローズ (パッシブ クローズ) TCP は FIN を受信した後、FIN 要求に応答して ACK を送信します (その受信もファイルの終わりとして使用されます) 上位アプリケーションに渡されます)、CLOSE_WAIT を入力します。/* リモート エンドがシャットダウンし、ソケットが閉じるのを待機しています */
7) , FIN_WAIT2: 端末をアクティブに閉じます。ACK を受信した後、FIN-WAIT-2 に入ります。/* 接続が閉じられ、ソケットはリモート TCP からの接続中断要求を待っています*/
。 8)、LAST_ACK: パッシブ シャットダウン 一定時間が経過すると、ファイルの終わり文字を受信したアプリケーションは CLOSE を呼び出して接続を閉じます。これにより、TCP も FIN を送信し、相手の ACK を待ちます。/* リモート エンドがシャットダウンされ、最初に送信された接続を待機しています。リクエストの確認 */
9)、TIME_WAIT: アクティブな終了側が FIN を受信した後、TCP は ACK パケットを送信し、TIME-WAIT 状態に入ります。 /* ソケットはネットワーク内にまだあるパケットを処理するためにクローズ後に待機しています。リモート TCP が接続中断要求の確認を確実に受信できるように十分な時間を待ちます*/
10)、CLOSING: 比較的まれです。/* 両方のソケットがシャットダウンされます。ダウンしていますが、まだすべてのデータが送信されていません。リモート TCP が接続中断を確認するのを待っています*/
11)、CLOSED: パッシブ クローズド エンドは、ACK パケットを受信した後、クローズ状態に入ります。接続が終了します。/* ソケットは使用されていません。接続ステータスはありません。*/
12)、UNKNOWN: 不明なソケットのステータス。 /* ソケットの状態は不明です。 */
SYN: (シーケンス番号の同期) このフラグは、スリーウェイ ハンドシェイクが TCP 接続を確立する場合にのみ有効です。新しい TCP 接続要求を表します。
ACK: (確認番号) は TCP リクエストの確認マークであり、ピア システムがすべてのデータを正常に受信したことを示します。
FIN: (終了フラグ、FINish) は TCP 会話を終了するために使用されますが、対応するポートはまだ開いており、後続のデータを受信する準備ができています。
追記: Windows に小さなツールがあると便利です。TCPView は、ローカルおよびリモートのアドレスと TCP 接続の状態を含む、システム上のすべての TCP および UDP エンドポイントの詳細なリストを表示する Windows プログラムです。もちろん、データ パケットを詳細に分析したい場合は、スニッファーや Wireshark などのより強力なツールを使用できます。
参考文献:
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
システム接続ステータス:
1. TCP 接続ステータスを確認します
netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn
netstat -n | awk '/^tcp/ {++S[$NF]};END {for(a in S) print a, S[a]}' または
netstat -n | +state[$NF]}; END {for(状態のキー) print key,"t",state[key]}'
netstat -n '/^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 | '{print $NF}' | grep -v '[a-z]' 'sort -c
2. 攻撃元を見つけるために使用されます。 :
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. tcpdump を使用してポート 80 のアクセスをスニッフィングし、最も高い番号を持っている人を確認します
tcpdump -i eth0 -tnn dst port 80 -c awk -F”。” .”$3”. "$4}' | sort | uniq -c | sort -nr |head -20
4. さらに time_wait 接続を検索します
netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20
5. 他の SYN 接続を検索します
netstat -an awk '{print $1}' | | sort -nr | more
6. ポートに従ってプロセスをリストします
netstat -ntlp 80 | awk '{print $7}' ウェブサイトログ分析パート 1 (Apache) 1. アクセスされた上位 10 件の IP アドレスを取得します
cat access.log|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. 最もアクセスされたファイルまたはページの上位 20 個を取得します
cat access.log|awk '{print $11 } '|sort|uniq -c|sort -nr|head -20
3. 最大の exe ファイルをリストします (ダウンロード サイトを分析するときによく使用されます)
cat access.log |awk '($7~/.exe /){ print $10 ” ” $1 ” ” $4 ” ” $7}'|sort -nr|head -20
4. 出力が 200000 バイト (約 200kb) を超える exe ファイルと、対応するファイルの出現数をリストします
cat access.log |awk '($10 > 200000 && $7~/.exe/){print $7}'|sort -n|uniq -c|sort -nr|head -100
5.ログにはページ ファイルの転送時間が記録され、クライアントへの最も時間のかかるページがリストされます
cat access.log |awk '($7~/.php/){print $NF ” ” $1 ” ” $4 ” ” $7}' |sort -nr|head -100
6. 最も時間のかかるページ (60 秒以上) と、対応するページの出現数をリストします
cat access.log |awk '($NF >) ; 60 && $7~/ .php/){print $7}'|sort -n|uniq -c|sort -nr|head -100
7. 転送に 30 秒以上かかるファイルをリストします
cat access.log |awk '($NF > ; 30){print $7}'|sort -n|uniq -c|sort -nr|head -20
8. Web サイトのトラフィックの統計 (G)
cat access.log |awk ' {sum+=$10} END {print sum/1024/1024/1024}'
9. 404 接続の統計
awk '($9 ~/404/)' awk '{print $9,$7}' | sort
10. http ステータスの統計 .
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. スパイダー分析
どのスパイダーがコンテンツをクロールしているかを確認します。
/usr/sbin/tcpdump -i eth0 -l -s 0 -w - dst port 80 | grep -i user-agent |
ウェブサイトの毎日の分析2 (Squid)
2. ドメイン別のトラフィック統計
zcatquid_access.log.tar.gz|awk '{print $10,$7}' |awk 'BEGIN{FS="[ /]"}{trfc[$4] + =$1}END{for(domain in trfc){printf "%st%dn",domain,trfc[domain]}}'
より効率的な Perl バージョンについては、ここからダウンロードしてください: http://docs.linuxtone .org/soft/tools/tr.pl
データベースの章
1. データベースによって実行される SQL を表示します
/usr/sbin/tcpdump -i eth0 -s 0 -l -w - dst port 3306 | i ' SELECT|UPDATE|DELETE|INSERT|SET|COMMIT|ROLLBACK|CREATE|DROP|ALTER|CALL'
システム デバッグ分析
1. デバッグ コマンド
strace -p pid
2. 指定された PID を追跡します。プロセス
gdb -p pid