네트워크 분석 · 7 min read · Oct 29, 2025

우분투 22.04에 말콤 네트워크 트래픽 분석 도구 설치하는 방법

말콤은 간단하고 사용하기 쉬우며 강력한 네트워크 트래픽 분석 도구입니다. 이는 아티팩트(PCAP 파일)와 Zeek 로그를 캡처할 수 있습니다. 말콤은 상호 연결된 프레임워크를 제공하여 그 구성 요소의 합보다 더 큰 가치를 제공합니다. 말콤의 간편하고 유연한 배포 및 강력한 도구 조합은 네트워크 보안 분야의 공백을 채우고 공공 및 민간 부문 모두에서 고급 네트워크 트래픽 분석을 많은 사람들에게 접근 가능하게 만듭니다.

이 게시물에서는 우분투 22.04에 말콤 네트워크 트래픽 분석 도구를 설치하는 방법을 보여드리겠습니다.

전제 조건

  • 우분투 22.04를 실행하는 서버.
  • 최소 16GB RAM 및 4 CPU 코어.
  • 서버에 루트 비밀번호가 설정되어 있어야 합니다.

말콤 시스템 사용자 생성

먼저, 말콤을 실행할 전용 사용자 계정을 생성해야 합니다. 다음 명령어로 생성할 수 있습니다:

useradd -m -d /opt/malcolm -s /bin/bash -G sudo malcolm

다음으로, 다음 명령어로 사용자 비밀번호를 설정합니다:

passwd malcolm

다음으로, 다음 명령어로 말콤 사용자의 UID를 확인합니다:

id malcolm

다음과 같은 출력을 확인할 수 있어야 합니다:

uid=1000(malcolm) gid=1000(malcolm) groups=1000(malcolm),27(sudo)

말콤 우분투 22.04 설치

먼저, 사용자를 말콤으로 전환하고 다음 명령어로 말콤의 최신 버전을 다운로드합니다:

su - malcolm  
git clone https://github.com/idaholab/Malcolm

다운로드가 완료되면 다운로드한 디렉토리로 변경하고 다음 명령어로 말콤 설치를 시작합니다:

cd Malcolm  
sudo ./scripts/install.py

설치 중에 다음과 같이 여러 질문을 받게 됩니다:

설치할 패키지: ['apache2-utils', 'make', 'openssl', 'python3-dialog']

"docker info" 실패, Docker 설치 시도? (Y/n): Y

공식 리포지토리에서 Docker 설치 시도? (Y/n): Y
설치할 패키지: ['apt-transport-https', 'ca-certificates', 'curl', 'gnupg-agent', 'software-properties-common']


Docker 패키지 설치: ['docker-ce', 'docker-ce-cli', 'containerd.io']
Docker 패키지 설치가 성공적으로 완료된 것으로 보입니다.

비루트 사용자를 "docker" 그룹에 추가하시겠습니까?: Y

사용자 계정 입력: malcolm

다른 비루트 사용자를 "docker" 그룹에 추가하시겠습니까?: n

"docker-compose version" 실패, docker-compose 설치 시도? (Y/n): Y

docker github에서 docker-compose 직접 설치? (Y/n): Y
docker-compose 다운로드 및 설치가 성공적으로 완료된 것으로 보입니다.

fs.file-max는 파일 핸들에 대한 허용 최대치를 증가시킵니다.
fs.file-max= /etc/sysctl.conf에서 누락된 것으로 보입니다. 추가하시겠습니까? (Y/n): Y

fs.inotify.max_user_watches는 모니터링할 수 있는 파일의 허용 최대치를 증가시킵니다.
fs.inotify.max_user_watches= /etc/sysctl.conf에서 누락된 것으로 보입니다. 추가하시겠습니까? (Y/n): Y

fs.inotify.max_queued_events는 모니터링할 파일의 큐 크기를 증가시킵니다.
fs.inotify.max_queued_events= /etc/sysctl.conf에서 누락된 것으로 보입니다. 추가하시겠습니까? (Y/n): Y

fs.inotify.max_user_instances는 허용 최대 모니터 파일 감시자를 증가시킵니다.
fs.inotify.max_user_instances= /etc/sysctl.conf에서 누락된 것으로 보입니다. 추가하시겠습니까? (Y/n): Y

vm.max_map_count는 메모리 세그먼트에 대한 허용 최대치를 증가시킵니다.
vm.max_map_count= /etc/sysctl.conf에서 누락된 것으로 보입니다. 추가하시겠습니까? (Y/n): Y

net.core.somaxconn은 소켓 연결에 대한 허용 최대치를 증가시킵니다.
net.core.somaxconn= /etc/sysctl.conf에서 누락된 것으로 보입니다. 추가하시겠습니까? (Y/n): Y

vm.dirty_background_ratio는 플러시하기 전에 "더러운" 페이지로 채울 수 있는 시스템 메모리의 비율을 정의합니다.
vm.dirty_background_ratio= /etc/sysctl.conf에서 누락된 것으로 보입니다. 추가하시겠습니까? (Y/n): Y

vm.dirty_ratio는 모든 것을 커밋하기 전에 더러운 시스템 메모리의 최대 비율을 정의합니다.
vm.dirty_ratio= /etc/sysctl.conf에서 누락된 것으로 보입니다. 추가하시겠습니까? (Y/n): Y

/etc/security/limits.d/limits.conf는 파일 핸들 및 메모리 잠금 세그먼트에 대한 허용 최대치를 증가시킵니다.
/etc/security/limits.d/limits.conf가 존재하지 않습니다. 생성하시겠습니까? (Y/n): Y

말콤이 설치되면 다음 단계로 진행할 수 있습니다.

말콤 구성

말콤을 설치한 후, 다음 명령어로 구성해야 합니다:

sudo ./scripts/install.py --configure

말콤 구성 중에 여러 질문을 받게 됩니다. 다음과 같이 모든 질문에 답하십시오:

  • 말콤 프로세스는 UID 1000 및 GID 1000으로 실행됩니다. 괜찮습니까? (Y/n): Y
  • OpenSearch에 10g, Logstash에 3g를 설정합니다. 괜찮습니까? yes
  • Logstash 파이프라인에 대해 3개의 작업자를 설정합니다. 괜찮습니까? (Y/n): yes
  • 시스템 또는 Docker 데몬 재시작 시 말콤을 재시작합니까? 예. 기본 옵션인 unless-stopped를 선택합니다.
  • HTTPS로 말콤을 설정할지 선택하십시오: 예
  • 말콤이 프록시 뒤에서 실행될지 선택하십시오: 아니오
  • 네트워킹 선택: 기본값을 수락하려면 그냥 입력하십시오. LDAP 선택: 아니오
  • OpenSearch 인덱스 스냅샷을 /opt/malcolm/Malcom/opensearch-backup에 로컬로 저장하시겠습니까? 예
  • OpenSearch 인덱스 스냅샷을 압축하시겠습니까? 예
  • 데이터베이스가 특정 크기를 초과할 때 가장 오래된 인덱스를 삭제하시겠습니까? 아니오
  • 로그에서 소스 및 목적지 IP 주소에 대한 로컬 역 DNS 조회: 아니오
  • MAC 주소에 대한 하드웨어 공급업체 OUI 조회: 예
  • 일부 필드에 대한 문자열 무작위성 점수를 수행하시겠습니까? yes
  • OpenSearch 포트를 외부 호스트에 노출하시겠습니까? 아니오
  • Logstash 포트를 외부 호스트에 노출하시겠습니까? 아니오
  • Logstash 로그를 외부 OpenSearch 인스턴스로 전달하시겠습니까? 아니오
  • Filebeat TCP 포트를 외부 호스트에 노출하시겠습니까? 아니오
  • Zeek로 파일 추출을 활성화하시겠습니까? 예
  • 추출 동작으로 흥미로운 것을 선택하십시오. 파일 보존 방법 선택: 격리
  • 추출된 파일/PE 파일을 ClamAV로 스캔하시겠습니까? 예
  • 추출된 파일/PE 파일을 Yara로 스캔하시겠습니까? 예
  • 추출된 파일/PE 파일을 Capa로 스캔하시겠습니까? 예
  • 추출된 파일 해시를 VirusTotal로 조회하시겠습니까? 아니오
  • 업데이트된 스캐너 서명을 주기적으로 다운로드하시겠습니까? 예
  • 말콤이 네트워크 트래픽을 PCAP 파일로 캡처해야 합니까? 예
  • 말콤이 네트워크 트래픽을 사용할 인터페이스를 지정하십시오(쉼표로 구분): eth0
  • netsniff-ng를 사용하여 패킷을 캡처하시겠습니까? (Y/n): yes
  • tcpdump를 사용하여 패킷을 캡처하시겠습니까? (y/N): no
  • 캡처 필터(tcpdump와 유사한 필터 표현; 모든 트래픽을 캡처하려면 비워 두십시오) (): Elasticsearch(포트 9200), Logstash(5044), Arkime(8005)와 관련된 트래픽을 비활성화할 수 있습니다: not port 9200 and not port 5044 and not port 8005
  • 캡처 인터페이스 하드웨어 오프로드를 비활성화하고 링 버퍼 크기를 조정하시겠습니까? (y/N): n

말콤이 구성되면 시스템을 재시작하여 구성을 적용합니다.

sudo reboot

말콤 관리자 계정 생성

다음으로, 말콤 웹 인터페이스에 접근하기 위한 관리 계정을 생성해야 합니다.

먼저, 사용자를 말콤으로 전환하고 다음 명령어로 말콤 디렉토리로 이동합니다:

su - malcolm  
cd ~/Malcolm

다음으로, 다음 명령어를 실행하여 관리자 계정을 생성합니다:

./scripts/auth_setup

관리자 계정을 생성하기 위해 다음과 같이 모든 질문에 답하십시오:

  • 로컬 말콤 접근을 위한 관리자 사용자 이름/비밀번호를 저장하시겠습니까? yes
  • 관리자 비밀번호와 사용자 이름을 설정합니다.
  • 웹 트래픽 HTTPS를 위한 자체 서명된 SSL 인증서를 (재)생성하시겠습니까? yes
  • 원격 로그 포워더를 위한 자체 서명된 인증서를 (재)생성하시겠습니까? yes
  • Logstash 이벤트를 2차 외부 OpenSearch 인스턴스로 전달하기 위한 사용자 이름/비밀번호를 저장하시겠습니까? 아니오. 이메일 알림 발신자 계정의 사용자 이름/비밀번호를 저장하시겠습니까? 아니오

말콤 도커 이미지 가져오기

다음으로, Docker Hub 레지스트리에서 필요한 모든 Docker 이미지를 다운로드해야 합니다. 다음 명령어로 모두 다운로드할 수 있습니다:

docker-compose pull

모든 이미지가 다운로드되면 다음 명령어로 모든 이미지를 확인합니다:

docker images

다음과 같은 출력을 확인할 수 있어야 합니다:

REPOSITORY                        TAG       IMAGE ID       CREATED       SIZE
malcolmnetsec/filebeat-oss        6.2.0     5e9fa4c8ea2d   11 days ago   648MB
malcolmnetsec/arkime              6.2.0     4f4e6025c82d   11 days ago   793MB
malcolmnetsec/zeek                6.2.0     5b117ad2b4bb   11 days ago   1.4GB
malcolmnetsec/dashboards          6.2.0     9dcaff859eec   11 days ago   1.13GB
malcolmnetsec/logstash-oss        6.2.0     cf4d75dcf4af   11 days ago   1.64GB
malcolmnetsec/file-monitor        6.2.0     26227c3c7dc9   11 days ago   589MB
malcolmnetsec/nginx-proxy         6.2.0     3b8b5413b52e   11 days ago   121MB
malcolmnetsec/file-upload         6.2.0     2c704be24433   11 days ago   263MB
malcolmnetsec/api                 6.2.0     90f964b5d728   11 days ago   148MB
malcolmnetsec/suricata            6.2.0     cbdb091d2df4   11 days ago   274MB
malcolmnetsec/htadmin             6.2.0     2b55630700d1   11 days ago   242MB
malcolmnetsec/opensearch          6.2.0     9ccb4665bd6c   11 days ago   1.25GB
malcolmnetsec/pcap-monitor        6.2.0     d957d803bdbb   11 days ago   214MB
malcolmnetsec/freq                6.2.0     3959a9daa952   11 days ago   131MB
malcolmnetsec/dashboards-helper   6.2.0     7da9699a72b3   11 days ago   168MB
malcolmnetsec/pcap-capture        6.2.0     df63e8daa369   11 days ago   121MB
malcolmnetsec/name-map-ui         6.2.0     6bd6c7c58d36   11 days ago   120MB

말콤 서비스 시작

이 시점에서 말콤에 필요한 모든 구성 요소가 준비되었습니다. 이제 다음 명령어로 말콤 서비스를 시작할 수 있습니다:

./scripts/start

모든 서비스를 시작할 때까지 잠시 기다립니다. 모든 서비스가 시작되면 다음 명령어로 모든 실행 중인 서비스를 확인합니다:

docker ps -a

다음과 같은 출력을 확인할 수 있어야 합니다:

CONTAINER ID   IMAGE                                   COMMAND                  CREATED          STATUS                             PORTS                                                                                            NAMES
840ea2b0e9ad   malcolmnetsec/nginx-proxy:6.2.0         "/usr/local/bin/dock…"   17 minutes ago   Up 17 minutes (unhealthy)          0.0.0.0:443->443/tcp, 127.0.0.1:5601->5601/tcp, 0.0.0.0:488->488/tcp, 127.0.0.1:9200->9200/tcp   malcolm-nginx-proxy-1
 dd5c8c63816c   malcolmnetsec/suricata:6.2.0            "/usr/local/bin/dock…"   17 minutes ago   Up 17 minutes (unhealthy)                                                                                                           malcolm-suricata-1
3112e1bd8f73   malcolmnetsec/filebeat-oss:6.2.0        "/usr/local/bin/dock…"   17 minutes ago   Up 17 minutes (unhealthy)          127.0.0.1:5045->5045/tcp                                                                         malcolm-filebeat-1
c93cfe93ad7e   malcolmnetsec/file-upload:6.2.0         "/usr/local/bin/dock…"   17 minutes ago   Up 17 minutes (unhealthy)          80/tcp, 127.0.0.1:8022->22/tcp                                                                   malcolm-upload-1
18ee20b46f3c   malcolmnetsec/dashboards:6.2.0          "/usr/local/bin/dock…"   17 minutes ago   Up 17 minutes (unhealthy)          5601/tcp                                                                                         malcolm-dashboards-1
2c34206c06e4   malcolmnetsec/zeek:6.2.0                "/usr/local/bin/dock…"   17 minutes ago   Up 17 minutes (unhealthy)                                                                                                           malcolm-zeek-1
41103ef99ce1   malcolmnetsec/logstash-oss:6.2.0        "/usr/local/bin/dock…"   17 minutes ago   Up 17 minutes (unhealthy)          9001/tcp, 127.0.0.1:5044->5044/tcp, 9600/tcp                                                     malcolm-logstash-1
0408f42a76c3   malcolmnetsec/dashboards-helper:6.2.0   "/usr/local/bin/dock…"   17 minutes ago   Up 17 minutes (unhealthy)          28991/tcp                                                                                        malcolm-dashboards-helper-1
3e78024620de   malcolmnetsec/arkime:6.2.0              "/usr/local/bin/dock…"   17 minutes ago   Up 17 minutes (unhealthy)          8000/tcp, 8005/tcp, 8081/tcp                                                                     malcolm-arkime-1
58cd869beced   malcolmnetsec/pcap-monitor:6.2.0        "/usr/local/bin/dock…"   17 minutes ago   Up 17 minutes (unhealthy)          30441/tcp                                                                                        malcolm-pcap-monitor-1
1040fa8bd6df   malcolmnetsec/file-monitor:6.2.0        "/usr/local/bin/dock…"   17 minutes ago   Up 17 minutes (unhealthy)          3310/tcp, 8440/tcp                                                                               malcolm-file-monitor-1
25c83f14413d   malcolmnetsec/zeek:6.2.0                "/usr/local/bin/dock…"   17 minutes ago   Up 17 minutes                                                                                                                       malcolm-zeek-live-1
b321a96c0362   malcolmnetsec/api:6.2.0                 "/usr/local/bin/dock…"   17 minutes ago   Up 17 minutes (unhealthy)          5000/tcp                                                                                         malcolm-api-1
0f1f4ac023f9   malcolmnetsec/name-map-ui:6.2.0         "/usr/local/bin/dock…"   17 minutes ago   Up 17 minutes (unhealthy)          8080/tcp                                                                                         malcolm-name-map-ui-1
ba4d553cf6b5   malcolmnetsec/suricata:6.2.0            "/usr/local/bin/dock…"   17 minutes ago   Up 17 minutes                                                                                                                       malcolm-suricata-live-1
e4637d0ec04d   malcolmnetsec/opensearch:6.2.0          "/usr/local/bin/dock…"   17 minutes ago   Up 13 minutes (health: starting)   9200/tcp, 9300/tcp, 9600/tcp, 9650/tcp                                                           malcolm-opensearch-1
ac002e31d9be   malcolmnetsec/htadmin:6.2.0             "/usr/local/bin/dock…"   17 minutes ago   Up 17 minutes (unhealthy)          80/tcp                                                                                           malcolm-htadmin-1
7223d5244a7b   malcolmnetsec/pcap-capture:6.2.0        "/usr/local/bin/dock…"   17 minutes ago   Up 17 minutes                                                                                                                       malcolm-pcap-capture-1
971931b21788   malcolmnetsec/freq:6.2.0                "/usr/local/bin/dock…"   17 minutes ago   Up 17 minutes (unhealthy)          10004/tcp                                                                                        malcolm-freq-1

다음 명령어로 모든 수신 포트를 확인할 수도 있습니다:

ss -atlnp | grep -i docker

다음과 같은 출력을 확인할 수 있어야 합니다:

LISTEN 0      65535      127.0.0.1:5601       0.0.0.0:*    users:(("docker-proxy",pid=7480,fd=4))   
LISTEN 0      65535        0.0.0.0:488        0.0.0.0:*    users:(("docker-proxy",pid=7519,fd=4))   
LISTEN 0      65535      127.0.0.1:9200       0.0.0.0:*    users:(("docker-proxy",pid=7443,fd=4))   
LISTEN 0      65535      127.0.0.1:5044       0.0.0.0:*    users:(("docker-proxy",pid=6247,fd=4))   
LISTEN 0      65535      127.0.0.1:5045       0.0.0.0:*    users:(("docker-proxy",pid=7063,fd=4))   
LISTEN 0      65535      127.0.0.1:8022       0.0.0.0:*    users:(("docker-proxy",pid=6826,fd=4))   
LISTEN 0      65535        0.0.0.0:443        0.0.0.0:*    users:(("docker-proxy",pid=7567,fd=4))

말콤 접근

이제 URL https://your-server-ip/dashboards/를 사용하여 말콤 OpenSearch 대시보드에 접근할 수 있습니다. 관리자 사용자 이름과 비밀번호를 입력하라는 메시지가 표시됩니다:

관리자 사용자 이름, 비밀번호를 입력하고 로그인 버튼을 클릭하십시오. 다음 화면에서 OpenSearch 대시보드를 확인할 수 있습니다:

말콤 캡처 파일 및 로그 아카이브 업로드 화면에 접근하려면 URL https://your-server-ip/upload/를 입력하십시오.

호스트 및 서브넷 이름 매핑 편집기에 접근하려면 URL https://your-server-ip/name-map-ui/를 입력하십시오.

계정 관리 화면에 접근하려면 URL https://your-server-ip:488/를 사용하십시오.

축하합니다! 우분투 22.04에 말콤 네트워크 트래픽 분석 도구를 성공적으로 설치하고 구성했습니다.

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.