外部からWebサーバーにアクセスする
【連載コラム:Linuxを学ぼう(21)】
サーバーを扱う上で必須と言える技術が「Linux」。今回は動作させたWebサーバーに外部のWebブラウザーからのアクセスについて解説します。
今回は、動作させたWebサーバーに外部のWebブラウザからアクセスしてみます。インストールしたLinuxのサーバーは、外部からのネットワークアクセスをパケットフィルタリングを使って制御していることがあります。
パケットフィルタリングの設定を変更して、外部からのアクセスを受け入れられるようにする必要があります。
目次
パケットフィルタリングの動作を確認する
まず、パケットフィルタリングが動作しているかどうかを確認します。いくつかの方法で確認できます。今回は、AlmaLinuxを使ってfirewalldによるパケットフィルタリングを例にしています。
firewalldサービスの確認
firewalldサービスが動作しているかどうかをsystemctlコマンドで確認します。
# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; preset>
Active: active (running) since Mon 2023-09-25 17:01:04 JST; 5min ago
(以下略)
Active行がactive (running)となっているので、動作していることが確認できます。
firewall-cmdコマンドによる状態の確認
次にfirewall-cmdコマンドでどのようにパケットをフィルタリングしているかを確認します。確認するには--list-allオプションを付けて実行します。
# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens160
sources:
services: cockpit dhcpv6-client ssh
ports:
protocols:
(以下略)
publicは、デフォルトで適用されるフィルタリングです。servicesにはsshなどがありますが、Webサーバーで使用するhttpがありません。
実際にアクセスしてみる
サーバー自身からcurlコマンドでWebサーバーにアクセスしましたが、ローカル接続はパケットフィルタリングの対象外なので問題なく接続できていました。サーバー以外のマシンからWebブラウザなどを使ってアクセスしてみてください。パケットフィルタリングが有効になっていると、エラーも返ってこないため、タイムアウトするまで何も表示されません。
パケットフィルタリングが有効になっている(であろう)ことが確認できたら、設定を変更してアクセスを許可します。
パケットフィルタリングの設定を変更する
firewall-cmdコマンドで、httpサービスを許可します。
$ sudo firewall-cmd --add-service=http --zone=public
success
設定を確認します。今回はserviceだけを表示します。
$ sudo firewall-cmd --list-service
cockpit dhcpv6-client http ssh
httpが追加されています。
アクセスが許可されたことを確認する
パケットフィルタリングの設定を変更して、Webサーバーへのアクセスを許可しましたので、再度外部のWebブラウザからアクセスしてみます。無事にWebページが表示されれば、パケットフィルタリングの設定は完了です。
このように、サーバー上でサービスを動かすだけでなく、アクセス経路でそのサービスが使用しているプロトコルが通るように設定する必要があります。
今回はサーバー自身のパケットフィルタリングを設定しましたが、実際のサーバーではルーターやファイアウォール、ロードバランサー、WAF(Web Application Firewall)などがサーバーのアクセス経路に挟まることがあります。正しく設定し、アクセス経路を確保することが必要です。
- 筆者紹介
宮原 徹 氏
Linux標準教科書、Linuxサーバー構築標準教科書などの監修者。LinuCレベル1/レベル2 Version10.0の改訂作業にも協力。また、幅広いOSSに関する情報提供の場として「オープンソースカンファレンス(OSC)」の企画運営も。
バックナンバー
第21回:外部からWebサーバーにアクセスする
第20回:Webサーバーを動かす
第19回:Webサーバーをインストールする
第17回:ネットワークの状態確認を理解する
第15回:ファイルのアクセス権を理解する
第14回:パッケージをアップデートする dnf編
第13回:PAMを理解する
第12回:グループとは何かを理解する
第11回:sudoコマンドについて理解する
第10回:suコマンドで特権ユーザーになる
第9回:ユーザー権限を理解する
第8回:SSHによるリモートログイン
第6回:Linuxイストールの実際
第5回:Linuxインストールの準備
第3回:学習環境を用意する
第2回:Linuxをどう学ぶのか
第1回:Linuxを学ぼう