firewalldは、Linuxにファイアウォールを実装するサービスです。

firewalldでは、2種類の方法でファイアウォールのルールを登録できます。

種類説明
ランタイムルールメモリ上にルールが保存され、firewalldのリスタートでルールは消去されます。
パーマネントルールルールはファイル(/etc/firewalld/zones配下)に保存され、firewalldのリスタートでファイルからルールが読み込まれメモリに展開されます。

ゾーンに設定されているサービス確認

ゾーンに設定されているサービスを確認します。

以下の結果では、sshとdhcp6-clientのサービスがルールとして許可されています。

$ sudo firewall-cmd –-list-services -–zone=public -–permanent
ssh dhcpv6-client

直接ファイルを見ても確認することができます。

$ sudo cat /etc/firewalld/zones/public.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
  <service name="ssh"/>
  <service name="dhcpv6-client"/>
</zone>
$ 

ゾーンに設定されているサービス追加

登録可能なサービスの一覧を確認します。

[root@host-172-16-2-103 ~]# firewall-cmd --get-services
RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync elasticsearch freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kibana klogin kpasswd kshell ldap ldaps libvirt libvirt-tls managesieve mdns mosh mountd ms-wbt mssql mysql nfs nfs3 nrpe ntp openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius rpc-bind rsh rsyncd samba samba-client sane sip sips smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server
[root@host-172-16-2-103 ~]# 

サービスを追加します。

[root@host-172-16-2-103 ~]# firewall-cmd --add-service=http --zone=public --permanent
success
[root@host-172-16-2-103 ~]# 

登録されているサービスを確認します。

[root@host-172-16-2-103 ~]# firewall-cmd --list-services --zone=public --permanent
ssh dhcpv6-client http
[root@host-172-16-2-103 ~]#

リロードし、設定を反映します。

[root@host-172-16-2-103 ~]# firewall-cmd --reload
success
[root@host-172-16-2-103 ~]# 

ゾーンに設定されているポート番号確認

ゾーンに設定されているポート番号を確認します。

$ sudo firewall-cmd --list-port --zone=public --permanent
5900-5999/tcp
$

ゾーンへのポート番号追加

ゾーンにポート番号を追加します。

$ sudo firewall-cmd --add-port=5900-5999/tcp --permanent 
success
$

ゾーンに設定されているポート番号削除

ゾーンに設定されているポート番号を削除します。

$ sudo firewall-cmd --remove-port=5900-5999/tcp --zone=public --permanent
success
$

ファイアウォールのログ出力

ログ出力の状態を確認します。無効化された状態が確認できます。

$ sudo firewall-cmd --get-log-denied
off
$ 

ファイアウォールで遮断されたパケットをログに出力されるように設定します。

$ sudo firewall-cmd --set-log-denied=all
success
$

ファイアウォールの設定をリロードし反映します。

$ sudo firewall-cmd --reload
success
$

ファイアウォールの出力ログ確認

ファイアウォールのログはデフォルトでは、/var/log/messagesに出力されます。

リアルタイムに出力ログを確認します。

$ sudo tail -F /var/log/messages
Oct  6 13:18:14 centos7 kernel: FINAL_REJECT: IN=br0 OUT= PHYSIN=eth0 MAC=52:54:00:39:5f:c7:52:54:00:c4:51:aa:08:00 SRC=192.168.24.112 DST=192.168.24.111 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=56787 DF PROTO=TCP SPT=40524 DPT=5000 WINDOW=29200 RES=0x00 SYN URGP=0 
Oct  6 13:18:14 centos7 kernel: FINAL_REJECT: IN=br0 OUT= PHYSIN=eth0 MAC=52:54:00:39:5f:c7:52:54:00:c4:51:aa:08:00 SRC=192.168.24.112 DST=192.168.24.111 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=47662 DF PROTO=TCP SPT=40526 DPT=5000 WINDOW=29200 RES=0x00 SYN URGP=0 
Oct  6 13:18:24 centos7 kernel: FINAL_REJECT: IN=br0 OUT= PHYSIN=eth0 MAC=52:54:00:39:5f:c7:0c:9d:92:7f:d0:76:08:00 SRC=192.168.24.110 DST=192.168.24.111 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=219 DF PROTO=TCP SPT=54476 DPT=80 WINDOW=29200 RES=0x00 SYN URGP=0