Windows PCにApache2を入れてWebサーバーとして動かす方法

この記事は約7分で読めます。

⚠注意

外部に公開する際にWindows PCに直接Apache2を入れて動かすと攻撃を受けた際に内部のデータが流出する可能性がありますので、このサイトではVMを用いた安全な方法を使って紹介します。


Apache2とは?

正式名称「Apache HTTP Server」のバージョン2系統を指す通称です。
これは、世界で最も広く利用されているオープンソースのWebサーバーソフトウェアであり、インターネット上のWebコンテンツ配信の中核を担っています。

GoogleでもApache2ではないですが、Google独自のWebサーバーを使って世界中のみんなが誰でも利用できるようになっています。

やり方

1. 仮想化ソフトウェアのインストール

VirtualBox(無料)をWindowsにインストール。

こちらからVitualBox(無料)をWindowsにダウンロードします。
②インストール後、仮想マシンを管理できる状態に設定します。

2. Debianのインストール

Debian ISOのダウンロード

仮想マシンの作成

  • VirtualBox/VMwareで新しいVMを作成。
    • アーキテクチャ: 64-bit (amd64)
    • メモリ: 4GB以上推奨
    • ストレージ: 20GB以上の動的ディスク
    • ネットワーク: ブリッジアダプター(外部アクセス用)を選択。
  • ダウンロードしたDebian ISOをVMの光学ドライブに設定。

Debianのインストール

  • VMを起動し、Debianインストーラーを実行。
  • 基本設定(言語、キーボード、ネットワーク、パーティションなど)を進める。
  • 「SSHサーバー」と「標準システムユーティリティ」を選択してインストール。
    ※設定したユーザー名、パスワードは必ず覚えれるかつ複雑なものを設定してください。
  • インストール完了後、VMを再起動。

3. インストール後の初期準備

アップデート&アップグレードの実行

sudo apt update && sudo apt upgrade -y

4. Apache2のインストールと設定

Debian上でApache2をインストールして外部公開できるようにします。

  1. Apache2のインストール
sudo apt update && sudo apt install apache2 -y

2. Apache2の起動と有効化

sudo systemctl start apache2
sudo systemctl enable apache2

3.ファイアウォールの設定

sudo apt install ufw
sudo ufw allow 80/tcp
sudo ufw enable

もしHTTPS通信も使用するなら

sudo ufw allow 443/tcp
sudo ufw enable

4.テストページの確認

VM内でブラウザまたはcurl http://localhostを実行し、Apacheのデフォルトページが表示されるか確認。

5. セキュリティとカスタマイズ

セキュリティ強化

  • Apacheの設定ファイル(/etc/apache2/apache2.confや/etc/apache2/sites-available/000-default.conf)を編集して不要な情報を隠す。
  • 例: ServerTokens Prod と ServerSignature Off を追加。
  • SSHやApacheへの不正アクセスを防ぐため、強力なパスワードや公開鍵認証を設定。

WAFの導入(必須)
WAFとは?
WAF は、SQLインジェクションやXSSなどWebアプリ特有の攻撃を防御するための仕組みです。
通常のファイアウォール(ポート単位の通信制御)では防げない、
「リクエスト内容を解析して不審なパターンを遮断」する機能を持っています。

sudo apt install -y libapache2-mod-security2
sudo a2enmod security2
sudo systemctl restart apache2
cd /usr/share/modsecurity-crs/
sudo cp crs-setup.conf.example crs-setup.conf
sudo cp rules/*.conf /etc/modsecurity/

その後 /etc/modsecurity/modsecurity.conf を編集して以下を確認:

SecRuleEngine On

再起動:

sudo systemctl restart apache2

PHPのインストール(任意だがWordPress等使用する場合は必須)

sudo apt install -y php libapache2-mod-php
sudo systemctl restart apache2

カスタムWebページ

  • /var/www/html に独自のHTMLファイルを配置してWebサイトを公開。

4. 外部公開の設定

外部からApache2サーバーにアクセスできるようにネットワークを設定します。

VirtualBox のポートフォワード設定(GUI)

  1. VirtualBox を終了していない場合は VM を停止。
  2. VirtualBox マネージャーで VM を選択 → 「設定」→「ネットワーク」→ アダプター1 を選択(NAT)→ 「詳細」→「ポート転送」ボタンを押す。
    (「設定」-「ネットワーク」-「高度」-「ポートフォワーディング」)
  3. 「追加」して次を指定:
    • 名前:http
    • プロトコル:TCP
    • ホストIP:空欄(0.0.0.0)
    • ホストポート:80(例)
    • ゲストIP:ゲストのIP(空欄でも可)
    • ゲストポート:80
      ※HTTPSを使用する場合は443も追加
  1. VMのネットワーク設定確認
  • VMのネットワークがブリッジアダプターに設定されていることを確認。
  • Debian内でIPアドレスを確認
ip addr show    もしくは     ifconfig

(例: 192.168.x.x のようなローカルIPが割り当てられている)


2. VMのネットワーク設定確認

Windowsのファイアウォールでポート80を許可:

  • コントロールパネル → システムとセキュリティ → Windows Defenderファイアウォール → 詳細設定
  • 新しい受信規則を作成し、ポート80(TCP)を許可。

または、管理者PowerShellでやる場合(Windows ファイアウォールでホストポートの解放)
80の解放

# TCP 80 を受け付ける受信ルールを追加
New-NetFirewallRule -DisplayName "Allow VM HTTP 80" -Direction Inbound -LocalPort 80 -Protocol TCP -Action Allow

443の解放

# TCP 443 を受け付ける受信ルールを追加
New-NetFirewallRule -DisplayName "Allow VM HTTP 443" -Direction Inbound -LocalPort 443 -Protocol TCP -Action Allow

ルーターのポートフォワーディング

  • ルーターの管理画面(例: 192.168.x.1)にアクセス。
  • ポートフォワーディング設定で、外部ポート80をVMのIPアドレス(例: 192.168.x.x)のポート80に転送。
  • 必要に応じて、外部からアクセスするためのグローバルIPアドレスを確認(例: whatismyip.com)。

外部からのアクセス確認

  • 外部ネットワーク(例: スマートフォンなど)からhttp://<グローバルIP>にアクセス。
  • Apacheのデフォルトページが表示されれば成功。

ドメイン

お名前.comなどでドメインを取得することができます。
無料でドメインを取得したい場合NOIPという方法がありますが企業や学校によってはNOIPで取得したドメインへのアクセスをブロックすることがあります

HTTPS使用時のドメインへの証明書発行方法

sudo apt install certbot python3-certbot-apache
sudo certbot –apache

注意点

  • ポートフォワーディングのリスク: 外部公開するとセキュリティリスクが増すため、定期的にログを確認(/var/log/apache2/access.log)し、必要に応じてFail2Banなどを導入。
  • Windowsの設定: Windowsのウイルス対策ソフトやファイアウォールが通信をブロックする可能性があるため、必要に応じて例外設定を追加。
  • ISPの制限: 一部のインターネットプロバイダはポート80をブロックする場合がある。その場合、代替ポート(例: 8080)を使用し、ルーターでポート変換を設定。

コメント

タイトルとURLをコピーしました