Last-modified: 2022-04-02 (土) 12:05:44
Moloch/インストール

概要

常時ネットワークモニターのMolochを導入し、インターネット-LAN間のIN/OUTをモニターします。
1端末にMoloch, Elasticsearchを同居させましたが、個人宅の通信量では問題なくモニター可能でした。

000091.png

構成

000089.png

本構成には関係ありませんが、図のルーター構成が気になる場合は以下を参照してください。
ネットワーク/IPoE, PPPoE接続を併用する


※現在はinterlinkがtransix網+固定IPv4サービスを開始したため、下記の構成に移行しました。
こちらの構成でもmolochの運用に変わりはありません。
ネットワーク/IPoE+DS-Lite,IPIP,PPPoEを併用する

スペック

LIVA Z-4

CPU Intel(R) Pentium(R) N4200
MEM DDR3L 4GB
Disk eMMC 32GB
HD-LB2.0TU3/N 2TB(USB3.0)(pcap, elasticsearchデータ格納先)
NIC 1000BASE-T x2

手順(スイッチングハブ)

  1. 適当なPCをスイッチにつなげる
  2. そのPCを固定IP化する
    192.168.0.210/24
  3. ブラウザで[http://192.168.0.239]にアクセスする
  4. パスワードを入力(デフォルト:password)
  5. [システム]-[モニタリング]-[ミラーリング]
  6. ミラーリングを[有効]にし、srcポートとdstポートを選択
  7. [適用]

手順(OS)

  1. Ubuntu 18.04 LTSをLIVA Z-4にインストール
    最小構成でインストール
    1. 最新化
      Everything is expanded.Everything is shortened.
        1
        2
        3
        4
        5
      
       
       
      -
      !
       
      
      apt update && apt upgrade
       
      # 適用後、保留があれば、apt dist-upgrade後、reboot
       
      apt autoremove
    2. bash/My設定
    3. Vim/My設定
    4. SSH/チートシート
    5. sysctl/チートシート (念のため通常設定するnet.*系の設定はフォワード禁止以外未設定)
    6. タイムゾーン変更
      Everything is expanded.Everything is shortened.
        1
      
       
      
      dpkg-reconfigure tzdata
    7. ネットワーク
      1. ブート時のオンライン待ちスキップ
        Everything is expanded.Everything is shortened.
          1
          2
        
         
         
        
        systemctl disable systemd-networkd-wait-online
        systemctl mask systemd-networkd-wait-online
      2. if1つを固定IP化(ミラーポート出ないほうに接続する側を固定IPにする, 以下の例ではenp1s0がミラーポート)
        vi /etc/netplan/50-cloud-init.yaml
        Everything is expanded.Everything is shortened.
          1
          2
          3
          4
          5
          6
          7
          8
          9
         10
         11
        
         
         
         
         
         
         
         
         
         
         
         
        
        network:
            ethernets:
                enp1s0:
                    dhcp4: true
                enp3s0:
                    addresses: [<固定IP(e.g. 192.168.10.100/24)>]
                    gateway4: <デフォルトゲートウェイIP(e.g. 192.168.1.1)>
                    nameservers:
                        addresses: [<DNS IP(e.g. 192.168.1.1)>]
                    dhcp4: false
            version: 2
      3. 反映
        Everything is expanded.Everything is shortened.
          1
        
         
        
        netplan apply
    8. USBドライブ
      1. 初期化
        Everything is expanded.Everything is shortened.
          1
          2
          3
          4
          5
        
         
         
         
         
         
        
        fdisk /dev/sda
        d
        n
        w
        mkfs.ext4 /dev/sda1
      2. 起動時マウント, マウントオプション設定
        vi /etc/fstab
        Everything is expanded.Everything is shortened.
          1
        
         
        
        /dev/sda1       /mnt/usb        ext4    defaults,relatime  0       2
      3. OS再起動
        Everything is expanded.Everything is shortened.
          1
        
         
        
        reboot

手順(Elasticsearch, Moloch)

※下記手順ではmoloch(pcap), elasticsearch(SPI)の保存先を同一ディスクにしていますが、分けた方が運用面で安全です。
分けない場合は下記手順のように、moloch側の閾値を変更しelasticsearchがread only modeにならないようにする必要があります。
(閾値:moloch:95%(超えた場合古いpcap削除), elasticsearch:95%(超えた場合read only mode, 戻すにはディスクを空けREST APIを叩く) )
 

  1. Elasticsearchインストール
    1. インストール
      Everything is expanded.Everything is shortened.
        1
        2
        3
        4
        5
      
       
       
       
       
       
      
      apt install openjdk-8-jdk
      wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -
      apt install apt-transport-https
      echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-6.x.list
      apt update && apt install elasticsearch
    2. JVM設定
      vi /etc/elasticsearch/jvm.options
      Everything is expanded.Everything is shortened.
        1
        2
        3
      
      -
      !
       
      
      # メモリに余裕があればもっと割り当てる(ただし32GB以下)
      -Xms1g
      -Xmx1g
    3. Elasticsearch設定
      vi /etc/elasticsearch/elasticsearch.yml
      Everything is expanded.Everything is shortened.
        1
        2
        3
      
       
       
       
      
      cluster.name: moloch
      path.data: /mnt/usb/elasticsearch
      network.host: 127.0.0.1
    4. 追加設定, 再起動
      Everything is expanded.Everything is shortened.
        1
        2
        3
        4
      
       
       
       
       
      
      mkdir /mnt/usb/elasticsearch
      chown elasticsearch:elasticsearch /mnt/usb/elasticsearch
      systemctl restart elasticsearch
      systemctl enable elasticsearch
  2. Molochインストール
    1. インストール
      Everything is expanded.Everything is shortened.
        1
        2
      
       
       
      
      curl -L -O https://files.molo.ch/builds/ubuntu-18.04/moloch_1.8.0-1_amd64.deb
      apt install ./moloch_1.8.0-1_amd64.deb
    2. 初期化1
      /data/moloch/bin/Configure
      Everything is expanded.Everything is shortened.
        1
        2
        3
        4
        5
        6
        7
        8
        9
       10
      
       
      -
      |
      |
      |
      |
      |
      |
      |
      |
      
      Found interfaces: enp1s0;enp3s0;lo;wlp2s0
      Semicolon ';' seperated list of interfaces to monitor [eth1] <モニターするif(e.g. enp1s0)>
      Install Elasticsearch server locally for demo, must have at least 3G of memory, NOT recommended for production use (yes or no) [no] <そのままEnter>
      Elasticsearch server URL [http://localhost:9200] <そのままEnter>
      Password to encrypt S2S and other things [no-default] <任意のパスワードシークレット>
      Moloch - Creating configuration files
      Installing systemd start files, use systemctl
      Moloch - Installing /etc/logrotate.d/moloch to rotate files after 7 days
      Moloch - Installing /etc/security/limits.d/99-moloch.conf to make core and memlock unlimited
      Download GEO files? (yes or no) [yes] <そのままEnter>
    3. 初期化2
      Everything is expanded.Everything is shortened.
        1
        2
      
       
       
      
      /data/moloch/db/db.pl http://localhost:9200 init
      /data/moloch/bin/moloch_add_user.sh <ユーザー名(e.g. admin)> "<表示上のユーザー名>" "<パスワード>" --admin
    4. Moloch設定
      vi /data/moloch/etc/config.ini
      Everything is expanded.Everything is shortened.
        1
        2
        3
        4
        5
      
       
       
      -
      |
      !
      
      pcapDir = /mnt/usb/moloch/raw
       
      # pcap保存先の空きディスク閾値(超えると古いpcapから削除する)
      # デフォルト5%
      freeSpaceG = 10%
    5. 追加設定, 再起動
      Everything is expanded.Everything is shortened.
        1
        2
        3
        4
        5
        6
        7
      
       
       
       
       
       
       
       
      
      mkdir -p /mnt/usb/moloch/raw
      chown nobody:root /mnt/usb/moloch/raw
      chmod 777 /mnt/usb/moloch/raw/
      systemctl restart molochcapture
      systemctl restart molochviewer
      systemctl enable molochcapture
      systemctl enable molochviewer
    6. vi /etc/crontab
      Everything is expanded.Everything is shortened.
        1
        2
      
      -
      !
      
      # molochはpcapは消すがSPIは消さないので、必要に応じて手動でメンテする必要がある
      25 7    * * *   root    /data/moloch/db/db.pl 127.0.0.1:9200 expire daily <保持日数>
    7. アクセス
      http://<固定IP>:8005

検証時の環境

参考