시간 경과에 따라 사용자당 SSH를 통해 전송된 데이터 양

시간 경과에 따라 사용자당 SSH를 통해 전송된 데이터 양

저는 주로 SSH 터널링에 사용하는 약 20명의 사용자가 있는 Ubuntu 서버를 가지고 있습니다.

특정 기간(예: 지난 주 또는 한 달) 동안 각 사용자가 전송한 데이터의 양을 확인할 수 있는 방법이 있는지 알고 싶습니다.

답변1

좋은 질문입니다. 보기 답변을 찾았습니다.

  1. SSH 연결의 대역폭을 측정하는 방법

    iftop -i "$iface" -nPf "tcp and port $sport and port $dport"
    

    $ifaceSSH 연결을 위한 패킷이 전송/수신되는 인터페이스 와 $sport/$dport소스 및 대상 TCP 포트입니다. 소스 및 대상 IP 주소를 지정하여 필터를 더욱 구체화할 수 있습니다.

  2. SSH는 일반적으로 얼마나 많은 데이터를 사용합니까?

    실행하여 tcpdump -ni eth0 -w dump port 22모든 패킷을 캡처한 다음 tcpdump -nX -r dump확인해야 합니다.

  3. 각 사용자의 SSH 트래픽(대역폭 사용량)을 추적할 수 있는 방법이 있습니까?

    나는 iptables 소유자 모듈을 사용할 것입니다(아마도 다른 할당량/보고 모듈과 함께).

    iptables -A OUTPUT -p tcp --dport 22 -m owner --uid someuser -j ACCEPT
    

    그런 다음 출력을 보고 iptables -vL이 규칙을 통과하는 패킷/바이트 수를 확인하거나 일부 분석기를 사용하여 iptables 통계를 구문 분석하십시오.

특정 기간 동안의 데이터를 추적하려면 정기적으로 통계를 재설정하고 정기적으로(예: 매주 또는 매월) 데이터를 수집해야 할 수 있습니다.

분석을 위해 출력을 iptables -vL파일로 리디렉션합니다.

iptables -vL > ssh_traffic.txt

통계 재설정:

iptables -ZiptablesSSH 트래픽을 추적하는 규칙에 대한 통계를 재설정합니다.

iptables(8) - Linux 매뉴얼 페이지

또한 이를 작성하여 사용하거나 bash script실행하여 원하는 간격으로 스크립트를 자동으로 실행하여 트래픽을 수집하고 분석할 수도 있습니다.cronanacron

또 다른 옵션이 있습니다iptables, conntrack및 와 함께 사용되지만 connmark직접 확인해야 합니다.

관련 정보