Snortは、ネットワーク侵入検知システム(NIDS)を実行するためのオープンソースの軽量ネットワーク侵入防止システムです。 Snortは、特定のネットワークインターフェイスを介して送受信されるパッケージデータを監視するために使用されます。 ネットワーク侵入検知システムは、署名ベースの検出およびプロトコル分析テクノロジーを使用して、システムの弱点および脆弱性を標的とする脅威をキャッチできます。
NIDSソフトウェアが正しくインストールおよび構成されている場合、CGI攻撃、ネットワークポリシー違反、SMBプローブ、マルウェア感染、システムの侵害、ステルスポートスキャンなど、さまざまな種類の攻撃や疑惑を特定できます。
このチュートリアルでは、 Snort3をインストールします の上 Ubuntu 20.04。
Snort3の新機能の一部:
- 複数のパケット処理スレッドをサポートする
- 複数のパケット処理を許可します
- リファレンスドキュメントの自動生成
- シンプルなスクリプト可能な構成を使用する
- 重要なコンポーネントをプラグ可能にする
- ユーザーが独自のプラグインを作成できるようにします
- 共有構成と属性テーブル
- ルールをより速く実行できるようにします
ステップ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
https://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には、2つの主要な構成ファイルが含まれています。 snort_defaults.lua と snort.lua。
The snort.lua ファイルにはSnortのメイン構成が含まれており、Snortプリプロセッサー、ルールファイルの組み込み、ロギング、イベントフィルター、出力などの実装と構成が可能です。
The snort_defaults.lua ファイルには、ルールへのパス、AppID、インテリジェンスリスト、ネットワーク変数などのデフォルト値が含まれています。
ルールファイルが抽出されて配置されると、これらの構成ファイルの1つを構成します。 snort.lua。 お気に入りのエディターでファイルを開くと、同様の構成が表示されます。
... -- 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 変数。
Save 終了します。
/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"
}
...
Save 終了します。
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)。
読んでくれてありがとう、コメントセクションであなたのフィードバックと提案を提供してください。