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のみ許可する事ができるようになりました。