CentOS7のFireWalldを使ってアクセス制限を設定する

CentOS

CentOS7でのファイヤーウォールでのポート開放でアクセス制御についてです

ssh接続に鍵認証を設定しましたが秘密鍵が漏れてしまえばどこからでも接続が可能になってしまいます
AWSを使っていればセキュリティグループ設定で簡単に設定できます。そこがAWSでEC2を使う大きなメリットの1つだと思いますが、そう簡単にAWSを利用することもできない場合はCentOS7のFirewalldを使用して追加設定を入れる必要があります

サーバーで開放するポートの設定では
・SSH
・HTTP
・HTTPS
・FTP
などを設定してきましたが、

firewall-cmd –add-port や firewall-cmd –add-service で追加した設定は
/etc/firewalld/zones/
内にある
・public.xml
に書き込まれています

IPアドレスでの個別制御を実施するにあたっては、public.xml内の情報が複雑になってメンテナンスに支障をきたさないようpublic.xml内に設定が書き込まれるのを避けるために新たなzoneファイルを作成します

ゾーンファイルは用途によって作成できますが同じIPアドレスに対しての設定を別のゾーンファイルに設定することはできないので、IPアドレスごとにゾーンファイルを作るイメージです

例として会社から接続する場合を想定

元となるファイルをコピーします

コピーで作成したファイル内の余分な情報の削除や修正をします

直接記述していってもいいですし、書き込みゾーンを指定した下記のコマンドで追記しても構いません

会社の固定IPアドレスを設定(固定IPアドレスが192.168.0.1と仮定)

SSH接続のポートを設定

MariaDBのポートを設定

FTPのポートを設定

firewallの設定を反映させるためにリロード

Company.xmlの中身はこんな感じになっているはずです

上記と同じように自宅用も設定すると人には触れたくないポートを管理することができます
iptablesと比べると管理が煩雑になった気もしますが個別のゾーンファイルを設置することができるので、慣れてしまえば使い勝手がよくなる機能だと思います

IPアドレスでの拒否設定

外部から執拗に攻撃してくるIPアドレスをファイヤーウォールの時点で拒否させたい場合はdrop.xmlに記述します

余談

Apacheのエラーログだけをみて(ユーザーエージェントが表示されない)、不要なアクセスをしてくるIPアドレスを入れまくっていたらGoogleのbotまで弾いてしまっていてGoogle検索結果から表示されなくなっていたことが発覚

Google8分されたかと思って焦ったのは苦い思い出・・・