Snipe-IT, SecureCodeBox, 그리고 Wazuh를 통합하여 서버와 웹사이트 단위의 취약점 점검, 결과 대시보드 구성, 그리고 자산 관리 방안을 구축하는 방법입니다. 이 통합 솔루션을 통해 조직의 보안 상태를 체계적으로 운영하고, 실시간 모니터링과 자동화된 취약점 관리를 구현할 수 있습니다.
- 환경 구축
- Snipe-IT 설정
- SecureCodeBox 설정 및 활용
- Wazuh 설정 및 통합
- 통합 관리 및 운영
- Wazuh에서 SecureCodeBox 스캔 결과 통합
- 보안 설정 준수 여부 체크 스크립트 통합
- 항목별 결과 식별 및 관리
- SCA 모듈을 통한 커스텀 스크립트 통합
- FIM(File Integrity Monitoring) 소개
- Wazuh를 통한 iptables 룰셋 수집
- Wazuh에서 Osquery 활용
- 리스닝 포트 및 데몬 정보 수집
- Kibana에 OWASP 관련 탭 추가
- 결론
1. 환경 구축
1.1 Snipe-IT
- 역할: IT 자산 관리 솔루션
- 기능: 서버, 네트워크 장비, 소프트웨어 등 자산 관리
1.2 SecureCodeBox
- 역할: 취약점 스캐닝 도구
- 기능: 여러 스캐너(Nmap, OWASP ZAP 등)를 통해 서버 및 웹사이트의 보안 취약점 자동 스캔
1.3 Wazuh
- 역할: 오픈소스 보안 모니터링 및 로그 관리 플랫폼
- 기능: 취약점 분석 결과 수집 및 대시보드 표시, 실시간 보안 모니터링
2. Snipe-IT 설정
2.1 Snipe-IT 설치
Docker를 이용하여 Snipe-IT를 설치합니다.
version: '3'
services:
snipeit:
image: snipe/snipe-it
container_name: snipeit
environment:
- APP_ENV=production
- APP_DEBUG=false
- APP_KEY=base64:SomeBase64Key=
- DB_CONNECTION=mysql
- DB_HOST=db
- DB_DATABASE=snipeit
- DB_USERNAME=snipeit
- DB_PASSWORD=password
- MAIL_PORT=587
- MAIL_HOST=smtp.mailtrap.io
- MAIL_USERNAME=null
- MAIL_PASSWORD=null
- MAIL_ENCRYPTION=tls
ports:
- "80:80"
volumes:
- snipeit_uploads:/var/www/html/public/uploads
depends_on:
- db
db:
image: mysql:5.7
container_name: snipeit_db
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_DATABASE=snipeit
- MYSQL_USER=snipeit
- MYSQL_PASSWORD=password
volumes:
- snipeit_db:/var/lib/mysql
volumes:
snipeit_uploads:
snipeit_db:
2.2 자산 등록
자산을 Snipe-IT에 등록합니다. 대량 등록 시 API를 활용할 수 있습니다.
curl -X POST https://your-snipeit-instance/api/v1/hardware \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Web Server 1",
"asset_tag": "WEB001",
"status_id": 2,
"model_id": 1,
"serial": "123456789",
"company_id": 1
}'
3. SecureCodeBox 설정 및 활용
3.1 SecureCodeBox 설치
Kubernetes 클러스터에 SecureCodeBox를 설치합니다.
helm repo add secureCodeBox https://charts.securecodebox.io
helm repo update
helm install securecodebox secureCodeBox/securecodebox
3.2 취약점 스캐너 설정
웹 애플리케이션 스캔 (OWASP ZAP)
apiVersion: "execution.securecodebox.io/v1"
kind: "Scan"
metadata:
name: "zap-scan"
spec:
scanType: "zap"
parameters:
- "http://your-website.com"
서버 스캔 (Nmap)
apiVersion: "execution.securecodebox.io/v1"
kind: "Scan"
metadata:
name: "nmap-scan"
spec:
scanType: "nmap"
parameters:
- "-sS"
- "192.168.0.0/24"
3.3 스캔 실행
kubectl apply -f zap-scan.yaml
kubectl apply -f nmap-scan.yaml
4. Wazuh 설정 및 통합
4.1 Wazuh 설치 및 설정
Docker Compose를 이용하여 Wazuh를 설치합니다.
version: '3.9'
services:
wazuh:
image: wazuh/wazuh:latest
ports:
- "1514:1514"
- "1515:1515"
- "55000:55000"
volumes:
- wazuh_data:/var/ossec/data
environment:
- "WAZUH_MANAGER=yes"
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.7.0
environment:
- "discovery.type=single-node"
kibana:
image: docker.elastic.co/kibana/kibana:8.7.0
ports:
- "5601:5601"
environment:
- "ELASTICSEARCH_HOSTS=http://elasticsearch:9200"
4.2 SecureCodeBox와 Wazuh 통합
Webhook 설정
SecureCodeBox의 values.yaml
파일에서 Webhook을 설정합니다.
hooks:
- type: http
url: "http://your-wazuh-instance:55000"
headers:
- name: "Content-Type"
value: "application/json"
Wazuh에서 결과 수집 설정
wazuh.yml
파일을 수정하여 SecureCodeBox의 스캔 결과를 수집하도록 설정합니다.
remote:
elasticsearch:
hosts:
- "http://elasticsearch:9200"
indices:
- "securecodebox-results-*"
5. 통합 관리 및 운영
5.1 취약점 스캔 자동화 및 모니터링
- 스케줄링: SecureCodeBox를 통해 정기적인 취약점 스캔 자동화
- 실시간 모니터링: Wazuh를 통해 스캔 결과 실시간 모니터링
- 알림 설정: 취약점 발견 시 즉시 알림 및 자동 조치 설정
5.2 자산 정보 연동
- Snipe-IT와 연동: 자산 정보를 기반으로 스캔 정책 차등 적용
- 중요 자산 우선 관리: 중요 서버에 대한 스캔 주기 조정 및 모니터링 강화
5.3 보고서 생성 및 공유
- 보고서 생성: Wazuh에서 주기적인 보안 상태 보고서 생성
- 자동 공유: 보고서를 관리 담당자에게 자동으로 공유하여 최신 보안 상태 유지
6. Wazuh에서 SecureCodeBox 스캔 결과 통합
6.1 SecureCodeBox 결과를 Elasticsearch에 저장
- Elasticsearch 연동 활성화: SecureCodeBox의
values.yaml
에서 설정hooks: active: true elasticsearch: enabled: true host: "http://elasticsearch:9200" index: "securecodebox-results"
6.2 Wazuh와 Elasticsearch 연동
- Wazuh 설정 파일 수정:
wazuh.yml
remote: elasticsearch: hosts: - "http://elasticsearch:9200" indices: - "securecodebox-results-*"
6.3 대시보드 구성
- Kibana 대시보드에서 시각화: SecureCodeBox 스캔 결과를 Wazuh 대시보드에 통합하여 시각화
7. 보안 설정 준수 여부 체크 스크립트 통합
7.1 스크립트 준비 및 설정
- 스크립트 작성: 보안 설정 준수 여부를 체크하는 스크립트 작성
- Wazuh 규칙 설정:
/var/ossec/etc/ossec.conf
파일에서 스크립트 실행 설정<command> <name>check_security_compliance</name> <executable>/path/to/your/script.sh</executable> <expect>regex_pattern_to_match_output</expect> <timeout>60</timeout> </command>
7.2 규칙 파일 수정
- 규칙 추가:
/var/ossec/ruleset/rules/local_rules.xml
<group name="syscheck,security_compliance"> <rule id="100001" level="10"> <decoded_as>command</decoded_as> <description>Security compliance check result</description> <group>syscheck,security_compliance</group> <options>no_full_log</options> <match>regex_pattern_to_match_output</match> </rule> </group>
8. 항목별 결과 식별 및 관리
8.1 스크립트 결과 포맷 설정
- 유니크 ID 사용: 각 체크 항목에 유니크한 ID 부여
- 결과 출력 형식:
CHECK_유니크ID: true/false - 세부내용
8.2 Wazuh 규칙 파일에 반영
- 규칙 정의: 각 항목별로 규칙을 설정하여 정상/비정상 식별
<group name="syscheck,security_compliance"> <rule id="100001" level="5"> <decoded_as>command</decoded_as> <description>Security Compliance - CHECK_001</description> <group>syscheck,security_compliance</group> <options>no_full_log</options> <match>CHECK_001: false</match> </rule> <!-- 추가 항목 규칙 --> </group>
8.3 대시보드에서 결과 확인
- 이벤트 모니터링: Wazuh 대시보드에서 각 항목별 이벤트 확인
- 상세 내용 확인: 비정상 항목에 대한 세부 사항 파악
9. SCA 모듈을 통한 커스텀 스크립트 통합
9.1 SCA 정책 파일 생성
- 정책 파일 작성:
/var/ossec/ruleset/sca/custom_sca_policy.yml
policy: - name: "Custom Security Compliance Checks" id: 1001 description: "Checks the security compliance using custom scripts" condition: and rules: - id: 100101 description: "Custom Check 1 - Example" command: "/path/to/your/script.sh" regexp: "^CHECK_001: true" output: "Passed" score: 100 remediation: "Check the configuration for compliance with security policies." interval: 1h
9.2 정책 파일 적용
- SCA 모듈 설정:
/var/ossec/etc/ossec.conf
<sca> <enabled>yes</enabled> <policy>custom_sca_policy.yml</policy> </sca>
- 에이전트 재시작
sudo systemctl restart wazuh-agent
9.3 결과 확인 및 활용
- SCA 결과 확인: Wazuh 대시보드에서 Passed, Failed 상태 확인
- 점수화 및 조치: 각 항목별 점수화로 보안 상태 평가
10. FIM(File Integrity Monitoring) 소개
10.1 FIM의 역할
- 파일 무결성 모니터링: 중요한 파일 및 디렉터리의 변경 사항 추적
- 실시간 경고: 무결성 침해 시 즉시 알림
- 변경 이력 기록: 변경 사항 로그 기록으로 감사 및 추적 가능
10.2 FIM 설정 방법
- 설정 파일 편집:
/var/ossec/etc/ossec.conf
<syscheck> <frequency>3600</frequency> <directories check_all="yes">/etc,/usr/bin,/usr/sbin,/bin,/sbin</directories> <realtime> <directories>/etc,/usr/bin,/usr/sbin,/bin,/sbin</directories> </realtime> <report_changes diff="yes">/etc,/usr/bin,/usr/sbin,/bin,/sbin</report_changes> </syscheck>
- 에이전트 재시작
sudo systemctl restart wazuh-agent
10.3 활용 사례
- 랜섬웨어 탐지
- 규정 준수
- 보안 사고 조사
11. Wazuh를 통한 iptables 룰셋 수집
11.1 SCA 룰셋 설정 파일 작성
- 파일 생성:
/var/ossec/ruleset/sca/iptables_rules.yml
--- id: 10001 title: "iptables rules collection" description: "Collect and analyze iptables ruleset" check_type: "script" interval: "1h" condition: "any" rules: - id: 10001 title: "Collect iptables rules" description: "Retrieve the current iptables ruleset" command: "iptables-save" field: "iptables.rules" type: "command"
11.2 에이전트 설정
- SCA 모듈 설정:
/var/ossec/etc/ossec.conf
<sca> <enabled>yes</enabled> <scan_on_start>yes</scan_on_start> <interval>1h</interval> <directories> <directory>/var/ossec/ruleset/sca</directory> </directories> </sca>
12. Wazuh에서 Osquery 활용
12.1 Osquery 설치 및 설정
- Osquery 설치
sudo apt-get install osquery
- Osquery 설정 파일:
/etc/osquery/osquery.conf
{ "options": { "config_plugin": "filesystem", "logger_plugin": "filesystem" }, "schedule": { "system_info": { "query": "SELECT * FROM system_info;", "interval": 3600 } } }
12.2 Wazuh에 Osquery 통합
- Wazuh 설정:
/var/ossec/etc/ossec.conf
<osquery> <enabled>yes</enabled> <run_on_start>yes</run_on_start> <frequency>3600</frequency> <timeout>300</timeout> <queue_size>5000</queue_size> <osquery_db_path>/var/osquery/osquery.db</osquery_db_path> <log_path>/var/log/osquery/osqueryd.results.log</log_path> </osquery>
12.3 룰셋 배포를 통한 쿼리 관리
- 룰셋 정의:
/var/ossec/etc/rules/local_rules.xml
<group name="osquery,"> <rule id="100001" level="3"> <decoded_as>osquery</decoded_as> <description>Osquery result collection</description> <group>osquery</group> </rule> </group>
13. 리스닝 포트 및 데몬 정보 수집
13.1 Osquery 쿼리 설정
- 쿼리 정의:
/etc/osquery/osquery.conf
{ "schedule": { "listening_ports": { "query": "SELECT DISTINCT port, protocol, address, pid FROM listening_ports;", "interval": 3600 }, "processes": { "query": "SELECT pid, name, path FROM processes;", "interval": 3600 } } }
13.2 Wazuh 대시보드에서 가시화
- 필드 추가: Kibana의 Index Pattern 업데이트
- 데이터 시각화: Discover 또는 Visualize 메뉴 활용
14. Kibana에 OWASP 관련 탭 추가
14.1 개발 환경 설정
- Node.js 설치
- Kibana 소스 코드 다운로드 및 설정
git clone https://github.com/elastic/kibana.git cd kibana yarn kbn bootstrap
14.2 플러그인 생성
yarn plugin-generator
- 플러그인 이름: owasp_dashboard
14.3 플러그인 구조 및 코드 작성
- 프론트엔드 구성:
public/application.tsx
- 백엔드 구성:
server/routes.ts
14.4 플러그인 빌드 및 실행
yarn build
yarn start
Snipe-IT, SecureCodeBox, 그리고 Wazuh를 통합하여 서버 및 웹사이트의 취약점 관리와 자산 관리 방안을 구축하는 방법입니다. 이 통합 솔루션을 통해 조직의 보안 상태를 실시간으로 모니터링하고, 자동화된 취약점 관리를 구현하여 보안 수준을 향상시킬 수 있습니다.
728x90
댓글