AC-5

某SEの雑記帳

CentOS7でのファイアウォールの設定(firewalld)

      2016/04/19

Nginxのインストールで、とりあえずファイアウォールの設定を無効にしましたが、
そのままというわけにもいかないので、基本的な手順をまとめます。

CentOS6まではiptablesを利用するのが一般的でしたが、CentOS7ではfirewalldというものが実装されました。
CentOS7でもiptablesを利用する事は可能です。
firewalldは内部的にiptablesを利用していますが、firewalldとiptablesを併用はできませんので、firewalldを利用する場合はiptablesを停止しておく必要があります。

firewalldではゾーンというものを定義し、そのゾーンに対して許可するサービスを定義していきます。
デフォルトではpublicというゾーンになっており、「ssh」と「dhcpv6-client」のみが許可されています。

起動と停止 確認

[root@test]# systemctl start firewalld←ファイアウォール起動
[root@test]# systemctl stop firewalld←ファイアウォール停止
[root@test]# firewall-cmd --list-all←ゾーン情報の確認
public (default, active)←デフォルトではpublicゾーンになっています
  interfaces: enp2s4
  sources:
  services: dhcpv6-client ssh←sshとdhcpv6-clientのみが許可されています
  ports:
  masquerade: no
  forward-ports:
  icmp-blocks:
  rich rules:

ポートの開放

FirewalldのデフォルトではHTTPポートがふさがっているので、ポートを開放します。

[root@test]# firewall-cmd --zone=public --add-port=80/tcp --permanent←HTTP(80)ポート開放
[root@test]# firewall-cmd --reload←設定反映
[root@test]# firewall-cmd --zone=public --remove-port=80/tcp --permanent←設定した内容を削除する場合

サービス毎の許可設定方法

上述した方法では、ポートを直接指定して開放していましたが、予め定義されているサービス毎の変更方法もまとめておきます。

[root@test]# firewall-cmd --get-services←定義されているサービス一覧を表示
RH-Satellite-6 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
[root@test]# firewall-cmd --list-service --zone=public←publicのサービス確認
dhcpv6-client ssh
[root@test]# firewall-cmd --add-service=http --zone=public←httpサービスを追加する(リアルタイム反映※再起動すると設定が消えます)
[root@test]# firewall-cmd --add-service=http --zone=public --permanent←httpサービスを恒久的に追加する(再起動して反映)
[root@test]# firewall-cmd --remove-service=dhcpv6-client --zone=public←サービスを削除する

恒久的に変更した場合のFirewallの再起動コマンドは下記になります。

[root@test]# firewall-cmd --reload

 - Linux