2015.06.08

rootログイン禁止してセキュリティ向上しよう!SSHログイン制限の方法

1433326189

SSH接続のセキュリティを向上しましょう!

こんにちは。GMOクラウドの宇野です。今回はPleskを使わない、やっておきたいセキュリティ設定であるrootでのsshログイン禁止方法をご紹介します。


Ⅰ.rootアカウントの管理は厳重に!

突然ですがオトナって自由でいいですね! 夜更かしできるし、お酒だって飲めます。子供のころに夢見た○○チョコの箱買いだって、いとも簡単にできちゃいます。でも自由が利くが故に、やり過ぎてしまうことも時々あります。お酒を飲んで羽目を外しすぎたり、オトナ買いして後悔したり・・・(個人談)。早くまともな大人になりたいなぁと思う今日この頃です。

さて、いきなり変な話をしてしまいましたが、お話したいことは当然そんなことではありません。サーバーにはrootという、サーバー内の最上位権限を持っているアカウントが存在しています。最上位権限を持っているということは、それだけ自由ということです。しかしながら、先のお話のように「やることを間違うととっても大変」なアカウントでもあります。操作を誤ってサーバー内のデータを消してしまったり、悪意を持ってECサイトのデータベースを覗き見たり・・・問題が発生した後の事を考えると、顔が青くなってしまいます。

サーバー運用面から考えると、rootアカウントの運用は厳重に行うべきことです。第三者にrootアカウントを乗っ取られないようにすることは当然ですが、内部の関係者であっても、不要にrootになれる状態にすることはサーバー運用面で好ましいことではありません。rootになるユーザーは、その自由とリスクを知っている方がなるのが好ましいと言えます。

これらの経緯からrootアカウントへのログインは制限したいところです。制限の方法はいくつか種類がありますが、今回はその最初に行うべき設定とも言えるrootでのSSHログインを禁止する方法をご紹介します。

なお弊社のいくつかのサービスでSSH接続によるrootへの直接的なログインを禁止した状態でサーバーをご提供しております。詳細はサーバー設定完了通知やマニュアルなどをご参照ください。本稿ではrootでの直接的なログインを許可しているサービスを対象として、これを禁止する方法をご紹介します。


Ⅱ.rootのSSHログイン禁止設定方法

0.前準備
作業を行うにあたり(シリアル)コンソールまたはSSHクライアントが必要になります。本作業は失敗するとSSHでログインができなくなるため、(シリアル)コンソールから設定することをお勧めしますが、プランやご契約形態によって(シリアル)コンソールのご提供が無い場合があります。詳しくはサーバー設定完了通知やご契約商材のマニュアルをご参照ください。

1.作業前の確認
(シリアル)コンソールやSSHでサーバーにrootでログインできたところからの作業を説明します。
まず、作業対象に間違えが無いことを確認しましょう。確認に必要なコマンドは下記です。

○IPアドレス確認コマンド
設定したいサーバーにログインしているか確認しましょう。
# ifconfig
# ip a (CentOS 7の場合)

○ログインユーザー確認コマンド
今、何のユーザーでログインしているか確認しましょう。
本作業ではコマンド実行後に[root]と表示されれば問題ありません。
# whoami

○今居るディレクトリーの位置確認コマンド
コマンド操作を行うにあたって、今操作しているディレクトリ(カレントディレクトリー)を意識することは非常に重要です。作業前には現在のディレクトリーの位置を確認する癖をつけると良いでしょう。
# pwd

2.SSHログインユーザーの作成
rootしかSSHできるユーザーが居ないのに、それを禁止してしまうとログインすることができなくなります。SSHでログインするためのユーザーを作成しましょう。

○Linuxユーザーの作成
# useradd -s /bin/bash ユーザー名

○パスワードの設定
# passwd ユーザー名

[root@gmocloudacademy ~]# useradd -s /bin/bash myhostsshuser
[root@gmocloudacademy ~]# passwd myhostsshuser
Changing password for user myhostsshuser.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[root@gmocloudacademy ~]#

パスワード設定時に入力した文字列は表示されません。間違いの無いように2度同じパスワードを入力しましょう。

3.sshサーバーの設定と反映
下記コマンドでrootでログインすることを禁止し、設定を反映させます。

○sshでのrootログイン禁止設定と設定反映コマンド
echo "PermitRootLogin no" >> /etc/ssh/sshd_config && /usr/sbin/sshd -t && service sshd restart
※長いですが一行です

[root@gmocloudacademy ~]# echo "PermitRootLogin no" >> /etc/ssh/sshd_config && /usr/sbin/sshd -t && service sshd restart
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
[root@gmocloudacademy ~]#

上記のように"Starting sshd:[ OK ]"と表示されればsshdが再起動されています。


Ⅲ.設定した内容の確認をしましょう

設定だけして実は反映されていなかった・・・とか、設定内容に誤りがあったけど気づいてなかった・・・などが後々発覚すると大変です。
設定反映後はその内容に問題が無いことを確認しましょう。今回はSSHでの直接的なrootログインを禁止することが目的のため、2通りのチェックを行い、想定していた動作をすれば、問題ないものとします。なお、上記の設定作業をSSHで行われた方は同じウィンドウで下記の作業は行わず、新たにウィンドウを開いて確認することをお勧めします。(上記の作業を行ったウィンドウは確認が完了するまで終了しないでください。)

1.rootでsshに直接ログインできるか?
sshクライアントでサーバーに接続し、ログインできなくなっていることを確認します。何度正しいパスワードを入力しても、ログインできなければ成功です。

2.sshでrootになる方法はあるか?
sshでrootにログインできなくなったことでセキュリティは上がりましたが、rootになることができない状態はサーバー運用に支障を来たす場合があります。そこで、作成したssh用ユーザーでサーバーへログインし、rootになれることを確認します。

sshクライアントでサーバーに接続し、下記コマンドでrootになれることを確認します。whoamiの結果がrootと返ってくれば問題ありません。

# su -
(エス,ユー,スペース,ハイフン)
# whoami

login as: myhostsshuser
myhostsshuser@***.***.***.***'s password:
Last login: Sat May 9 18:38:13 2015 from ***********
[myhostsshuser@gmocloudacademy ~]$ su -
Password:
[root@gmocloudacademy ~]# whoami
root
[root@gmocloudacademy ~]#

確認作業の中で上記のような結果が得られなかった場合は、設定などが間違っている可能性があります。表示されたエラーなどを確認して(シリアル)コンソールや本設定をおこなったSSHのウィンドウから見直しを行ってください。


Ⅳ.おわりに

いかがでしたか?設定はできましたでしょうか。お客さまのサーバー運用方針によってはsuできるユーザーを限定したり、管理者権限が必要な場合はsudoのみを利用したり、SSH接続に公開鍵認証を利用したりと、本記事でご紹介した設定以外にも、セキュアな環境のために行える設定もあります。本シリーズでは取り扱いませんが、必要に応じて併せて設定されることをご検討ください。

なお本稿では説明や操作をより簡単なものにするため、設定したい内容を設定ファイルの最後に追加するだけ、という作業方法をご紹介しています。viなどのエディタ操作を行われたご経験がある方は、設定ファイルを見直しながら行われることをお勧めします。またこれらの作業をお客さま側で行われることに不安を感じられている場合は、弊社で作業を代行する設定代行サービスのご利用をご検討ください。

※上記は一例であり、お客さまごとのご利用用途を踏まえた内容ではありません。
※本設定を行うことによりご利用サーバーのセキュリティを担保するものではありません。設定は内容を十分に吟味して行ってください。
※ご利用のプランやOSテンプレートにより表記や手順が異なる可能性があります。
※ご紹介した設定を行ったことによる不都合について弊社では責任を負いかねます。
※本稿は設定に関するご紹介のみを行っており、サポート窓口では上記で利用しているコマンドの詳細や関連する操作のご案内は行っておりません。必要に応じて参考書籍などをご参照いただくか、設定のみを行われたい場合は各商品でご提供しておりますセットアップオプション(設定代行サービス)のご利用をご検討ください。

サーバー運用のためにコマンドを覚えることから解放されたい方へ

コマンドなしでサーバー運用できるplesk(プレスク)がオススメです

この記事を書いた人

宇野 GMOグローバルサイン・HD

2007年に同社へ入社後、技術部に配属。社内インフラ業務に従事。
現在はお客さまサービス部に所属し、お客さまに代わってサーバ設定や調査を行う設定代行サービスを担当。お客さまの悩みを解決するため日々奮闘しています。
NO BEER NO LIFE。

GMOクラウドアカデミーYouTubeチャンネルはこちらから

アカデミー用バナー

メルマガ会員募集中!

アカデミーの最新情報や会員限定のお得な情報をお届けします。

メルマガ登録はこちら