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

CentOS Stream 9

 

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

ipsetを作る

blacklistというipsetを作る

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

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

 

ルールを設定する

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

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

 

 firewalldをリロードする

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

# firewall-cmd --reload

 

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

# firewall-cmd --list-all
public (active)
target: default
:
途中省略
:
rich rules: 
      rule source ipset="blacklist" drop
#

 

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

blacklistファイルを作成する

あらかじめblacklistファイルを作成します。

# vi /etc/firewalld/blacklist

:wq    //保存して終了

 

エントリを追加する

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

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

 

ファイルから読み込む

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

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

 

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

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

 

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

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

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

 

ブラックリストの中身

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

<?xml version="1.0" encoding="utf-8"?>
<ipset type="hash:ip">
  <entry>xxx.xxx.xxx.0/24</entry>
  <entry>xxx.xxx.xxx.xxx</entry>
  <entry>xxx.xxx.0.0/16</entry>
</ipset>

 

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

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

# 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をリロードします。

# firewall-cmd --reload

 

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

コメント

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