CentOS 7
 

Firewalld : 基本操作
2015/01/13
 
Firewalld の基本操作です。
Firewalld における各種サービスの定義はゾーンに対して設定します。 設定したゾーンとネットワークインターフェースを関連付けることで設定が有効となります。
[1] Firewalld を利用するには、サービスを起動しておく必要があります。
[root@dlp ~]#
systemctl start firewalld

[root@dlp ~]#
systemctl enable firewalld

[2] デフォルトでは以下のように「public」ゾーンがデフォルトゾーンとしてネットワークインターフェースに適用され、 dhcpv6-client, ssh サービスが許可されています。 「firewall-cmd」コマンドで様々な操作を行う際に、適用先のゾーン指定(--zone=***)を省略した場合は、このデフォルトゾーンに対して設定が適用されます。
# デフォルトゾーンを表示

[root@dlp ~]#
firewall-cmd --get-default-zone

public
# 現在の設定を表示

[root@dlp ~]#
firewall-cmd --list-all

public (default, active)
  interfaces: eno16777736
  sources:
  services: dhcpv6-client ssh
  ports:
  masquerade: no
  forward-ports:
  icmp-blocks:
  rich rules:
  
# 定義されている全てのゾーンを表示

[root@dlp ~]#
firewall-cmd --list-all-zones

block
  interfaces:
  sources:
  services:
  ports:
  masquerade: no
  forward-ports:
  icmp-blocks:
  rich rules:
  .....
  .....
  
# ゾーンを指定して許可されているサービスを表示

[root@dlp ~]#
firewall-cmd --list-service --zone=external

ssh
# デフォルトゾーンを変更

[root@dlp ~]#
firewall-cmd --set-default-zone=external

success
# 特定のインターフェースのゾーンを変更 (※注1)

[root@dlp ~]#
firewall-cmd --change-interface=eth1 --zone=external

success
[root@dlp ~]#
firewall-cmd --list-all --zone=external

external (active)
  interfaces: eth1
  sources:
  services: ssh
  ports:
  masquerade: yes
  forward-ports:
  icmp-blocks:
  rich rules:
  
# ※注1 : change-interface では「--permanent」を付加しても永続化されない

# 永続化する場合は nmcli を使用する

[root@dlp ~]#
nmcli c mod eth1 connection.zone external

[root@dlp ~]#
firewall-cmd --get-active-zone

external
  interfaces: eth1
public
  interfaces: eth0
[3] 定義されているサービスの一覧を表示する。
[root@dlp ~]#
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
# 定義されているサービスの定義ファイルは以下の場所に保管されている

# 独自に定義を追加する場合はここに XMLファイルを追加する

[root@dlp ~]#
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
dhcpv6-client.xml      kerberos.xml     openvpn.xml     smtp.xml
dhcpv6.xml             kpasswd.xml      pmcd.xml        ssh.xml
dhcp.xml               ldaps.xml        pmproxy.xml     telnet.xml
dns.xml                ldap.xml         pmwebapis.xml   tftp-client.xml
ftp.xml                libvirt-tls.xml  pmwebapi.xml    tftp.xml
high-availability.xml  libvirt.xml      pop3s.xml       transmission-client.xml
https.xml              mdns.xml         postgresql.xml  vnc-server.xml
http.xml               mountd.xml       proxy-dhcp.xml  wbem-https.xml
imaps.xml              ms-wbt.xml       radius.xml
[4] サービスを追加/削除する。
恒久的に変更する場合は「--permanent」オプションを指定します。 「--permanent」を指定しない場合、システムを再起動すると設定は元に戻ります。
# 例として http を追加する (設定は即時有効になる)

[root@dlp ~]#
firewall-cmd --add-service=http

success
[root@dlp ~]#
firewall-cmd --list-service

dhcpv6-client http ssh
# 例として http を削除する

[root@dlp ~]#
firewall-cmd --remove-service=http

success
[root@dlp ~]#
firewall-cmd --list-service

dhcpv6-client ssh
# 例として http を恒久的に追加する (設定を反映させるためにリロードが必要)

[root@dlp ~]#
firewall-cmd --add-service=http --permanent

success
[root@dlp ~]#
firewall-cmd --reload

success
[root@dlp ~]#
firewall-cmd --list-service

dhcpv6-client http ssh
[5] ポートを追加/削除する。
# 例として TCP 465 を追加する

[root@dlp ~]#
firewall-cmd --add-port=465/tcp

success
[root@dlp ~]#
firewall-cmd --list-port

465/tcp
# 例として TCP 465 を削除する

[root@dlp ~]#
firewall-cmd --remove-port=465/tcp

success
[root@dlp ~]#
firewall-cmd --list-port

 
# 例として TCP 465 を恒久的に追加する (設定を反映させるためにリロードが必要)

[root@dlp ~]#
firewall-cmd --add-port=465/tcp --permanent

success
[root@dlp ~]#
firewall-cmd --reload

success
[root@dlp ~]#
firewall-cmd --list-port

465/tcp
[6] ICMPのタイプを追加/削除する。
# 例として echo-request を追加する

[root@dlp ~]#
firewall-cmd --add-icmp-block=echo-request

success
[root@dlp ~]#
firewall-cmd --list-icmp-blocks

echo-request
# 例として echo-request を削除する

[root@dlp ~]#
firewall-cmd --remove-icmp-block=echo-request

success
[root@dlp ~]#
firewall-cmd --list-icmp-blocks

 
# 指定可能な ICMP タイプの一覧を表示する

[root@dlp ~]#
firewall-cmd --get-icmptypes

destination-unreachable echo-reply echo-request parameter-problem redirect
router-advertisement router-solicitation source-quench time-exceeded
 
Tweet