1. Splunk 설치
sudo dpkg -i splunk-8.2.0-e053ef3c985f-linux-2.6-amd64.deb
sudo /opt/splunk/bin/splunk enable boot-start
sudo /etc/init.d/splunk start
[ cp 에러 발생 시 대처 명령어 ]
SWID_SRC_DIR="$SPLUNK_HOME/etc" SWID_DEST_DIR="/usr/share/regid.2001-12.com.splunk" mkdir -p $SWID_DEST_DIR sudo cp /opt/splunk/swidtag/splunk-Splunk-Enterprise-primary.swidtag /opt/splunk/etc/regid.2001-12.com.splunk-Splunk-Enterprise.swidtag sudo chown splunk:splunk /opt/splunk/etc/regid.2001-12.com.splunk-Splunk-Enterprise.swidtag
2. 데이터 업로드하기
● Splunk에 업로드 할 수 있는 데이터 목록
● 데이터 저장
- 데이터를 올리면 인덱싱 작업을 진행함
- 인덱싱 : 데이터 변환 프로세스
- 데이터는 압축된 로우 데이터로 저장함
데이터 소스 | 기술 |
파일 및 디렉토리 | 파일 및 디렉토리에서 직접 가져오기 |
네트워크 이벤트 | 네트워크 포트의 원격 데이터와 원격 장치의 SNMP 이벤트 |
IT 운영 | Nagios, NetApp, Cisco 와 같은 IT 운영팀 데이터 |
클라우드 서비스 | AWS, Kinesis 와 같은 클라우드 서비스 데이터 |
데이터베이스 서비스 | Oracle, MySQL, Microsoft SQL Server 와 같은 데이터베이스 데이터 |
보안 서비스 | McAfee, Microsoft Active Directory, Symantec Endpoint Protection 과 같은 보안 서비스 데이터 |
가상화 서비스 | VMWare, XenApp 과 같은 가상화 서비스 데이터 |
애플리케이션 서버 | JMX, JMS, WebLogic, WebSphere 와 같은 애플리케이션 서버 데이터 |
Windows 소스 | Windows 이벤트 로그 , Windows 레지스트리 , WMI, Active Directory 및 성능 모니터링을 포함한 광범위한 Windows 관련 데이터 |
기타 출처 | API 및 기타 원격 데이터 인터페이스에서 데이터를 가져 오기 위한 FIFO 대기열 및 스크립트로 전달하는 데이터 |
What you need for this tutorial - Splunk Documentation
Download topic as PDF --> What you need for this tutorial You need to create a Splunk.com account, access the free Trial version of the Splunk software, and download the tutorial data files. There might be other prerequisites, depending on which Splunk pla
docs.splunk.com
3. 데이터 검색하기
입력 | 예시 |
단어를 입력해서 검색 가능 | 예) port |
단어가 띄어쓰기 돼 있지 않은 경우 검색 안됨 | 예) por -> port가 검색 안됨 예) por* -> port를 포함해 por로 시작되는 모든 단어를 검색 |
두 단어를 입력하면 두 단어가 모두 포함된 단어 반환 | 예) port mongodb -> 두 단어가 모두 포함된 데이터만 검색 |
두 개 이상의 단어를 따옴표로 묶으면 전체 텍스트를 검색 | 예) "mongdb from" |
불린 연산자를 이용해 AND와 OR 기능 사용 | 예) mongdb AND (10.0.0.200 or 194.0.0.100) -> mongdb 관련 로그 중 ()에 있는 둘 중 하나의 IP가 출력되야함 |
특정 필드에서 단어 검색 | 예) host = u* |
입력 | 예시 |
검색 문구 마지막에 파이프라인을 입력하면 오른쪽 명령의 입력으로 사용 |
source="tutorialdata.zip:*" host="splunk" index="test_index" | table Code, AcctID, source, sourcetype -> table 명령어는 header를 명시하여 테이블 모양에 맞춰서 검색할 수 있음 |
입력 | 예시 |
검색 문구 마지막에 파이프라인을 입력하면 오른쪽 명령의 입력으로 사용 |
source="tutorialdata.zip:*" host="splunk" index="test_index" | table Code, AcctID, source, sourcetype | sort Code -> sort에 입력된 필드를 기준으로 정렬을 수행함 |
입력 | 예시 |
검색 문구 마지막에 파이프라인을 입력하면 오른쪽 명령의 입력으로 사용 |
source="tutorialdata.zip:*" host="splunk" index="test_index" | top Code limit=20 -> top에 입력된 필터를 기준으로 대상이 많은 필드부터 정렬 -> limit를 이용해 출려되는 갯수를 지정할 수 있음 -> rare를 이용할 경우 top과 반대로 희귀한 필드값 부터 정렬됨 |
검색 명령어 | 설명 |
index=test_index sourcetype=access_* status=200 action=purchase | top limit=1 clientip | 구매을실행한사람들이성공메시지(200)을받은사람 들중에가장많은횟수를이용한사용자IP를조회 |
index=test_index sourcetype=access_* status=200 action=purchase clientip=87.194.216.51 | stats count, distinct_count(productId), values(productId) by clientip | 가장많은횟수를구매한사람의IP가어떤제품에대한 정보를조회했는지통계정보로확인-Count: 전체개수-Distinct_count: 고유한데이터의개수-Values: 고유한데이터 |
index=test_index sourcetype=access_* status=200 action=purchase | top limit=1 clientip | table clientip | 처음검색명령어에서client ip 만표기하도록테이블구 |
index=test_index sourcetype=access_* status=200 action=purchase [ search index=test_index sourcetype=access_* status=200 action=purchase | top limit=10 clientip | table clientip] | stats count, distinct_count(productId), values(productId) by clientip | 대괄호의검색결과를먼저검색하고나온결과를사용해 다시검색해서통계를진행 |
index=test_index sourcetype=access_* status=200 action=purchase [ search index=test_index sourcetype=access_* status=200 action=purchase | top limit=10 clientip | table clientip] | stats count AS "Total Purchased" , distinct_count(productId) AS "Total Products", values(productId) AS "Product IDs" by clientip | rename clientip AS "VIP Customer"
4. 룩업 : 데이블 정보 연결하기
● 관계형 테이블 연결
- RDB와 같이 서로 다른 데이터의 연결을 사용해 조회할 수 있음
- 앞서 사용한 두 데이터를 연결해 하나의 테이블로 표현
- tutorialdatalzip(제품 구매 로그 데이터) + prices.csv(제품 정보 데이터)
5. 보고서 : 검색 저장 서비스
6. 차트 생성하기
● 차트를 생성해 시가적으로 직관적으로 정보를 제공
○ 앞서 생성한 테이블을 사용해 다음 내용을 시각화
- 각 제품을 본 횟수
- 각 제품이 장바구니에 추가 된 횟수
- 각 제품을 구매 한 횟수
index="test_index" sourcetype=access_* status=200 | stats count AS views count(eval(action="addtocart")) AS addtocart count(eval(action="purchase")) AS purchases by productName | eval viewsToPurchases=(purchases/views)*100 | eval cartToPurchases=(purchases/addtocart)*100 | table productName views addtocart purchases viewsToPurchases cartToPurchases | rename productName AS "Product Name", views AS "Views", addtocart as "Adds To Cart", purchases AS "Purchases"
7. 대시보드 구성하기
index="test_index" sourcetype=access_* status=200 action=purchase | top categoryId
'프로젝트 > [ESXi]인프라 구축 및 모니터링' 카테고리의 다른 글
9. 스플렁크(splunk)를 활용한 통합 로그 시스템 이해와 구축 (0) | 2024.11.28 |
---|---|
7. 방화벽에서 VLAN 인터페이스 할당 (0) | 2024.11.26 |
6. 웹 방화벽(modsecurity) 기본 실습 (0) | 2024.11.25 |
5. pfsense 방화벽 정책 설정(개발자 대역) (0) | 2024.11.22 |
4. IDS와 IPS 스노트 룰 패턴 탐지 실습 (2) | 2024.11.21 |