1/99スタックエンジニアの適当記録

適当なことを書きます。関西で転職したいです。

AWSを触る ~アクセス制御~

前回はプライベート領域にDBサーバを構築しました。

roku28632.hatenablog.com

 

今回は、パブリック領域のWebサーバ、プライベートのDBサーバ、自宅のPC、これらのアクセスを適切に設定していきます。

 

WebサーバーからDBサーバーへのICMP通信

まず、現在ICMP通信が可能か確認してみます。

WebサーバーからDBサーバーへpingを飛ばしてみます。

pingを飛ばすためにWebサーバーへSSHでログインします。

前回DNS設定したので、FQDNでアクセスしてみます。

f:id:roku28632:20200504120129p:plain

Teratermの詳しいやり方はこちら

roku28632.hatenablog.com

ちなみに、このTeratermの記事を書いたときは意識せずにやってましたが、接続ユーザの「ec2-user」はEC2で作ったサーバーにデフォルトで割り当てられるデフォルトユーザのようです。

本来こういうデフォルトユーザーはセキュリティ的に無効化しておいて、別のユーザーを作っておくべきだと思います。

 

接続できたらpingを飛ばします。

まったく返答がありませんので、これを返答されるように設定していきます。

f:id:roku28632:20200504122017p:plain

 

セキュリティグループの画面を開いて、作ってあるDBサーバーを選択し、「インバウンドのルールの編集」を押下します。

f:id:roku28632:20200504123204p:plain

 

「ルールの追加」を押下し、タイプに「すべてのICMP」を選択します。

また、送信元は「任意の場所」を指定しておきます。

設定できたら「ルールの保存」を押下します。

f:id:roku28632:20200504123822p:plain

 

設定できたので、再度pingを飛ばしてみます。

今度は戻りがありました。

f:id:roku28632:20200504125120p:plain

 

外部からWebサーバーへのICMP通信

次はWebサーバーへの通信です。

Webサーバーはもともと、外部からアクセスできるパブリックセグメントに設置していました。

そのため、自宅のクライアントから疎通できるはずです。

しかし、実際やってみると、DBサーバーと同じくpingの応答がありません。

セキュリティグループを見てみるとわかりますが、HTTPとSSHしか設定していないためです。

よって、こちらにもICMPを許可します。

やり方はDBサーバーのセキュリティグループと同じです。

しかし、こちらはパブリック環境のため念の為、アクセス元を自宅のIPアドレスに設定しておきました。

設定前は飛ばなかったpingが設定後は飛ぶようになりました。

f:id:roku28632:20200504130729p:plain

 

WebサーバーからDBサーバーへのSSH接続

次はDBサーバーへSSH接続するための設定をします。

DBサーバーはプライベート領域に構成したため、外部からはSSH接続できません。

そのため、構築したWebサーバーを踏み台にしてアクセスするようにします。

この構成はよくある構成で、いわゆるDMZに置いてある外部からアクセス可能なサーバーを経由して内部のサーバーへアクセスするという仕組みです。

また、SSH接続するためには、キーペアの設定が必要です。

AWSのキーペアは、公開鍵暗号方式です。

EC2にサーバーを構成するときに、キーペアの設定があったかと思います。

(ちなみにこれです。)

f:id:roku28632:20200504202529p:plain

 

 この段階で構成サーバーに公開鍵を保持しているわけなので、あとはダウンロードしてある秘密鍵をアクセス元に設定します。

今回はWebサーバーがアクセスするので、Webサーバーへ秘密鍵を保持させます。

Teraterm秘密鍵をWebサーバーへ送ります。

Webサーバーへ秘密鍵のファイルを送るのにはTeratermのSCP機能を利用します。

TeratermでWebサーバーへ接続した後、ファイルから「SSH SCP」を選択します。

f:id:roku28632:20200505151419p:plain

 

上ペインの方で、fromに秘密キーを指定し、Toには「~/」でWebサーバーのホームディレクトリを指定して「Send」を押下します。

f:id:roku28632:20200505151756p:plain

 

ファイルが遅れたか確認しておきます。

lsで配下のファイルを出力します。

*.pemファイルの存在が確認できます。

f:id:roku28632:20200505152656p:plain

 

次に、不正にアクセスされることを回避するために、秘密キーファイル*.pemファイルの権限を変更しておきます。

「chmod 400 my-key.pem」コマンドを実行します。

これでこのファイルは「所有者のみ読み取り権限」が付与できます。

実行できたらls -l コマンドで設定内容を確認します。

-r--------」と表示されているので、readのみの設定になっています。

f:id:roku28632:20200505153709p:plain

 

これで秘密鍵の設定は完了したので、接続してみます。

今やろうとしていることは、WebサーバーからDBサーバーへのssh接続です。

ssh -i my-key.pem ec2-user@10.0.2.10」

接続できました。

f:id:roku28632:20200505154142p:plain

 

これでアクセス制御の設定も完了です。