GNU/Linux >> Linux の 問題 >  >> Ubuntu

Ubuntu20.04にSnortをインストールする方法

Snortは、ネットワーク侵入検知システム(NIDS)を実行するためのオープンソースの軽量ネットワーク侵入防止システムです。 Snortは、特定のネットワークインターフェイスを介して送受信されるパッケージデータを監視するために使用されます。ネットワーク侵入検知システムは、署名ベースの検出およびプロトコル分析テクノロジーを使用して、システムの弱点と脆弱性を標的とする脅威をキャッチできます。

NIDSソフトウェアが正しくインストールおよび構成されている場合、CGI攻撃、ネットワークポリシー違反、SMBプローブ、マルウェア感染、システムの侵害、ステルスポートスキャンなど、さまざまな種類の攻撃や疑惑を特定できます。

このチュートリアルでは、Snort3をインストールする方法を学びます。 Ubuntu 20.04

Snort 3の新機能の一部:

  • 複数のパケット処理スレッドをサポートする
  • 複数のパケット処理を許可します
  • リファレンスドキュメントの自動生成
  • 簡単なスクリプト可能な構成を使用する
  • 主要コンポーネントをプラグ可能にする
  • ユーザーが独自のプラグインを作成できるようにします
  • 共有構成と属性テーブル
  • ルールをより迅速に実行できるようにします

ステップ1:システムを更新する

まず、Ubuntuシステムを更新してアップグレードします

sudo apt update
sudo apt upgrade

ステップ2:必要な依存関係をインストールする

Ubuntuのデフォルトリポジトリにはsnortパッケージがあります。そこにあるsnortパッケージは古いバージョンです。 Snort 3をインストールするには、ソースからビルドする必要があります。 Snort 3をインストールする前に、前提条件と必要なライブラリをインストールする必要があります。

次のコマンドを使用して、Snort3依存関係パッケージをインストールします。

sudo apt install build-essential libpcap-dev libpcre3-dev libnet1-dev zlib1g-dev luajit hwloc libdnet-dev libdumbnet-dev bison flex liblzma-dev openssl libssl-dev pkg-config libhwloc-dev cmake cpputest libsqlite3-dev uuid-dev libcmocka-dev libnetfilter-queue-dev libmnl-dev autotools-dev libluajit-5.1-dev libunwind-dev

依存関係をインストールした後、次のコマンドを使用してSnortのソースファイルをコンパイルおよび保存するディレクトリを作成しました。

mkdir snort-source-files
cd snort-source-files

次に、最新バージョンのSnort Data Acquisitionライブラリ(LibDAQ)をダウンロードしてインストールします。 LibDAQをインストールする場合 次のコマンドを使用して、ソースからビルドしてインストールする必要があります。

git clone https://github.com/snort3/libdaq.git
cd libdaq
./bootstrap
./configure
make
make install

次の依存関係はTcmallocです。これにより、メモリ割り当てが最適化され、メモリ使用量が向上します。

Tcmallocをインストールします 次のコマンドを使用します。

cd ../
wget https://github.com/gperftools/gperftools/releases/download/gperftools-2.9/gperftools-2.9.tar.gz
tar xzf gperftools-2.9.tar.gz 
cd gperftools-2.9/
./configure
make 
make install

ステップ3:Ubuntu20.04にSnort3をインストールする

依存関係を設定したら、Ubuntu20.04にSnort3をダウンロードしてインストールします。

01.Snort3の公式GitHubリポジトリをクローンします。

cd ../
git clone git://github.com/snortadmin/snort3.git

02.ディレクトリをSnort3に変更します

cd snort3/

03.そこから、次のコマンドを使用してtcmallocを構成および有効にします。

./configure_cmake.sh --prefix=/usr/local --enable-tcmalloc

04.ビルドディレクトリに移動し、次のコマンドでmakeおよびmakeinstallを使用してSnort3をコンパイルおよびインストールします。

cd build
make 
make install

05.インストールが完了したら、共有ライブラリを更新します。

sudo ldconfig

Snortはデフォルトで/usr/ local / bin/snortディレクトリにインストールされます。/usr/sbin/snortのシンボリックリンクを作成することをお勧めします

sudo ln -s /usr/local/bin/snort /usr/sbin/snort

06.Snort3のインストールを確認する

snort -V

出力:

,,_     -> Snort++ <-
   o"  )~   Version 3.1.10.0
    ''''    By Martin Roesch & The Snort Team
            http://snort.org/contact#team
            Copyright (C) 2014-2021 Cisco and/or its affiliates. All rights reserved.
            Copyright (C) 1998-2013 Sourcefire, Inc., et al.
            Using DAQ version 3.0.4
            Using LuaJIT version 2.1.0-beta3
            Using OpenSSL 1.1.1f  31 Mar 2020
            Using libpcap version 1.9.1 (with TPACKET_V3)
            Using PCRE version 8.39 2016-06-14
            Using ZLIB version 1.2.11
            Using LZMA version 5.2.4

同様の出力が表示された場合は、Snort3が正常にインストールされています。

ネットワークインターフェイスカードの構成

Snortがネットワークトラフィックをリッスンしているインターフェースを見つけて、無差別を有効にします 送信されたすべてのネットワークトラフィックを表示できるモード。

ip link set dev eh0 promisc on

次のコマンドで確認します。

ip add sh eth0

出力:

2: eth0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER UP> mtu 1500 qdisc mq state UP group default qlen 1000
     link/ether f2:3c:92:ed:7e:d8 brd ff:ff:ff:ff:ff:ff
     inet 74.207.230.186/24 brd 74.207.230.255 scope global dynamic eth0
        valid_lft 72073sec preferred_lft 72073sec
     inet6 2600:3c02::f03c:92ff:feed:7ed8/64 scope global dynamic mngtmpaddr noprefixroute 
        valid_lft 60sec preferred_lft 20sec
     inet6 fe80::f03c:92ff:feed:7ed8/64 scope link 
        valid_lft forever preferred_lft forever

次に、インターフェイスのオフロードを無効にして、Snort3が最大1518バイトの大きなパケットを切り捨てないようにします。次のコマンドでこの機能が有効になっているかどうかを確認してください。

ethtool -k eth0 | grep receive-offload

この出力を見ると、LROが固定されているかLROが有効になっているときにGROが有効になっていることがわかります。

出力。

generic-receive-offload: on
large-receive-offload: on

次のコマンドで無効にします。

ethtool -K eth0 gro off lro off

2つは、変更がシステムの再起動後も持続することを保証します。変更を実装するには、systemdサービスユニットを作成して有効にする必要があります。

sudo nano /etc/systemd/system/snort3-nic.service

ネットワークインターフェイスを指す次の構成を貼り付けます。

[Unit]
Description=Set Snort 3 NIC in promiscuous mode and Disable GRO, LRO on boot
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/sbin/ip link set dev eth0 promisc on
ExecStart=/usr/sbin/ethtool -K eth0 gro off lro off 
TimeoutStartSec=0 
RemainAfterExit=yes

[Install]
WantedBy=default.target

systemd構成設定をリロードします:

sudo systemctl daemon-reload

次のコマンドを使用して、起動時にサービスを開始して有効にします。

sudo systemctl enable --now snort3-nic.service

出力。

Created symlink /etc/systemd/system/default.target.wants/snort3-nic.service → /etc/systemd/system/snort3-nic.service.

次のコマンドでsnort3-nic.serviceを確認します:

sudo systemctl status snort3-nic.service

出力。

● snort3-nic.service - Set Snort 3 NIC in promiscuous mode and Disable GRO, LRO on boot
      Loaded: loaded (/etc/systemd/system/snort3-nic.service; enabled; vendor preset: enabled)
      Active: active (exited) since Sat 2021-09-18 12:35:17 UTC; 4min 59s ago
     Process: 182782 ExecStart=/usr/sbin/ip link set dev eth0 promisc on (code=exited, status=0>
     Process: 182783 ExecStart=/usr/sbin/ethtool -K eth0 gro off lro off (code=exited, status=0>
    Main PID: 182783 (code=exited, status=0/SUCCESS)
 Sep 18 12:35:17 li72-186 systemd[1]: Starting Set Snort 3 NIC in promiscuous mode and Disable >
 Sep 18 12:35:17 li72-186 systemd[1]: Finished Set Snort 3 NIC in promiscuous mode and Disable >

Snort3コミュニティルールセットをインストールする

Snortでは、ルールセットが侵入検知エンジンの主な利点です。 Snortルールには、コミュニティルール、登録ルール、サブスクライバールールの3種類があります。コミュニティルールは、オープンソースコミュニティまたはsnortインテグレーターによって提出されます。

コミュニティルールをインストールする方法を紹介します。

まず、/ usr / local / etc / snort

にルールのディレクトリを作成します。
mkdir /usr/local/etc/rules

Snort3コミュニティルールをダウンロードします。 Snort3の公式ダウンロードページで見つけることができます。

wget https://www.snort.org/downloads/community/snort3-community-rules.tar.gz

ダウンロードしたルールを抽出し、以前に作成したディレクトリに配置します/ usr / local / etc / rules /

tar xzf snort3-community-rules.tar.gz -C /usr/local/etc/rules/

Snort 3には、 snort_defaults.luaという2つの主要な構成ファイルが含まれています。 およびsnort.lua

snort.lua ファイルにはSnortのメイン構成が含まれており、Snortプリプロセッサーの実装と構成、ルールファイルの組み込み、ロギング、イベントフィルター、出力などが可能です。

snort_defaults.lua ファイルには、ルールへのパス、AppID、インテリジェンスリスト、ネットワーク変数などのデフォルト値が含まれています。

ルールファイルが抽出されて配置されると、snort.luaと呼ばれるこれらの構成ファイルの1つを構成します。 お気に入りのエディタでファイルを開くと、同様の設定が表示されます。

... -- HOME_NET and EXTERNAL_NET must be set now -- setup the network addresses you are protecting
HOME_NET = 'server_public_IP/32'

-- set up the external network addresses.
-- (leave as "any" in most situations)
EXTERNAL_NET = 'any' EXTERNAL_NET = '!$HOME_NET' ... 

攻撃から保護したいネットワークをHOME_NETの値として設定します 変数、およびポイント EXTERNAL_NET HOME_NETへの変数 変数。

保存して終了します。

/usr/local/etc/snort/snort_defaults.luaでSnortのデフォルトを編集することもでき、IPSセクションでルールの場所を定義できます。

ips = 
{     
-- use this to enable decoder and inspector alerts     
--enable_builtin_rules = true,     

-- use include for rules files; be sure to set your path     
-- note that rules files can include other rules files     
include = '/usr/local/etc/rules/snort3-community-rules/snort3-community.rules' 
}
 ...

保存して終了します。

サービスとしてのSnortの実行

Snortをサービスデーモンとしてバックグラウンドで実行する場合は、Snortのsystemdサービスユニットを作成することもできます。非特権システムユーザーとして実行するのが賢明です

ログインしないシステムユーザーアカウントを作成します。

sudo useradd -r -s /usr/sbin/nologin -M -c SNORT_IDS snort

次に、Snortをsnortユーザーとして実行するためのsystemdサービスユニットを作成します。ネットワークインターフェースに合わせて調整します。

sudo nano /etc/systemd/system/snort3.service

次の構成を貼り付けます。

[Unit]
Description=Snort 3 NIDS Daemon
After=syslog.target network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/snort -c /usr/local/etc/snort/snort.lua -s 65535 -k none -l /var/log/snort -D -i eht0 -m 0x1b -u snort -g snort

[Install]
WantedBy=multi-user.target

systemd構成をリロードします。

sudo systemctl daemon-reload

ログファイルの所有権と権限を設定します。

sudo chmod -R 5775 /var/log/snort
sudo chown -R snort:snort /var/log/snort

Snortを起動し、システムブートで実行できるようにします:

sudo systemctl enable --now snort3

サービスステータスをチェックして、実行されているかどうかを確認します。

sudo systemctl status snort3

出力。

● snort3.service - Snort 3 NIDS Daemon
      Loaded: loaded (/etc/systemd/system/snort3.service; enabled; vendor preset: enabled)
      Active: active (running) since Sat 2021-09-18 12:44:32 UTC; 6s ago
    Main PID: 182886 (snort)
       Tasks: 2 (limit: 1071)
      Memory: 62.6M
      CGroup: /system.slice/snort3.service
              └─182886 /usr/local/bin/snort -c /usr/local/etc/snort/snort.lua -s 65535 -k none >
 Sep 18 12:44:32 li72-186 systemd[1]: Started Snort 3 NIDS Daemon.

結論

このチュートリアルでは、Snort3ネットワーク侵入検知システムをUbuntu20.04にインストールする方法を説明します。

Linuxは、ウイルスや疑わしいものに対して100%耐性があるわけではありません。ツールをインストールし、デバイスやネットワーク全体で疑わしいことを試みている人がいないことを確認することをお勧めします。調査できるSnortの他の代替手段:Ossec、Palo Alto Networks Next-Generation Firewall、Next-Generation Intrusion Prevention System(NGIPS)。

読んでいただきありがとうございます。コメントセクションでフィードバックや提案を提供してください。


Ubuntu
  1. UbuntuにOdooをインストールする方法

  2. Ubuntu16.04にRをインストールする方法

  3. Ubuntu18.04にGoをインストールする方法

  1. UbuntuにMavenをインストールする方法

  2. UbuntuにWineをインストールする方法

  3. Ubuntu20.04にRubyをインストールする方法

  1. UbuntuにPuTTYをインストールする方法

  2. Ubuntu18.04にRubyをインストールする方法

  3. Ubuntu18.04にPipをインストールする方法