Firewalldの設定方法¶
ファイアウォール機能である Firewalld は、サーバへ接続させる通信のルールを設定できます。
本マニュアルでは、簡易的な設定を一例として紹介します。
※ Firewalldの設定内容は、サーバーへの攻撃対策方法やお客様の利用用途により多岐にわたり、このページに紹介する設定の限りではありません。
※ 本マニュアルはあくまでも参考としてご覧いただき、実際の設定はお客様にてサーバーへの攻撃対策方法やご利用用途をご確認のうえ追加での対策設定などを、各種参考書籍をもとに行ってください。
本マニュアルは、 さくらのVPS の標準OS(CentOS 7/CentOS 8/CentOS Stream 8)がインストールされているサーバーが対象です。
その他のOSでの設定は、各OSのマニュアルをご確認ください。
Firewalld以外にもセキュリティ対策を行ってください。
さくらのVPS では、標準でパケットフィルターが有効になっています。パケットフィルターが有効になっている場合、Firewalldの設定のほかにパケットフィルターの設定も必要になります。
Firewalldの有効化¶
さくらのVPS の標準OSでは、Firewalldが有効になっていません。Firewalldを使用する際は以下のコマンドで起動します。
# systemctl start firewalld
# systemctl enable firewalld

設定の確認¶
Firewalldには「ゾーン」という概念があり、ファイアウォール設定はゾーンに対しておこないます。インタフェースはゾーンに所属することになります。以下のコマンドでインターネット側のインタフェース(eth0)がどのゾーンに所属しているかを確認します。
# firewall-cmd --get-active-zones

インタフェースeth0はゾーンpublicに所属していることがわかりました。ゾーンpublicに対して設定をおこなうことで、eth0を経由する通信の制御ができるようになります。
続いて以下のコマンドでゾーンpublicの設定を確認します。
# firewall-cmd --list-all --zone=public

services: ssh dhcpv6-clientとあるので、インターネットからeth0への通信はsshとdhcpv6-clientのみが許可されている状態であることがわかります。
許可する通信の設定(サービス名)¶
以下のコマンドでは、サービスhttpの通信許可設定をゾーンpublicに対しておこなっています。この設定をおこなうことで、インターネット上からサーバーのhttp(TCP/80)に対して通信ができるようになります。
# firewall-cmd --add-service=http --zone=public --permanent
# firewall-cmd --reload

使用できるサービス名の一覧は以下のコマンドで確認できます。
# firewall-cmd --get-services

許可する通信の設定(ポート番号)¶
以下のコマンドでは、TCPプロトコルの10050番ポートに対しての通信許可設定をゾーンpublicにおこなっています。この設定をおこなうことで、インターネット上からサーバーの10050/tcpに対して通信ができるようになります。
# firewall-cmd --add-port=10050/tcp --zone=public --permanent
# firewall-cmd --reload

許可する通信の削除¶
上記で許可した設定を削除します。
サービス名で通信許可した場合の削除は以下のコマンドです。
# firewall-cmd --remove-service=http --zone=public --permanent
# firewall-cmd --reload

ポート番号/プロトコルで通信許可した場合の削除は以下のコマンドです。
# firewall-cmd --remove-port=10050/tcp --zone=public --permanent
# firewall-cmd --reload

以下のコマンドでゾーンpublicの設定を確認します。削除されていることが確認できます。
# firewall-cmd --list-all --zone=public
