CentOS 7 firewalld よく使うコマンド
CentOS 7ではファイアウォール(以下、FW)のサービスが iptables から firewalld に変わりました。
FWの設定は基本的に firewall-cmd にて行います。よく使うコマンドをまとめます。
FWの設定は基本的に firewall-cmd にて行います。よく使うコマンドをまとめます。
サービスの起動
「bash-completion」がインストール済みの場合、[TAB]キーで補完可能です。
サービス名を指定する際の「.service」は省略可能です。
サービス名を指定する際の「.service」は省略可能です。
サービスの起動
# systemctl start firewalld.service
サービスの状態確認
# systemctl status firewalld.service
# firewall-cmd --state
running
<余談>サービスの終了
# systemctl stop firewalld.service
自動起動の設定
自動起動の設定
# systemctl enable firewalld.service
自動起動設定の状態確認
# systemctl is-enabled firewalld.service
enabled
<余談>自動起動の解除
[root@localhost ~]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.
[root@localhost ~]# systemctl is-enabled firewalld.service
disabled
設定の確認
ゾーンの割り当て状態
firewalld にはゾーンという概念があり、ゾーンにFWの設定が入っています。ゾーンは標準で9つ用意されています。(追加も可能)
NIC に対して、ゾーンを割り当てて管理します。
NIC に対して、ゾーンを割り当てて管理します。
現在割り当てられているゾーンの確認
「--get-active-zones」オプションを指定することで、現在割り当てられているゾーン(以下、アクティブゾーン)を確認できます。
アクティブゾーンの確認
# firewall-cmd --get-active-zones
public
interfaces: ens160
上記の例では、「public」ゾーンが「ens160」インターフェースに割り当てられていることが確認できます。
デフォルトで割り当てられるゾーンの確認
「--get-default-zone」オプションを指定することで、デフォルトで割り当てられるゾーン(以下、デフォルトゾーン)を確認できます。
特にNICに対してのゾーンの割り当てがない場合は、デフォルトゾーンが割り当てられます。
特にNICに対してのゾーンの割り当てがない場合は、デフォルトゾーンが割り当てられます。
デフォルトゾーンの確認
# firewall-cmd --get-default-zone
home
FWの設定状態の確認
デフォルトゾーン
「--list-all」オプションを指定することでデフォルトゾーンの現在のFW設定を確認できます。
デフォルトゾーンのFW設定確認
# firewall-cmd --list-all
※デフォルトゾーンとアクティブゾーンが異なる場合はアクティブゾーンの設定を見るように促す注意書きが出力されます。
明示的にゾーンを指定する必要があります。他のコマンドを実行する際も同様に注意書きが出力されます。
明示的にゾーンを指定する必要があります。他のコマンドを実行する際も同様に注意書きが出力されます。
デフォルトゾーン(home)とアクティブゾーン(public)が異なる場合
# firewall-cmd --list-all
You're performing an operation over default zone ('home'),
but your connections/interfaces are in zone 'public' (see --get-active-zones)
You most likely need to use --zone=public option.
home
target: default
icmp-block-inversion: no
interfaces:
sources:
services: dhcpv6-client mdns samba-client ssh
ports:
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:
指定したゾーン
「--zone」オプションを指定することで任意のゾーンの現在のFW設定を確認できます。
指定したゾーンのFW設定を確認(homeの例)
# firewall-cmd --list-all --zone=home
home
target: default
icmp-block-inversion: no
interfaces:
sources:
services: dhcpv6-client mdns samba-client ssh
ports:
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:
すべてのゾーン
「--list-all-zones」オプションを指定することですべてのゾーンの現在のFW設定を確認できます。
すべてのゾーンのFW設定を確認
# firewall-cmd --list-all-zones
恒久的なFW設定の確認
「--permanent」オプションを指定することで、恒久的な設定をそれぞれ確認できます。
※一時的に追加した設定は表示されません。再起動後も反映される設定となります。
※一時的に追加した設定は表示されません。再起動後も反映される設定となります。
デフォルトゾーンのFW設定確認(恒久的な設定のみ)
# firewall-cmd --list-all --permanent
指定したゾーンのFW設定確認(恒久的な設定のみ)
# firewall-cmd --list-all --zone=home --permanent
すべてのゾーンのFW設定確認(恒久的な設定のみ)
# firewall-cmd --list-all-zones --permanent
FWの設定
サービス
ゾーンにサービスを追加することで、そのサービス用のFW設定が反映されます。
サービスのFW設定は、XMLファイルで定義されており、以下の場所に格納されています。
/usr/lib/firewalld/services/
サービスのFW設定は、XMLファイルで定義されており、以下の場所に格納されています。
/usr/lib/firewalld/services/
登録可能なサービスの確認
「--get-servicess」オプションを指定することで登録可能なサービス名一覧を確認できます。
登録可能なサービスの確認
# firewall-cmd --get-services
現在追加されているサービスの確認
「--list-services」オプションを指定することで現在追加されているサービスを確認できます。
※「--zone」オプションを省略した場合、デフォルトゾーンの設定が表示されます。
ただし、アクティブゾーンとデフォルトゾーンが異なる場合は、注意書きが出力されます。
※「--zone」オプションを省略した場合、デフォルトゾーンの設定が表示されます。
ただし、アクティブゾーンとデフォルトゾーンが異なる場合は、注意書きが出力されます。
現在追加されているサービスの確認
# firewall-cmd --list-services --zone=public
dhcpv6-client ssh https
現在追加されているサービスの確認(恒久的な設定のみ表示)
# firewall-cmd --list-services --zone=public --permanent
dhcpv6-client ssh
サービスの追加
「--add-service」オプションを指定することでサービスを追加できます。
※「--zone」オプションを省略した場合、デフォルトゾーンに登録されます。
※「--zone」オプションを省略した場合、デフォルトゾーンに登録されます。
サービスの追加(publicゾーンに対して、httpsを追加する例)
# firewall-cmd --add-service=https --zone=public
恒久的な設定とする場合は、「--permanent」オプションを指定します。
ただし、設定を反映したい場合は設定の再読み込みが必要です。
ただし、設定を反映したい場合は設定の再読み込みが必要です。
サービスの追加(恒久的な設定とする場合)
# firewall-cmd --add-service=https --zone=public --permanent
# firewall-cmd --reload
success
サービスの削除
「--remove-service」オプションを指定することでサービスを削除できます。
※「--zone」オプションを省略した場合、デフォルトゾーンから削除されます。
※「--zone」オプションを省略した場合、デフォルトゾーンから削除されます。
サービスの削除
# firewall-cmd --remove-service=https --zone=public
恒久的な設定とする場合は、「--permanent」オプションを指定します。
ただし、設定を反映したい場合は設定の再読み込みが必要です。
ただし、設定を反映したい場合は設定の再読み込みが必要です。
サービスの削除(恒久的な設定とする場合)
# firewall-cmd --remove-service=https --zone=public --permanent
# firewall-cmd --reload
success
ポート番号
現在追加されているポート番号の確認
「--list-ports」オプションを指定することで現在追加されているポート番号を確認できます。
※「--zone」オプションを省略した場合、デフォルトゾーンの設定が表示されます。
ただし、アクティブゾーンとデフォルトゾーンが異なる場合は、注意書きが出力されます。
※「--zone」オプションを省略した場合、デフォルトゾーンの設定が表示されます。
ただし、アクティブゾーンとデフォルトゾーンが異なる場合は、注意書きが出力されます。
現在追加されているポート番号の確認
# firewall-cmd --list-ports --zone=public
現在追加されているポート番号の確認(恒久的な設定のみ表示)
# firewall-cmd --list-ports --zone=public --permanent
ポート番号の追加
「--add-port」オプションを指定することでサービスを追加できます。
※「--zone」オプションを省略した場合、デフォルトゾーンに追加されます。
※「--zone」オプションを省略した場合、デフォルトゾーンに追加されます。
ポート番号の追加(デフォルトゾーンに対して、TCP8080、UDP60000の例)
# firewall-cmd --add-port=8080/tcp --zone=public
# firewall-cmd --add-port=60000/udp --zone=public
恒久的な設定とする場合は、「--permanent」オプションを指定します。
ただし、設定を反映したい場合は設定の再読み込みが必要です。
ただし、設定を反映したい場合は設定の再読み込みが必要です。
ポート番号の追加(恒久的な設定とする場合)
# firewall-cmd --add-port=8080/tcp --zone=public --permanent
# firewall-cmd --add-port=60000/udp --zone=public --permanent
# firewall-cmd --reload
success
ポート番号の削除
「--remove-service」オプションを指定することでサービスを削除できます。
※「--zone」オプションを省略した場合、デフォルトゾーンから削除されます。
※「--zone」オプションを省略した場合、デフォルトゾーンから削除されます。
ポート番号の削除
# firewall-cmd --remove-port=8080/tcp --zone=public
# firewall-cmd --remove-port=60000/udp --zone=public
恒久的な設定とする場合は、「--permanent」オプションを指定します。
ただし、設定を反映したい場合は設定の再読み込みが必要です。
ただし、設定を反映したい場合は設定の再読み込みが必要です。
ポート番号の削除(恒久的な設定とする場合)
# firewall-cmd --remove-port=8080/tcp --zone=public --permanent
# firewall-cmd --remove-port=60000/udp --zone=public --permanent
# firewall-cmd --reload
success
IPアドレス
現在追加されているIPアドレスの確認
「--list-sources」オプションを指定することで現在追加されているIPアドレスを確認できます。
※「--zone」オプションを省略した場合、デフォルトゾーンに追加されます。
※「--zone」オプションを省略した場合、デフォルトゾーンに追加されます。
現在追加されているIPアドレスの確認
# firewall-cmd --list-sources --zone=public
現在追加されているIPアドレスの確認(恒久的な設定のみ表示)
# firewall-cmd --list-sources --zone=public --permanent
IPアドレスの追加
「--add-source」オプションを指定することでIPアドレスを追加できます。
※「--zone」オプションを省略した場合、デフォルトゾーンに追加されます。
※「--zone」オプションを省略した場合、デフォルトゾーンに追加されます。
アクセス許可
許可アドレスの追加
# firewall-cmd --add-source=192.168.0.0/24 --zone=public
恒久的な設定とする場合は、「--permanent」オプションを指定します。
ただし、設定を反映したい場合は設定の再読み込みが必要です。
ただし、設定を反映したい場合は設定の再読み込みが必要です。
ポート番号の追加(恒久的な設定とする場合)
# firewall-cmd --add-source=192.168.0.0/24 --zone=public --permanent
# firewall-cmd --reload
success
アクセス拒否
「drop」ゾーンに対してIPアドレスを登録することで拒否IPアドレスとなります。
拒否アドレスの追加
# firewall-cmd --add-source=192.168.11.0/24 --zone=drop
恒久的な設定とする場合は、「--permanent」オプションを指定します。
ただし、設定を反映したい場合は設定の再読み込みが必要です。
ただし、設定を反映したい場合は設定の再読み込みが必要です。
ポート番号の追加(恒久的な設定とする場合)
# firewall-cmd --add-source=192.168.11.0/24 --zone=drop --permanent
# firewall-cmd --reload
success
アクセス元IPアドレスのゾーンの変更
すでに登録済みのIPアドレスは、「--change-source」オプションを指定することで、ゾーンの変更が行えます。
アクセス元IPアドレスに割り当てられているゾーンの変更(dropに変更の例)
# firewall-cmd --change-source=192.168.11.0/24 --zone=drop
アクセス元IPアドレスに割り当てられているゾーンの確認
# firewall-cmd --get-zone-of-source=192.168.11.0/24
drop
恒久的な設定とする場合は、「--permanent」オプションを指定します。
ただし、設定を反映したい場合は設定の再読み込みが必要です。
ただし、設定を反映したい場合は設定の再読み込みが必要です。
ゾーンの変更(恒久的な設定とする場合)
# firewall-cmd --change-source=192.168.11.0/24 --zone=drop --permanent
# firewall-cmd --reload
success
IPアドレスの削除
「--remove-source」オプションを指定することでサービスを削除できます。
※「--zone」オプションを省略した場合、デフォルトゾーンに追加されます。
※「--zone」オプションを省略した場合、デフォルトゾーンに追加されます。
IPアドレスの削除
# firewall-cmd --remove-source=192.168.11.0/24 --zone=drop
恒久的な設定とする場合は、「--permanent」オプションを指定します。
ただし、設定を反映したい場合は設定の再読み込みが必要です。
ただし、設定を反映したい場合は設定の再読み込みが必要です。
IPアドレスの削除(恒久的な設定とする場合)
# firewall-cmd --remove-source=192.168.11.0/24 --zone=drop --permanent
# firewall-cmd --reload
success
ゾーンの変更
アクティブゾーンの変更
「--change-interface」オプションを指定することでアクティブゾーンを変更できます。
アクティブゾーンの変更(ens160に対する割り当てをhomeに変更する例)
# firewall-cmd --zone=home --change-interface=ens160
アクティブゾーンの変更(恒久的な設定とするかつすぐに反映させる場合)
# firewall-cmd --zone=home --change-interface=ens160 --permanent
# firewall-cmd --reload
success
デフォルトゾーンの変更
「--set-default-zone」オプションを指定することでデフォルトゾーンを変更できます。
NICに対してゾーンの割り当ての指定が特にない場合は、デフォルトゾーンが割り当てられます。
NICに対してゾーンの割り当ての指定が特にない場合は、デフォルトゾーンが割り当てられます。
デフォルトゾーンの変更(homeに変更する例)
# firewall-cmd --set-default-zone=home
サービスの新規作成
サービスは独自に作成することも可能です。
詳しくは、firewall-cmdのマニュアル(man firewalld-cmd)をご覧ください。
「--permanent」オプションは必須です。
詳しくは、firewall-cmdのマニュアル(man firewalld-cmd)をご覧ください。
「--permanent」オプションは必須です。
hogeサービスの作成
# firewall-cmd --permanent --new-service hoge
# cat /etc/firewalld/services/hoge.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
</service>
※/etc/firewalld/services/hoge.xml が作成されます。
既存のxmlファイルから作成する場合
# firewall-cmd --permanent --new-service-from-file=[filename] --name=[別名をつける場合]
hogeサービスの説明文追加
# firewall-cmd --permanent --service=hoge --set-description=[説明文]
# firewall-cmd --permanent --service=hoge --set-short=[短い説明文]
hogeサービスにFW設定追加の例
# firewall-cmd --permanent --service=hoge --add-port=2020/tcp
# firewall-cmd --permanent --service=hoge --add-source-port=60000-65000/udp
# firewall-cmd --permanent --service=hoge --set-destination=ipv4:192.168.0.1/24
# cat /etc/firewalld/services/hoge.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>[短い説明文]</short>
<description>[説明文]</description>
<port protocol="tcp" port="2020"/>
<source-port protocol="udp" port="60000-65000"/>
<destination ipv4="192.168.0.1/24"/>
</service>
再読み込み
# firewall-cmd --reload
hogeサービスの削除
# firewall-cmd --permanent --delete-service=hoge
评论