firewalldの基本設定(ファイアウォール)

VPSサービスではファイアウォールの機能は提供されておりません。そのため、firewalldを利用して不要なアクセスの遮断(パケットフィルタリング)を行なうことを推奨致します。基本的なサービスを許可するサンプルも掲載しておりますので是非ご活用ください。

本マニュアルは、以下のOSをご利用のお客様向けのものとなります。その他の環境をご利用の場合は、「iptablesの基本設定」マニュアルをご確認ください。

  • CentOS 7.X (64bit)
  • Scientific Linux 7.X (64bit)
  • Fedora 27 (64bit)
firewalldの概要

firewalldはLinuxでパケットフィルタリング等のネットワーク操作を行なうソフトウェアです。

本マニュアルでは不要なアクセスの遮断を行なうファイアウォールとしての利用を想定し、「WEB,メール,FTP,SSH,」を許可し、それ以外の接続を拒否する例を紹介します。

※ VPSサービスではネットワーク上位にファイアウォール機器を設置しておりませんので、firewalldによる不要なアクセスの遮断を行なうことをお勧めしております。

firewalldの起動・停止・状態確認

firewalldの起動や停止、状態の確認等を行なうコマンドは以下の通りです。

systemctl start|stop|status firewalld

  • start : firewalldを起動します。
  • stop : firewalldを停止します。
  • status : firewalldの状態を表示します。
  • enable : firewalldをサーバー起動時に自動で動作するようにします。
  • disable : firewalldをサーバー起動時に自動で動作しないようにします。

まずfirewalldが起動しているかの確認を行ないます。

【実行例】

[root@L0000000 sppd]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: inactive (dead) -- 以下省略 --
[root@L0000000 sppd]#

「Active: inactive」と表示された場合は、firewalldが停止の状態です。起動するにはコマンドを入力します。起動後、念のためfirewalldの状態を確認します。

正常に起動している場合、statusの結果で「Active: active (running)」と表示されます。

[root@L0000000 sppd]# systemctl start firewalld
 ※実行後、特に何も表示されません。
[root@L0000000 sppd]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running)
[root@L0000000 sppd]#

firewalldを停止する場合は、startと入力したところをstopにしてください。

[root@L0000000 sppd]# systemctl stop firewalld
 ※実行後、特に何も表示されません。
[root@L0000000 sppd]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: inactive (dead) -- 以下省略 --
[root@L0000000 home]#
firewalldの自動起動

サーバーを再起動したとき、firewalldも自動で実行するように設定を行ないます。まず、自動起動が設定されているかの確認を行ないます。

[root@L0000000 sppd]# systemctl list-unit-files -t service | grep firewalld
firewalld.service                             disabled
[root@L0000000 home]#

「disabled」と表示された場合、firewalldはサーバーが起動しても動作しません。以下コマンドでfirewalldをサーバー起動時に自動で動作するようにします。

[root@L0000000 sppd]# systemctl enable firewalld
Created symlink from /etc/systemd/sys....(省略)
Created symlink from /etc/systemd/sys....(省略)
[root@L0000000 home]#

再度、自動起動が設定されているか確認します。「enable」と表示された場合、firewalldはサーバー起動時に自動で動作します。

[root@L0000000 sppd]# systemctl list-unit-files -t service | grep firewalld
firewalld.service                             enabled
[root@L0000000 home]#
firewalldの基本設定

一般的なWEB/メールサーバーとして利用できるfirewalldのサンプルとなります。これを利用することでSSH/FTP/HTTP/HTTPS/SMTP/POP/Submission/SMTPoverSSL/POPoverSSLを開放し、他のポートを閉じる設定が行なえます。※ FTPのパッシブモード(PASVモード)には対応しておりません。

サーバーをセキュアに運用を行なう場合最低限これだけは行なっておくことをお勧め致します。

※firewalldの設定時、VPSに接続できなくなってしまった場合はコントロールパネルよりVNC接続をご利用ください。

まず、firewalldを設定するためのスクリプトを作成します。viで[fwset.sh]というファイルを作成します。

[root@L0000000 ~]# vi fwset.sh

viの画面になったら、以下のコマンド全てをコピー&ペーストします。

#!/bin/bash
	
# firewalld の自動起動
systemctl enable firewalld

# firewalld の起動
systemctl start firewalld

# ゾーンの設定 SSHのみ許可されているdmzに変更
firewall-cmd --set-default-zone=dmz

# 基本サービスを許可, FTP HTTP HTTPS SMTP POP Submission SMTPoverSSL POPoverSSL
firewall-cmd --zone=dmz --add-service=ftp --permanent
firewall-cmd --zone=dmz --add-service=http --permanent
firewall-cmd --zone=dmz --add-service=https --permanent
firewall-cmd --zone=dmz --add-service=pop3 --permanent
firewall-cmd --zone=dmz --add-service=pop3s --permanent
firewall-cmd --zone=dmz --add-service=smtp --permanent
firewall-cmd --zone=dmz --add-service=smtps --permanent
firewall-cmd --zone=dmz --add-service=smtp-submission --permanent

# 再読み込み
firewall-cmd --reload

# 設定状況の確認
firewall-cmd --zone=dmz --list-all

スクリプトの保存が終わったら、パーミッションを700に設定し、スクリプトを実行します。

[root@L0000000 ~]# chmod 700 fwset.sh
[root@L0000000 ~]# ./fwset.sh
Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.
success
success
success
success
success
success
success
success
success
success
dmz (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: ssh ftp http https pop3 pop3s smtp smtps smtp-submission
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
[root@L0000000 ~]#

以上でfirewalldの設定は完了です。