2023. 12. 7. 15:37ㆍ개발
기존에 사용하던 개발서버가 있었고 인프라와 서버환경을 테스트 한다고 내가 조금씩 건드려보고 있었다...
지난 주말이후 부장님이 방문하여 말하셨다.
아니 개발서버에 무슨일이 있는거야??
네트워크 트래픽이 7테라가 발생했던데?!
당황스러움과 함께 접속해본 클라우드 콘솔 실제로 그만큼의 네트워킹이 찍혀있었다.
11월
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
'개발' 카테고리의 다른 글
MariaDB에서 Oracle로 DBLINK 적용 및 기타(unixODBC, jdbc)_1 (0) | 2024.02.13 |
---|---|
네트워크 트래픽 체크.. 그 이후(UDP Flooding) (1) | 2023.12.11 |
템플릿 메서드 패턴, 전략패턴(스프링 핵심원리 고급편) (0) | 2023.04.25 |
세션에 있는 로그인정보 쉽게 사용하기(Spring, ArgumentResolver) (0) | 2023.03.29 |
String, StringBuilder, StringBuffer 차이 그리고 여담..! (0) | 2023.03.23 |