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