My Home NW Lab

逸般の誤家庭のネットワーク

【サポート対象外】ThousandEyes Virtual Appliance (TE VA)での sudo コマンドの制限緩和

本記事の内容はサポート対象外になる内容を含んでいます。

ThousandEyes Virtual Appliance (TE VA)では sudo コマンドを介して実行可能なLinuxコマンドが制限されています。 ですが、te-va-unlock パッケージを導入すると Unlocked のステータスとなって サポート対象外にはなりますが sudo コマンドの制限が緩和されます。

強調しますが、sudo コマンドの制限緩和はサポート対象外になるため注意してください。

docs.thousandeyes.com

NOTE: Changes which require unlocking the Virtual Appliance will not be supported by ThousandEyes. A Virtual Appliance which becomes inaccessible, unstable or otherwise unusable after such changes will require reinstallation of the Virtual Appliance.

サポート対象外になるのを踏まえると、現実的な活用方法としては検証目的でThousandEyes Virtual Applianceの内部的な挙動を追って確かめるような用途になると想定されます。

設定方法

設定方法はThousandEyes Virtual Appliance (TE VA)に Username: thousandeyesSSH接続して、te-va-unlock パッケージの導入します。

sudo apt-get update
sudo apt-get install te-va-unlock

SSH接続は公開鍵認証となって一手間かかるため、未設定の方は下記の記事を参考にしてください。

myhomenwlab.hatenablog.com

Unlocked 状態の確認

te-va-unlock パッケージを導入すると、Virtual ApplianceのWeb UI上に Unlocked のロゴが表示されるようになります。

Virtual ApplianceのWeb UI上の Unlocked 表示

ThousandEyes Portal上では Installation Type の括弧書きの中に Unlocked と表示されます。

ThousandEyes Portal上の Unlocked 表示

補足情報: te-va-unlock パッケージの中身

te-va-unlock パッケージをインストールすると、sudo コマンドの設定ファイルである /etc/sudoers.d/te-va-sudoers が展開されます。

thousandeyes@thousandeyes-va:~$ dpkg -L te-va-unlock
/.
/etc
/etc/sudoers.d
/tmp
/tmp/.te-va-sudoers-unlocked
thousandeyes@thousandeyes-va:~$

設定ファイルには Username: thousandeyes がパスワード入力なしで sudo コマンドを実行可能となる設定が施されています。

thousandeyes@thousandeyes-va:~$ sudo cat /etc/sudoers.d/te-va-sudoers
thousandeyes ALL=(ALL) NOPASSWD: ALL
thousandeyes@thousandeyes-va:~$

なお、/etc/sudoers.d/te-va-sudoers ファイル自体は元々存在しており、te-va-unlock パッケージの導入に際して上書きされてました。(ファイルのタイム スタンプがOVAデプロイ日時より過去に遡っていました。)

thousandeyes@thousandeyes-va:~$ ls -l /etc/sudoers.d/
total 12
-r--r----- 1 root root  958 Jan 18  2018 README
-r--r----- 1 root root 2081 Dec  7 18:03 te-va-sudoers
-r--r----- 1 root root   83 Dec  8 22:25 tools
thousandeyes@thousandeyes-va:~$
thousandeyes@thousandeyes-va:~$ sudo apt-get install te-va-unlock
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
  te-va-unlock
0 upgraded, 1 newly installed, 0 to remove and 7 not upgraded.
Need to get 952 B of archives.
After this operation, 0 B of additional disk space will be used.
Get:1 https://apt.thousandeyes.com bionic/main amd64 te-va-unlock all 0.182-1~bionic [952 B]
Fetched 952 B in 1s (1,357 B/s)
Selecting previously unselected package te-va-unlock.
(Reading database ... 45765 files and directories currently installed.)
Preparing to unpack .../te-va-unlock_0.182-1~bionic_all.deb ...
Unpacking te-va-unlock (0.182-1~bionic) ...
Setting up te-va-unlock (0.182-1~bionic) ...
thousandeyes@thousandeyes-va:~$
thousandeyes@thousandeyes-va:~$ ls -l /etc/sudoers.d/
total 12
-r--r----- 1 root root 958 Jan 18  2018 README
-r--r----- 1 root root  37 Apr  7  2020 te-va-sudoers
-r--r----- 1 root root  83 Dec  8 22:25 tools
thousandeyes@thousandeyes-va:~$

更にOVAファイルを展開して元々 (上書き前のオリジナル)/etc/sudoers.d/te-va-sudoers ファイルの情報を追うと、下記のようになっておりました。

# All the shutdown commands (consider enabling in the future)
# Cmnd_Alias SHUTDOWN_CMDS = /sbin/shutdown, /sbin/reboot, /sbin/halt

# Service start/stop/restart commands for te- services
Cmnd_Alias TE_VA_SERVICE_CMDS = /bin/systemctl start te-va, /bin/systemctl stop te-va, /bin/systemctl restart te-va, /bin/systemctl status te-va
Cmnd_Alias TE_AGENT_SERVICE_CMDS = /bin/systemctl start te-agent, /bin/systemctl stop te-agent, /bin/systemctl restart te-agent, /bin/systemctl status te-agent
Cmnd_Alias TE_BROWSERBOT_SERVICE_CMDS = /bin/systemctl start te-browserbot, /bin/systemctl stop te-browserbot, /bin/systemctl restart te-browserbot, /bin/systemctl status te-browserbot
Cmnd_Alias TE_OS_SERVICE_CMDS = /sbin/reboot, sudoedit /etc/hosts, /usr/bin/dig, /usr/bin/lsof
Cmnd_Alias TE_SERVICE_CMDS = TE_VA_SERVICE_CMDS, TE_AGENT_SERVICE_CMDS, \
                             TE_BROWSERBOT_SERVICE_CMDS, TE_OS_SERVICE_CMDS

# te-agent-utils
# /usr/local/bin should be removed once the packages are updated to /usr/bin
Cmnd_Alias TE_AGENT_UTILS_CMDS = /usr/bin/te-*, \
                                 /usr/local/bin/te-*, \
                                 /usr/local/sbin/te-*

# apt-get install commands for te- services
Cmnd_Alias APT_GET_INSTALL_CMDS = /usr/bin/apt-get update, \
                                  /usr/bin/apt-get install te-agent, \
                                  /usr/bin/apt-get install te-browserbot, \
                                  /usr/bin/apt-get install te-va, \
                                  /usr/bin/apt-get install te-pa, \
                                  /usr/bin/apt-get install te-va-unlock, \
                                  /usr/bin/apt-get install te-intl-fonts, \
                                  /usr/bin/apt-get install te-agent-utils, \
                                  /usr/bin/apt-get install ntpdate, \
                                  /usr/bin/apt-cache

thousandeyes ALL=(ALL) NOPASSWD: TE_SERVICE_CMDS, \
                                 APT_GET_INSTALL_CMDS, \
                                 TE_AGENT_UTILS_CMDS

以上の情報より、元々の設定ファイルではThousandEyesの運用に必要なコマンドに絞られており、パッケージの導入を契機にして制限緩和用の設定情報で上書きしたのが分かります。