저는 주로 SSH 터널링에 사용하는 약 20명의 사용자가 있는 Ubuntu 서버를 가지고 있습니다.
특정 기간(예: 지난 주 또는 한 달) 동안 각 사용자가 전송한 데이터의 양을 확인할 수 있는 방법이 있는지 알고 싶습니다.
답변1
좋은 질문입니다. 보기 답변을 찾았습니다.
-
iftop -i "$iface" -nPf "tcp and port $sport and port $dport"
$iface
SSH 연결을 위한 패킷이 전송/수신되는 인터페이스 와$sport/$dport
소스 및 대상 TCP 포트입니다. 소스 및 대상 IP 주소를 지정하여 필터를 더욱 구체화할 수 있습니다. -
실행하여
tcpdump -ni eth0 -w dump port 22
모든 패킷을 캡처한 다음tcpdump -nX -r dump
확인해야 합니다. 각 사용자의 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 -Z
iptables
SSH 트래픽을 추적하는 규칙에 대한 통계를 재설정합니다.
또한 이를 작성하여 사용하거나 bash script
실행하여 원하는 간격으로 스크립트를 자동으로 실행하여 트래픽을 수집하고 분석할 수도 있습니다.cron
anacron
또 다른 옵션이 있습니다iptables
, conntrack
및 와 함께 사용되지만 connmark
직접 확인해야 합니다.