search
LoginSignup
0

More than 1 year has passed since last update.

posted at

updated at

(Amazon Linux 2の)sshd_configとauthorized_keysを学ぶ

内容

初期Amazon Linux 2の/etc/ssh/sshd_config設定を色々と変更しつつsshd_configについて学んでいく。
ついでにauthorized_keysも。

ちょっとだけsshd_configを学ぶ

取り敢えず使いそうなところの設定

意味 該当箇所
パスワード認証 PasswordAuthentication
チャレンジレスポンス認証 ChallengeResponseAuthentication
公開鍵認証 PubkeyAuthentication
rootログイン PermitRootLogin
接続ポート Port XX(基本22)
SSH接続バージョン Protocol

Amazon Linux 2の初期設定

設定

#Port 22

#PubkeyAuthentication yes
# the setting of "PermitRootLogin without-password".

# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no
PasswordAuthentication no

# Change to no to disable s/key passwords
#ChallengeResponseAuthentication yes
ChallengeResponseAuthentication no

#PermitRootLogin yes

どういう設定が良いのか

を調べてみた所共通して多く出てきたのが以下設定。

・rootログインの禁止
・パスワード認証の禁止
・公開鍵認証の
・SSH接続Verison 2のみ許可
・チャレンジレスポンス認証を無効化

推奨値 設定値 推奨値との比較
rootログインの禁止 #PermitRootLogin yes ×
チャレンジレスポンス認証 ChallengeResponseAuthentication no
公開鍵認証の許可 #PubkeyAuthentication yes
SSH接続Verison 2のみ許可 設定見つけられず
パスワード認証の禁止 PasswordAuthentication no

ここで、×と?だったものに関して接続を試してみるとどうなるのかを検証。

rootログインの禁止

/etc/ssh/sshd_configのrootログインに関する設定値は以下であった

#PermitRootLogin yes

ただし、公式サイトでは以下のように記載されている。
Amazon Linux 2

デフォルトで安全
Amazon Linux 2 では、SSH キーペアの使用およびリモートルートログインの無効化により、リモートアクセスが制限されています。また、Amazon Linux 2 では、必須ではないにもかかわらずインスタンスにインストールされるパッケージの数が削減されるため、セキュリティの脆弱性のリスクを抑えることができます。深刻度が "緊急" または "重要" であるセキュリティアップデートは、初回起動時に自動的に適用されます。

試してみないと良く分からないので試してみます。

ss_002.JPG
ss_003.JPG

Tera Termを使用して、ユーザーをrootとし接続してみます。
......
.......
........
.........

Please login as the user "ec2-user" rather than the user "root".

_人人人人人人_
> ナニコレ <
 ̄Y^Y^Y^Y^Y^Y^ ̄

結果、公式通りrootでのログインはできなかったが、rootログイン時に出力される上記の文は
どこに設定されているのかは知っておきたかったので色々と調べてみた所以下に設定されていることが分かりました。

/root/.ssh/authorized_keys
no-port-forwarding,no-agent-forwarding,no-X11-forwarding,command="echo 'Please login as the user \"ec2-user\" rather than the user \"root\".';echo;sleep 10" ssh-rsa <文字列> <キーペア名>

上記が何かというとauthorized_keysのオプションで、色々設定できるらしいです。初めて知りました。
今回の場合だとssh-rsaの前に記載されています。

オプション 意味
no-port-forwarding ポート転送禁止の設定
no-agent-forwarding 認証エージェント転送禁止の設定
no-X11-forwarding X11(画面)転送禁止の設定
command="command" 実行可能なコマンドの設定

オプション消したらrootでログインできるのでは...?
という事で、バックアップを取得してからssh-rsaより前を削除してみます。

# cp -p /root/.ssh/authorized_keys /root/.ssh/authorized_keys_yyyymmdd
# ls -a /root/.ssh/
# vi /root/.ssh/authorized_keys
# cat /root/.ssh/authorized_keys
# systemctl restart sshd.service

authorized_keysの設定が反映されたので、新しくSSH接続を試してみます。
※無いとは思いますが何かあって入れなくなると困るので現在の接続は保ったままとします。

ss_005.JPG
できました。
念のためにユーザ確認をしてみます。

# whoami
root

ログインすることができました。
authorized_keysのオプションを無くした状態でsshd_configの#PermitRootLogin yesを以下のように変更するとどうなるのかを試してみます。
(変更前)
#PermitRootLogin yes

(変更後)
PermitRootLogin no

sshd_configのバックアップを作成して、バックアップがあるかを確認します。
その後設定を変更して、設定反映をします。

# cp -p sshd_config sshd_config_yyyymmdd
# ls -l
# vi /etc/ssh/sshd_config
# systemctl restart sshd.service

それでは新しい接続でrootのログインを試してみます。
ss_003.JPG

ss_006.JPG

認証に失敗しました。再試行してくださいと表示されてrootにログインすることができなくなりました。
なので、デフォルトでauthorized_keysのオプションによりログインが出来なくなっていて、
そのオプションを削除するとsshd_configにてPermitRootLogin noとなっていないため
rootでログインできることが分かりました。

結果

sshd_config authorized_keys 接続可否
#PermitRootLogin yes オプション有 ×
#PermitRootLogin yes オプション無
PermitRootLogin no オプション有 ×
PermitRootLogin no オプション無 ×

sshd_configでPermitRootLogin noと設定した方が良いことが分かる。

SSH接続Verison 2のみ許可

Tera TermでSSHバージョン(V)を[SSH1]を選択して[OK]を押下します。
ss_000.JPG

ss_001.JPG

...
....
.....

_人人人人人人_
> できない <
 ̄Y^Y^Y^Y^Y^Y^ ̄

/etc/ssh/sshd_configにはProtocolの設定がなかったが何故だろうと思い調べた所
OpenSSH 7.4でSSH v1は廃止されたとのこと。つまり何もせずともSSH v2となる。
OpenSSH 7.4/7.4p1 (2016-12-19)

  • This release removes server support for the SSH v.1 protocol.

Amazon Linux 2はどのバージョンなのかを確認してみる。

# ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017

OpenSSH 7.4p1でした。

結果

OpenSSH_7.4よりSSH v1が廃止されたため、特に何もせずともSSH v2となっていた。

終わり

最後にもう一度比較してみたいと思います。

推奨値 設定値 推奨値との比較
rootログインの禁止 #PermitRootLogin yes
チャレンジレスポンス認証 ChallengeResponseAuthentication no
公開鍵認証の許可 #PubkeyAuthentication yes
SSH接続Verison 2のみ許可 設定見つけられず
パスワード認証の禁止 PasswordAuthentication no

初期Amazon Linux 2の設定は何も設定しなくても上記の推奨値に関しては問題ないことが分かった。
知らないことだらけだったためとても勉強になった。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0