- blogs:
- cles::blog
firewalld + ipset で IP ブラックリスト(+ホワイトリストも)設定
centos7
firewalld
tutorial
サーバに IP 制限をかけたいと思ったのですが、CentOS 7.x からはアクセス制御が iptables ではなく firewalld に変更されています。 iptables は依然として firewalld の下で動いているので、やろうと思えば iptables で IP 制限をすることもできますが、制限する IP のリストが大きくなった場合、iptables はあまり効率が良くないのと、管理も煩雑化してしまうため、今回は ipset を用いて IP 制限を行うことにしました。
IP sets are a framework inside the Linux kernel, which can be administered by the ipset utility. Depending on the type, an IP set may store IP addresses, networks, (TCP/UDP) port numbers, MAC addresses, interface names or combinations of them in a way, which ensures lightning speed when matching an entry against a set.
† インストールは yum で
インストールは yum で一撃です。
もしfail2ban をインストールしている場合には、既にインストールされているはずです。
† まずは設定ファイルを作る
設定方法は「firewalld + ipset でアクセス制限 | server-memo.net」を参考にさせていただきました。
今回はアクセス制限用のリストを作るので BLACKLIST という名前にしています。
まずは設定を保存するための /etc/ipset というディレクトリを作成して、ユーティリティ用のスクリプトを作ります。
次に ipset を使ってセットを作成し、作成したセットに IP アドレスを追加します。
最後に firewalld と連携したら完了です。
※上記だと全ての通信を DROP してしまうので、特定のポートの通信のみを縛るには multiport を使って以下のように書くことができます。
ipset の内容は再起動したりすると消えてしまうので、以下のように firewalld のサービスの定義を変更して起動時と終了時に設定のリストアや保存を自動的に行うようにしておきます。
定義の内容や稼働状況は以下のコマンドで確認できます。
意外とシンプルに実現できました。
† 2017/2/4 追記
不便なのでホワイトリスト(無条件に許可するIP)も設定できるようにしました。
† 2022/9/21 追記
ipset が firewalld で管理されるようにしました。
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/9108
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
- sendjpmail でシェルスクリプ... (2)
- ビデオリサーチから調査票が... (1)
- おべんとう一番 白山本店(閉... (1)
- 都内の雷情報は TEPCO の「雨... (1)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(6388)
3 . GitHub が全ての公開リポジトリへのシークレットスキャンを有効に(5383)
4 . 年次の人間ドックへ(5333)
5 . 2023 年分の確定申告完了!(1つめ)(5097)