firewalldのチートシート
What
openSUSEとRedHat系のディストリビューション(RHEL,CentOS,Fedora)ではデフォルトのファイヤーウォールがfirewalldになった。その操作に困らないための最低限のチートシートである。
firewalldとは、その操作
Overview
通信が入力される際、パケットフィルタを設定している入力にはゾーン(Zone)という単位があり、ゾーンはサービス(Service)という単位で構成され、サービスはポート番号と名前で定義されるXMLファイルで構成される。
firewalldを操作するには firewall-cmd
というコマンドを使う。
--permanent
オプションを付けると再起動後も保持される。付けないまま実行した場合、設定は揮発する(再起動後は消える。)。
動作を確認する
# firewall-cmd --state
running
サービス定義ファイルを作る
/usr/lib/firewalld/services/*.xml
が実体である。
パスはディストリビューションによって異なるかも知れない(CentOS7+, openSUSE Tumbleweedでは同じパスだった)
例:SSH
# cat /usr/lib/firewalld/services/ssh.xml
で、内容は
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>SSH</short>
<description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
<port protocol="tcp" port="22"/>
</service>
のようになっている。このファイルに倣って書けば良い。ファイルのオーナーはroot:root
であり、パーミッションは644であるようだ。
サービス定義ファイルのリロードを行う
ファイルは追加しただけでは認識されない。
# firewall-cmd --reload
success
サービスをゾーンに追加する
https(443/TCP)を通信許可するフィルタに追加する場合
# firewall-cmd --zone=public --permanent --add-service=https
Success
ポート番号を追加する
TCPの2222ポートを通信許可するフィルタに追加したい
# firewall-cmd --zone=public --permanent --add-port=2222/tcp
Success
その他
設定中のポート一覧
現在設定されているポート一覧
# firewall-cmd --zone=public --permanent --list-ports
2222/tcp
設定中のサービス一覧
現在設定されているサービス一覧
# firewall-cmd --zone=public --permanent --list-services
dhcpv6-client ssh ore-ssh
追加可能なサービス一覧
# firewall-cmd --get-services
# firewall-cmd --get-services
RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns docker-registry docker-swarm dropbox-lansync elasticsearch freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master git high-availability http https imap imaps ipp ipp-client ipsec irc ircs iscsi-target kadmin kerberos kibana klogin kpasswd kprop kshell ldap ldaps libvirt libvirt-tls managesieve mdns minidlna mosh mountd ms-wbt mssql murmur mysql nfs nfs3 nrpe ntp openvpn ore-ssh ovirt-imageio ovirt-storageconsole ovirt-vmconsole pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius redis 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 zabbix-agent zabbix-server
Firewalldのフィルタ確認
iptablesへ設定が書き込まれるので、 iptables -L
などして状態の確認を行う(が、見づらい)。
Discussion