導航:首頁 > 源碼編譯 > linuxnetstat源碼

linuxnetstat源碼

發布時間:2022-05-10 06:40:07

Ⅰ 如何在linux上使用netstat命令查證DDOS攻擊

伺服器出現緩慢的狀況可能由很多事情導致,比如錯誤的配置,腳本和差的硬體。但是有時候它可能因為有人對你的伺服器用DoS或者DDoS進行洪水攻擊。
如何在Linux上使用netstat命令查證DDOS攻擊
DoS攻擊或者DDoS攻擊是試圖讓機器或者網路資源不可用的攻擊。這種攻擊的攻擊目標網站或者服務通常是託管在高防伺服器比如銀行,信用卡支付網管,甚至根域名伺服器,DOS攻擊的實施通常迫使目標重啟計算機或者消耗資源,使他們不再提供服務或者妨礙用戶,訪客訪問。
在這篇小文章中,你可以知道在受到攻擊之後如何在終端中使用netstat命令檢查你的伺服器。
一些例子和解釋
netstat -na顯示所有連接到伺服器的活躍的網路連接netstat -an | grep :80 | sort只顯示連接到80段口的活躍的網路連接,80是http埠,這對於web伺服器非常有用,並且對結果排序.對於你從許多的連接中找出單個發動洪水攻擊IP非常有用netstat -n -p|grep SYN_REC | wc -l這個命令對於在伺服器上找出活躍的SYNC_REC非常有用,數量應該很低,最好少於5.在dos攻擊和郵件炸彈,這個數字可能非常高.然而值通常依賴於系統,所以高的值可能平分給另外的伺服器.netstat -n -p | grep SYN_REC | sort -u列出所有包含的IP地址而不僅僅是計數.netstat -n -p | grep SYN_REC | awk '{print $5}' | awk -F: '{print $1}'列出所有不同的IP地址節點發送SYN_REC的連接狀態netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n使用netstat命令來計算每個IP地址對伺服器的連接數量netstat -anp |grep 'tcp|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n列出使用tcp和udp連接到伺服器的數目netstat -ntu | grep ESTAB | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr檢查ESTABLISHED連接而不是所有連接,這可以每個ip的連接數netstat -plan|grep :80|awk {'print $5'}|cut -d: -f 1|sort|uniq -c|sort -nk 1顯示並且列出連接到80埠IP地址和連接數.80被用來作為HTTP
如何緩解DDoS攻擊
當你發現攻擊你伺服器的IP你可以使用下面的命令來關閉他們的連接:
iptables -A INPUT 1 -s $IPADRESS -j DROP/REJECT
請注意你必須用你使用netstat命令找到的IP數替換$IPADRESS
在完成以上的命令,使用下面的命令殺掉所有httpd連接,清除你的系統,然後重啟httpd服務。
killall -KILL httpd service httpd start #For Red Hat systems /etc/init/d/apache2 restar

Linux系統用netstat命令查看DDOS攻擊具體命令用法如下:

代碼如下:netstat -na
顯示所有連接到伺服器的活躍的網路連接

代碼如下:netstat -an | grep :80 | sort
只顯示連接到80段口的活躍的網路連接,80是http埠,這對於web伺服器非常有用,並且對結果排序.對於你從許多的連接中找出單個發動洪水攻擊IP非常有用

代碼如下:netstat -n -p|grep SYN_REC | wc -l
這個命令對於在伺服器上找出活躍的SYNC_REC非常有用,數量應該很低,最好少於5.
在dos攻擊和郵件炸彈,這個數字可能非常高.然而值通常依賴於系統,所以高的值可能平分給另外的伺服器.

代碼如下:netstat -n -p | grep SYN_REC | sort -u
列出所有包含的IP地址而不僅僅是計數.

代碼如下:netstat -n -p | grep SYN_REC | awk '{print $5}' | awk -F: '{print $1}'
列出所有不同的IP地址節點發送SYN_REC的連接狀態

代碼如下:netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
使用netstat命令來計算每個IP地址對伺服器的連接數量

代碼如下:netstat -anp |grep 'tcp|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
列出使用tcp和udp連接到伺服器的數目

代碼如下:netstat -ntu | grep ESTAB | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
檢查ESTABLISHED連接而不是所有連接,這可以每個ip的連接數

代碼如下:netstat -plan|grep :80|awk {'print $5'}|cut -d: -f 1|sort|uniq -c|sort -nk 1
顯示並且列出連接到80埠IP地址和連接數.80被用來作為HTTP
如何緩解ddos攻擊
當你發現攻擊你伺服器的IP你可以使用下面的命令來關閉他們的連接:

代碼如下:iptables -A INPUT 1 -s $IPADRESS -j DROP/REJECT
請注意你必須用你使用netstat命令找到的IP數替換$IPADRESS

Ⅱ linux如何查看埠被哪個進程佔用 / 源碼

Linux查看埠佔用,參考命令如下:

netstat-anltp|grepport

註:以上請替換port為自己需要查看的埠,查詢顯示的信息就包含埠佔用使用進程。

Ⅲ 在linux中,用netstat會看到Send-Q和Recv-Q,通常為零,如果文件積壓過多,那麼Send-Q和Recv-Q數值會增大

Linux的CMD,你應該寫自己的函數來發送相應的數據類型來接受的結果集

Ⅳ LINUX下的netstat

$netstat -help
usage: netstat [-vWeenNcCF] [<Af>] -r netstat {-V|--version|-h|--help}
netstat [-vWnNcaeol] [<Socket> ...]
netstat { [-vWeenNac] -i | [-cWnNe] -M | -s }

-r, --route display routing table
-i, --interfaces display interface table
-g, --groups display multicast group memberships
-s, --statistics display networking statistics (like SNMP)
-M, --masquerade display masqueraded connections

-v, --verbose be verbose
-W, --wide don't truncate IP addresses
-n, --numeric don't resolve names
--numeric-hosts don't resolve host names
--numeric-ports don't resolve port names
--numeric-users don't resolve user names
-N, --symbolic resolve hardware names
-e, --extend display other/more information
-p, --programs display PID/Program name for sockets
-c, --continuous continuous listing

-l, --listening display listening server sockets
-a, --all, --listening display all sockets (default: connected)
-o, --timers display timers
-F, --fib display Forwarding Information Base (default)
-C, --cache display routing cache instead of FIB

<Socket>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx --netrom
<AF>=Use '-6|-4' or '-A <af>' or '--<af>'; default: inet
List of possible address families (which support routing):
inet (DARPA Internet) inet6 (IPv6) ax25 (AMPR AX.25)
netrom (AMPR NET/ROM) ipx (Novell IPX) ddp (Appletalk DDP)
x25 (CCITT X.25)

以上是幫助文檔。linux的命令一般都提供man XXX和 XXX -help命令給你查找幫助。

Ⅳ Linux裡面 netstat -ntlp命令作用是什麼

netstat命令是一個監控TCP/IP網路的非常有用的工具,它可以顯示路由表、實際的網路連接以及每一個網路介面設備的狀態信息。

Ⅵ Linux裡面netstat -an命令作用是什麼

題主你好,

默認情況下,netstat只顯示處於已連接狀態的連接, 而加上-a參數後會顯示所有狀態的連接, 說白了就是加上-a參數顯示的內容要大於等於不加-a參數時顯示的內容, 你也可以簡單的理解為加上-a參數後顯示的條目更多了.

不加-a:


*.需要注意的是State列不只有ESTABLISHED和LISTEN這兩種狀態,還有其它狀態, 這里就不展開了,通過上面的描述,題主先簡單的理解一下,如果想要深入的理解netstat顯示的所有內容題主還需要學習tcp,udp等協議的細節.

*.一般用的最多的就是" netstat -an | grep 埠號 " 來看看該埠號是否已經被佔用了.

=====

希望可以幫到題主, 歡迎追問.

Ⅶ linux下的netstat語法:

任意的意思。
*:ssh 表示sshd在每一個IP地址上監聽TCP的22埠!
同樣*:10088是在每一個IP地址上監聽TCP的10088埠!

Ⅷ 求前輩指教。linux的套接字編程,這個程序運行,我照著源碼敲,出現一堆錯誤。用的是vim和gcc

再啟動時會出現:
Bind(): Address already in use
的錯誤提示,並導致程序直接退出;

$netstat -an |grep 8080



$ps aux |grep 8080
都還能看到剛才用Ctrl+C「強制結束」了的進程,埠還是使用中,
只能用kill結束進程,才能收回埠,很是麻煩。
在代碼中添加:
int optval;

optval = 1;

ret = setsockopt( sock, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval) );
可以解決這問題。
在網上查到的更好的解釋如下:
http://www.ibm.com/developerworks/cn/linux/l-sockpit/
在 4.2 BSD UNIX® 操作系統中首次引入,Sockets API 現在是任何操作系統的標准特性。
事實上,很難找到一種不支持 Sockets API 的現代語言。
該 API 相當簡單,但新的開發人員仍然會遇到一些常見的隱患。
本文識別那些隱患並向您顯示如何避開它們。

隱患 1.忽略返回狀態
第一個隱患很明顯,但它是開發新手最容易犯的一個錯誤。
如果您忽略函數的返回狀態,當它們失敗或部分成功的時候,您也許會迷失。
反過來,這可能傳播錯誤,使定位問題的源頭變得困難。
捕獲並檢查每一個返回狀態,而不是忽略它們。
考慮清單 1 顯示的例子,一個套接字 send 函數。

清單 1. 忽略 API 函數返回狀態

int status, sock, mode;

/* Create a new stream (TCP) socket */
sock = socket( AF_INET, SOCK_STREAM, 0 );
...
status = send( sock, buffer, buflen, MSG_DONTWAIT );
if (status == -1)
{
/* send failed */
printf( "send failed: %s\n", strerror(errno) );
}
else
{
/* send succeeded -- or did it? */
}

清單 1 探究一個函數片斷,它完成套接字 send 操作(通過套接字發送數據)。
函數的錯誤狀態被捕獲並測試,但這個例子忽略了send 在無阻塞模式(由 MSG_DONTWAIT 標志啟用)下的一個特性。
send API 函數有三類可能的返回值:
如果數據成功地排到傳輸隊列,則返回 0。
如果排隊失敗,則返回 -1(通過使用 errno 變數可以了解失敗的原因)。
如果不是所有的字元都能夠在函數調用時排隊,則最終的返回值是發送的字元數。
由於 send 的 MSG_DONTWAIT 變數的無阻塞性質,
函數調用在發送完所有的數據、一些數據或沒有發送任何數據後返回。
在這里忽略返回狀態將導致不完全的發送和隨後的數據丟失。

隱患 2.對等套接字閉包
UNIX 有趣的一面是您幾乎可以把任何東西看成是一個文件。
文件本身、目錄、管道、設備和套接字都被當作文件。
這是新穎的抽象,意味著一整套的 API 可以用在廣泛的設備類型上。
考慮 read API 函數,它從文件讀取一定數量的位元組。
read 函數返回:
讀取的位元組數(最高為您指定的最大值);
或者 -1,表示錯誤;
或者 0,如果已經到達文件末尾。
如果在一個套接字上完成一個 read 操作並得到一個為 0 的返回值,這表明遠程套接字端的對等層調用了 close API 方法。
該指示與文件讀取相同 —— 沒有多餘的數據可以通過描述符讀取(參見 清單 2)。

清單 2.適當處理 read API 函數的返回值

int sock, status;
sock = socket( AF_INET, SOCK_STREAM, 0 );
...
status = read( sock, buffer, buflen );
if (status > 0)
{
/* Data read from the socket */
}
else if (status == -1)
{
/* Error, check errno, take action... */
}
else if (status == 0)
{
/* Peer closed the socket, finish the close */
close( sock );
/* Further processing... */
}

同樣,可以用 write API 函數來探測對等套接字的閉包。
在這種情況下,接收 SIGPIPE 信號,或如果該信號阻塞,write 函數將返回 -1 並設置 errno 為 EPIPE。

隱患 3.地址使用錯誤(EADDRINUSE)
您可以使用 bind API 函數來綁定一個地址(一個介面和一個埠)到一個套接字端點。
可以在伺服器設置中使用這個函數,以便限制可能有連接到來的介面。
也可以在客戶端設置中使用這個函數,以便限制應當供出去的連接所使用的介面。
bind 最常見的用法是關聯埠號和伺服器,並使用通配符地址(INADDR_ANY),它允許任何介面為到來的連接所使用。
bind 普遍遭遇的問題是試圖綁定一個已經在使用的埠。
該陷阱是也許沒有活動的套接字存在,但仍然禁止綁定埠(bind 返回EADDRINUSE),
它由 TCP 套接字狀態 TIME_WAIT 引起。
該狀態在套接字關閉後約保留 2 到 4 分鍾。
在 TIME_WAIT 狀態退出之後,套接字被刪除,該地址才能被重新綁定而不出問題。
等待 TIME_WAIT 結束可能是令人惱火的一件事,
特別是如果您正在開發一個套接字伺服器,就需要停止伺服器來做一些改動,然後重啟。
幸運的是,有方法可以避開 TIME_WAIT 狀態。可以給套接字應用 SO_REUSEADDR 套接字選項,以便埠可以馬上重用。
考慮清單 3 的例子。
在綁定地址之前,我以 SO_REUSEADDR 選項調用 setsockopt。
為了允許地址重用,我設置整型參數(on)為 1 (不然,可以設為 0 來禁止地址重用)。

清單 3.使用 SO_REUSEADDR 套接字選項避免地址使用錯誤

int sock, ret, on; struct sockaddr_in servaddr; /* Create a new stream (TCP) socket */ sock = socket( AF_INET, SOCK_STREAM, 0 ):
/* Enable address reuse */
on = 1;
ret = setsockopt( sock, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on) );

/* Allow connections to port 8080 from any available interface */
memset( &servaddr, 0, sizeof(servaddr) );
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl( INADDR_ANY );
servaddr.sin_port = htons( 45000 );

/* Bind to the address (interface/port) */
ret = bind( sock, (struct sockaddr *)&servaddr, sizeof(servaddr) );

在應用了 SO_REUSEADDR 選項之後,bind API 函數將允許地址的立即重用。

隱患 4.發送結構化數據
套接字是發送無結構二進制位元組流或 ASCII 數據流(比如 HTTP 上的 HTTP 頁面,或 SMTP 上的電子郵件)的完美工具。但是如果試圖在一個套接字上發送二進制數據,事情將會變得更加復雜。
比如說,您想要發送一個整數:您可以肯定,接收者將使用同樣的方式來解釋該整數嗎?
運行在同一架構上的應用程序可以依賴它們共同的平台來對該類型的數據做出相同的解釋。
但是,如果一個運行在高位優先的 IBM PowerPC 上的客戶端發送一個 32 位的整數到一個低位優先的 Intel x86,
那將會發生什麼呢?
位元組排列將引起不正確的解釋。
位元組交換還是不呢?
Endianness 是指內存中位元組的排列順序。高位優先(big endian) 按最高有效位元組在前排列,然而 低位優先(little endian) 按照最低有效位元組在前排序。
高位優先架構(比如 PowerPC®)比低位優先架構(比如 Intel® Pentium® 系列,其網路位元組順序是高位優先)有優勢。這意味著,對高位優先的機器來說,在 TCP/IP 內控制數據是自然有序的。低位優先架構要求位元組交換 —— 對網路應用程序來說,這是一個輕微的性能弱點。
通過套接字發送一個 C 結構會怎麼樣呢?這里,也會遇到麻煩,因為不是所有的編譯器都以相同的方式排列一個結構的元素。結構也可能被壓縮以便使浪費的空間最少,這進一步使結構中的元素錯位。
幸好,有解決這個問題的方案,能夠保證兩端數據的一致解釋。過去,遠程過程調用(Remote Procere Call,RPC)套裝工具提供所謂的外部數據表示(External Data Representation,XDR)。XDR 為數據定義一個標準的表示來支持異構網路應用程序通信的開發。
現在,有兩個新的協議提供相似的功能。可擴展標記語言/遠程過程調用(XML/RPC)以 XML 格式安排 HTTP 上的過程調用。數據和元數據用 XML 進行編碼並作為字元串傳輸,並通過主機架構把值和它們的物理表示分開。SOAP 跟隨 XML-RPC,以更好的特性和功能擴展了它的思想。參見 參考資料 小節,獲取更多關於每個協議的信息。
回頁首
隱患 5.TCP 中的幀同步假定
TCP 不提供幀同步,這使得它對於面向位元組流的協議是完美的。
這是 TCP 與 UDP(User Datagram Protocol,用戶數據報協議)的一個重要區別。
UDP 是面向消息的協議,它保留發送者和接收者之間的消息邊界。
TCP 是一個面向流的協議,它假定正在通信的數據是無結構的,
如圖 1 所示。

圖 1.UDP 的幀同步能力和缺乏幀同步的 TCP

圖 1 的上部說明一個 UDP 客戶端和伺服器。
左邊的對等層完成兩個套接字的寫操作,每個 100 位元組。
協議棧的 UDP 層追蹤寫的數量,並確保當右邊的接收者通過套接字獲取數據時,它以同樣數量的位元組到達。
換句話說,為讀者保留了寫者提供的消息邊界。
現在,看圖 1 的底部.它為 TCP 層演示了相同粒度的寫操作。
兩個獨立的寫操作(每個 100 位元組)寫入流套接字。
但在本例中,流套接字的讀者得到的是 200 位元組。
協議棧的 TCP 層聚合了兩次寫操作。
這種聚合可以發生在 TCP/IP 協議棧的發送者或接收者中任何一方。
重要的是,要注意到聚合也許不會發生 —— TCP 只保證數據的有序發送。
對大多數開發人員來說,該陷阱會引起困惑。
您想要獲得 TCP 的可靠性和 UDP 的幀同步。
除非改用其他的傳輸協議,比如流傳輸控制協議(STCP),
否則就要求應用層開發人員來實現緩沖和分段功能。

調試套接字應用程序的工具
GNU/Linux 提供幾個工具,它們可以幫助您發現套接字應用程序中的一些問題。
此外,使用這些工具還有教育意義,而且能夠幫助解釋應用程序和 TCP/IP 協議棧的行為。
在這里,您將看到對幾個工具的概述。查閱下面的 參考資料 了解更多的信息。
查看網路子系統的細節
netstat 工具提供查看 GNU/Linux 網路子系統的能力。
使用 netstat,可以查看當前活動的連接(按單個協議進行查看),
查看特定狀態的連接(比如處於監聽狀態的伺服器套接字)和許多其他的信息。
清單 4 顯示了 netstat 提供的一些選項和它們啟用的特性。

清單 4.netstat 實用程序的用法模式

View all TCP sockets currently active $ netstat --tcp View all UDP sockets $ netstat --udp View all TCP sockets in the listening state $ netstat --listening View the multicast group membership information $ netstat --groups Display the list of masqueraded connections $ netstat --masquerade View statistics for each protocol $ netstat --statistics

盡管存在許多其他的實用程序,但 netstat 的功能很全面,
它覆蓋了 route、ifconfig 和其他標准 GNU/Linux 工具的功能。
監視流量
可以使用 GNU/Linux 的幾個工具來檢查網路上的低層流量。
tcpmp 工具是一個比較老的工具,它從網上「嗅探」網路數據包,列印到stdout 或記錄在一個文件中。
該功能允許查看應用程序產生的流量和 TCP 生成的低層流控制機制。
一個叫做 tcpflow 的新工具與tcpmp 相輔相成,
它提供協議流分析和適當地重構數據流的方法,而不管數據包的順序或重發。
清單 5 顯示 tcpmp 的兩個用法模式。

清單 5.tcpmp 工具的用法模式

Display all traffic on the eth0 interface for the local host
$ tcpmp -l -i eth0 // Show all traffic on the network coming from or going to host plato
$ tcpmp host plato // Show all HTTP traffic for host camus
$ tcpmp host camus and (port http) //View traffic coming from or going to TCP port 45000 on the local host
$ tcpmp tcp port 45000

tcpmp 和 tcpflow 工具有大量的選項,包括創建復雜過濾表達式的能力。
查閱下面的 參考資料 獲取更多關於這些工具的信息。
tcpmp 和 tcpflow 都是基於文本的命令行工具。
如果您更喜歡圖形用戶界面(GUI),有一個開放源碼工具 Ethereal 也許適合您的需要。
Ethereal 是一個專業的協議分析軟體,它可以幫助調試應用層協議。
它的插入式架構(plug-in architecture)可以分解協議,
比如 HTTP 和您能想到的任何協議(寫本文的時候共有 637 個協議)。
回頁首
總結
套接字編程是容易而有趣的,但是您要避免引入錯誤或至少使它們容易被發現,
這就需要考慮本文中描述的這 5 個常見的陷阱,並且採用標準的防錯性程序設計實踐。
GNU/Linux 工具和實用程序還可以幫助發現一些程序中的小問題。
記住:在查看實用程序的幫助手冊時候,跟蹤相關的或「請參見」工具。
您也許會發現一個必要的新工具。

Ⅸ linux netstat命令詳解

Netstat是控制台命令,是一個監控TCP/IP網路的非常有用的工具,它可以顯示路由表、實際的網路連接以及每一個網路介面設備的狀態信息。Netstat用於顯示與IP、TCP、UDP和ICMP協議相關的統計數據,一般用於檢驗本機各埠的網路連接情況。《Linux就該這么學》 一起來學習。

netstat的輸出結果可以分為兩個部分

1、Active Internet connections有源TCP連接,其中"Recv-Q"和"Send-Q"指接收隊列和發送隊列。這些數字一般都應該是0。如果不是則表示軟體包正在隊列中堆積。這種情況只能在非常少的情況見到。

2、Active UNIX domain sockets有源Unix域套介面(和網路套接字一樣,但是只能用於本機通信,性能可以提高一倍)。

列名解釋:

Proto:顯示連接使用的協議。

RefCnt:表示連接到本套介面上的進程號。

Types:顯示套介面的類型。

State:顯示套介面當前的狀態。

Path:表示連接到套介面的其它進程使用的路徑名。

Ⅹ linux怎麼用netstat命令查看顯示與網路協議相關的統計數據

netstat命令只顯示與特定網路協議相關數據的參數有兩個:
-t參數:表示列出tcp網路數據包的數據
-u參數:表示列出UDP網路數據包的數據
另外,使用這兩個參數時最好加上-n和-l參數:
-n參數:表示列出進程的埠號
-l參數:表示列出正在進行網路監聽(listen)的服務

閱讀全文

與linuxnetstat源碼相關的資料

熱點內容
單片機原理及介面技術b卷 瀏覽:354
php鏈接正則表達式 瀏覽:964
安卓版蘋果手機怎麼轉手 瀏覽:101
安卓怎麼修改app的名字 瀏覽:135
域名伺服器可將域名地址 瀏覽:721
廣州伺服器機櫃怎麼賣 瀏覽:236
轉讓騰訊雲三年伺服器 瀏覽:252
網易雲音樂加密怎麼處理 瀏覽:387
編譯小視頻軟體 瀏覽:595
盒馬app買東西怎麼送 瀏覽:119
編譯原理國產 瀏覽:691
在線用pdf轉word 瀏覽:424
咪咕app怎麼發表文章 瀏覽:209
phpsftp上傳 瀏覽:936
php可以幹嘛 瀏覽:879
梁箍筋加密區需要滿綁扎嗎 瀏覽:330
程序員半個月工資多少 瀏覽:821
雲伺服器租賃還是私有 瀏覽:752
php七牛視頻上傳 瀏覽:14
php五星 瀏覽:311