こんにちは、汐留みずほです。普段はインフラエンジニアとして仕事をしています。
Firewalldを設定するとき、コマンドを忘れていてついついググってしまうことありませんか?私はあります。なので、今回ブログにまとめたいと思います。
本記事では、以下のようにeth0というインタフェースを持ち、グローバルIPアドレスが割り当てられているサーバーを例に解説してまいります。
eth0の所属しているゾーンを確認する
Firewalldには「ゾーン」という概念があり、ファイアウォール設定はゾーンに対しておこないます。インタフェースはゾーンに所属することになります。以下のコマンドでインタフェースの所属しているゾーンを確認します。
# firewall-cmd --get-active-zones
public
interfaces: eth0
インタフェースeth0はゾーンpublicに所属していることがわかりました。ゾーンpublicに対して設定をおこなうことで、eth0を経由する通信の制御ができるようになります。
ゾーンの設定を確認する
続いて、以下のコマンドでゾーンpublicの設定を確認します。
# firewall-cmd --list-all --zone=public
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: ssh dhcpv6-client
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
services: ssh dhcpv6-clientとあるので、インターネットからeth0への通信はsshとdhcpv6-clientのみが許可されている状態であることがわかります。
ゾーンの設定を変更する
サービス名で通信を許可する
以下のコマンドでは、サービスhttpに対しての通信許可設定をゾーンpublicにおこなっています。この設定をおこなうことで、インターネット上からサーバーのhttp(TCP/80)に対して通信ができるようになります。
# firewall-cmd --add-service=http --zone=public --permanent
success
# firewall-cmd --reload
success
また、登録可能なサービスの確認は以下のコマンドでおこなうことができます。
# 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
ポート番号/プロトコルで通信を許可する
以下のコマンドでは、TCPプロトコルの10050番ポートに対しての通信許可設定をゾーンpublicにおこなっています。この設定をおこなうことで、インターネット上からサーバーの10050/tcpに対して通信ができるようになります。
# firewall-cmd --add-port=10050/tcp --zone=public --permanent
success
# firewall-cmd --reload
success
通信許可設定の削除
上記で許可した設定を削除します。
サービス名で通信許可した場合の削除は以下のコマンドです。
# firewall-cmd --remove-service=http --zone=public --permanent
success
# firewall-cmd --reload
success
ポート番号/プロトコルで通信許可した場合の削除は以下のコマンドです。
# firewall-cmd --remove-port=10050/tcp --zone=public --permanent
success
# firewall-cmd --reload
success
おわりに
いかがでしたでしょうか。一見簡単な設定でも、たまにしかおこなわないと忘れがちです。本記事がそんな際にお役に立てれば幸いです。