에이전트 설치 및 실행 가이드
에이전트 설치/삭제/실행/종료 방법에 대해 참고할 수 있는 가이드입니다.
목차
에이전트 설치
Step 1. 탐지 대상 서버에 접속
- 리눅스 서버 접속 가이드
- root 권한으로 진행해야함
Step 2. 에이전트 설치
# wget https://wbd.ncloud.com:18088/agent/wbd_installer.sh -O wbd_installer.sh
# chmod a+x wbd_installer.sh
# ./wbd_installer.sh
아래와 같이 문구가 표기되면 에이전트 설치를 성공한 것을 확인할 수 있습니다.
Step 3. 에이전트가 정상적으로 실행되었는지 확인
다음과 같은 명령어를 통해 에이전트가 성공적으로 설치되어 실행중인 것을 확인할 수 있습니다.
# ps -ef | grep wbd
또한 콘솔에서 "Webshell Behavior Detector > Detection Setting > Configuration"에서 에이전트 상태가 "활성화" 상태로 되어있을 경우 에이전트가 성공적으로 설치되어 실행중인 것을 확인할 수 있습니다.
설치 과정 또는 실행 결과가 위와 상이할 경우 설치 스크립트("wbd_installer.sh") 실행을 재시도할 것을 권고드립니다.
설치 과정에서 에러가 발생할 경우 에러 코드 별 대응 가이드를 참고해주세요.
Step 4. 웹쉘 행위를 잘 탐지하는지 확인
Webshell Behavior Detector 에이전트가 정상적으로 설치되어 실행되고 있음을 확인했다면, 가짜 웹쉘 파일을 통해 웹쉘 행위를 잘 탐지해내는지 확인할 것을 권고드립니다.
가짜 웹쉘 파일을 통한 테스트 시 주의사항
- 인자값을 받지 않는 형태로 작성하세요. ex) webshell.php?cmd=cat /etc/hosts
- 유추할 수 없는 경로와 파일명으로 작성하세요. ex) webshelltestfile_202001011230.php
- 테스트 후 반드시 삭제하세요.
아래는 가짜 웹쉘 파일 예시입니다. 가짜 웹쉘 파일 작성 시 참고용으로만 활용해주세요.
PHP
<?php system("ls -al /tmp/thereisnodir"); ?>
JSP
<%@ page import="java.io.*"%> <% Process child = Runtime.getRuntime().exec("ls -al /tmp/thereisnodir"); InputStream in = child.getInputStream(); int c; while ((c = in.read()) != -1) { out.print((char)c); } %>
이와 같은 가짜 웹쉘 파일을 웹루트 경로에 유추하기 어려운 파일명으로 저장 후 접근을 시도합니다. 콘솔에서 웹쉘 행위를 탐지한다면 설치 및 실행이 성공한 것을 확인할 수 있습니다.
※ 서버 상태에 따라 cmdline은 제대로 수집되지 않을 수 있습니다.
에이전트 삭제
에이전트 삭제는 설치 스크립트로 할 수 있으며 "uninstall"을 인자값으로 넣을 경우 삭제가 가능합니다.
# wget https://wbd.ncloud.com:18088/agent/wbd_installer.sh -O wbd_installer.sh
# chmod a+x wbd_installer.sh
#./wbd_installer.sh uninstall
아래와 같이 문구가 표기되면 에이전트 삭제를 성공한 것을 확인할 수 있습니다.
다음과 같은 명령어를 통해 에이전트가 성공적으로 삭제되어 종료된 것을 확인할 수 있습니다.
ps -ef | grep wbd
삭제 시 콘솔에서 에이전트 상태가 "미설치"로 변경됩니다.
에이전트 실행 또는 종료
웹쉘 탐지 기능 작동 여부는 에이전트 프로세스 상태이 아니라 에이전트 활성화/비활성화에 따라 결정됩니다.
웹쉘 탐지 기능을 이용할 때는 에이전트 프로세스를 실행한 뒤 콘솔에서 에이전트 활성화를 진행합니다. 에이전트가 활성화되면 웹쉘 탐지 기능이 활성화되며 과금이 시작됩니다.
웹쉘 서비스를 더 이상 이용하지 않을 때 에이전트를 비활성화를 해도 프로세스는 여전히 실행되고 있기 때문에 추후 콘솔을 통해 활성화 시 바로 이용이 가능합니다.
당분간 사용할 계획이 없다면 프로세스를 종료하는것도 괜찮습니다. 추후 이용 시 에이전트를 실행 후 이용해야합니다.
에이전트 프로세스 실행 방법
# /opt/nbp/wbd/wbd_agent
에이전트 프로세스 종료 방법
# /opt/nbp/wbd/wbd_agent -s stop