APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

やりがちなセキュリティグループの危険な設定と改善案

はじめに

こんにちは、クラウド事業部の島田です。

みなさんはAWSのセキュリティ対策でどんなことをしていますか?

私はAPCに入社して約1年半、BtoCのサービスで保守/運用に携わってきました。

今回の記事では、セキュリティ対策の1例として
業務で学んだセキュリティグループの活用法について紹介してみたいと思います。

対象者

  • AWSを触ったことがある方
  • セキュリティに興味がある方

目次

概要

AWSを触ったことがある人なら馴染みあるサービスだと思うのでざっくりと振り返ります。

セキュリティグループとは...

通信元や通信先などを指定して、通信を許可するルールを設定することができ、
いわゆるファイアウォールとしての役割を果たすことができる。

webサーバを例にするとこんな感じですね

webサーバを想定したこの設定は、セキュリティの観点から見るとあまりよろしくありません。

次章では上記設定のどこが危険なのかを攻撃者目線で解説しつつ、 どのように工夫すればよいかを紹介していきたいと思います。

本題

みなさんはついつい楽だからとソース元(通信元)を0.0.0.0/0で全開放した経験はありませんか?

現実の世界で例えると、常に玄関の扉を開きっぱにしてる感じでしょうか?
危ないですよね...

ネットワークにおける全開放が攻撃者からどのように見えるのか
攻撃者目線で見ていきましょう!

攻撃者からはどう見える?

攻撃者はサイバー攻撃をする前に対象の情報収集を行います。
代表的な例だと「スキャン」や「ソーシャルエンジニアリング」、「OSINT」と呼ばれる手法がありますが、 今回はスキャンで行われる「ポートスキャン」を試してみます。

ポートスキャンとは...

インターネット上に公開されているサーバに対して何番のポートが空いているか調べる
空いているポートが分かればその後ろで起動しているサービスの情報を特定することができる
注意:ポートスキャンは使い方次第で違反行為になりかねないものです。
   実施する際は必ず自身が管理しているネットワーク内で行ってください。

先程紹介したwebサーバをポートスキャンするとこんな情報が見えます。

Host is up (0.17s latency).
Not shown: 997 filtered tcp ports (no-response)
PORT    STATE  SERVICE VERSION
22/tcp  open   ssh     OpenSSH 8.7 (protocol 2.0)
80/tcp  open   http    Apache httpd 2.4.56 ((Amazon Linux))
443/tcp closed https

sshやhttpで利用するサービスやバージョンが丸わかりですね〜
スキャンしたサーバはwebサーバなので80番ポートが空いているのは仕方ないですが
sshの22番ポートが一般開放していることは非常に危険です。

sshとは遠隔地のサーバにログインしたり、操作するためのものであり全開放している状況はよろしくありません。

また攻撃者は上記からサービスのバージョン情報を元に脆弱性(CVE)を検索し攻撃を仕掛けてきます。

どうすれば防げる?

結論から言うと

  • 利用状況ごとにセキュリティグループを分ける
  • 利用するサービスは最新版にする

が考えられます。
今回は利用状況ごとにセキュリティグループを分けるについて深堀りしていきます!

利用状況ごとにセキュリティグループを分ける
先程、例にあげたwebサーバはそもそも直接ログインできる設計は正しくありません。
本来であれば下記フロー図のように多段でログインできるべきです。

graph LR PC-->踏み台-->webサーバ

その上で踏み台用SGとwebサーバ用SGを作成し、それぞれのインスタンスに付与させます。
■踏み台用SG

■webサーバ用SG

ここで重要なポイントをお伝えします!

セキュリティグループのソースには別のセキュリティグループを付与できる!!

この設定により、webサーバへSSH接続ができるのは
踏み台用SGがついているもののみとなり
外部からの通信はHTTPとHTTPSに限定することができます。

▼SSH接続のフロー図

graph LR PC-->踏み台-->|"接続OK"|webサーバ 外部-->|接続NG|webサーバ

▼ポートスキャンをしてみるとポート22番のSSHが表示されないことが確認できます!

Host is up (0.18s latency).
Not shown: 998 filtered tcp ports (no-response)
PORT    STATE  SERVICE VERSION
80/tcp  open   http    Apache httpd 2.4.56 ((Amazon Linux))
443/tcp closed https

こうすることで、攻撃者に余計な情報を与えず
よりセキュアなwebサーバを構築することが出来ますね!


利用するサービスは最新版にする
こちらについてセキュリティグループは関係ありませんので詳しくは省略しますが、
CVEデータベースを確認したり、定期的なメンテナンスやセキュリティ対策ソフト等を導入して対策しましょう!

まとめ

今回はセキュリティグループの活用法について解説してみました。

全開放がセキュリティ的に危ないことはみなさんもなんとなく理解できると思いますが、
具体的にどう危ないのかを解説している記事があまりないと思い執筆しました。

この記事で一番伝えたい事として
無闇にポートの全開放はしない!
これだけ覚えてもらえればOKです!

おわりに

今回紹介した対策はあくまで1例です。
サイバー攻撃は年々巧妙さを増しています。
みなさんもセキュリティ対策を行い、十分注意していきましょう!

私達クラウド事業部はAWSなどのクラウド技術を活用したSI/SESのご支援をしております。

https://www.ap-com.co.jp/service/utilize-aws/

また、一緒に働いていただける仲間も募集中です!
今年もまだまだ組織規模拡大中なので、ご興味持っていただけましたらぜひお声がけください。

www.ap-com.co.jp

本記事の投稿者: 島田
AWSをメインにインフラ系のご支援を担当しています。