2020年5月26日火曜日

Zabbix 5.0 へのsnmpホスト登録(標準MIBのみ)

Zabbixが構築できたので自宅のNW機器を登録していく

厳密に管理するわけではないので、MIBは【標準MIB】のみで【Read Only】、community nameは【public】で統一して設定する

設定対象は以下の4機種
NGFW:Sophos XG Firewall Home Edition(ESXi上)
FW: Deciso OPNsense(ESXi上)
L2SW: Netgear GS310TP
無線AP:Netgear WAC505-10000S

ESXiは少しコマンド打つ必要があるのでまた別の機会に回す



■Sophos XG Firewall Home Edition
ログインしたら【システム】>【管理】>【SNMP】から以下の設定を行う
有効化してしまえば後の値は適当でいい
【SNMPエージェントを有効化する】のチェックを入れる
【名前】任意
【位置情報】任意
【連絡担当者】任意
【マネージャポート】162(初期値)


次に画面下の【コミュニティ】を設定するため【追加】を押して設定画面へ移る
【名前】public #community name
【IPアドレス】192.168.1.10 #Zabbixサーバ
【プロトコルバージョン】v2c
【トラップサポート】v2c


■Deciso OPNsense
初期設定ではsnmpが有効ではなくpingも通らないため、その設定も併せて行う
ログインしたら【システム】>【ファームウェア】>【プラグイン】から【os-net-snmp】をインストールする
右側の【+】でインストールしたら再度ログインし直して有効化

次に【サービス】>【Net-SNMP】からsnmpの設定を行う
【Enable SNMP Service】チェックを入れる
【SNMP Community】public #community name
【SNMP Location】任意
【Layer 3 Visibility】チェックを入れる


Zabbixサーバと疎通できるようにFWルールを追加する
【ファイアウォール】>【ルール】>【フローティング】にて
【送信元】LANネット
【送信先】このファイアウォール
としてICMPとUDP161(SNMP)の許可ルールを設定する
最初はLAN側に設定してうまくいかなかったが、フローティング側に設定するんだったのか



■Netgear GS310TP
ログインしたら【システム】>【SNMP】>【SNMPv1/v2】>【コミュニティ設定】から以下の設定を行う
【管理ステーションIP】192.168.1.10 #Zabbixサーバ
【管理ステーションIPマスク】255.255.255.240 #/28
【コミュニティ文字列】public #community name
【アクセスモード】Read Only
【状態】有効


SNMP Trapの設定もついでに追加
【システム】>【SNMP】>【SNMPv1/v2】>【Trap設定】から以下の設定を行う
【受信者IP】192.168.1.10 #Zabbixサーバ
【バージョン】SNMPv2
【コミュニティ文字列】public #community name
【状態】有効



■Netgear WAC505-10000S
ログインしたら【Management】>【Mantenance】>【Remote Management】から以下の設定を行う
【SNMP】Enableのラジオボタンを有効化
【read-Only Community Name】public #初期値
【IP Address (to receive traps)】192.168.1.10 #Zabbixサーバ
【Trap Port】162 #初期値

有効化してIP入れるだけなのでこれが一番設定が簡単だった


■Zabbix 5.0 (raspbian上)
Zabbix側にホストの追加を行う
ログインして【設定】>【ホスト】>【ホストの作成】から以下の設定を行う

・ホストタブ
【ホスト名】任意
【グループ】Templates/Network Devices
【インターフェース】初期値を削除してsnmpを追加して監視対象機器のIPアドレスを指定


・テンプレートタブ
【新規のテンプレートをリンク】Template Net Network Generic Device SNMPv2

・マクロタブ
【マクロ】{$SNMP_COMMUNITY}
【値】public



該当機種分同じ作業を繰り返して登録し、ある程度時間が経過するとSNMPが有効化されて値が取得される
これで死活監視や各機器のインターフェーストラフィック量が見やすくなるので、グラフの表示とかをまた調整しよう

2020年5月18日月曜日

Raspbian Buster LiteへZabbix 5.0 LTSのインストール

Ubuntu18.04へZabbix 4.0 LTSを入れたものの、OPNsenseを導入した影響でESXiのリソースが心も解くなったので、Zabbixのインストール先を変更する必要が出てきた

ちょうど5/12にZabbix 5.0 LTSがリリースされたのでそちらをダウンロードすることにした

Sambaサーバに利用しているRaspberry pi 3 B+であればもう少しソフトウェア動かせそうなのと、公式ドキュメントにインストールマニュアルがあったのでそちらを参考にした
DBはUSBメモリにディレクトリを移して容量を確保する
尚、Raspberry piの日本語化はすでに済ましてある


各ソフトウェアのバージョンは以下の通り
    Raspbian Buster Lite
    PostgreSQL 11.7
    Apache 2.4.38
    PHP 7.3.14-1
    Zabbix 5.0 LTS



まずはApacheとPHPとPostgreSQLのインストール
Raspbian BusterはDebina10ベースなので、以下のサイトのDebian10のページを参考にしてコマンドをコピペしていく


■Apacheのインストール
    $ sudo apt -y install apache2


■PHPのインストール
    $ sudo apt -y install php php-cgi libapache2-mod-php php-common php-pear php-mbstring

・タイムゾーンの変更
 $ vim /etc/php/7.3/apache2/php.ini
# 960行目:コメント解除しタイムゾーン設定
    date.timezone = "Asia/Tokyo"


■PostgreSQLのインストール
    $ sudo apt -y install postgresql

■PostgreSQLのデータディレクトリ変更
    ・フォルダ作成と権限変更
    $ sudo mkdir /mnt/usb/pgdata
    $ sudo chmod go-rwx /mnt/usb/pgdata
    $ sudo chown postgres:postgres /mnt/usb/pgdata

    ・DB初期化
     ユーザpostgresにログインして初期化コマンド叩いてユーザpostgresからログアウト
    $ sudo -s -u postgres
    $ /usr/lib/postgresql/11/bin/initdb -D /mnt/usb/pgdata
    $ exit

    ・設定ファイル書き換え
    $ sudo vim /etc/postgresql/10/main/postgresql.conf
     該当箇所を以下の通り書き換え
    data_directory = '/var/lib/postgresql/11/main' # use data in another directory
        
    data_directory = '/mnt/usb/pgdata' # use data in another directory

    ・postgesqlの再起動
    $ sudo /etc/init.d/postgresql stop
    $ sudo /etc/init.d/postgresql start


■Zabbixのインストール
    ・リポジトリ更新
    $ wget https://repo.zabbix.com/zabbix/5.0/raspbian/pool/main/z/zabbix-release/zabbix-release_5.0-1+buster_all.deb
    $sudo dpkg -i zabbix-release_5.0-1+buster_all.deb
    $ sudo apt -y update

    ・パッケージインストール
    $ sudo apt -y install zabbix-server-pgsql zabbix-frontend-php php7.3-pgsql zabbix-apache-conf zabbix-agent

    ・DB作成
    $ sudo -u postgres createuser --pwprompt zabbix
        #パスワードは任意で設定
    $ sudo -u postgres createdb -O zabbix zabbix

    ・初期スキーマとデータのインポート
    zcat /usr/share/doc/zabbix-server-pgsql*/create.sql.gz | sudo -u zabbix psql zabbix

    ・Zabbixサーバの構成変更
 $ sudo vim /etc/zabbix/zabbix_server.conf
        #以下コメントアウトして追記
    DBPassword=(任意の値、後で使う)

    ・Zabbixサーバーとエージェントプロセスを開始
    $sudo systemctl restart zabbix-server zabbix-agent apache2
    $sudo systemctl enable zabbix-server zabbix-agent apache2



無事インストールが完了したらブラウザでIPアドレス/zabbixにてログイインする
問題なく表示されたら【Next Step】で次へ


インストール情報が出てくるので問題なければ【Next Step】で次へ


PostgreSQLへの接続情報を入れる欄には上で作成したパスワードを入力して【Next Step】で次へ


Zabbixサーバの情報を登録する
空欄でも可能だがとりあえずNameを【Zabbix】として【Next Step】で次へ


登録情報の確認画面
問題なければ【Next Step】で次へ



正常に設定完了された画面が表示されたら【Finish】で初期設定終了


ログイン画面に遷移したら初期のログインIDとパスワードでログイン


ログインした状態
GUIの表示が4.0LTSと変わってメニューが上から左に移っている


このままだと英語表記なので左下の【User setting】から【Language】を日本語に変更する


これで一通りの設定は完了
今度こそ自宅NW機器のsnmp設定を始めていこう

2020年5月13日水曜日

ESXi上にOPNsenseを構築

XG FirewallにIPoEの設定入れたらダイナミックDNS使えなくなってOpenVPNも利用できなくなったので、対処策としてPPPoEセッション用にルータを追加することに


構成は以下の感じ
XG FirewallのデフォルトルートはIPoEのIPIPトンネル向いてるので、優先度低めでOPNsenseにデフォルトルート向ければ、PPPoEもバックアップ回線に使えそう

色々設定できたら構成図綺麗に作り直そう




LIVA Zのリソースはあまり残って無いのでそれなりに軽量でも動くもので良さそうなのを探していたら【 OPNsense 】なる仮想Firewallがあるらしい

公式wikiの情報だと基本要件は以下の通り
  • Processor:1GHz dual core cpu
  • RAM:1GB
  • Install target:40GB SSD
メモリとストレージは余裕があるものの、CPUは4CoreともXG Firewallに振っているので、CPUだけは最小構成の1Coreでイケるだろう1GHzはあるし


設定はさくらのナレッジを参考にした


まずは公式サイトのダウンロードページからISOファイルをダウンロードする
Architectureは【amd64】
Select the image typeはdvd
Mirror Locationは好きなところを選べばいい

bz2形式で落ちてくるので7z使って適当なフォルダに解凍しておく
ダウンロードしたバージョンは20.1とのこと



ESXiにログインして仮想マシンを新規作成する
名前はわかりやすく【OPNsense】
互換性は初期値
ゲストOSファミリは【その他】
ゲストOSのバージョンは【FreeBSD11より前のバージョン(64ビット)】


利用するデータストアは一つしかないのでそのまま選んで次へ
CPU:1
メモリ:1024MB
ハードディスク1:40GB (シンプロビジョニング)
ネットワークアダプタ1:WAN側の仮想NW
ネットワークアダプタの追加で新規NIC追加してそちらはLAN側の仮想NWを割り当て
CD/DVDドライブ:データストアISファイル
として先ほど回答したISOファイルをアップロードする



作成完了したら起動して仮想コンソールから初期設定を行う
画面が起動したらエンターを押して先へ


途中でPress any key to start the manual interface assignment:
と聞かれるのでエンター押して手動設定へ移行
nic名とMACアドレスが表示されるのでESXi上の画面と照らし合わせてWANとLANを間違えない様に気を付ける
VLNAは使わないのでn
WANはem0
LANはem1
追加インターフェースは利用しないので未入力のままエンター

login:が表示されたら
login:root
PW:opnsense
でログインしてCLIで変更画面へ


【2) set interface IP address】の2を選んでIPアドレスを設定する
IPアドレスは192.168.1.14
サブネットは28
defaultgatewayを聞かれるが、VLAN越しにSSHで繋げる予定なのでXG Firewallの値の192.168.1.1を入れておく
これやらないとVLAN越しにルーティングできずにブラウザからのアクセスができなくなる
ラズパイ踏み台にしてやればいいんだろうけど


設定したら一旦ログアウトして以下の値でログインする
これでFirewall本体のインストール作業に入る
login:installer
PW:opnsense

キーボード設定を変更するため【Change Keymap(default)】から【jp.kbd】を選択
インストール方法は【Guided installation】を選択してストレージを選択
インストールモードは【GPT/UEFI】を選択
最後にrootパスワードの再設定、後で変更する場合は空欄のままエンター押せば初期値のままとなる

インストールが完了したらrebootして、起動後にIPアドレスでWebブラウザからアクセスできる




後はVLAN側へのスタティックルートとWANへのPPPoE設定とダイナミックDNS設定とOpenVPNの設定をやっていこう

2020年5月6日水曜日

Sophos XG FirewallのLAN側IPv6 IPoE(DS-Lite)設定

3月からの在宅勤務が緊急事態宣言の延長で長引きそうなので、自宅回線増強のためIPoE化をすることに

IPoEサービスは国内だと以下2つの種類が存在している

・v6プラス (MAP-E)

・transix (DS-Lite)

どちらもIPv4アドレスを複数ユーザでシェアするためNATセッション数は1,000くらいに制限される上、送信元にウェルノウンポートが利用できないためWebサーバやVPNサーバ等の外部からアクセスするサーバ公開ができなくなる

MAP-Eであれば割り振られたポートを利用するように設定変更すれば無理やりでも方法はあるものの、DS-Liteは網側でNATされているため方法はないみたい

一応両サービスともにIPv4の固定IPアドレスサービスが存在してるものの、実際の提供ISPによってはメニュー化されていない場合がある



今回はXG FirewallがMAP-Eに対応していないので、DS-Liteを利用することにした
(厳密にはDS-Liteも公式に対応情報は出ていない)


今回選んだのはインターリンク社のZOOT NATIVE
ISP契約のみ可能で初期費無料、開通後2か月無料なのと申し込みから小一時間で開通するので試すにはちょうどいい

申し込みには自宅のフレッツ回線の種別とCAF番号、アクセスキーが必要となる
支払方法をクレジットカードにして申し込んだら登録完了メールが届き、実際の開通連絡は1時間半後くらいだった

設定はマニュアルは以下サイトに公開されている
当然XG Firewallは記載がないのでYAMAHAルータのConfig辺りを参考に手探りで頑張る



設定に必要な開通案内の情報はほぼ無いのでXG Firewallに設定を入れていく
尚、IPv6でのInternet通信をする場合はLAN側のIPv6設定も必須なので先に済ませておく

利用するインターフェースは空いてるPortCをWANとして設定する
PortBにはOCNのPPPoE設定が入っているものの、MTU値が異なるので違うNICを利用する方が無難

PPPoEを利用する場合のフレッツ光ネクストのMTUは1454、
IPoEを利用する場合のフレッツ光ネクストのMTUは1500となっている
MTU値が違う場合は読み込みが遅くなったり、そもそも繋がらないこともあるので要注意

ログインして【設定】>【ネットワーク】>【インターフェース】から【PortC】を選択
設定か所は以下
【ネットワークゾーン】 WAN
【IPv4設定】 チェックを外す
【IPv6設定】 チェックを入れる
【IPの割り当て】 DHCP
【モード】 手動 ステートレス DHCPから他の設定を承認にチェック
IPoEの場合は回線認証のためIPv6アドレスは自動でNIC側に設定される
このアドレスを後で使うのでメモしておく


次にDNSの設定
自動取得でも問題はないが、IPv4側がGoogleのpublicDNSを見ているからせっかくなのでIPv6側もGoogleに向けるため手動で設定する
【DNS2】 2001:4860:4860::8888
【DNS2】 2001:4860:4860::8844


次にtransixまでのIPIPトンネルを設定する

同じ【ネットワーク】のタブから【IPIPトンネル】を選択
隠れている場合は右端の【・・・】をクリックすれば出てくる
設定項目は以下5項目
【トンネル名】 IPoE (わかりやすい任意の名前)
【トンネルの種類】 4in6
【ゾーン】 WAN
【ローカルエンドポイント】 WAN側のNICに振られたIPv6アドレス
【リモートエンドポイント】 2404:8e01::feed:100
リモートエンドポイントはtransix側へ接続するためのIPv6アドレスで以下が公開されている

NTT東日本エリアから接続する方
2404:8e00::feed:100
2404:8e00::feed:101

NTT西日本エリアから接続する方
2404:8e01::feed:100
2404:8e01::feed:101


次にInternetの通信をトンネルに向けるためスタティックルートを設定する
上のトンネル設定を保存する際にダイアログボックスが表示されるが、そこでデフォルトルートを入れようとするとエラーになるので一旦消して、改めてやる必要があった
【設定】>【ルーティング】の【スタティックルーティング】からIPv4のルーティングを追加する
設定項目は以下2か所
【宛先IP/ネットマスク】 0.0.0.0 /0 [0.0.0.0]
【インターフェース】 IPoE(プルダウンで作成したトンネルを選択)
とりあえず全てIPIPトンネルに投げてしまえばInternet通信は問題なくできる
他にスタティックで設定を入れている場合はディスタンスの値で調整すればいい


最後にFWの設定を行う
【ルール名】 LAN-Internet (わかりやすいもので任意に)
【送信元ゾーン】 LAN
【送信元ネットワークとデバイス】 任意
【宛先ゾーン】 WAN
【宛先ネットワーク】 任意
【HTTPのスキャン】 チェックを入れる
【侵入防御】 LAN TO WAN
【Webポリシー】 Default Policy
【NAT&ルーティング】 送信元アドレスの書き換え (マスカレード)にチェックを入れる
送信用アドレスの使用】 MASQ(プルダウンで選択)
何故かLAN側をanyにしないとIPv6で通信が通らなかった
また、HTTPSの暗号化解除/スキャンを有効にしても同様に通信が通らないのでとりあえずHTTPのスキャンだけに留めることに

IPoEのIPv6通信はNAPTせず端末にアドレスが設定されるとかの記載をよく見るが、XG FirewallはLAN側にULAでIPv6を設定するためIPv6パススルーに対応していない
そのためNAPTが必須となるが、その分多少なりともセキュリティは強固になるのか

よくIPoEだと外からIPv6アドレスでアクセスできてしまうからポート閉塞などきちんと行う必要があると言われるが、NAPTしていれば明示的に開けない限り入れないので多分大丈夫



設定が完了したら以下サイトで接続確認を行う

IPv4、IPv6ともにInternet Multi Feedのtransixに接続できていることが確認できる
ICMPがNot testedになっているのはNAPTしている影響


回線を切り替えてから体感でもかなり安定した速度が出るようになった気がする
速度判定サイトはサイトによってまちまちだが上下共に100Mbps~400Mbpsくらいの値が出ていた
OCNのPPPoEは100Mbpsを超えることが稀だったのでこれで在宅での業務も安定して使えそうだ


ただ、DDNSでのOpenVPNが利用できなくなったのでそちらの対策は別途検討が必要になった

2020年5月5日火曜日

Sophos XG FirewallのLAN側IPv6アドレス設定(過去記事削除)

以前作成した記事に誤りがあったので削除して再度アップし直し


Sophos XG Firewall Home EditionのLAN側にIPv6の設定を行う
端末への払い出しはステートフル自動設定にて実行する

参考 ステートフル自動設定について


設定するIPv6アドレスは【 ULA(ユニークローカルアドレス)】
RFC4193の内容ではULAではIFのMACアドレスからEUI-64の値を求めて、NTPから求めた値を組み合わせてSHA-1でハッシュ値を求めて下位40bitをfdに追加して利用するとのこと

計算アルゴリズム組もうかとも思ったけど、海外サイトにいいものがあったのでそちらを利用
RFC4193 IPv6 Generator

ここにMACアドレスを入れると自動でULAを計算してくれる
今回は以下の値になった。



早速インターフェースに設定を行う

XG Firewallにログインして【設定】>【ネットワーク】>【インターフェース】から【PortA】を選んで【IPv6設定】のチェックを入れる

設定項目は以下の2か所
【IPの割り当て】  スタティック
【IPv6/プレフィックス】  fdc5:e2b2:b25e:1::1 / 64

IPv6は上記のジェネレータで作成した値の範囲から任意で好きに設定すればいい
見た目わかりやすいように、第4オクテットをVLANと同値にした
他のVLANインターフェースも同様に行う



次にDHCPv6サーバの設定を行う

同じ【ネットワーク】の設定画面のタブから【DHCP】を開いて【サーバ】の【追加】から設定画面を開く
タブで【IPv4】と【IPv6】に分かれているので【IPv6】を選択する
設定は以下4か所
【名前】 VLAN1_DHCPv6(任意の名前)
【インターフェース】 PortA
【ダイナミックIPリース】 ※使わないけど必須なので適当に範囲内の値を入れる
【DNSサーバ】 【デバイスのDNS設定を使用】にチェック

ここで必要なのはDNSの設定だけ
LAN内で使うだけならDHCPサーバの設定自体無くても問題ない
端末への払い出しはステートフル自動設定によって行われるが、払い出し範囲が必須入力なのが少し残念な気がする



最後にRAの設定を行う

同じ【ネットワーク】の設定画面のタブから【IPv6ルータアドバタイズ】を開く
多分表示されていないので右端の【・・・】をクリックしたら項目が現れる

設定項目は以下4か所
【インターフェース】 PortA(プルダウンから選択)
【アザーフラグ〔O Flag〕】 〔HDCPv6から他のパラメータを管理〕にチェック
【デフォルトゲートウェイ】 チェック
【アドバタイズ設定のプレフィックス】fdc5:e2b2:b25e:1::0

M Flagは不要
アドバタイズ設定のプレフィックスにはネットワークアドレスを入力する
ここの値を元に下位64bitのアドレスを端末自身が設定する
他のVLANインターフェースも同様に行う


端末側でv6のアドレスが払い出されているか確認する

※VLAN10のWindows10端末


※VLAN20のAndroid9端末



これで問題なく各VLAN毎にIPv6アドレスの設定が完了した
ひとまずIPv6でLAN内の通信をする予定は無いのでFWの設定は省略する
必要があればVLAN毎に通信可否をFWで設定してやればいい