firewalld の設定について復習を兼ねて書いていきます。思いつきで書いているので順番バラバラです。内容間違ってたらすいません。
- 常に恒久的な設定として使いたいので、--permanent オプションを使います。一時的に使いたいだけなら --permanent を除去してください。
- 環境は Redhat9系です。AlmaLinux9で設定しています。
- firewalld は起動してください。 systemctl start firewalld
- selinux は切って(disable)ください。分かる人は有効に。
今回のパターン
- サーバのNICは ens0p3 という名前 (VirtualBoxだったので)
- このサーバではApacheサーバが動作していて、それをアクセスさせたいのでHTTPとHTTPSを通信許可したい。
- 全てのネットワークではなく 172.16.3.0/24 からのアクセスのみ許可したい。
1.ゾーンの選定
前回に引き続き externalを使用します。externalゾーンは初期では以下のような感じになっています。
基本的な動作:全てを拒否
PING応答: OK(PING応答する)
通信OKのサービス :ssh
2.ゾーンから不要なサービスを削除します(前回やったのと一緒なので実行済みならやる必要なし)
- ゾーンexternalの通信OKサービスから ssh を削除する
firewall-cmd --permanent --zone=external --remove-service=ssh
3.通信OKなサービスとアドレスをリッチルールで許可設定する
アクセス元のIPアドレスを制限するには、「リッチルール」という方法を使う必要があります。リッチルールを使うことで単純な「許可/拒否」だけではない複雑な設定が可能です。
コマンド(1)
firewall-cmd --permanent --zone=exnternal --add-rich-rule='rule family=ipv4 source address=172.16.3.0/24 service name=http accept'
コマンドの意味
ゾーンexternalに対し以下のリッチルールを指定する
リッチルールの内容
- IPv4で (family=ipv4)
- アクセス元IPアドレスが 172.16.3.0/24 で (source address=172.16.3.0/24)
- HTTPサービスへのアクセス (service name=http)
- 許可 (accept)
コマンド(2)
firewall-cmd --permanent --zone=exnternal --add-rich-rule='rule family=ipv4 source address=172.16.3.0/24 service name=https accept'
コマンドの意味
ゾーンexternalに対し以下のリッチルールを指定する
リッチルールの内容
- IPv4で (family=ipv4)
- アクセス元IPアドレスが 172.16.3.0/24 で (source address=172.16.3.0/24)
- HTTPSサービスへのアクセス (service name=https)
- 許可 (accept)
3.ゾーンexternalを インターフェース enp0s3 に割り当てる(すでにやっていたら不要)
firewall-cmd --permanent --zone=external --change-interface=enp0s3
4. 設定を有効化する
firewall-cmd --reload
5. externalの設定内容を確認する
firewall-cmd --info-zone=external
external (avtive)
target: default
icmp-block-inversion: no
interfaces: enp0s3
sources:
services: http https
ports:
protocols:
forward: yes
masquerade: yes
forward-ports:
source-ports:
itmp-blocks
rich rules:
rule family="ipv4" source address=172.16.3.0/24 service name=http accept
rule family="ipv4" source address=172.16.3.0/24 service name=https accept
以上で 172.16.3.0/24、172.16.4.0/24からHTTP/HTTPSサービスにアクセスができるようになると思います。