본문 바로가기
  • 이게 왜 되지...?
시큐리티아카데미 7기 - sk쉴더스트랙/프로젝트

[시큐리티 아카데미 7기 - sk쉴더스 트랙] 프로젝트 5일차 - 2026.04.15

by smisooth 2026. 4. 16.

요즘 날씨가 많이 따뜻(?) 뜨거워져서
바람이 기분이 좋더라구용
다들 좋은 하루 보내시구리
 

 
 
 
 
1.  우분투
    1) 복붙
        ① Vmware
            i.  sudo apt-get update
            ii.  sudo apt-get install open-vm-tools-desktop
            iii.  sudo reboot

    2) ifconfig
        ① sudo apt-get install net-tools


2.  Soar - n8n (노드에잇엔)\
    1) 출처
        ① https://codingd0.tistory.com/160
        ② https://cyan91.tistory.com/entry/%EC%B4%88%EB%B3%B4%EC%9E%90%EB%A5%BC-%EC%9C%84%ED%95%9C-n8n-%EC%84%A4%EC%B9%98-%EC%99%84%EB%B2%BD-%EA%B0%80%EC%9D%B4%EB%93%9C-AI-%EC%9E%90%EB%8F%99%ED%99%94-%EC%9B%8C%ED%81%AC%ED%94%8C%EB%A1%9C%EC%9A%B0-%EA%B5%AC%EC%B6%95%ED%95%98%EA%B8%B02025%EB%85%84

    2) 주요 특징
        ① 다양한 애플리케이션 및 서비스와의 통합
        ② 유연한(조건 분기, 반복, 오류 처리 등 복잡한) 워크플로우 구축
        ③ 노드 기반의 시각적 인터페이스
        ④ 단점 : 서버 성능에 따라 성능이 결정됨

    3) 작업 디렉토리 생성
        ① mkdir my_n8n
        ② cd my_n8n
        ③ nano docker-compose.yml  
            i.  요렇게 내용 넣어주고 ctrl+O, enter, ctrl+x 누르고 나오면 됨
        ④ mkdir n8n_data
        ⑤ sudo chmod -R 777 n8n_data
        ⑥ 버전 확인
            i.  docker –version
                -  도커
            ii.  sudo docker exec -it my_n8n_n8n_1 n8n –version
                -  n8n

    4) Docker로 n8n 실행하기
        ① sudo apt install docker-compose
        ② sudo docker-compose up -d

    5) n8n 관리를 위한 기본 명령어
        ① n8n 중지하기
            i.  docker-compose down
        ② n8n 재시작하기
            i.  docker-compose restart
        ③ n8n 로그 확인하기
            i.  docker-compose logs
        ④ n8n 업데이트하기
            i.  docker-compose pull docker-compose up -d

    6) n8n 인터페이스 둘러보기
        ① n8n에 처음 접속하면 다음과 같은 주요 영역을 볼 수 있음 
        ② 메인 메뉴
            i.  좌측에 있는 메뉴로, 워크플로우, 실행, 설정 등을 관리할 수 있음
        ③ 워크플로우 영역
            i.  중앙의 넓은 공간으로, 여기서 노드를 배치하고 연결하여 워크플로우를 만듦
        ④ 노드 팔레트
            i.  워크플로우에 추가할 수 있는 다양한 노드(앱과 서비스)의 목록
        ⑤ 속성 패널
            i.  선택한 노드의 설정 및 속성을 관리할 수 있는 영역

    7) 워크플로우 만들기
        ① 생성  
        ② 이름 설정 및 트리거 노드 선택  

    8) 추가설명  


3.  N8n 로컬 설치
    1) 로컬 설치 시 주의사항
        ① 데이터 위치
            i.  n8n의 모든 워크플로우와 설정은 ~/.n8n 폴더에 저장됨
            ii.  정기적으로 백업해줘야함
        ② 업데이트
            i.  새로운 버전이 나오면 npm install n8n@latest -g 명령 후 pm2 restart n8n을 해주면 됨

    2) nvm(Node Version Manager) 설치
        ① sudo apt update
        ② curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
            i.  nvm 설치 스크립트
        ③ source ~/.bashrc
            i.  설정 반영 
            ii.  터미널 재시작 효과

    3) Node.js 20 버전 설치
        ① nvm install 20
        ② nvm use 20
        ③ node -v


    4) n8n 설치, 실행 및 백그라운드 유지
        ① npm install n8n -g
        ② PM2 설치
            i.  SOAR 서버처럼 계속 켜두려면 PM2라는 도구를 사용해야함
            ii.  npm install pm2 -g
        ③ n8n을 PM2로 실행
            i.  export N8N_SECURE_COOKIE=false
            ii.  pm2 start n8n
        ④ 서버 재부팅 시에도 자동으로 켜지게 설정
            i.  pm2 startup
            ii.  pm2 save

    5) SIEM 연동을 위한 네트워크 설정
        ① sudo ufw enable
        ② sudo ufw allow 5678/tcp
        ③ sudo ufw reload


4.  wazuh와 n8n 연결하기
    1) API 포트인 55000/TCP번을 n8n 서버의 IP에 대해 허용해주기
        ① sudo ufw allow from 192.168.0.100 to any port 55000 proto tcp
    2) n8n 서버에서 '수신 대기소' 만들기
        ① Webhook 노드 추가
            i.  HTTP Method: POST
            ii.  Path: wazuh-alerts
        ② Webhook URL 복사해두기
        ③ Listen for Test Event 누르기 


    3) Wazuh 서버에서 '전달자' 스크립트 작성
        ① sudo nano /var/ossec/integrations/custom-n8n.py

#!/usr/bin/env python3
import sys
import json
import requests

# 1단계에서 복사한 n8n Webhook URL을 여기에 넣으세요
webhook_url = "http://<서버2_IP>:5678/rest/webhooks/..."

# Wazuh로부터 데이터 읽기
alert_file = open(sys.argv[1])
alert_json = json.load(alert_file)
alert_file.close()

# n8n으로 전송
requests.post(webhook_url, json=alert_json)

        ② sudo chown root:wazuh /var/ossec/integrations/custom-n8n.py
        ③ sudo chmod 750 /var/ossec/integrations/custom-n8n.py
    4) Wazuh 설정 파일에 '연결 규칙' 등록
        ① sudo nano /var/ossec/etc/ossec.conf
            i.  파일 맨 아래쪽 </ossec_config> 바로 위에 아래 내용 추가
  <integration>
    <name>custom-n8n.py</name>
    <level>7</level> <alert_format>json</alert_format>
  </integration>
        ② sudo systemctl restart wazuh-manager

    5) 와쥬에서 신호 보내기

curl -X POST ‘아까 n8n에서 복사해놓은 Webhook URL’ \
-H "Content-Type: application/json" \
-d '{"status": "connection_test", "from": "wazuh_manager"}'

        ① 종종 저 url이 안먹으면 localhost 대신 n8n의 ip를 넣어주면 됨

    6) 결과  

        ① 저기에 output이 잘 들어온 것을 확인할 수 있다~