このセクションでは、Ubuntu 22.04を搭載したパブリッシャーでSNMP v3を有効にし、外部監視を許可するようにファイアウォールを編集する方法について説明します。
パッケージのインストール
sudo apt-get update sudo apt-get -y install snmpd libsnmp-dev
セキュアなSNMPv3ユーザーを作成する
まずエージェントを停止してください(実行中の書き込みによる予期せぬ問題を回避します)。
sudo systemctl stop snmpd
ユーザーを作成する(強力で異なる認証/特権パスフレーズを選択する):
sudo net-snmp-config --create-snmpv3-user \ -A '<AuthPassword>' -a SHA \ -X '<PrivPassword>' -x AES \ snmpv3user
snmpv3userユーザー名(そのままにするか変更するか。このガイドの残りの部分 それ)-a SHA -x AES+-l authPriv(下記)は認証+暗号化を示します。
SNMPエージェントの設定
この最小限かつ安全な設定を/etc/snmp/snmpd.confからexactlyに編集してください。
# Listen on UDP/161 on all interfaces agentAddress udp:161 # Read view: allow everything under .1 (tighten later if you want) view all included .1 # Authorize our v3 user (read-only, authPriv) on that view rouser snmpv3user authPriv. # Optional: disk alert trap when / has <2GB free (kB units) disk / 2000 # Optional: expose Linux conntrack session count via extend # (see "About conntrackCount" section below) extend-sh conntrackCount cat /proc/sys/net/netfilter/nf_conntrack_count
SNMPv1およびSNMPv2cのコミュニティ文字列( publicなど)は平文で送信されるため、デフォルト設定を削除して、より安全なSNMPv3プロトコルの保護を強制することを強くお勧めします。
/etc/snmp/snmpd.confファイルで、次の 2 行を削除するか、行頭に#を追加してコメントアウトしてください。
# rocommunity public default -V systemonly
# rocommunity6 public default -V systemonly
これらの行を削除すると、 publicコミュニティ文字列を使用した SNMPv1/v2c プロトコルを使用しようとするすべての監視要求は拒否されます。 監視システムmustは、 前の手順で作成したSNMPv3ユーザー( authPrivUserなど)を使用して接続するように構成する必要があります。
注記
- 私たちはnot使っています
-V systemonlyので、読むことができます IF-MIB、TCP-MIB、UCD-SNMP など。 - テスト中は
view all .1保持しておいてください。後で必要なOIDのみに絞り込むことができます。
再起動して有効化する:
sudo systemctl restart snmpd sudo systemctl enable snmpd sudo systemctl status snmpd --no-pager
ファイアウォール(UFW)でSNMPv3を許可する
UFWが有効になっている場合、ネットワーク管理システム(NMS)からのUDP/161のみを許可してください。
sudo ufw allow from <NMS_IP> to any port 161 proto udp sudo ufw status
(NMSから)迅速なエンドツーエンドテスト
<PUBLISHER_IP>パブリッシャーの IP アドレスに置き換えてください。
System group (proof SNMPv3 works)
snmpwalk -v3 -l authPriv -u snmpv3user \ -a SHA -A '<AuthPassword>' -x AES -X '<PrivPassword>' \ <PUBLISHER_IP> system
Uptime
snmpget -v3 -l authPriv -u snmpv3user \ -a SHA -A '<AuthPassword>' -x AES -X '<PrivPassword>' \ <PUBLISHER_IP> DISMAN-EVENT-MIB::sysUpTimeInstance
CPU & Memory (UCD-SNMP)
以下は、監視対象となるOIDの例です。 。
# CPU % snmpget -v3 -l authPriv -u snmpv3user -a SHA -A '<AuthPassword>' -x AES -X '<PrivPassword>' \ <PUBLISHER_IP> \ .1.3.6.1.4.1.2021.11.9.0 \ # pctUser .1.3.6.1.4.1.2021.11.10.0 \ # pctSystem .1.3.6.1.4.1.2021.11.11.0 # pctIdle # Memory (kB) snmpget -v3 -l authPriv -u snmpv3user -a SHA -A '<AuthPassword>' -x AES -X '<PrivPassword>' \ <PUBLISHER_IP> \ .1.3.6.1.4.1.2021.4.5.0 \ # memTotal .1.3.6.1.4.1.2021.4.6.0 # memAvail
Disk usage by mount (UCD-SNMP dskTable)
snmpwalk -v3 -l authPriv -u snmpv3user -a SHA -A '<AuthPassword>' -x AES -X '<PrivPassword>' \ <PUBLISHER_IP> UCD-SNMP-MIB::dskTable
Concurrent TCP sessions (TCP-MIB)
このスカラーneeds .0 :
snmpget -v3 -l authPriv -u snmpv3user -a SHA -A '<AuthPassword>' -x AES -X '<PrivPassword>' \ <PUBLISHER_IP> .1.3.6.1.2.1.6.9.0 # tcpCurrEstab
conntrackCountについて(extend-shコマンドの行)
Linux は追跡された接続のカーネル テーブル ( nf_conntrack ) を保持します。現在のエントリー数は以下のとおりです。
/proc/sys/net/netfilter/nf_conntrack_count
extend-shディレクティブはコマンドを実行し、その出力をNET-SNMP-EXTEND-MIBを介して公開します。設定では:
extend-sh conntrackCount cat /proc/sys/net/netfilter/nf_conntrack_count
これにより、 conntrackCountという名前の拡張エントリが作成されます。nsExtendOutput1Lineオブジェクトを使用する任意の NMS からこれを読むことができます。
Symbolic:
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."conntrackCount"
Numeric OID (同じこと):
.1.3.6.1.4.1.8072.1.3.2.3.1.1."conntrackCount"
(NMSから)照会する方法
snmpget -v3 -l authPriv -u snmpv3user \ -a SHA -A '<AuthPassword>' -x AES -X '<PrivPassword>' \ <PUBLISHER_IP> NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."conntrackCount"
ヒント
NMSが MIBを見つけられない場合は、NET-SNMP MIBをNMSにロードするか、 上記の数値OIDフォームを使用してください。
トラブルシューティングチェックリスト
- No response / timeout
→ ファイアウォールまたはアドレス指定。NMSからパブリッシャーへのUDP/161が許可されていることを確認してください。
→ パブリッシャーでsudo ss -lun | grep :161選択して、snmpd がリッスンしていることを確認します。 - Authentication failure
→ ユーザー名、認証/プライバシープロトコル、および両方のパスフレーズは完全に一致する必要があります。
→ 使います-l authPriv -a SHA -x AES. - No Such Object for TCP/IF/UCD OIDs
→ 誤って表示を制限しました (例:-V systemonly)。上記のview all .1例を使用し、必要に応じて後で締めます。 - conntrackCount missing
→extend-sh conntrackCount ...行が存在することを確認し(タイプミスがないこと)、次にsudo systemctl restart snmpd。
→ クエリ MIB の読み込みの問題を回避するために数値 OID を使用します。
snmpget -v3 -l authPriv -u snmpv3user -a SHA -A '<AuthPassword>' -x AES -X '<PrivPassword>' \ <PUBLISHER_IP> .1.3.6.1.4.1.8072.1.3.2.3.1.1."conntrackCount"
- パブリッシャーを使う SSH に接続し、ログインします。
- メニューから
6を選択して、CLIに戻ります。 - すべてのパッケージを更新してください(推奨)。
sudo apt-get update
- SNMPをインストールしてください。
sudo apt-get -y install snmpd libsnmp-dev
/etc/snmp/snmpd.confファイルで agentAddress を設定してください。ファイルに次の行を追加してください。disk / 10000
- ユーザーを追加できるように、snmpdサービスを停止してください。
sudo service snmpd stop
- SNMP v3ユーザーを追加します。
sudo net-snmp-config --create-snmpv3-user -A <AuthPassword> -X <CryptoPassword> -a <MD5|SHA> -x <AES|DES> <user>
/etc/snmp/snmpd.confにrouser authPrivUser authpriv -V systemonlyを追加して、ラウザーを正しく設定します。agentaddress 127.0.0.1, [::1]agentaddress udp:161に置き換えて、/etc/snmp/snmpd.confでTCPを正しく設定してください。- SNMPDサービスを再起動してください。
sudo service snmpd restart
- SNMPD が開始されていることを確認します。
sudo service snmpd status
- ファイアウォール(ufw)が実行されていることを確認してください。
sudo ufw status
- UFWを設定して、SNMPDへの接続を許可するようにします。SNMPデーモンはポート161で接続を待ち受けます。
sudo ufw allow in to any port 161 proto udp
- ファイアウォールによってSNMPサービスが永続的に許可されていること、およびポート161でのUDPトラフィックが許可されていることを確認してください。
sudo ufw status Status: active To Action From -- ------ ---- 161/udp ALLOW Anywhere 161/udp (v6) ALLOW Anywhere (v6)
- パブリッシャーマシン上の snmpd が正しく動作しているかどうかを確認するには、以下をチェックしてください。
sudo service snmpd status
snmpd.service - Simple Network Management Protocol (SNMP) Daemon.
Loaded: loaded (/lib/systemd/system/snmpd.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2024-05-31 07:26:11 UTC; 59min ago
Process: 14823 ExecStartPre=/bin/mkdir -p /var/run/agentx (code=exited, status=0/SUCCESS)
Main PID: 14824 (snmpd)
Tasks: 1 (limit: 1126)
Memory: 5.6M
CGroup: /system.slice/snmpd.service
└─14824 /usr/sbin/snmpd -LOw -u Debian-snmp -g Debian-snmp -I -smux mteTrigger mteTriggerConf -f -p />

