2012년 8월 9일 목요일

tmp 해킹툴 삭제 스크립트

서버의 트래픽이 갑자기  100M이상 늘어나는 현상이 있었다.

서버체크를 해보니 /tmp 디렉토리에 숨김파일로 공격툴이 심어져 있고,

다른 쪽으로 공격을 하고 있었다.

일단 해당 프로세스를 죽인후 해당 파일을 삭제처리 하였다.

tmp 해킹에 대해서 검색하여, tmp 디렉토에서는 실행할  수 없게끔 설정하였다.

문제는 /tmp/.hack 이렇게 경로로 실행을 하면 실행 되지 않지만,

sh /tmp/.hack 이런 식으로 주면 실행이 가능하다.

해당 공격툴의 소유자가 nobody 인 걸로 봐서 웹을 통한 해킹인 것으로 보이는 데,

해당 문제는 다른 이유로 만질 수 있는 상태가 아니다.

tmpwatch를 이용해서 /tmp 디렉토리에서 해킹툴을 지속적으로 삭제해주도록 걸어 놨다.

몇일 간 문제가 없어 보였으나 ,  다시 트래픽이 쳐서 확인 해 보았다.

공격툴이 정상적으로 삭제 되어졌으나 문제는 메모리에 이미 로드 되어 실행이 되고 있는 상태인 것 같다.

프로세스를 확인 하면 [sh] <defunct> 이렇게 나오는 부분이 있는 데, 역시나 삭제된 해킹툴이다.

해서 /tmp 디렉토리에서 실행되는 프로그램은 죽여버리고, 삭제 시키는 스크립트를 만들었다.

----------------
#/bin/sh

while (( 1 ))
do

for f in `find /tmp/ -type f | grep -v "sess_*"`
do

if [ "$f" != "." ] && [ "$f" != ".." ] && [ "$f" != ".ICE-unix" ] && [ "$f" != ".font-unix" ]
then
if [ -e $f ]
then

#echo $f' is file'
lsof $f | sed '1d' | awk '{print $2}' | xargs kill -9
rm -rf $f
fi
fi

done
sleep 5
done

해당 프로그램을 실행하면 5초 마다 실행 되도록 작성 해 놓았다.

부하는 그리 크지 않는 듯 하나, 루프를 돌리기 싫다면, while 부분을 삭제하고 크론으로 등록하여 사용해도 좋을 듯하다.

댓글 없음:

댓글 쓰기