CentOS7で採用されたファイアウォールシステムFirewalldについての覚書です。従来のiptables/ip6tablesでは設定変更時にサービスの再起動が必要でしたがFirewalldでは設定を変更しても再起動は必要ありません。reloadコマンドで設定が反映されます。またFirewalldにはNICカード毎に設定を適用できる従来にはない機能があります。
目次
1.設定ファイル
Firewallの設定ファイルは /etc/firewalld/zones にゾーン名.xmlで存在します。
1 2 3 4 5 6 7 8 9 10 |
[XXXX@gtrt7 ~]# ls -la /etc/firewalld/zones total 32 drwxr-x---. 2 root root 4096 Nov 20 2015 . drwxr-x---. 5 root root 4096 Nov 13 13:13 .. -rw-r--r-- 1 root root 697 Jul 20 2016 drop.xml -rw-r--r-- 1 root root 734 Jul 20 2016 drop.xml.old -rw-r--r--. 1 root root 542 Jan 3 23:11 public.xml -rw-r--r-- 1 root root 516 Jan 3 23:11 public.xml.old -rw-r--r-- 1 root root 216 Dec 30 02:01 trusted.xml -rw-r--r-- 1 root root 216 Dec 30 01:26 trusted.xml.old |
.oldファイルで1世代前の情報も持っているようです。
2.ゾーン関連の設定と確認
Firewalldではゾーンという論理グループでサービス又はポートの割り当てを管理します。
ゾーンの例
Public:デフォルトのゾーン。公共領域での利用を想定。受信コネクションを選択的に許可。
drop:受信パケットは破棄。外部への通信とそれに関連する受信パケットだけを受信。
trusted:すべてのネットワークコネクションを許可。
(1)ゾーン関連の参照
1 2 |
# firewall-cmd --get-zones block dmz drop external home internal public trusted work |
Public,drop,trusted以外にもblock,dmz,external,home,internal,workなどあります。
詳しくはこちらのページをご参照ください。良くまとめられていて分かり易いです。
(2)デフォルトゾーンの調査
1 2 |
# firewall-cmd --get-default-zone Public |
デフォルトはPublicゾーンです。
(3)現在の全ゾーン情報の表示
上記9つのゾーン情報を表示してくれます。縦に長いので途中でカット。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# firewall-cmd --list-all-zones block interfaces: sources: services: ports: masquerade: no forward-ports: icmp-blocks: rich rules: dmz interfaces: sources: services: ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules: ・・・続く |
(4)ゾーンの設定情報表示
-permanentを指定すると永続的な設定の修飾ができます。
1 2 3 4 5 6 7 8 9 10 |
# firewall-cmd --permanent --zone=public --list-all public (default, active) interfaces: eth0 sources: services: dhcpv6-client https ports: 465/tcp 993/tcp masquerade: no forward-ports: icmp-blocks: rich rules: |
-zoneを指定すると対象とするゾーンを指定できます。
1 2 3 4 5 6 7 8 9 10 |
# firewall-cmd --permanent --zone=trusted --list-all trusted (active) interfaces: eth1 tun+ sources: services: ports: masquerade: no forward-ports: icmp-blocks: rich rules: |
-zoneを指定しない場合はデフォルトのゾーンに対する操作になります。
1 2 3 |
# firewall-cmd --permanent --list-all public (default, active) ... |
3.サービス関連の設定と確認
サービス関連設定ファイルは/usr/lib/firewalld/services/「サービス名.xml」で存在します。
編集する場合は、/etc/firewalld/services/にコピーして行います。
(1)サービスの一覧を表示
ちょっと横に長すぎますが表示されます。
1 2 |
# firewall-cmd --get-services RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns freeipa-ldap freeipa-ldaps freeipa-replication ftp high-availability http https imaps ipp ipp-client ipsec iscsi-target 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 rsyncd samba samba-client smtp ssh telnet tftp tftp-client transmission-client vdsm vnc-server wbem-https |
(2)パブリックゾーンで有効なサービス表示
1 2 |
# firewall-cmd --list-services --zone=public dhcpv6-client https |
(3)パブリックゾーンで永続的に有効なサービス
1 2 |
# firewall-cmd --list-services --zone=public --permanent dhcpv6-client https |
(4)HTTPサービスを公開(一時的/即時)
1 2 |
# firewall-cmd --add-service=http success |
(5)HTTPサービスを公開(永続的)
1 2 |
# firewall-cmd --permanent --add-service=http success |
–permanent付きで設定した場合は即時反映されない。
–permanent無しで設定するか後でまとめてreloadすれば設定が反映される。
(6)HTTPサービスの公開を停止
1 2 |
# firewall-cmd --permanent --remove-service=http success |
4.ポートの設定と確認
(1)現在開いているポート表示
1 2 |
# firewall-cmd --list-port --zone=public 465/tcp 25/tcp 993/tcp |
(2)永続的に有効となっているポート表示
1 2 |
# firewall-cmd --list-port --zone=public --permanent 465/tcp 25/tcp 993/tcp |
(3)ポート番号を指定して開く
1 2 |
# firewall-cmd --add-port=1122/tcp --zone=public --permanent success |
(4)ポート番号を指定して閉じる
1 2 |
# firewall-cmd --remove-port=1122/tcp --zone=public --permanent success |