Hestiaで国別のIP許可やブラックリスト機能が楽すぎ!今までの苦労は何だったんだ…
コントロールパネルの「Hestia」でメールサーバーを立ててみているところです。

「fail2ban」でアタックしてくるIPを弾いているのですが、数が多いのでやはりアクセスしてくるIPアドレスを国別に許可・拒否した方が良いなと考えました。ブラックリストの参照も良さそうです。
ネットを検索してみると今は「IPset」というのを使っている人が多いらしい。iptables で大量のIPアドレスを登録すると重くなってしまうため、IPのリストを IPset で持ち、それに照らし合わせるのが良いとのことです。
で、数時間掛けてやってみました。まずは日本のIPリストの許可を。
- IPset の使い方を調べる
- 日本のIPリストをどこから取得するか決める
- シェルスクリプトを書いてIPリストの取得と更新を自動化(ネット上にあるコードを改善し、アトミックな更新にする)
- Cron に登録
- IPset にはサービスがないので、サービスを自分で作るか他のサービスにコードを足すかして、マシン起動時に作ったリストを読み込むようにする
IPset は小さなソフトウェア(ツール?)ですが、やはり新しいソフトウェアは使い方を調べないといけないので大変です。サービスがないのでマシン起動時にリストを読み込ませるようにするもの大変です。
やってみてできたのでやり方を書こうかなと思っていたのですが、Hestia の Forum を調べていたら IPset の機能がもう組み込まれているらしい…。
早速 Hestia でやってみると1分で設定が終わりました。ほとんどマウスでポチポチするだけですし。
数時間かけた苦労は何だったんだろう…。むなしい…。
ちょっと書いていて不思議なのですが「むなしい」のひらがな4文字を目で見ると変に感じます。「空しい/虚しい」の方がしっくりきますが、漢字だとちょっと読みにくいでしょう。
「まゆしぃ」を思い出しますね。
Hestia で IPset 機能を使う
コントロールパネルを見てみるとそれらしきボタンがあります。「IPリストを管理する」。
うーん、IPset の事だったのか。1つずつIPアドレスを管理する機能かと思っていました。
この機能の場所は、まずは右上にある歯車マークを押し、「ファイヤーウォール」を見ます。
ここにある「IPリストを管理する」から IPset の機能を使えます。
「IPリストを追加」を押します。
「情報源」にある国は少なく、リストに日本はありません。どれでもいいので国を選択するとURLが表示されます。
URLを見ると Hestia では IPVerse というサイトのリストを使っているようです。そちらには日本のIPリストもあるのでアドレスを指定すれば使えそうです。
URLの最後を日本のリストの "jp.zone" に変えます。
自動更新も「はい」なのを確認します。
これでIPリストを作れました。作ったリストを「ファイヤーウォール」のリストに戻って適用します。
適用したいポートのルールを編集します。
「IPアドレス」の部分に、先ほど自分で作ったリストが表示されます。これを選択して保存すれば設定終わりです。
ファイヤーウォールのリストを見てみると「ipset:JP」と表示されています。
凄く楽ですね!
「IPset」の使い方すら調べる必要がありません。
早く教えて欲しかった…。
拒否も楽。ブラックリストもあるよ
上ではファイヤーウォールのルールで「許可」というルールを作りましたが、もちろん「拒否」のルールも作れます。
ブラックリスト方式(deny list)にするのかホワイトリスト方式(allow list)にするのかは事前に考えておきましょう。
他にも、IPリストを作る際に国別では無くて「ブラックリスト」という選択肢があります。公開されているブラックリストをまとめたものです。
みんなが迷惑しているIPアドレスを予め拒否するのは良い方法です。メールサーバーやWEBサーバーなどでは便利です。
私は全部のポートでブラックリストの CIDR を拒否してみています。
ipset でリストを確認してみる。APNICとはやや違う
Hestia での設定はもう完了していますのでこれは行う必要は無いのですが、ipset で Hestia で作られたリストをチェックしてみます。
サーバーで "ipset list" とコマンドを打ちます。
Hestia で作ったリストはこちら。ソースは IPVerse のリスト。
Hestia を使わずに自分で作ったリストはこちら。APNIC のリストから "JP" を抽出して作っています。
少し違いがありますね。
IPVerse のリストは APNIC などで公開されているリストをまとめたもので、2つに分離されているものも1つの CIDR にまとめているようです。
メモリーの使用量も少なくなっていますのでありがたいです。
Hestia は便利
便利ですね、「Hestia」。時間の短縮になります。本当にお勧めです。
Hestia の Forum では iptables & IPset ではなく CSF(ConfigServer Firewall)の方が楽だという情報もあります。気になる人はチェックしてみてください。
