
このプログラムは、IPブラックリストを集中管理および配布するためのものです。
インターネット上でサーバーを運用している場合、1つ以上のブルートフォース攻撃に遭遇する可能性は非常に高いでしょう。問題ありません。fail2banをインストールすれば完了です。
しかし、複数のサーバーを運用していて、それぞれが独自のfail2banインスタンスを実行している場合、各サーバーのBanリストには異なるIPアドレスが含まれます。すべてのfail2banインスタンスで共有のBanリストがあれば便利ではないでしょうか? また、すべてのマシンが自分で管理するルーターやファイアウォールの背後にある場合、悪意のあるトラフィックをネットワークの境界で遮断できれば便利ではないでしょうか?
それがまさにvallumdが実現するものです。
VallumdはMQTTブローカーに接続し、IPアドレスを含むメッセージを読み取り、そのIPアドレスをipsetに追加または削除します。単純明快です。
つまり、これ単体では役に立ちませんが、vallumdを非常に柔軟にします。ipsetを参照するiptablesルールの種類は自分で決めることができます。fail2banとの統合は、mosquitto_pubを使用してMQTTブローカーにメッセージを送信する新しいアクションを作成するだけです。また、ほとんどの主要言語向けにMQTTライブラリが存在するため、お気に入りのIDS、IPS、またはHoneypotとの統合もそれほど難しくはありません。
「vallumd」という名前は、ラテン語の「vallum」(壁)に由来します。そして、それがvallumdの役割です。デジタル帝国を守るための壁を構築します。
パッケージをインストールする最も良い方法は、ディストリビューションのパッケージ管理システムを使用することです。ただし、このプロジェクトは非常に新しいため、まだ多くのディストリビューションに含まれていません。
gitのmasterブランチを追跡するパッケージがAURで利用可能です。
EPELリポジトリが有効になっていることを確認してください。
sudo yum -y install cmake3 ipset-devel mosquitto-devel openssl-devel pkgconfig '@Development Tools'
cpackを使用してRPMパッケージを生成できます。
git clone https://codeberg.org/stintel/vallumd.git
cd vallumd
cmake3 .
cpack3 -G RPM
sudo yum -y localinstall build/*.rpm
CentOS 7でビルドテスト済み。
cpackを使用してDEBパッケージを生成できます。
sudo apt-get -y install build-essential cmake file libipset-dev libmosquitto-dev libssl-dev pkg-config
git clone https://codeberg.org/stintel/vallumd.git
cd vallumd
cmake .
cpack -G DEB
sudo dpkg -i build/*.deb
Debian 10, 11, 12, 13およびUbuntu 18.04, 20.04, 22.04, 24.04でビルドテスト済み。
私のGentoo overlayにvallumdのライブebuildがあります。
OpenWrt DDスナップショットまたはLEDEを実行している場合、vallumdはパッケージフィードで利用可能であり、opkgでインストールできます。
opkg update
opkg install vallumd
手動インストールは非常に簡単です。 必要なもの:
手順:
git clone https://codeberg.org/stintel/vallumd.git
cd vallumd
cmake .
make
make install
vallumdを使用するには、MosquittoなどのMQTTブローカーが必要です。セットアップによっては、vallumdを実行しているのと同じホストで実行することもできますが、必須ではありません。
次に必要なのはIPsetです。IPsetのタイプとそのオプションを完全に制御できるようにするため、vallumd自身はIPsetを作成しません。以下のIPsetタイプから選択できます。
IPset作成例:
ipset create blacklist hash:ip timeout 3600
これでvallumdを起動できます。以下のコマンドラインオプションがあります。
-h: 接続先のMQTTホスト
-p: 接続先のMQTTポート (1883)
-u: MQTTユーザー名
-P: MQTTパスワード
-t: MQTTトピック名とIPset名
-V: バージョン番号を表示して終了
-c: CAファイルへのパス
-T: TLSを使用する
ホストとトピックのオプションは必須で、その他はオプションです(デフォルト値)。複数のトピックを指定することが可能です。
vallumdの起動:
vallumd -h 192.168.0.1 -t blacklist
これにより、MQTTブローカー192.168.0.1のblacklistトピックでメッセージをリッスンし、メッセージを受信すると、そのメッセージ内のIPアドレスがblacklistという名前のIPsetに追加または削除されます。
これで、ブラックリストにIPを追加する準備が整いました。あとは、IDS、IPS、またはHoneypotが悪意のあるIPアドレスをMQTTブローカーに送信するように設定するだけです。
fail2banの場合、これはMosquittoクライアントmosquitto_pubを使用して行えます。/etc/fail2ban/action.d/vallumd.confに新しいアクションを作成します。
[Definition]
actionban = mosquitto_pub -h 192.168.0.1 -q 2 -t blacklist/add -m <ip>
actionunban = mosquitto_pub -h 192.168.0.1 -q 2 -t blacklist/del -m <ip>
そして、fail2banのjailがvallumdアクションを使用するように設定します。
CPackで生成されたパッケージは、OpenRC、Upstart、およびsystemdをサポートしています。サービス設定ファイルは、各ディストリビューションで予想される場所に配置されます。
該当するディストリビューションのファイルを編集した後、システム上の他のサービスと同様にvallumdサービスを起動してください。
Vallumdはsyslog(3)をログに使用します。