334.2 ネットワーク侵入検知
課題 334: ネットワークセキュリティ
334.2 ネットワーク侵入検知
LPIC303の試験範囲である主題331~335まであるうちの「334: ネットワークセキュリティ」から「334.2 ネットワーク侵入検知」についてのまとめ
総重量:4
説明:
ネットワークのセキュリティスキャン・ネットワークモニタ・ネットワークの侵入検知ソフトウエアの設定・利用について理解している。これには、セキュリティスキャナの更新と管理が含まれる。主要な知識範囲:
利用帯域モニタリングの実施
Snortの利用と設定とルール管理
NASLを含むOpenVASの利用と設定
重要なファイル、用語、ユーティリティ:
ntop
snort
snort-stat
pulledpork.pl
/etc/snort/*
openvas-adduser,
openvas-rmuser
openvas-nvt-sync
openvassd
openvas-mkcert
openvas-feed-update
/etc/openvas/*
利用帯域モニタリングの実施
ntop/ntopngとは
ntop:1998年リリース
ntopng:ntopの後継、2013年にリリース
インストール
RockyLinux9の場合
[root@lpic303-rocky34 ~]#
[root@lpic303-rocky34 ~]# curl https://packages.ntop.org/centos-stable/ntop.repo > /etc/yum.repos.d/ntop.repo
[root@lpic303-rocky34 ~]# dnf config-manager --set-enabled powertools
[root@lpic303-rocky34 ~]# dnf install epel-release
[root@lpic303-rocky34 ~]# dnf clean all
[root@lpic303-rocky34 ~]# dnf update
[root@lpic303-rocky34 ~]# dnf install pfring-dkms n2disk nprobe ntopng cento ntap
[root@lpic303-rocky34 ~]#
Ubuntu22.04の場合
root@lpic303-ubuntu35:~#
root@lpic303-ubuntu35:~# apt-get install software-properties-common wget
root@lpic303-ubuntu35:~# add-apt-repository universe
root@lpic303-ubuntu35:~# wget https://packages.ntop.org/apt-stable/22.04/all/apt-ntop-stable.deb
root@lpic303-ubuntu35:~# apt install ./apt-ntop-stable.deb
root@lpic303-ubuntu35:~#
設定ファイル
/etc/ntopng/ntopng.conf
実行例
[root@lpic303-rocky34 ~]#
[root@lpic303-rocky34 ~]# systemctl restart ntpopng
[root@lpic303-rocky34 ~]# systemctl restart nprobe
[root@lpic303-rocky34 ~]#
http://localhost:3000/
ユーザー名:admin、パスワード:admin
参考
My Site ― High Performance Network Monitoring Solutions based on Open Source and Commodity Hardware.
Snortの利用と設定とルール管理
Snortとは
オープンソースのネットワーク型IDS
インストール
RockyLinux9の場合
https://www.snort.org/downloads にある Snort2 の rpmファイル をインストールする
[root@lpic303-rocky34 ~]#
[root@lpic303-rocky34 ~]# dnf install libdnet
[root@lpic303-rocky34 ~]# dnf install https://www.snort.org/downloads/snort/snort-2.9.20-1.f35.x86_64.rpm
[root@lpic303-rocky34 ~]#
★ルールをダウンロードする★
[root@lpic303-rocky34 ~]#
[root@lpic303-rocky34 ~]# curl -LO https://www.snort.org/downloads/community/community-rules.tar.gz
[root@lpic303-rocky34 ~]#
[root@lpic303-rocky34 ~]# tar -xvzf community-rules.tar.gz -C /etc/snort/rules
community-rules/
community-rules/community.rules
community-rules/VRT-License.txt
community-rules/LICENSE
community-rules/AUTHORS
community-rules/snort.conf
community-rules/sid-msg.map
[root@lpic303-rocky34 ~]#
[root@lpic303-rocky34 ~]# ls -l /etc/snort/rules/
合計 0
drwxr-xr-x 2 1210 wheel 119 2月 14 03:45 community-rules
[root@lpic303-rocky34 ~]#
[root@lpic303-rocky34 ~]#
[root@lpic303-rocky34 ~]# ls -l /etc/snort/rules/community-rules/
合計 2336
-rw-r--r-- 1 1210 wheel 7834 11月 9 2018 AUTHORS
-rw-r--r-- 1 1210 wheel 15127 3月 20 2013 LICENSE
-rw-r--r-- 1 1210 wheel 21084 2月 25 2021 VRT-License.txt
-rw-r--r-- 1 1210 wheel 1813553 2月 14 03:45 community.rules
-rw-r--r-- 1 1210 wheel 494265 2月 14 03:45 sid-msg.map
-rw-r--r-- 1 1210 wheel 30249 4月 25 2022 snort.conf
[root@lpic303-rocky34 ~]#
★"libdnet.1: cannot open..."が出る場合はシンボリックリンクの設定をする★
[root@lpic303-rocky34 ~]#
[root@lpic303-rocky34 ~]# snort
snort: error while loading shared libraries: libdnet.1: cannot open shared object file: No such file or directory
[root@lpic303-rocky34 ~]#
[root@lpic303-rocky34 ~]# cd /usr/lib64/
[root@lpic303-rocky34 lib64]#
[root@lpic303-rocky34 lib64]# ln -s libdnet.so.1.0.1 libdnet.1
[root@lpic303-rocky34 lib64]#
[root@lpic303-rocky34 lib64]# ls -l libdnet*
lrwxrwxrwx 1 root root 16 2月 15 00:55 libdnet.1 -> libdnet.so.1.0.1
lrwxrwxrwx 1 root root 16 5月 7 2022 libdnet.so -> libdnet.so.1.0.1
lrwxrwxrwx 1 root root 16 5月 7 2022 libdnet.so.1 -> libdnet.so.1.0.1
-rwxr-xr-x 1 root root 75344 5月 7 2022 libdnet.so.1.0.1
[root@lpic303-rocky34 lib64]#
[root@lpic303-rocky34 lib64]# snort --version
,,_ -*> Snort! <*-
o" )~ Version 2.9.20 GRE (Build 82)
'''' By Martin Roesch & The Snort Team: http://www.snort.org/contact#team
Copyright (C) 2014-2022 Cisco and/or its affiliates. All rights reserved.
Copyright (C) 1998-2013 Sourcefire, Inc., et al.
Using libpcap version 1.10.0 (with TPACKET_V3)
Using PCRE version: 8.44 2020-02-12
Using ZLIB version: 1.2.11
[root@lpic303-rocky34 lib64]#
★"..."/usr/local/lib/snort_dynamicrules": No such file or directory."が出る場合は空のディレクトリを作成する★
[root@lpic303-rocky34 lib64]#
[root@lpic303-rocky34 lib64]#
ERROR: /etc/snort/snort.conf(253) Could not stat dynamic module path "/usr/local/lib/snort_dynamicrules": No such file or directory.
Fatal Error, Quitting..
[root@lpic303-rocky34 ~]# mkdir -p /usr/local/lib/snort_dynamicrules
[root@lpic303-rocky34 ~]# chown -R snort:snort /usr/local/lib/snort_dynamicrules
[root@lpic303-rocky34 ~]# chmod -R 700 /usr/local/lib/snort_dynamicrules
Ubuntu22.04の場合
root@lpic303-ubuntu35:~#
root@lpic303-ubuntu35:~# apt install snort
root@lpic303-ubuntu35:~#
設定ファイル
/etc/snort/*
[root@lpic303-rocky34 ~]#
[root@lpic303-rocky34 ~]# ls -l /etc/snort/
合計 236
-rw-r--r-- 1 root root 3757 4月 20 2022 classification.config
-rw-r--r-- 1 root root 33339 4月 20 2022 gen-msg.map
-rw-r--r-- 1 root root 687 4月 20 2022 reference.config
drwxr-xr-x 3 root root 29 2月 15 00:45 rules
-rw-r--r-- 1 root root 26812 5月 24 2022 snort.conf
-rw-r--r-- 1 root root 2335 4月 20 2022 threshold.conf
-rw-r--r-- 1 root root 160606 4月 20 2022 unicode.map
[root@lpic303-rocky34 ~]#
設定ファイル:snort.conf
ipvar HOME_NET <localnetwork/mask>
ipvar EXTERNAL_NET any
var RULE_PATH /etc/snort/rules
include $RULE_PATH/local.rules = /etc/snort/rules/
設定ファイル:ルール
ディレクトリ
/etc/snort/rules/
ファイル名
xxxx.rules
設定ファイル:ルールフォーマット
[アクション] [プロトコル] [SrcIP] [Srcポート] [方向] [DstIP] [Dstポート]
例)
alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (RULE_OPTIONS)
アクション
- alert
- log
- pass
- activeプロトコル
- tcp
- udp
- icmp
- ipIPアドレス
- x.x.x.x
- [x.x.x.x,y.y.y.y]
- anyポート番号
- x
- (x,y)
- any方向演算子
- ->
- <>オプション
- 検知するパケットの条件を指定
ログ
ログディレクトリ
/var/log/snortログファイル形式
tcpdump形式ログファイル名
snort.log.数字
モード
スニファモード
コンソールに表示するモード
-v オプションパケットロガーモード
ログを記録するモード
-l オプションNIDSモード
ネットワーク トラフィックの検出と分析をするモード
-Aオプション
snortコマンド
-v
スニファモード-A [ fast | full | unsock | none | console | cmg ]
アラートモード
- fast:簡単な形式で出力
- full:完全な形式で出力
- unsock:UNIXsケットに出力
- none:なし
- console:"fast"のスタイルでコンソールに出力
- cmg:ヘッダーの詳細を16 進数およびテキストで出力-T
テストモード-D
デーモンモード-d
IP ヘッダーと TCP/UDP/ICMP ヘッダーを表示-e
データ リンク層ヘッダーを表示-l <ログディレクトリ名>
ログファイルを格納するディレクトリを指定
ファイル名は "snort.log.数字" となる
指定がなければ "/var/log/snort" となる。-L <ログファイル名>
バイナリログのログファイル名を指定-h <ネットワークアドレス>
HOME_NET を指定-b
ログをtcpdump形式のバイナリで保存する
すべての情報を記録するので -h, -d, -e の指定が不要になる-c <設定ファイル>
設定ファイルを指定する-i <インターフェース>
検査対象となるインターフェースを指定する-s
ログをsyslogに出力する-r <ファイル名>
tcpdump形式のファイルを読み込む-q
コマンド実行時のバナーを表示しない-Q
インラインモードを有効化する
参考
NASLを含むOpenVASの利用と設定
OpenVASとは
オープンソースの脆弱性スキャナ
現在はGreenbone-Vulnerability-Manager(GVM)という名称になっている。
NASLとは
Nessus Attack Scripting Language
※注意※
OpenVASは、OpenVAS-scanerやOSP-Scannerを含む脆弱性検査フレームワークとして「Greenbone-Vulnerability-Manager(GVM)」に変わっており、執筆時点(2024年4月)で試験範囲に含まれている `openvas-*` コマンドはなくなっているようです。
試験範囲に含まれている `openvas-*` コマンドが使われているのは、OpenVASがGVMになる以前の「OpenVAS 9」までのようで、インストール方法についてもネット上に情報は少なく、Ubuntu12.04~18.04でインストールできるという記事がいくつか発見できた程度でした。
設定ファイル
/etc/openvas/*
/etc/openvas/openvassd.conf(古い)
/etc/openvas/openvas.conf(新しい)
コマンド
openvas-adduser コマンド
- https://linux.die.net/man/8/openvas-adduser
- OpenVASのユーザーデータベースにユーザーを追加する
- openvasmd --create-user=<username>
- gvmd --create-user=<username>
openvas-rmuser コマンド
- https://linux.die.net/man/8/openvas-rmuser
- OpenVASのユーザーデータベースのユーザーを削除する
- openvasmd --delete-user=<username>
- gvmd --delete-user=<username>
openvas-nvt-sync コマンド
- https://linux.die.net/man/8/openvas-nvt-sync
- NVT(Network Vulnerability Tests)と呼ばれる脆弱性情報を更新する
openvas-mkcert コマンド
- https://linux.die.net/man/8/openvas-mkcert
- openvas-mkcert - Creates a scanner certificate
openvas-feed-update コマンド
- 脆弱性情報の更新
openvassd コマンド
- https://linux.die.net/man/8/openvassd
- openvassd - The 'scanner' part of the OpenVAS Security Scanner
- オプション
-c <config-file>, --config-file=<config-file>
-a <address>, --listen=<address>
-p <port-number>, --port=<port-number>
openvasmd
- OpenVAS Manager