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 --reloadfirewalld では、--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サーバの運用において、攻撃者から守る重要な防御策となります。正しい設定を行い、安全なサーバ運用を心がけましょう。

 
	 
	 
	 
	 
	 
	 
	 
	
コメント