Nethogs 설치 그리고 클라우드 네트워크 트래픽 체크...

2023. 12. 7. 15:37개발

반응형

기존에 사용하던 개발서버가 있었고 인프라와 서버환경을 테스트 한다고 내가 조금씩 건드려보고 있었다...

지난 주말이후 부장님이 방문하여 말하셨다.

아니 개발서버에 무슨일이 있는거야??
네트워크 트래픽이 7테라가 발생했던데?!

당황스러움과 함께 접속해본 클라우드 콘솔 실제로 그만큼의 네트워킹이 찍혀있었다.

11월

11월

12월

12월

 

이게..무슨?

몇백배에 가까운 트래픽.. 말도안되는 수치였다. 별도로 이상한 요청이 없는경우 현재 활성화 안되어있는 신규 개발서버이기 때문에 0.3기가도 안나와야하는게 맞다!

 

오전동안 관련해서 로그를 찾아본 결과 개발서버로 웹취약점 + SQL 인젝션 + 기타 PHP 취약점을 찾는 요청등에 대한 로그들이 남아있었다.

 

기본적인 서버의 구성은 심플했다.

아파치 웹서버 + 톰캣 으로 구성된 WEB + WAS 형태의 서버를 테스트용 DB서버와 연결해둔 개발서버다...

 

네트워크 트래픽상에서 클라우드 서버를 사용중인데 테라와 같이 나온다면 기본 제공량은 가뿐히 넘겼을것이고...문제가 심각해질 수 있어서 1차 조치에 들어갔다.

연관된 업체에 로그파일을 전달하고 답장받은 내용은... KT클라우드를 현재 사용중인데 웹 방화벽(WAF)를 적용하라는 것이였다.

 

불특정 다수를 공격하는 형태의 경우 웹방화벽을 등록하는게 맞지만....일단 바로 적용하는것 말고 아무나 접근 가능한 포트들을 1차적으로 다 차단하였다.
(개발서버이기에 그냥 개발서버 도메인으로 접근시에는 연결안되고 특정 연결된 포트로 직접 호출을 해야지만 페이지를 받아 갈 수 있는 형태였다.)
ex)요청주소가 https://abc.com 인경우 404 or 400 뜸. https://abc.com:90 열어둔 90번 포트를 지정하여 요청시 제대로된 데이터 및 페이지를 볼 수 있음.

그리고 정확하게 무엇때문에 그렇게 많은 아웃바운드 트래픽이 발생하는지 확인하기 위해서 모니터링을 위한 툴을 설치하였다.

 

 

Nethogs

처음에는 아래 2개를 모두 설치할 예정이였으나 1차로는 nethogs만 설치하여 모니터링 해 보고 추가로 더 필요하다면 상세하게 보기위해 다른 툴도 설치하여 보려고 한다.

nethogs —> 네트워크 프로세스 단위로 트래픽 확인

iftop —> ip단위로 트래픽 확인

nethogs 설치

yum install epel-release -y
yum install nethogs -y

nethogs삭제

yum remove nethogs

확인중

sudo nethogs eth0

모습

만약 초 단위로 딜레이를 주고싶다면 옵션 값 추가

sudo -d 10 nethogs eth0

옵션값

-V : prints version.
-h : prints this help.
-b : bughunt mode - implies tracemode.
-d : delay for update refresh rate in seconds. default is 1.
-v : view mode (0 = KB/s, 1 = total KB, 2 = total B, 3 = total MB). default is 0.
-c : number of updates. default is 0 (unlimited).
-t : tracemode.
-p : sniff in promiscious mode (not recommended).
-s : sort output by sent column.

그 외  실시간 감시 중 옵션 값

q를 누르면 실시간감시 중지

m을 누르면 단위가 바뀜. B, KB ,MB

별도로 로그를 남기고 싶다면 1분에 한번씩 trace해서 로그파일을 남겨준다.

프로세스 쉽게 확인 및 제거 하고싶다면

ps -ef | grep nethogs
pkill nethogs

#또는
kill -9 PID입력

모니터링을 위한 로그 파일 생성용 스크립트 생성 

위치

/vdb/nethogs/monitor.sh

monitor.sh 파일 내용은 다음과 같다.
( 최종적용은 30초 단위로 tracemode MB단위로 기록을 수행한다. )

#!/bin/bash

TIMEOUT=3600
IFACE=eth0
TIMESTAMP=$(date "+%Y_%m_%d_%H_%M")
OUTPUT=/vdb/nethogs/nethogs_$TIMESTAMP.log

sh -ic "{ /usr/sbin/nethogs -t -d 30 -v 3 $IFACE &>$OUTPUT; \\
kill 0; } | { sleep $TIMEOUT; \\
kill 0; }" 3>&1 2>/dev/null

실행을 위한 권한 변경

chmod 755 monitor.sh

크론탭 등록

#편집
crontab -e

#매 정각에 수행코드 크론탭 추가.
0 * * * * /vdb/nethogs/monitor.sh;

#리스트확인
crontab -l

cron서비스 재시작

systemctl status crond
systemctl restart crond
systemctl stop crond
systemctl start crond

파일위치

/vdb/nethogs/nethogs_시간.log

 

실제로 생성된 모습

 

스크립트 생성 관련해서 참고한 사이트 주소

An Infatuation for Breaking Things - The heisenbugger at work

 

An Infatuation for Breaking Things - The heisenbugger at work

15 January 2014 Capturing per process bandwidth usage using nethogs On some of our servers at directi, we capture the bandwidth per process using nethogs on an interface over a period of time. The official description of nethogs from its author is as follo

boopathi.in

 

반응형