CentOS7のfirewalldにhttpとhttpsサービスを許可(Apacheへの外部からのアクセスを許可)する

Apacheインストール後に、http://123.123.123.123/ (IPは各自)で、実際に画面が表示できるか試してみましたが、アクセスできません。
CenoO6の頃は、iptables で、フィルタリングするのが一般出来でしたが、CentOS7からは、firewalldというのが新しく実装されデフォルトのセキュリティが強化されているためです。

firewalldは、ゾーンという概念をもっていて、ゾーンに対してサービスを許可していくという流れになります。
iptablesとの違いは、firewalldはNIC毎に別々の設定ができる、iptablesは設定すれば全NICに適用されるだそうで、フーンって感じで覚えてればいいかもです。
新しくゾーンを定義することも出来ますが、「block、dmz、drop、external、home、internal、public、trusted、work」とあらかじめ、9つ用意されていて
たぶん、僕の作業上これ以上は必要ないと思われるので、今回はhttpのみ許可してみたいと思います。

firewalld自体を停止させるとう選択もありますが、ここは少し深く入ってfirewalldの使い方を見ていきます。

firewalldの起動&停止

# systemctl start firewalld
# systemctl stop firewalld

今現在どのゾーンが適応されているかを調べるコマンド
public は公開エリア用なので、今回はこのpublicゾーンに対して、httpとhttpsの許可を設定します。

# firewall-cmd --get-default-zone
public

下記コマンドで、現在有効になってるpublicゾーンの設定内容が確認できます。
「ssh」と「dhcpv6-client」のみ許可されている状態です。

# firewall-cmd --list-all
public (default, active)
  interfaces: eth0
  sources: 
  services: dhcpv6-client ssh
  ports: 
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules: 

Apache(http)のサービスを永続的に許可

# firewall-cmd --zone=public --add-service=http --permanent

※permanentオプションはCentOSを再起動しても設定を残すためのオプションです。

Apache(https)のサービスを永続的に許可

# firewall-cmd --zone=public --add-service=https --permanent

firewalldを再起動する

# firewall-cmd --reload

もういちど、publicゾーンの内容を確認httpとhttpsがつかされていればOK

# firewall-cmd --list-all

これで、ブラウザから、httpでアクセスできるようになりました。
httpsの設定は、また別途書きたいと思います。

ついでに、firewalld自動起動の有効&無効設定のコマンドは

# systemctl enable firewalld //有効
# systemctl disable firewalld //無効

自動起動が有効になってるかの確認は

# systemctl is-enabled firewalld

プロに聞いてみる
株式会社adanはエンジニアのキャリアに真剣に向き合っています。
企業の情報エンジニアとしてのキャリアアップの方法、現在の待遇(給料・報酬)未経験からのステップアップ方法などのご相談を受け付けています。
お気軽にお問合せください。