CentOS7で,firewalldを使ってIPアドレスのブラックリストを登録する方法について説明します.ipsetコマンドを使うのが主流ですが,CentOS7ではfirewall-cmdだけでも設定できるので,記録としてこの記事を投稿します.
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
最後に,blacklist
をすぐ使用可能にするために次のコマンドを実行します.
firewall-cmd --reload
以下のコマンドでルールが設定されていることを確認できます.
firewall-cmd --list-all
ブラックリストを登録する
1つずつ登録するには,次のようにしてエントリを追加します.
firewall-cmd --permanent --ipset=blacklist --add-entry=192.168.1.2
ファイルに一行ごとにIPアドレスを書いておくと,次のようにしてファイルから読み込むことができます.
firewall-cmd --permanent --ipset=blacklist --add-entries-from-file=/etc/firewalld/blacklist
上の例では/etc/firewalld/blacklist
にブラックリストのファイルを用意します.
IPアドレスが登録されていることを確認するには,次のコマンドを実行します.
firewall-cmd --ipset=blacklist --get-entries
ブラックリストからIPアドレスを削除するには,次のようにします.
firewall-cmd --permanent --ipset=blacklist --remove-entry=192.168.1.2
ブラックリストのファイル/etc/firewalld/blacklist
には次のようにIPアドレスを列挙します.なお,サブネットなども使えます.
192.168.1.2
192.168.1.3
192.168.2.0/24
同じIPアドレスが重複して指定された場合は,片方(より範囲の広い方)だけが登録されます.例えば192.168.2.0/24
を登録した後に192.168.2.10
を登録してもblacklist
のエントリは変化しません.
ブラックリストの登録が完了したら次のコマンドで設定をロードします.
firewall-cmd --reload
リロードしたら,--get-entries
や--list-all
を使って登録した設定が保存されていることを確認しましょう.