【Apache】ファイアウォールのポート開放、IPアドレスでのアクセス許可方法を解説

Webサーバのセキュリティは、ネットワーク環境において非常に重要な要素です。特に、Apacheを使用している場合、適切なファイアウォールの設定を行うことが、外部からの攻撃や不正アクセスを防ぐための第一歩となります。Apacheサーバは、インターネット上で公開されることが多いため、セキュリティ強化策を講じることが不可欠です。

本記事では、Apacheサーバにおけるファイアウォールの設定方法について解説します。ファイアウォールの役割や必要なポートの開放方法、さらに特定のIPアドレスからのアクセス制限など、実践的なステップを順を追って説明します。サーバを安全に運用するための助けとなれば幸いです。

Apacheのインストール方法は下のリンクで解説しています。

なぜファイアウォールが必要なのか

Apacheは、Webサーバとしてクライアントからのリクエストを受け取り、それに応じてWebページやデータを返す役割を担います。Apacheが適切に動作するためには、HTTP(ポート80)やHTTPS(ポート443)といった特定のポートがネットワーク上で解放されている必要があります。しかし、これらのポートが解放されたままだと、攻撃者からの不正アクセスやサイバー攻撃のリスクが高まります。

ファイアウォールは、このようなリスクを軽減するために必要なセキュリティツールです。ファイアウォールは、許可されたトラフィックのみがApacheサーバに到達できるようにフィルタリングし、不正なアクセスをブロックする役割を果たします。これにより、サーバのパフォーマンスを維持しながらセキュリティを強化することができます。

Apacheとファイアウォールの適切な連携を設定することで、ネットワークの外部からの攻撃を防ぎ、内部の重要なデータやサービスを守ることができます。

Apacheのポートを開放する方法

主に開放すべきポートは以下のものがあります。

  • ポート80(HTTP)
    暗号化なしでWebページを表示させる際に使用されるポートです。現在は安全性の観点で、次に紹介するHTTPSがよく使われます。
  • ポート443(HTTPS)
    SSL/TLSによる暗号化を使用して、Webページを安全に提供する際に使用されるポートです。

これらのポートを開放する方法を例にして、よく利用されているLinuxのディストリビューション別で手順を紹介していきます。

UFWを使用してポートを開放する

ufw はUbuntuなどのDebian系Linuxディストリビューションでよく使われるファイアウォール管理ツールです。以下のコマンドで、Apacheに必要なポートを開放できます。

# HTTP(ポート80)を開放
sudo ufw allow 80/tcp

# HTTPS(ポート443)を開放
sudo ufw allow 443/tcp

このように、ufw は非常にシンプルで、初心者の方でも扱いやすいツールです。

コマンドを入力後、ステータスを確認して、正しくポートが解放されているか確認してみましょう。

# 状態の確認
sudo ufw status

下記のような結果が返ってきていれば、正常に開放されています。

Status: active

To                         Action      From
--                         ------      ----
80/tcp                     ALLOW       Anywhere                  
443/tcp                    ALLOW       Anywhere                  
80/tcp (v6)                ALLOW       Anywhere (v6)             
443/tcp (v6)               ALLOW       Anywhere (v6)

firewalldを使用してポートを開放する

firewalld は、CentOSやRHELなどのRed Hat系Linuxディストリビューションで使用されるファイアウォール管理ツールです。firewalld では、サービス単位でポートを管理することができます。

以下のコマンドでApacheに必要なポートを開放します。

# HTTP(ポート80)を開放
sudo firewall-cmd --permanent --add-service=http

# HTTPS(ポート443)を開放
sudo firewall-cmd --permanent --add-service=https

# 設定のリロード
sudo firewall-cmd --reload

firewalld では、--permanent オプションを使用することで、再起動後も設定が有効になります。リロードコマンドを実行して、設定を反映させることを忘れないようにしましょう。

正しくポートが解放されているか、状態を確認してみましょう。

# 状態の確認
sudo firewall-cmd --list-all

下記のような結果が返ってきていれば、正常にポート80と443が解放されています。

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s3
  sources: 
  services: dhcpv6-client http https
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

特定のIPアドレスからのみアクセスを許可する方法

ファイアウォールを活用することで、Apacheサーバへのアクセスを特定のIPアドレスに制限することができます。この設定は、管理者だけにアクセスを許可したい場合や、特定の信頼できるネットワークからのみアクセスを許可したい場合に有効です。

こちらもよく利用されているLinuxのディストリビューション別で手順を紹介していきます。

UFWで特定のIPアドレスからのみアクセスを許可する

ufw を使用して、特定のIPアドレスに対してのみポート80や443を開放することができます。例えば、「192.168.1.100」というIPアドレスからのみHTTPアクセスを許可するには、次のコマンドを実行します。

sudo ufw allow from 192.168.1.100 to any port 80

同様に、HTTPSを特定のIPアドレスからのみ許可する場合には以下のように書きます。

sudo ufw allow from 192.168.1.100 to any port 443

これにより、「192.168.1.100」からのアクセスだけが許可され、その他のIPアドレスからのアクセスはブロックされます。

firewalldで特定のIPアドレスからのみアクセスを許可する

firewalld を使用して特定のIPアドレスに制限するには、リッチルールというものを使用します。例えば、「192.168.1.100」からのHTTPとHTTPSアクセスを許可するには次のコマンドを実行します。

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" service name="http" accept'
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" service name="https" accept'
sudo firewall-cmd --reload

これにより、「192.168.1.100」からのHTTPおよびHTTPSリクエストが許可され、他のIPアドレスからのアクセスはブロックされます。

まとめ

本記事では、Apacheサーバにおけるファイアウォール設定について解説しました。Webサーバのセキュリティを強化するために、ファイアウォールを正しく設定することは非常に重要です。

ファイアウォールはWebサーバの運用において、攻撃者から守る重要な防御策となります。正しい設定を行い、安全なサーバ運用を心がけましょう。

コメント