AWS EC2で踏み台サーバを作成して80ポートと22ポートを分ける
EC2にWebサーバを立ち上げると80ポート(要件によっては443ポートも)や22ポートを開けると思います。が、22ポートを問答無用で開放しておくのはセキュリティ上好ましくありません。
ということで、そういう場合は22ポートのみを開けている踏み台サーバをEC2で作成します。
踏み台サーバからWebサーバに22ポートでアクセスするように限定することで、Webサーバのセキュリティを高めます。
踏み台サーバは管理者がWebサーバをメンテナンスしたい時にだけ起動し、通常時はインスタンス停止しておきます。
踏み台サーバを作成する
EC2を作成してEIPを割り当てます。インバウンドは22ポートのみ解放します。
sshで接続できるか確認します。
$ chmod 400 aaaa.pem $ ssh -i "aaaa.pem" ec2-user@ec2-18-xx-xx-xx.us-east-2.compute.amazonaws.com The authenticity of host 'ec2-18-xx-xx-xx.us-east-2.compute.amazonaws.com (18.xx.xx.xx)' can't be established. ECDSA key fingerprint is SHA256:gMeZcYyIA5YHBMiX0qCgrhrtyjIuytyYKOk. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'ec2-18-xx.xx.xx.us-east-2.compute.amazonaws.com,18.xx.xx.xx' (ECDSA) to the list of known hosts. __| __|_ ) _| ( / Amazon Linux AMI ___|\___|___|Amazon Linux AMI 2017.09 Release Notes
これで踏み台サーバに接続するのはOKです。
次に踏み台サーバから保護対象のWebサーバに接続するので、scpコマンドでWebサーバのEC2の秘密鍵を踏み台サーバにアップロードします。これも本当はセキュリティ上良くありませんが、とりあえず試しに実装してみます。ローカルから実行します。
scp -i “xxxx.pem” “アップロードするxxxx.pem” ユーザ名@EC2のエンドポイント:アップロード先パス
ここではEC2のエンドポイントは踏み台サーバにします。踏み台サーバに保護対象に接続するための秘密鍵をアップロードしたいからです。
$ scp -i "xxxx.pem" "yyyy.pem" ec2-user@ec2-18-xx-xx-xx.us-east-2.compute.amazonaws.com:~ yyyy.pem 100% 1692 8.4KB/s 00:00
次にアップロードしたファイルの権限変更します。
[ec2-user@ip-10-xx-xx-xx ~]$ chmod 400 yyyy.pem
で、保護対象のEC2の20ポートのソース元を踏み台サーバのプライベートアドレスに指定します。グローバルIPではないので注意です。
これで踏み台サーバからのみのssh接続ができるようになり、逆に、直接保護対象のEC2にsshは出来ないようになります。
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント