【Linux】Firewalldでよく利用するポート開放コマンド(firewall-cmd)

Linuxサーバ

RHEL系(CentOS)
---

Firewalldサービスを起動して実際にポート設定に必要なコマンドを紹介します。
但し、コマンド実行はFirewallサービスが起動している必要があります。

これから説明する注意点を確認してから
Firewalldサービスを起動して設定コマンドを実行してください。

スポンサーリンク

Firewallサービスを起動する前に注意すること

firewalldサービスを起動すると事前に用意されているゾーン(9種類)のいずれかに
設定されます。
デフォルトだと「public」ゾーンでサービスが開始されます。
※ゾーンは個別に作成することもできますが、今回は省略します。

9種類のゾーンについて注意すること

「tursted」ゾーン設定以外は、
Firewalldサービスを起動すると通信が拒否された状態でサービスが開始されます。

■補足情報
1.Firewalldサービスが起動してアクセスが拒否されても
  ・「コンソール接続できる」
  ・「SSH接続できるゾーンを設定する」
  などの対策をおこなってから実施してください。

2.デフォルトで用意されている
  ゾーン(public、dmz、work、home、internal、external)には
  「SSH接続」がデフォルトで許可されています。

3.trustedはすべての通信が許可されています。

注意事項
1.Firewalldサービスを起動した瞬間に
  ・「リモート接続」
  ・「ネットワークを利用したサービス」
  が利用できなくなります。
  設定を確認してからFirewalldサービスを起動してください。

2.ネットワークを介して遠隔からサーバにアクセスしている場合
  Firewalldサービスを起動した瞬間にアクセスできなくなります。
  コンソールからの接続ができないと設定を元に戻せなくなるので
  注意してください。

Firewalldサービスの起動設定については、下記の記事をご確認ください。

【Linux】Firewalldの初期設定と起動前の注意事項
RHEL系(CentOS)---Linuxサーバの「firewalldサービス」を起動するとデフォルト設定だと通信が遮断されてしまいます。「firewalldサービス」は、ゾーン(ZONE)にどのターゲット(破棄or拒否or許可)を適用する

Firewallサービスの設定で利用するコマンド

設定確認コマンド

---
■デフォルト設定のゾーン確認

# firewall-cmd --get-default-zone

# firewall-cmd --list-all


---
■現在のアクティブゾーンを確認

# firewall-cmd --get-active-zones


---
■すべてのゾーン確認

# firewall-cmd --list-all-zones


---
■指定したゾーンの設定確認(ポリシー変更後の確認で利用)
例:trustedゾーンを指定した場合

# firewall-cmd --zone=trusted --list-all


---
■定義されているサービス一覧を確認

# firewall-cmd --get-services

設定変更コマンド

ゾーン(ZONE)設定変更

---
■デフォルトのゾーン変更
※firewalldサービス起動時のデフォルトゾーンを変更
例:trustedゾーンを指定した場合

# firewall-cmd --set-default-zone=trusted

■補足情報
1.デフォルト設定
  /etc/firewalld/firewalld.confファイル
  「DefaultZone=trusted」箇所を変更してくれるコマンドになります。

2.ファイルの直接修正も可能


---
■インターフェース(NIC)のゾーン変更

一時的に変更したい場合
※再起動したら設定がデフォルトゾーン設定に変更

# firewall-cmd --zone=trusted --change-interface=enp0s3

enp0s3:ifconfigで確認できるネットワークインターフェース名


恒久的に変更したい場合
※再起動しても設定したゾーン設定で起動

# firewall-cmd --zone=trusted --change-interface=enp0s3 --permanent


■補足情報
1.一時・恒久設定であってもコマンド実行した場合は即時反映となります。

2.インターフェースの設定では「firewall-cmd --reload」は不要

3./etc/sysconfig/network-scripts/ifcfg-XXファイル
  「ZONE=trusted」を設定してくれるコマンドになります。

4.ファイルの直接修正も可能
  但し、反映にはネットワークサービスの再起動が必要


恒久的なポリシー設定(/etc/firewalld/zone/)

設定変更を恒久的に反映させたい場合は「--permanent」オプションを指定する
※「--permanent」をつけないとサーバ再起動すると設定が元に戻ります。

「--permanent」オプション指定して実行したコマンドは「--reload」を
実行しないと反映されません。


「/etc/firewalld/zones/」内で設定情報を保持しています。


ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
■ゾーン(ZONE)のターゲット(target)を変更する
publicゾーンのターゲットを「default(REJECT)」から「DROP」に変更

# firewall-cmd --zone=public --set-target=DROP --permanent
# firewall-cmd --reload

注意事項
1.ターゲット変更は必ず「--permanent」を設定して実行する
  必要があります。
  このオプションを設定しないとエラーとなり設定変更できません。
2.「--set-target=」は
  「DROP」、「REJECT」、「ACCEPT」と大文字を指定
  「default」と小文字を指定
  しないとエラーになります。


ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
■指定ゾーン(public)へhttpサービスを許可(利用許可の追加)する

# firewall-cmd --zone=public --add-service=http --permanent
# firewall-cmd --reload


---
■指定ゾーン(public)からhttpサービスをブロック(利用許可の削除)する

# firewall-cmd --zone=public --remove-service=http --permanent
# firewall-cmd --reload


ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
■特定IPからの指定ポートだけを許可
192.168.11.6からのみ80/tcpを許可する

# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.11.6" port protocol="tcp" port="80" accept" --permanent
# firewall-cmd --reload


---
■特定IPからの指定ポートだけを許可した設定を解除(拒否)
192.168.11.6からのみ80/tcpを許可したものを解除(拒否)

# firewall-cmd --zone=public --remove-rich-rule="rule family="ipv4" source address="192.168.11.6" port protocol="tcp" port="80" accept" --permanent
# firewall-cmd --reload


ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
■特定IPからの指定ポートだけを拒否
192.168.11.6からのみ80/tcpを拒否する

# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.11.6" port protocol="tcp" port="80" drop" --permanent
# firewall-cmd --reload

---
■特定IPからの指定ポートだけを拒否した設定を解除
192.168.11.6からのみ80/tcpを拒否する設定を解除

# firewall-cmd --zone=public --remove-rich-rule="rule family="ipv4" source address="192.168.11.6" port protocol="tcp" port="80" drop" --permanent
# firewall-cmd --reload

■補足説明
1.「特定IPからの指定ポートだけを拒否」の利用用途としては
  「firewall-cmd --zone=public --add-service=http」の設定で
  http(80/tcp)」を全体で許可していた場合に特定のIPからの
   アクセスだけ「http(80/tcp)」を拒否することができます。
2.「アクション(最後に記載)」
    accept:この通信を許可する
    drop: この通信を拒否し、何も返さない
    reject:この通信を拒否し、ICMPメッセージを返す

一時的なポリシー設定

「--permanent」オプションを指定しないので一時的な設定なります。
firewall-cmd --reloadの実行は不要で即反映します。

---
■特定IPからのアクセスをすべて拒否
192.168.11.14からのすべてのアクセスを拒否

# firewall-cmd --zone=drop --add-source=192.168.11.14

---
■特定IPからのアクセスをすべて拒否する設定を解除
192.168.11.14からのすべてのアクセスを拒否する設定を解除

# firewall-cmd --zone=drop --remove-source=192.168.11.14

コメント

タイトルとURLをコピーしました