さくらVPS
centos7
firewalld

さくらVPS CentOS7でfirewalldの設定

firewalldについての記録

基本的な役割はiptablesと同じ(というか裏でiptablesが動いている)、iptablesに比べてシンプルで管理しやすい(しかし、リッチルールはiptablesの設定方法と似てる)。

※他にも違いがあるみたいなので随時更新

◾️ゾーンについての簡易説明

※ゾーンとは・・・
パケットフィルタリングのルールをまとめてグループ化したもの。
デフォルトで存在するゾーンはテンプレみたいなもので独自に増やすことも可能

種類 説明
public 最低限の受信(デフォルト値)。サービス、ポートを指定しての利用。
work ネットワーク上の信頼できる作業ネットワークで利用する。業務用。サービス、ポートを指定しての利用。
home ネットワーク上の信頼できるホームネットワークで利用する。家庭用。サービス、ポートを指定しての利用。
internal ネットワーク上の信頼出来る内部ネットワークで利用する。ネットとPCの間にfirewallが既に設定されていて、かつworkにもhomeにも入ってない場合。サービス、ポートを指定しての利用。
external IPマスカレードが利用されている時に利用する。ローカルネットワーク内のコンピューターを信頼しない。サービス、ポートを指定しての利用。
dmz DMZの環境で利用する。サービス、ポートを指定しての利用。
block 外からの接続は禁止、内から外のみ。外からの接続は応答有り。
drop 外からの接続は禁止、内から外のみ。外からの接続は応答無し。
trusted 何でも許可する。

それぞれのzoneで設定を用意しておいて、必要に応じてゾーンを変更するというのが理想。
例えば、httpとhttpsはpublicで、sshとftpはworkに振り分けてIP制限をかけるなど…
ただし、複数のゾーンに対して同一のIPアドレスで制限をかける事はできないっぽい?
試した事は無いので時間がある時にでも検証してみます。

◾️firewalldの起動状況確認

firewall-cmd --stateで状態を確認

◾️ゾーンの確認

・全てのゾーンを確認

firewall-cmd --list-all-zoneで全てを確認

・特定のゾーンを確認

firewall-cmd --list-all --zone=ゾーン名で確認

◾️サービスの追加、削除

オプションのpermanentをつけないとrebootした時に設定が消えるので忘れないようにしましょう。

・追加

$ firewall-cmd --add-service=サービス名 --zone=ゾーン名 --permanent

追加したらrebootする
$ firewall-cmd --reload

・削除

$ firewall-cmd --remove-service=サービス名 --zone=ゾーン名 --permanent

削除したらreboot
$ firewall-cmd --reload

◾️IP制限のやり方

一般的なやり方

ゾーンに対してIP制限をかけるような感じ

$ firewall-cmd --permanent --add-source=IPアドレス --zone=ゾーン名

複数のIPアドレスを登録したい場合は上記を繰り返すだけで大丈夫

そして追加が完了したらリロード

firewall-cmd --reload

リッチルールで特定のポートを特定のIPアドレスで制限

まず、特定のIPだけを許可するサービスをゾーンから削除します。

$ firewall-cmd --permanent --remove-service=サービス名

削除後に、許可したいIPとポートをルールで追加します。

$ firewall-cmd --permanent --zone=ゾーン名 --add-rich-rule="rule family="ipv4" source address="許可するIPアドレス" port protocol="tcp" port="ポート番号" accept"

これで特定のIPのみ許可する事ができるようになりました。

◾️参考にしたサイト