[AWS – Lightsail] SSHのセキュア設定

なんか謎にGCEのf1-microが課金されだしたので、去年の夏頃に半額になりすごくお得感のあるAWSのLightsailに乗り換えました。

一番安いプランで$3.5! 素晴らしい。
加えて一番安いプランは一ヶ月無料なんですね!

3.50 USD にて Lightsail プランを 1 か月間 (750 時間まで) 無料で ご利用いただけます。Microsoft Windows Server をご利用の場合は、8 USD のプランを 1 か月間無料でご利用いただけます。また、マネージドデータベースプランをご利用の場合には、15 USD のプランを 1 か月無料でご利用いただけます。最初の Lightsail サーバーを起動する際に適切なプランを選択すると、お客様のアカウントに 1 か月間無料のクレジットが付与されます。*
https://aws.amazon.com/jp/lightsail/pricing/

Lightsailは実質T2インスタンスのCPUクレジットを絞ったバージョンと聞いたので、CPUをよく使う用途には向いてませんが個人のブログとかでは十分でしょう。


今回は大好きなDebian Stretchを使用しています。UbuntuでもSSHの設定はほぼ変わらないです。CentOSは知らないです(´・ω・`)

Contents

使用するポート番号の変更

まず一番に設定しておきたいのが多分ポート番号の変更でしょう。
デフォルトでは22ですが、この番号ではよく攻撃されるのでログが鬱陶しい事になります。
適当な数字にして隠してしまいましょう。
Well known port numbers(0-1023)はだめです。

$ sudo vim /etc/ssh/sshd_config
#13行目辺りの#Port 22の#を外して任意のポート番号にしてください。
Port 51234

$ sudo service sshd restart

次にLightsailインスタンスの管理画面からネットワークを開きます。
ファイヤーウォールの設定があるので、「ルールの編集」を押してSSHを削除。
追加でPortに記入した数字を入力して保存を押します。

これでSSHの使用ポート番号の変更が完了です。実際にアクセスしてみて確認してください。

Admin以外のユーザーを追加

Lightsailの初期ユーザーはAdminですが、これもよく攻撃に使われるので余裕があれば作業用ユーザーを作成してそれを使うようにするといいかもです。

$ sudo useradd -m -s /bin/bash username
$ sudo passwd username #新しく作ったユーザーのパスワード設定
$ sudo vim /etc/sudoers
# Sudoが使えるように
# User privilege specificationの下に追加
username ALL=(ALL:ALL) ALL

# 作ったユーザーに切り替えて公開鍵認証用の鍵を作成。
$ sudo su - username
$ ssh-keygen -t rsa
$ cd ~/.ssh
$ cat id_rsa.pub >> authorized_keys
$ chmod 0600 authorized_keys
# id_rsaが接続の際の認証に使う鍵なのでscpなどでローカルに保存しておいてください。保存後は削除します。
$ rm id_rsa

作成したユーザーと鍵でログインできることが確認できたら完了です。

ログインできるユーザーの指定

特定のユーザーのみでしかログインできないようにしてしまうのもありです。
sshd_configの最終行にAllowUsers usernameを追加するだけです。

$ sudo vim /etc/ssh/sshd_config
AllowUsers username
$ sudo service sshd restart


複数のユーザーを指定する時は半角空白で区切ります。
またIPアドレスとの組み合わせも可能です。

AllowUsers username username2 # 複数ユーザー
AllowUsers username@127.0.0.1 # ユーザー名@IPアドレス
AllowUsers *@127.0.0.1 # IPアドレスのみ指定

ログインできないユーザーの指定 (Adminでログインできないように)

特定のユーザーのみをログインできない設定もあります。
DenyUsersです。書式は上に書いたAllowUsersと変わりません。

DenyUsers admin

Rootユーザーのログイン禁止

後半になりましたがこの設定も鉄板です。

$ sudo vim /etc/ssh/sshd_config
PermitRootLogin no
$ sudo service sshd restart

その他(sshd_config)

sshd_configでその他設定しておいた方がいい項目です。
コメントアウトしてあったりするので各自の判断でどうぞ。

$ sudo vim /etc/ssh/sshd_config
PubkeyAuthentication yes #公開鍵認証 (コメントアウトされててもできる)
AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
PasswordAuthentication no # パスワード認証の無効化
PermitEmptyPasswords no # 空パスワードの無効化

コメントする