pseudowire

調べたことを書き残す

Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 3518 (unattended-upgr)

Ubuntuでapt updateができない

Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 3518 (unattended-upgr)
sudo lsof /var/lib/dpkg/lock-frontend
ps aux | grep apt

unattended-upgrades とは

自動アップデートを行うパッケージ。 止め方などは以下参照

sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades
Replacing config file /etc/apt/apt.conf.d/20auto-upgrades with new version

聞かれる質問にはNoを選択するらしい marginalia.hatenablog.com

暫定措置

sudo rm /var/lib/apt/lists/lock
sudo rm /var/lib/dpkg/lock
sudo rm /var/lib/dpkg/lock-frontend

marginalia.hatenablog.com

traffic-editorが使えなかったのでHumbleでOpen-RMF環境を再作成

経緯

前回、参考先URLに沿ってFree-Fleetをインストールしたが、Traffic-editorが使えなかったので、環境作成からやり直した。 Humble環境でOpen-RMFをインストール後に、Free-Fleetをインストールする手順で一応、無事に完了したので手順をメモ。 ソースからビルドしようとしていたが2日間くらいハマった。時間がやたらかかるので断念してバイナリインストールの手順に切り替えて実施した。

インストールガイドに沿って手順を進める。

sudo apt update && sudo apt install \
  python3-pip \
  curl \
  python3-colcon-mixin \
  ros-dev-tools \
  -y

sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
wget https://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -

python3 -m pip install flask-socketio fastapi uvicorn

sudo rosdep init # run if first time using rosdep.
rosdep update

colcon mixin add default https://raw.githubusercontent.com/colcon/colcon-mixin-repository/master/index.yaml
colcon mixin update default

「ソースからのビルド」ではなく「バイナリインストール」を選択。

sudo apt update && sudo apt install ros-humble-rmf-dev

mkdir ~/rmf_ws/src -p
cd ~/rmf_ws/src
git clone https://github.com/open-rmf/rmf_demos.git -b 2.0.3
cd ~/rmf_ws
colcon build

Free-Fleetをインストール。

git clone https://github.com/open-rmf/free_fleet -b main
rm -rf ./free_fleet/free_fleet_client_ros2
cd ..
source /opt/ros/humble/setup.bash
rosdep install --from-paths src --ignore-src --rosdistro humble -yr
colcon build --symlink-install  --packages-skip-build-finished --continue-on-error --parallel-workers 4

Troubleshooting_1

ビルド時にこんな感じのエラーが出たら source /opt/ros/humble/setup.bash で解決。

CMake Error at CMakeLists.txt:13 (find_package):
By not providing "Findament_cmake.cmake" in CMAKE_MODULE_PATH this project
has asked CMake to find a package configuration file provided by
"ament_cmake", but CMake did not find one.

Could not find a package configuration file provided by "ament_cmake" with
any of the following names:

ament_cmakeConfig.cmake
ament_cmake-config.cmake
Add the installation prefix of "ament_cmake" to CMAKE_PREFIX_PATH or set
"ament_cmake_DIR" to a directory containing one of the above files. If
"ament_cmake" provides a separate development package or SDK, be sure it
has been installed.

Troubleshooting_2

特定のパッケージのビルドをスキップしたいときは、以下のようにCOLCON_IGNOREファイルを当該Dir直下に作成するとスキップできる。

touch src/ros-visualization/COLCON_IGNORE

Troubleshooting_3

--packages-skip-build-finished:すでにビルド済みのパッケージをスキップしたいとき --parallel-workers 1:CPUが高騰して発熱でシステムが落ちるとき

colcon build --symlink-install  --packages-skip-build-finished --continue-on-error --parallel-workers 1

Ref

github.com

qiita.com

christina04.hatenablog.com

Open-RMFを使って群制御をやってみる

Env

  • Ubuntu 22.04
  • Docker Desktop 4.21.1 (
  • Ubuntu on Docker 20.04
  • ROS2 Foxy

Troubleshooting_1

root@5901057b3d24:~/ff_ros2_ws# rosdep install --from-paths src --ignore-src -y --rosdistro foxy
ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
ff_examples_ros2: Cannot locate rosdep definition for [turtlebot3_navigation2]
ff_examples_ros1: Cannot locate rosdep definition for [catkin]
free_fleet_client_ros1: Cannot locate rosdep definition for [move_base_msgs]
free_fleet_client_ros2: Cannot locate rosdep definition for [nav2_msgs]
free_fleet: Cannot locate rosdep definition for [cyclonedds]
ff_rviz_plugins_ros1: Cannot locate rosdep definition for [roscpp]
root@5901057b3d24:~/ff_ros2_ws# colcon build
Starting >>> free_fleet
Starting >>> rmf_fleet_msgs               
--- stderr: free_fleet                                                                     
CMake Error at CMakeLists.txt:15 (find_package):
  By not providing "FindCycloneDDS.cmake" in CMAKE_MODULE_PATH this project
  has asked CMake to find a package configuration file provided by
  "CycloneDDS", but CMake did not find one.

  Could not find a package configuration file provided by "CycloneDDS" with
  any of the following names:

    CycloneDDSConfig.cmake
    cyclonedds-config.cmake

  Add the installation prefix of "CycloneDDS" to CMAKE_PREFIX_PATH or set
  "CycloneDDS_DIR" to a directory containing one of the above files.  If
  "CycloneDDS" provides a separate development package or SDK, be sure it has
  been installed.
---
Failed   <<< free_fleet [8.85s, exited with code 1]
Aborted  <<< rmf_fleet_msgs [16.7s]                

これで解決。

sudo apt install ros-foxy-rmw-cyclonedds-cpp

Troubleshooting_2

EOLのROSの依存関係をアップデートする場合のコマンド。

rosdep update --include-eol-distros

Troubleshooting_3

root@5901057b3d24:~/ff_ros2_ws# colcon build

Starting >>> free_fleet_client_ros2
--- stderr: free_fleet_client_ros2                                                                                    
CMake Error at CMakeLists.txt:34 (find_package):
  By not providing "Findnav2_util.cmake" in CMAKE_MODULE_PATH this project
  has asked CMake to find a package configuration file provided by
  "nav2_util", but CMake did not find one.

  Could not find a package configuration file provided by "nav2_util" with
  any of the following names:

    nav2_utilConfig.cmake
    nav2_util-config.cmake

  Add the installation prefix of "nav2_util" to CMAKE_PREFIX_PATH or set
  "nav2_util_DIR" to a directory containing one of the above files.  If
  "nav2_util" provides a separate development package or SDK, be sure it has
  been installed.

---
Failed   <<< free_fleet_client_ros2 [23.0s, exited with code 1]
Aborted  <<< rmf_door_msgs [2min 25s]                                         

これで解決。

 sudo apt install ros-foxy-navigation2

Troubleshooting_4

サーバ機能のみ使いたいので、不要なものは削除。

root@5901057b3d24:~/ff_ros2_ws/src# rm -rf ./free_fleet/free_fleet_client_ros1
root@5901057b3d24:~/ff_ros2_ws/src# rm -rf ./free_fleet/free_fleet_client_ros2

Ref

github.com

qiita.com

Docker環境上でROS2 Humble+TB3のGazeboシミュレーションする

まだ検証中なので、参考サイトやメモを残すだけ。 あとで内容をまとめるつもり。

Troubleshooting_1

mkdir -p ~/turtlebot3_ws/src
cd ~/turtlebot3_ws/src/
git clone -b humble-devel https://github.com/ROBOTIS-GIT/DynamixelSDK.git
git clone -b humble-devel https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
git clone -b humble-jp-devel https://github.com/ROBOTIS-JAPAN-GIT/turtlebot3_jp_custom.git
cd ~/turtlebot3_ws
colcon build --symlink-install

ここでエラー発生。

root@1d491d21ae70:~/turtlebot3_ws# colcon build --symlink-install
Starting >>> dynamixel_sdk
Starting >>> turtlebot3_msgs
--- stderr: dynamixel_sdk                                                                     
CMake Error at CMakeLists.txt:18 (find_package):
  By not providing "Findament_cmake.cmake" in CMAKE_MODULE_PATH this project
  has asked CMake to find a package configuration file provided by
  "ament_cmake", but CMake did not find one.

  Could not find a package configuration file provided by "ament_cmake" with
  any of the following names:

    ament_cmakeConfig.cmake
    ament_cmake-config.cmake

  Add the installation prefix of "ament_cmake" to CMAKE_PREFIX_PATH or set
  "ament_cmake_DIR" to a directory containing one of the above files.  If
  "ament_cmake" provides a separate development package or SDK, be sure it
  has been installed.


---
Failed   <<< dynamixel_sdk [0.33s, exited with code 1]
Aborted  <<< turtlebot3_msgs [0.27s]

Summary: 0 packages finished [1.04s]
  1 package failed: dynamixel_sdk
  1 package aborted: turtlebot3_msgs
  2 packages had stderr output: dynamixel_sdk turtlebot3_msgs
  10 packages not processed

以下を参考にして、ひとまず解決。 https://github.com/ros2/ros2/issues/710

source /opt/ros/humble/setup.bash 

Troubleshooting_2

Finished <<< turtlebot3_navigation2 [1.41s]                                                                          
Starting >>> turtlebot3_teleop
--- stderr: turtlebot3_teleop                                                                             
/usr/lib/python3/dist-packages/setuptools/command/easy_install.py:158: EasyInstallDeprecationWarning: easy_install command is deprecated. Use build and pip and other standards-based tools.
  warnings.warn(
/usr/lib/python3/dist-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
  warnings.warn(
/usr/lib/python3/dist-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: 1.16.0-unknown is an invalid version and will not be supported in a future release
  warnings.warn(
/usr/lib/python3/dist-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: 1.1build1 is an invalid version and will not be supported in a future release
  warnings.warn(
---
Finished <<< turtlebot3_teleop [10.6s]
Starting >>> turtlebot3_example                                   
--- stderr: turtlebot3_example                                                                             
/usr/lib/python3/dist-packages/setuptools/command/easy_install.py:158: EasyInstallDeprecationWarning: easy_install command is deprecated. Use build and pip and other standards-based tools.
  warnings.warn(
/usr/lib/python3/dist-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
  warnings.warn(
/usr/lib/python3/dist-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: 1.16.0-unknown is an invalid version and will not be supported in a future release
  warnings.warn(
/usr/lib/python3/dist-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: 1.1build1 is an invalid version and will not be supported in a future release
  warnings.warn(
---
Finished <<< turtlebot3_example [13.3s]

これで解決。 https://zenn.dev/tasada038/articles/f2f5b500cdc36a

pip install setuptools==58.2.0

Troubleshooting_3

cd ~/turtlebot3_ws/src/
git clone -b humble-jp-devel https://github.com/ROBOTIS-JAPAN-GIT/turtlebot3_simulations_jp_custom
git clone https://github.com/robotics-upo/lightsfm
cd lightsfm
make
sudo make install
cd ~/turtlebot3_ws
colcon build --symlink-install

これをやったらこうなった。

[Processing: turtlebot3_gazebo]                                         
[Processing: turtlebot3_gazebo]                                         
--- stderr: turtlebot3_gazebo                                            
CMake Warning (dev) at /usr/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:438 (message):
  The package name passed to `find_package_handle_standard_args` (PkgConfig)
  does not match the name of the calling package (gazebo).  This can lead to
  problems in calling code that expects `find_package` result variables
  (e.g., `_FOUND`) to follow a certain pattern.
Call Stack (most recent call first):
  /usr/share/cmake-3.22/Modules/FindPkgConfig.cmake:99 (find_package_handle_standard_args)
  /usr/lib/x86_64-linux-gnu/cmake/gazebo/gazebo-config.cmake:72 (include)
  CMakeLists.txt:23 (find_package)
This warning is for project developers.  Use -Wno-dev to suppress it.

/root/turtlebot3_ws/src/turtlebot3_simulations_jp_custom/turtlebot3_gazebo/src/infinite_corridor_sfm_plugin.cpp: In member function ‘virtual void gazebo::InfiniteCorridorSFMPlugin::Reset()’:
/root/turtlebot3_ws/src/turtlebot3_simulations_jp_custom/turtlebot3_gazebo/src/infinite_corridor_sfm_plugin.cpp:283:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<ignition::math::v6::Vector3<double> >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
  283 |     for (int i = 0; i < goals.size(); i++) {
      |                     ~~^~~~~~~~~~~~~~
---
Finished <<< turtlebot3_gazebo [7min 21s]
Starting >>> turtlebot3_simulations
Finished <<< turtlebot3_simulations [5.17s]                          
                             
Summary: 19 packages finished [7min 50s]
  1 package had stderr output: turtlebot3_gazebo
root@1d491d21ae70:~/turtlebot3_ws# 

こちらを参考に修正。 https://memoteki.net/archives/7187

vi /root/turtlebot3_ws/src/turtlebot3_simulations_jp_custom/turtlebot3_gazebo/CMakeLists.txt 

-find_package(gazebo REQUIRED)
+find_package(gazebo_ros REQUIRED)

Troubleshooting_4

今回利用させていただいたDockerイメージでは、VNCからターミナルを開くとRootでログインできない。 また、ROSのワークスペースが /root配下にあるため、source ~/turtlebot3_ws/install/setup.bash を実行できない。 VSCodeでこのDockerにShellをアタッチするとRootでログインできるので、ここでRootパスワードを変更した。

sudo passwd root

Troubleshooting_5

ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py

これをやったら、こうなった。

root@1d491d21ae70:~# ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py
[INFO] [launch]: All log files can be found below /root/.ros/log/2023-08-02-00-58-41-294663-1d491d21ae70-4888
[INFO] [launch]: Default logging verbosity is set to INFO
urdf_file_name : turtlebot3_big_wheel.urdf.xacro
urdf_file_name : turtlebot3_big_wheel.urdf.xacro
[ERROR] [launch]: Caught exception in launch (see debug for traceback): 
executed command failed. Command: xacro /root/turtlebot3_ws/install/turtlebot3_description/share/turtlebot3_description/urdf/turtlebot3_big_wheel.urdf.xacro
Captured stderr output: error: environment variable 'LDS_MODEL' is not set 
when evaluating expression 'lds_model=='LDS-01''
when processing file: /root/turtlebot3_ws/install/turtlebot3_description/share/turtlebot3_description/urdf/turtlebot3_big_wheel.gazebo.xacro
included from: /root/turtlebot3_ws/install/turtlebot3_description/share/turtlebot3_description/urdf/turtlebot3_big_wheel.urdf.xacro

こちらを参考に解決。

https://blog.csdn.net/weixin_45365549/article/details/127225258

export LDS_MODEL=LDS-01

Troubleshooting_6

ubuntu@1d491d21ae70:/$ gazebo
ALSA lib confmisc.c:855:(parse_card) cannot find card '0'
ALSA lib conf.c:5178:(_snd_config_evaluate) function snd_func_card_inum returned error: No such file or directory
ALSA lib confmisc.c:422:(snd_func_concat) error evaluating strings
ALSA lib conf.c:5178:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1334:(snd_func_refer) error evaluating name
ALSA lib conf.c:5178:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5701:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2664:(snd_pcm_open_noupdate) Unknown PCM default
AL lib: (EE) ALCplaybackAlsa_open: Could not open playback device 'default': No such file or directory

これで解決。 https://waregawa-log.hatenablog.com/entry/2020/10/10/234148

root@1d491d21ae70:/# vi /usr/share/alsa/alsa.conf

pcm.!default {
    type plug
    slave.pcm "null"
}

Troubleshooting_7

root@1d491d21ae70:~# ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py
[ERROR] [gzclient-2]: process has died [pid 18100, exit code -6, cmd 'gzclient'].

権限の問題っぽいので、

chmod 777 /root 

をしたうえで、Rootを抜けて一般ユーザでturtlebot3_wsに移動して、

export TURTLEBOT3_MODEL=burger
source /root/turtlebot3_ws/install/setup.bash

をやってからリトライしたら正常にGazeboが起動した。 同様の手順をほかのTerminalでも実行したところ、正常にTeleopできた。

Ref

memoteki.net

note.com

zenn.dev

qiita.com

answers.ros.org

docker上でGrafanaとZabbixを連携

ZabbixとGrafanaを連携させようとしてハマったポイント

  • コンテナ起動時に再起動を繰り返す
  • doccker logs [container id]
mkdir: can't create directory '/var/lib/grafana/plugins': Permission denied
  • 解決策: user: “$PID:$GID

  • docker-compose.yml

version: "3"
services:
  grafana-zabbix:
    image: grafana/grafana:latest
    container_name: grafana
    hostname: grafana
    ports:
      - 3000:3000
    volumes:
      - ./data/grafana:/var/lib/grafana
    user: "$PID:$GID"
    environment:
      - GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource,alexanderzobnin-zabbix-app
    restart: always
  • APIトークンを探す必要性 API連携ということで、トークン生成方法を探して試すも、root権限問題で挫折。 結果的に、APIトークンを発行するのではなく、普通に以下でOK。
http://[zabbixのIP]:8080/api_jsonrpc.php

なお、PWとIDは「Zabbix API details」のところに入力すればよく、特に「Auth」でBasicなどを選択して入力する必要はなかった。

Ref

qiita.com

kobe-systemdesign.work

wisdomtrees.net

qiita.com

qiita.com

github.com

ネットワークセキュリティメッシュについてChatGPTに聞いてみた

ネットワークセキュリティメッシュとゼロトラストネットワークの違いはなに?

ネットワークセキュリティメッシュ(Network Security Mesh)は、ネットワーク内の各コンポーネントやサービスにセキュリティ機能を組み込むアプローチです。ネットワーク内のエンドポイントやサーバーにセキュリティ機能を配置し、データの流れや通信パターンを監視・制御します。このアプローチでは、ネットワーク内の各コンポーネントがセキュリティの責任を持ち、統合的なセキュリティを提供します。

一方、ゼロトラストネットワーク(Zero Trust Network)は、信頼性を前提とせず、すべてのネットワーク通信を厳密に検証するセキュリティモデルです。ゼロトラストの考え方では、ネットワーク内のユーザーやデバイスが自動的に信頼されるわけではなく、ユーザーの認証、エンドポイントのセキュリティ評価、トラフィックの暗号化などの厳格なセキュリティ制御を行います。このアプローチにより、ユーザーがネットワークに接続している限り、常に検証とアクセス制御が行われます。

ネットワークセキュリティメッシュと多層防御の違いはなに?

簡潔に言えば、ネットワークセキュリティメッシュはネットワーク内のコンポーネントにセキュリティ機能を組み込むアプローチであり、多層防御は複数のセキュリティ対策を重ねるアプローチです。ネットワークセキュリティメッシュはネットワーク内の統合的なセキュリティを強化するために使用され、多層防御は攻撃者の侵入を防ぐために複数のセキュリティレイヤーを組み合わせるために使用されます。

上記の違いの観点を踏まえて、ネットワークセキュリティメッシュの実現方法を、より具体的に述べよ

  • エンドポイントセキュリティ

  • アプリケーションセキュリティ:アプリケーションレベルのセキュリティ機能や認証・認可

  • マイクロセグメンテーション

  • サービスメッシュ:NW内のマイクロサービスやコンテナ環境におけるサービス間通信へのセキュリティ機能の組み込み
  • それって結局、異なるレイヤーでセキュリティ対策してるってことになるんじゃないの?

    ネットワークセキュリティメッシュはネットワーク内のコンポーネントにセキュリティ機能を組み込んで統合的なセキュリティを提供し、多層防御は異なるレイヤーに複数のセキュリティ対策を組み合わせて攻撃を防ぎます。

    アプローチやコンセプトが違うとしても、結局やることは一緒なんでしょ?

    ご指摘いただいた通り、ネットワークセキュリティメッシュと多層防御は、セキュリティを強化するために共通の目標を持っており、同様のセキュリティ対策を実施する場合もあります。 両者の違いは、アプローチやコンセプトにあります。 ただし、結果として実施されるセキュリティ対策は一部共通しているかもしれません。例えば、エンドポイントセキュリティやファイアウォール、侵入検知システム、アンチウイルスソフトウェア、パッチ管理などは、両方のアプローチで一般的に使用されるセキュリティ対策です。

    共通していないものはなに?

    セキュリティ制御の範囲: ネットワークセキュリティメッシュでは、ネットワーク内のコンポーネント間の通信やデータの流れに対するセキュリティ制御を重視します。一方、多層防御では、エンドポイントからネットワーク全体まで、幅広い範囲でセキュリティ対策を展開します。

    上記を踏まえて、アプローチやコンセプトの違い以外で、ネットワークセキュリティメッシュ独自の実装方法はなに?

  • マイクロサービスアーキテクチャへの適用:マイクロサービスアーキテクチャやコンテナ化された環境に特に適しています。

  • サイドカーコンテナの使用:サイドカーコンテナと呼ばれる追加のコンテナをネットワーク内の各サービスにデプロイしてトラフィックの監視や制御を担当します。代表的なサイドカーコンテナとしては、EnvoyやLinkerdがあります。

  • プロキシベースのセキュリティ制御

  • 動的な構成管理: ネットワークセキュリティメッシュでは、セキュリティポリシーやルールの管理を動的に行うことができます。
  • どのように動的にルールやポリシーを変更するの?

  • セキュリティメッシュコントロールプレーンの使用:ルールの適用や変更を制御し、ネットワーク内のコンポーネントにポリシーを伝達します。

  • APIやコンソールを介した管理:管理用APIや管理コンソールを利用して、ルールやポリシーを動的に変更します。APIを介してプログラムで変更を行うことも可能です。

  • 自動化とオーケストレーション:変更のトリガーとなるイベントや条件を設定し、必要な変更を自動的に反映させることができます。

  • コンテキストに基づくポリシーの適用:コンテキスト情報(ユーザー、デバイス、場所など)に基づいてポリシーを適用することが可能です。
  • セキュリティメッシュにAIはどのように関係している?

  • セキュリティ分析と検知:機械学習ディープラーニングの手法を使用して、ネットワークトラフィックやログデータを監視し、異常なパターンや攻撃シグネチャを検出することが可能です

  • 自動化とオーケストレーション:自己学習や自己修復の機能を組み込むことで、状況や攻撃の変化に適応し、自動的にポリシーを調整したり、攻撃への対応を行ったりすることが可能です。

  • 脅威インテリジェンスと予測分析:AIによるデータ解析やパターン認識により、新たな脅威や攻撃手法を早期に検知し、適切な対策を講じることができます。

  • 自己学習と適応性:通常のトラフィックと異常な振る舞いを区別し、未知の攻撃やマルウェアに対しても効果的な防御を行うことができます。
  • 自己修復とはどのようなテクノロジー

  • オートリカバリー: 自己修復の一つのアプローチは、システムが障害や攻撃に遭った場合に自動的に回復する能力を持つことです。例えば、障害が発生した場合にシステムが自動的にバックアップから復元する、攻撃が検出された場合に攻撃元をブロックするなどのオートリカバリー機能があります。

  • セルフヒーリング: セルフヒーリングは、システムが自身の状態や構成を監視し、問題を検出して自動的に修復する能力です。セキュリティメッシュにおいては、サイドカーコンテナやプロキシを使用して、ネットワークトラフィックの監視やセキュリティポリシーの適用を行い、問題が検出された場合に自動的に対応することができます。

  • ダイナミックポリシーアップデート: 自己修復の一つの手法は、システムのポリシーやルールを動的に更新することです。セキュリティメッシュでは、攻撃の検出やセキュリティインテリジェンスの収集に基づいて、ポリシーやルールをリアルタイムで変更し、セキュリティの強化や脅威への対応を行います。
  • セルフヒーリングは具体的にどのようなコンポーネントによって実現される?

  • サイドカーコンテナ: セルフヒーリングの一つのアプローチは、ネットワーク内の各サービスにデプロイされるサイドカーコンテナです。サイドカーコンテナは、トラフィックの監視や制御、セキュリティ機能の提供を担当します。障害や攻撃の検出を行い、必要に応じて自動的にサービスの再起動やリカバリーを行うことができます。

  • ヘルスチェック: セルフヒーリングを実現するためには、各サービスのヘルスチェックが重要です。ヘルスチェックは、サービスが正常に動作しているかどうかを監視するための機能です。ヘルスチェックには、ネットワークトラフィックの可用性や応答時間、エラーレートなどを監視することが含まれます。ヘルスチェックによって、異常な状態が検出された場合に自己修復措置がトリガーされます。

  • オーケストレーションフレームワーク: セルフヒーリングを実現するためには、オーケストレーションフレームワークが使用されることがあります。オーケストレーションフレームワークは、システムの自動化や制御を担当し、サービスのデプロイ、監視、スケーリング、再起動などの操作を自動化します。障害や攻撃の検出を受けて、オーケストレーションフレームワークが自動的に必要な処理をトリガーします。

  • 監視ツールとログ分析: セルフヒーリングには、ネットワークトラフィックやシステムの監視が不可欠です。監視ツールやログ分析ツールを使用して、ネットワークやサービスの状態をリアルタイムで監視し、異常なパターンやエラーを検出します。これによって、自己修復が必要な場合に迅速に対応することができます。
  • Envoy、Linkerd、Trivy。ほかにも面白いものはある?

  • Falco: Falcoは、ランタイムセキュリティのためのオープンソースのプロジェクトであり、コンテナやオーケストレーション環境での異常な活動や侵入を検出するために使用されます。Falcoは、カーネルシステムコールのトレースとイベント監視を組み合わせて、リアルタイムのセキュリティ監視を提供します。

  • Open Policy Agent (OPA): OPAは、クラウドネイティブ環境でのアクセス制御ポリシーを管理するためのフレームワークです。OPAは、柔軟なポリシーの定義と評価を可能にし、APIリクエストの承認やアクセス制御などのタスクを処理します。クラウドネイティブなアプリケーションやマイクロサービスにおいて、セキュリティポリシーの統一的な管理に役立ちます。

  • Zeek (旧称: Bro): Zeekは、ネットワークトラフィックの監視、分析、セキュリティイベントの検出に使用される強力なネットワークセキュリティモニタリングツールです。Zeekは、パケットキャプチャとプロトコル解析を組み合わせて、ネットワーク上での様々なセキュリティイベントや攻撃を検出し、詳細なログやレポートを生成します。

  • Wazuh: Wazuhは、セキュリティイベント管理および脅威検出のためのオープンソースプロジェクトです。Wazuhは、ホストベースの侵入検知システム(HIDS)とセキュリティ情報およびイベント管理(SIEM)を統合し、リアルタイムのセキュリティモニタリング、ログ解析、脅威インテリジェンスを提供します。
  • オープンソースのUEBAってなにがある?

  • Apache Metron: Apache Metronは、大量のデータをリアルタイムで収集し、異常なユーザーやエンティティの振る舞いを検出するためのオープンソースのUEBAプラットフォームです。Metronは、ログデータ、ネットワークトラフィック、セキュリティイベントなどからデータを収集し、機械学習やリアルタイムのルールエンジンを使用して異常な活動を検知します。

  • Wazuh: 先ほども言及したWazuhは、セキュリティイベント管理や侵入検知だけでなく、ユーザーやエンティティの振る舞い分析にも利用できるオープンソースのプロジェクトです。Wazuhは、ログやイベントデータを収集し、異常なユーザーのアクティビティや振る舞いを検知するためのルールベースのエンジンを提供します。

  • MLflow: MLflowは、機械学習のライフサイクルを管理するためのオープンソースプラットフォームであり、UEBAにも活用できます。MLflowは、モデルのトレーニング、追跡、デプロイ、モデルのバージョン管理などをサポートし、異常検出などのユーザーやエンティティの振る舞いを予測するためのモデル開発に役立ちます。
  • おわり

    結局、ESXi上でSelenium実行環境を動かすことにした

    ラズパイ非力、、、 GCP(AlwaysFree枠内)非力、、、

    時間かかって処理が間に合わないので、ESXiにUbuntu22.04構築。 もはやDockerをインストールする気力も湧かないので、 ダイレクトにSelenium実行環境を構築した。

    後日譚

    さらに結局、ESXiをアンインストして、ホストOSとしてUbuntu22.04をインスト。 その上でDockerを動かす形で、新しく仮想環境を作り直した。

    • ESXi 6.7が60日間の期限切れ
    • ESXi 6.7の無償版ライセンス発行画面が消滅
    • ESXi 7.0では自分のサーバが使っているRealtekNICがサポートされなくなっていた
    • そもそも個人利用なら、もうESXiいらなくない?

    参考サイト

    zenn.dev