AWSでSSHのポート制限の対応をしました

AWSからSSHのポートが危ないからなんとかしなさいとメールが来たので、Security Groupsで自宅のIPアドレスからしかアクセスできないように設定してみました。

ある晴れた休日の朝、MacBook Proを起動していつものようにメールを受信したら、何やら英語だらけのメールが来ていました。

Dear AWS Customer,

Your security is important to us. We received notification from a third-party that one or more of your Amazon EC2 instances listed below may have been listening on one or more commonly used sensitive ports.

Google翻訳で訳しながら読んでみると、「サードパーティーが、君んところのEC2インスタンスが一般的に使われるセンシティブなポートをリッスンしていると言ってきてるぜ」ということらしい。

その次にインスタンスIDとその”センシティブなポート”(そこっ! 感度の高い穴とか言わない!)が表記され、次に対策が書かれていました。ポートは22番なのでSSHのポートです。

Unrestricted access to these ports can increase the risk of malicious activity against your EC2 instance (e.g. hacking, denial-of-service attacks, loss of data). You can restrict access to these ports by updating the Security Groups associated with those instances to block the ports in question. If you choose not to restrict access to the port(s) listed above, then we recommend you:

対策としては「Security Groupsで設定しとけ!」と書かれていて、「そうじゃなけりゃ次の方法を…」ということで「パッチを最新にしとけ」とか「特権アカウントでアプリ実行すんな」とか一般的な注意がありました。

ということで、SSHの設定を見直すことに。

まずは現状の設定を見ていきます。

AWS Security Group
↑ どこからでもSSHでログインできる状態になっています。

SSHでどこからでもログインできてしまうということは、どこからでもアタックできてrootのパスワードさえ割れてしまえば、やりたい放題やれてしまうということです。これを自宅のIPアドレスからしかログインできないように設定します。

自宅のIPアドレスの調べ方は下記のURLにアクセスします。

アクセス情報【使用中のIPアドレス確認】

自宅のグローバルIPアドレスを調べたらAWSのSecurity GroupsでSSHのInboundルールを設定していきます。

AWS Security Groups Inbound Rule

↑ SSHのSourceのところを「Anywhere」から「Custom IP」にすると後ろのテキストボックスにIPアドレスを入力できるようになります。

IPアドレスは「IPアドレス/マスク長」の形式で入力します。マスク長はマスクをしている長官ではありません。

AWS Security Groups

↑ 設定が完了しました。

IPアドレスなので隠していますが、SSHのところに自宅のIPアドレスが設定されています。設定が終わったら”自宅のPC”のターミナルソフトでSSH接続ができるかを確認しておきましょう。

プロバイダーの個人向けサービスでは一般的にIPアドレスは固定ではありませんので、設定したIPアドレスが永続的に使えるわけではありません。また使えるサービスがあってもお値段が高い場合がほとんどです。なので頻繁に見直す必要がありますが、どこからでも攻撃できてしまい、乗っ取られて好き勝手やられる事態に比べればマシです。

あるいは面倒でも最初からSSHの設定を外して、使うときだけ設定するという方法もありだと思います。

自分が運営しているサーバー、がんばって更新しているブログが乗っ取られないようにしないとですね。

カテゴリーIT