LoginSignup
4
2

More than 1 year has passed since last update.

IBM Cloud VPC Gen 2上のUbuntuサーバのログイン周りのセキュリティ設定

Last updated at Posted at 2020-09-21

当記事の概要

IBM Cloud VPC Gen 2上にUbuntuのVSIを立てた際に、セキュリティ確保のために実施したことを備忘録としてまとめました。

実施した内容は以下になります。

  • 一般ユーザの作成
  • 一般ユーザのsudoの設定
  • 一般ユーザでのSSH公開鍵認証の設定
  • rootでのSSHログインを禁止
  • パスワード認証を無効化
  • デフォルトセキュリティグループの変更(アクセス元IPアドレスの限定)

また、当記事では以下の記事を参考にしています。

前提事項

当記事では以下を前提としています。

  • VSIのOSはUbuntuである
  • ローカルの端末がMacである

一般ユーザの作成

初期状態ではrootでのSSHログインになりますが、rootをそのまま使用し続けるのは危険なため、一般ユーザを作成します。
Ubuntuではuseraddコマンド、adduserコマンドの2種類が使用可能ですが、useraddコマンドではホームディレクトリが作成されないなどの不都合があるため、adduserコマンドを使用します。
adduserコマンドを実行すると、対話式にパスワードの設定などが行えます。

# adduser <ユーザID>

一般ユーザのsudoの設定

この後rootでのSSHログインを禁止するため、一般ユーザがsudo suでrootになれるようにします。
ユーザをsudoグループに追加することで可能になるため、以下のコマンドを実行します。オプションが-Gだけだと指定したグループを追加ではなく置き換えになるため、-aGを指定します。

# usermod -aG sudo <ユーザID>

一般ユーザでのSSH公開鍵認証の設定

ローカルの端末でSSH鍵を作成します。

ssh-keygen -t rsa -b 4096 -f id_rsa_ubuntu

上記コマンドにより、id_rsa_ubuntuファイル(秘密鍵)、id_rsa_ubuntu.pubファイル(公開鍵)が作成されるので、id_rsa_ubuntu.pubファイル(公開鍵)の内容をコピーします。

次にUbuntu側で、対象の一般ユーザにsuし、.ssh/authorized_keysファイルを作成・編集し、コピーした公開鍵の内容をペーストします。

# su - <ユーザID>
$ mkdir ~/.ssh
$ vi ~/.ssh/authorized_keys

この後一旦ログアウトし、一般ユーザでSSHアクセスできることを確認します。

ssh -i <秘密鍵ファイルのパス> <ユーザID>@<VSIのIPアドレス>

rootでのSSHログインを禁止 & パスワード認証を無効化

rootでのSSHログインを禁止、パスワード認証を無効化するため、/etc/ssh/sshd_configファイルを以下の通り編集します。

# rootのログイン許可設定。yes -> no に変更する。コメントアウトされている場合は解除して変更する。
PermitRootLogin no

# パスワード認証の設定。yes -> no に変更する。コメントアウトされている場合は解除して変更する。
PasswordAuthentication no

ファイルを保存した後、以下のコマンドでsshdを再起動します。

sudo /etc/init.d/ssh restart

[2021年5月追記]
なお、Ubuntu 20.04のインスタンスを作成した際、上記の設定だけではrootでのSSHログイン、および、パスワード認証を無効化できませんでした。/etc/ssh/sshd_config.d/50-cloudimg-settings.conf というファイルにも同様の設定が記述されており、こちらも上記の通り yes -> no に変更する必要がありました。(/etc/ssh/sshd_config において、/etc/ssh/sshd_config.d/*.conf をincludeする指定がされているので、実際のファイル名は前述とは異なっているかもしれません)

デフォルトセキュリティグループの変更(アクセス元IPアドレスの限定)

VPCのセキュリティグループの設定で、アクセス元IPアドレスを特定のIPアドレスのみに限定します。

VPCのセキュリティグループのページにアクセスします。

対象のVPCにはデフォルトのセキュリティグループが存在するため、それを選択します。(この例ではsamplevpcというVPCのデフォルトセキュリティグループを選択)
image.png

「ルール」をクリックします。
image.png

デフォルトのセキュリティグループのインバウンド・ルールでは、VPC作成時にデフォルト指定から変更していなければ、ポート22(SSH)のアクセスを任意のIPアドレスから受け付けています。これを特定のIPアドレスレンジのみに限定します。
「TCP」の行の右端の3点ブロックをクリックし、「削除」を選択して削除します。
次に、「作成」ボタンをクリックします。
image.png

新規のインバウンド・ルールとして、「プロトコル」に「TCP」、「ポート範囲」に最小値「22」、最大値「22」を指定します。
また、「CIDRブロック」を選択し、許可するアクセス元IPアドレスのレンジを指定し、「保存」ボタンをクリックします。
image.png

以下は、2種類のレンジを指定したルールを作成した後の状態です。
image.png

以上により、特定のIPアドレスからしかSSHアクセスできず、rootでのSSHログインが禁止され、パスワード認証も無効化された状態になりました。

プロキシ指定でのSSHアクセス

昨今のリモート業務では自宅からサーバにアクセスするケースがありますが、その場合、インターネットプロバイダーにより動的にIPアドレスが割り振られ、IPアドレスレンジを絞れないケースがあります。会社でリモート用のHTTPプロキシが提供されている場合、そのプロキシを経由することで、IPアドレスを許可対象のIPアドレスに限定できる場合があります。

HTTP Proxy経由でSSH接続する方法(Mac)では、Macを使用した場合のHTTPプロキシ経由のSSHアクセスが紹介されています。これに沿って以下のコマンドを実行することで、アクセス元IPアドレスを許可対象のアドレスにすることが可能となります。

ssh -i <秘密鍵ファイルのパス> <ユーザID>@<VSIのIPアドレス> -o ProxyCommand='nc -X connect -x <HTTPプロキシのホスト名>:<HTTPプロキシのポート番号> %h %p'

なお、Windowsの場合はプロキシ環境下のWindows10から外部へSSHでアクセスする方法で同様に実施可能です。

4
2
0

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
  3. You can use dark theme
What you can do with signing up
4
2