搜尋

首頁  >  問答  >  主體

linux - 如何知道一段时间内服务器和哪些IP进行过连接?

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

怪我咯怪我咯2868 天前788

全部回覆(4)我來回復

  • 怪我咯

    怪我咯2017-04-17 11:29:12

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

    我的建議也是使用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即可

    回覆
    0
  • 高洛峰

    高洛峰2017-04-17 11:29:12

    man netstat

    回覆
    0
  • PHPz

    PHPz2017-04-17 11:29:12

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

    回覆
    0
  • 高洛峰

    高洛峰2017-04-17 11:29:12

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

    $sudo cat /proc/net/nf_conntrack
    

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

    $sudo sysctl -a | grep 'nf_conntrack_.*_timeout'
    

    回覆
    0
  • 取消回覆