linux - 如何知道一段时间内服务器和哪些IP进行过连接?
怪我咯
怪我咯 2017-04-17 11:27:12
0
4
764

面试碰到的问题,如何知道你的服务器在一段时间内和哪些IP进行过连接,连接是包括tcp、udp之类的通信? linxu应该不会记录传输层的连接日志信息吧?

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回覆(4)
刘奇

首先承認開始回答這個問題的時候,都沒搞清楚問題所在,查日誌確實是一個不負責任的回答,這裡更新一下自己對這個問題的理解

我的建議也是使用netstat指令,man一下netstat可以看到這個指令的功能:「netstat - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships」

查看伺服器和哪些IP進行過連線
1. 就TCP通訊來說,我假定這裡你問得是查詢通過三次握手的連接,那可以用這個命令查看ip:

netstat -ant | grep 'ESTABLISHED' | awk -F " " '{print }' | awk -F ":" '{print }' | sort -n | uniq -c| sort -t " " -k 1 -nr

這樣可以找到已經建立的tcp通訊的,並且已經按連結的次數從大到小排序了
2. 如果是查看UDP通信,就無需考慮TCP通信的狀態,直接查詢即可:

netstat -anu | awk -F " " '{print }' | awk -F ":" '{print }' | sort -n | uniq -c | sort -t " " -k 1 -nr
  1. 查看SYN攻擊,將tcp的狀態查找從ESTABLISHED替換成SYN即可
小葫芦

man netstat

PHPzhong

iptables 也可以記錄日誌的,不過看起來不太好過濾的樣子。

小葫芦

nf_conntrack 會記錄最近一段時間的連線:

$sudo cat /proc/net/nf_conntrack

不過它超時時間的設置,具體可以看​​ sysctl.conf

$sudo sysctl -a | grep 'nf_conntrack_.*_timeout'
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板