ファイアウォールについて、復習も兼ねてなにそれ?人向けに語ります。
実際にはこういう時に設定が必要だよ!というのが分かるようになることを目的にしています。
TL;DR
サーバにアクセスする際は、ファイアウォールという機能で通信が制限されます。
制限されているので、使いたい場合は許可設定が必要ですよ。
#背景
長いので技術的な話だけ知りたい人は、ファイアウォールの概要の前にへジャンプ。
あるところの業務システムで、オンプレサーバ運用していたものを全てクラウド化した。
仮想マシンの払い出し作業は、ベンダーさんにこんな設定で払い出してくださいって依頼したら、
あとはやってくれて、仮想マシンが使えるようになる。
AWS/Azure/GCP使ったことある人は、イメージつくと思うけど、画面ポチポチして仮想マシン払い出す作業はベンダーさんがやってくれるイメージ。
よって、こっちとしては仮想マシンのリソースとか負荷分散装置の有無とかファイアウォールの設定とかを決めるだけでいい。
さて、この各設定をどうやって決めているかというと、動かすアプリケーションを導入する業者さんに決めてもらう。
特に、ファイアウォールに注目して話していくと、例えば、Webサービス使う場合、HTTPS(443/tcp)のポートを開放する必要があるわけだけど、クラウドサービスには、AzureならNSG、AWSならセキュリティグループ/ACL、GCPは特にネーミングなし?のように、マシン自体のファイアウォール(Windows Firewall,firewalld等)以外にも、ファイアウォール機能が用意されており、適切に設定する必要がある。
Azureの例は以下の記事参照。
Azure Network Security Group(NSG)についておさらい
公式の図を用いるとこんな感じで、点線の「NSG1」と書かれたとこで通信を制限できる。
さらに、VM1というところでマシン自体のファイアウォールを設定可能である。
しかし、この設定がなかなかテキトーで、「このポート開放するって言ってるけど、ホントにあってる?」とかよくある。
そして、このポートじゃないですねとなり、設定を変更しましょうとなる。
するとどうなるかというと、今度はベンダーさん側に「最初はAポート空けてっていったけどやっぱりBポート空けて!」と、どんどん無駄な時間がかかるのである。
この業務特有のボトルネックですが、導入するシステムで解放する必要があるポートは把握できるようになりたい。
そんな思いもあり、みんなで基本的なファイアウォールへの知識を深めていけたらと思います。
ファイアウォールの概要の前に
概要の説明の前に、以下でIPアドレスとポートを使って通信するよ的な話をする。
そもそも、サーバってなにしてるのって話ですが、アクセスしたら何かできるようになります。
WEBサーバならWEBサイトが見れるし、DBサーバならデータを保存/検索できるし、Mailサーバならメールを送れるようになる。
この時「アクセスする利用者」と「アクセスされるサーバ側」は以下のようなイメージです。
さて、利用者側はどうやってアクセスしたいサーバまでいくでしょうか。
それはIPアドレスとポート番号を利用します。
IPアドレスはインターネット上の住所みたいなものです。
ポート番号はというと...家の中のドアみたいなものです・・か?
この住所の家の、1番の扉はトイレ、2番の扉はお風呂みたいな・・?(この例は伝わるのか・・・)
要は機能ごとにポートが分かれていて、番号がついていないところにアクセスしても何もないよって話なんですが。
Qiitaの記事にアクセスしたい場合を考えると、ブラウザを使って「qiita.com:443番」にHTTPのリクエストを送っています。
それで、「qiita.com」はDNSサーバで名前解決されてIPアドレスが分かるので、結局「IPアドレス:443」でアクセスする感じです。
なお、別のポートにつなぎに行っても何も表示されません。
例えば、ブラウザで「qiita.com:8080」と入力しても何も表示されません。
この場合はサーバまではたどり着けるけど、WEBサービス用のポート「443」番にアクセスしていない状態です。
ファイアウォールの概要
さてここから、本題です。
ファイアウォールでは送信元IPアドレスやポートに関し通信を許可/拒否することができます。
下の図はポートに関し、443portへは許可、8080portへの拒否というルールを設定した場合はこんな感じを図にしてみました。
portだけでなく送信元のIPアドレスでも設定は可能で、例えば、自社で使用しているIPアドレスからの通信のみ許可すれば、外部からの通信は出来なくなります。
そうやってサービスが使用可能な範囲を狭めて、セキュリティを担保していく感じです。
ちょっと長くなったので(背景のせい)前後編に分けます。
Advent Calendar 6日目に書きます。
ワイ「ファイアウォール...?#後編」