【CentOS Stream 9】firewalldでブラックリストを作る

この記事は約5分で読めます。

CentOS Stream 9を使ってIPアドレスのブラックリストを登録する方法についての覚え書きです。

ipsetを作る

blacklistというipsetを作る

まず、blacklistという名前の新しいipsetを作ります。

Bash
firewall-cmd --permanent --new-ipset=blacklist --type=hash:ip

ルールを設定する

firewall-cmdでは、いずれのオプションでも–permanentを付けないとリロード時に設定が消えてしまうので注意が必要です。
また、blacklistに該当するIPアドレスからの通信を遮断するために、次のようにルールを設定します。

Bash
firewall-cmd --permanent --zone=public --add-rich-rule='rule source ipset=blacklist drop'

firewalldをリロードする

blacklistをすぐ使用可能にするためにfirewalldをリロードします。

Bash
firewall-cmd --reload

ルールが設定されていることを確認します。

Bash
firewall-cmd --list-all
public (active)
target: default
:

途中省略

:
rich rules:
      rule source ipset="blacklist" drop

ブラックリストを登録する

blacklistファイルを作成する

あらかじめblacklistという名前で空ファイルを作成します。

Bash
vi /etc/firewalld/blacklist

:wq    //保存して終了

エントリを追加する

1つずつ登録するには、次のコマンドを用いてエントリを追加します。
サブネットも使うことができます。

Bash
firewall-cmd --permanent --ipset=blacklist --add-entry=xxx.xxx.xxx.0/24

ファイルから読み込む

/etc/firewalld/blacklistファイルに1行ごとにIPアドレスを書いておくと、次のコマンドでファイルからIPアドレスを読み込むことができます。

Bash
firewall-cmd --permanent --ipset=blacklist --add-entries-from-file=/etc/firewalld/blacklist

IPアドレスが登録されているか確認する

Bash
firewall-cmd --ipset=blacklist --get-entries
xxx.xxx.xxx.0/24
xxx.xxx.xxx.xxx
xxx.xxx.0.0/16

ブラックリストからIPアドレスを削除する場合

ブラックリストからIPアドレスを削除する場合は次のコマンドを実行します。

Bash
firewall-cmd --permanent --ipset=blacklist --remove-entry=xxx.xxx.xxx.xxx

ブラックリストの中身

ブラックリストファイル/etc/firewalld/ipsets/blacklist.xmlには次のように記述されています。

Plaintext
xxx.xxx.xxx.0/24
xxx.xxx.xxx.xxx
xxx.xxx.0.0/16

IPが重複して指定した場合

同じIPアドレスが重複して指定された場合は、片方(より範囲の広い方)だけが登録されます。
例えば192.168.2.0/24を登録した後に192.168.2.10を登録しても以下のメッセージが表示されてblacklistのエントリは変化しません。

Bash
firewall-cmd --permanent --ipset=blacklist --add-entry=xxx.xxx.xxx.10
Error: INVALID_ENTRY: Entry 'xxx.xxx.xxx.10' overlaps with existing entry 'xxx.xxx.0.0/16'

ブラックリスト登録の完了

ブラックリストの登録が完了したらfirewalldをリロードします。

Bash
firewall-cmd --reload

リロードしたら、–get-entriesや–list-allを使って登録した設定が保存されていることを確認して設定完了となります。
お疲れ様でした。

コメント

タイトルとURLをコピーしました