MENU

CentOS7の標準ファイアウォール「firewalld」について

CentOS7の標準ファイアウォール「firewalld」についてです。

 

 

FirewallDのマニュアルは以下です。

・コマンド「man firewalld」

 

firewalldのファイルは「/usr/lib/firewalld/」に有ります。

ls /usr/lib/firewalld/

icmptypes services zones

中にはICMPタイプ、サービス、ゾーンが有ります。
後からサービスやゾーンを上記に加えたい場合はこちらでは無く
「/etc/firewalld/」の方で加えます。

 

 

本ページの目次

 

「ファイアウォール設定」画面について

 

「ファイアウォール設定」は「アプリケーション」→「諸ツール」→「ファイアウォール」
に有ります。コマンド「firewall-config」でも呼び出せます。

 

”設定”には「実行時」と「永続(コマンドで言うと --permanent)」の2つが有ります。

 

タブには「ゾーン」と「サービス」が有り、「ゾーン」タブにはマスカレード設定やポート転送
の設定、ICMPのフィルタの設定、高度なルールが有ります。

 

高度なルール

 

「サービス」タブには、ポートとプロトコル、モジュール、送信先が有ります。

 

 

firewalldの起動確認

 

■現在、起動しているかどうかの確認

firewall-cmd --state

running

 

または、

systemctl status firewalld
firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled)
Active: active (running) since 土 2014-12-20 07:03:16 JST; 35min ago
Main PID: 977 (firewalld)
CGroup: /system.slice/firewalld.service
└─977 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

 

12月 20 07:03:16 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.

 

 

■今すぐ起動させるコマンド
systemctl start firewalld

または

service firewalld start

 

※停止はstop、再起動はrestart

 

 

■リロード
firewall-cmd --reload

※動的に反映されます。

 

--complete-reload

※このコマンドでは接続は切れます。ファイアウォールを含む障害調査などに
おいてのみ使用すること。

 

 

■現在、読み込まれているかの確認

systemctl -a | grep firewalld

firewalld.service loaded active running firewalld - dynamic firewall daemon

 

 

■自動起動を有効化しているか確認

systemctl is-enabled firewalld

 

 

■自動起動するコマンド

systemctl enable firewalld

 

 

firewalldのゾーンについて

従来からのiptablesとは違い、ネットワーク機器(juniper SSGやpaloalto PA等)と
同様にゾーンをインターフェース(や送信元IPアドレス)に紐付ける形になりました。

 

※CentOS7ではiptablesは起動していません。
また、firewalldとの併用は出来ません。

 

 

■最初から有るゾーンについて
「ファイアウォールの設定」やコマンド「firewall-cmd --list-all-zones」にて

確認可能です。

 

最初から9個のゾーンが有ります。
詳細はfedora FirewallD/jp(日本語マニュアル)
掲載されています。

block  全パケット破棄 ※内部から外部へ行った後の帰りのみ許可 (変更不可)
dmz  初期状態ではssh許可
drop  全パケット破棄 (変更不可)
external  初期状態ではssh許可、マスカレード:yes
home  初期状態でdhcpv6-client、ipp-client、mdns、samba-client、ssh許可
internal  初期状態でdhcpv6-client、ipp-client、mdns、samba-client、ssh許可
public  dhcpv6-client、ssh許可
trusted  全パケット許可 (変更不可)
work  dhcpv6-client、ipp-client ssh許可

 

 

 

 

firewalldのサービスについて
■サービスについて
firewall-cmd --get-services

amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ftp
high-availability http https imaps ipp ipp-client ipsec kerberos kpasswd
ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn
pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius
rpc-bind samba samba-client smtp ssh telnet tftp tftp-client
transmission-client vnc-server wbem-https

 

 

■サービスの場所
ls /usr/lib/firewalld/services

amanda-client.xml ipp-client.xml mysql.xml rpc-bind.xml
bacula-client.xml ipp.xml nfs.xml samba-client.xml
bacula.xml ipsec.xml ntp.xml samba.xml
dhcp.xml kerberos.xml openvpn.xml smtp.xml
dhcpv6-client.xml kpasswd.xml pmcd.xml ssh.xml
dhcpv6.xml ldap.xml pmproxy.xml telnet.xml
dns.xml ldaps.xml pmwebapi.xml tftp-client.xml
ftp.xml libvirt-tls.xml pmwebapis.xml tftp.xml
high-availability.xml libvirt.xml pop3s.xml transmission-client.xml
http.xml mdns.xml postgresql.xml vnc-server.xml
https.xml mountd.xml proxy-dhcp.xml wbem-https.xml
imaps.xml ms-wbt.xml radius.xml

 

 

■サービスの中身

dns.xmlを見てみました。ポート番号が記載されていました。
DNSはudp/53とtcp/53が記載されていました。

 

cat /usr/lib/firewalld/services/dns.xml

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>DNS</short>
  <description>The Domain Name System (DNS) is used to provide 
and request host and domain names. Enable this option, 
if you plan to provide a domain name service (e.g. with bind).</description>
  <port protocol="tcp" port="53"/>
  <port protocol="udp" port="53"/>
</service>

 

ipsec.xmlを見てみました。

cat /usr/lib/firewalld/services/ipsec.xml

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>IPsec</short>
  <description>Internet Protocol Security (IPsec) incorporates security for network transmissions directly into the Internet Protocol (IP). IPsec provides methods for both encrypting data and authentication for the host or network it sends to. If you plan to use a vpnc server or FreeS/WAN, do not disable this option.</description>
  <port protocol="ah" port=""/>
  <port protocol="esp" port=""/>
  <port protocol="udp" port="500"/>
</service>

 

 

 

firewalldの設定について
--list  一覧で見る
--get  確認する
--query  問い合わせる
--set  セットする
--change  変更する
--add  追加する
--remove  削除する

 

永続的な設定とする場合は

--permanent

を付けます。--permanentを付けない場合は、
OSの再起動などで設定が消えます。

 

まずは1番よく使用する、サービスまたはポートの追加方法です。

■ゾーンにサービスを追加する
firewall-cmd --zone=ゾーン名 --add-service=サービス名 --permanent
例: firewall-cmd --zone=public --add-service=https --permanent

 

 

■ゾーンにポートを追加する
firewall-cmd --zone=ゾーン名 --add-port=ポート番号 --permanent
例: firewall-cmd --zone=public --add-port=443/tcp --permanent

 

■動的に反映する
firewall-cmd --reload

 

■全ゾーンの設定値の確認
firewall-cmd --list-all-zones

 

 

■全ゾーンの設定値の確認
firewall-cmd --list-all-zones

初期設定ではゾーン「public」に全てのインターフェースが入っていました。

 

 

■デフォルトのゾーンの設定値の確認
firewall-cmd --list-all

 

 

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

firewall-cmd --get-default-zone

public

 

 

■接続インターフェースが使用しているゾーン(アクティブなゾーン)の確認

firewall-cmd --get-active-zones

 

 

■デフォルトのゾーンをセットする
firewall-cmd --set-default-zone=ゾーン名

※「--change」ではありません。

 

 

■インターフェイスを別のゾーンへ移動させる

firewall-cmd --change-interface=インターフェース名 --zone=ゾーン名

 

 

■送信元IPアドレスを別のゾーンへ移動させる
firewall-cmd --change-source=IPアドレス --zone=ゾーン名
例: firewall-cmd --change-source=192.168.0.0/24 --zone=public

 

 

■ゾーンに含まれるサービス一覧を見る

firewall-cmd --list-service --zone=ゾーン名

 

 

■そのゾーンに、そのサービスが含まれているかを問い合わせる

firewall-cmd --zone=ゾーン名 --query-service=サービス名

 

例:firewall-cmd --zone=public --query-service=https

no

 

 

また、CentOS7での従来からのiptablesを利用する方法は
以下のページに記載しました。