⚠注意
外部に公開する際にWindows PCに直接Apache2を入れて動かすと攻撃を受けた際に内部のデータが流出する可能性がありますので、このサイトではVMを用いた安全な方法を使って紹介します。
Apache2とは?
正式名称「Apache HTTP Server」のバージョン2系統を指す通称です。
これは、世界で最も広く利用されているオープンソースのWebサーバーソフトウェアであり、インターネット上のWebコンテンツ配信の中核を担っています。
GoogleでもApache2ではないですが、Google独自のWebサーバーを使って世界中のみんなが誰でも利用できるようになっています。
やり方
1. 仮想化ソフトウェアのインストール
VirtualBox(無料)をWindowsにインストール。
①こちらからVitualBox(無料)をWindowsにダウンロードします。
②インストール後、仮想マシンを管理できる状態に設定します。
2. Debianのインストール
Debian ISOのダウンロード
- Debian公式サイトから最新のamd64用ISOイメージをダウンロード(例: debian-12.x.x-amd64-netinst.iso)。
→こちら(amd64 dvdを使用)から直接ダウンロードできます
仮想マシンの作成
- 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をインストールして外部公開できるようにします。
- 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)
- VirtualBox を終了していない場合は VM を停止。
- VirtualBox マネージャーで VM を選択 → 「設定」→「ネットワーク」→ アダプター1 を選択(NAT)→ 「詳細」→「ポート転送」ボタンを押す。
(「設定」-「ネットワーク」-「高度」-「ポートフォワーディング」) - 「追加」して次を指定:
- 名前:http
- プロトコル:TCP
- ホストIP:空欄(0.0.0.0)
- ホストポート:80(例)
- ゲストIP:ゲストのIP(空欄でも可)
- ゲストポート:80
※HTTPSを使用する場合は443も追加
- 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)を使用し、ルーターでポート変換を設定。


コメント