サーバーにおけるrootユーザーは最も絶大な権限を持ち、言い換えればサーバーをどうにでもできる存在です。
通常rootユーザーはログインできないように設定するものなので、今回はちゃちゃっとrootユーザーのログインを禁止すると共に、普段使うユーザーを作成して行きましょう!
- 何故rootユーザーのログインを禁止すべきかがわかる!
- rootユーザー以外の一般ユーザーの作成ができる!
- 実際にrootユーザーのログインを禁止することができる!
なんでrootユーザーはダメなの?
シリーズでお伝えしているConoHa VPSを初めて契約した方だと、中にはrootという単語を初めて聞いた方もいるかも知れません。
何が危険なのか、何故rootユーザーはダメなのかざっくり解説していきます。
持ってる力が超大きい!
まずrootユーザーはスーパーユーザーとも言われ、サーバー(というよりUnix系やLinux系のOS)の中で最も大きな権限を持っています。
スーパーと言うぐらいですから平たく言えばなんでもできちゃうんです、例えば頑張って作ったWordPressの記事を軒並み削除しちゃうとか。
そもそもWebサーバー自体を止めちゃう事もできるので、そうなったら読者は一切のアクセスができません。
もっと言うと、OSそのものを削除する事もできます。
サラッと言いましたけどこれめちゃくちゃ恐ろしい事です、それまで築き上げた設定は全て水の泡ですからね・・・笑。
ユーザー名がバレている!
もう一つ大事な事は、rootユーザーはUnix系/Linux系OSをインストールした時点で元から存在しているユーザーです。
という事は、基本的に世界中のどのUnix系/Linux系OSにも存在しています。
システムにログインする為に最低限必要なのはユーザー名とパスワード。
そう、ユーザー名が最初からバレているんです。
ユーザー名がバレているという事は、悪いことを考えている人間はパスワードさえどうにかすればログインができてしまいます。
これを防ぐにはそもそもrootというユーザーのログインを不可にしてしまう事と、パスワードだけではログインできないようにする事。
今回は前者を扱いますが、下記の記事でパスワードだけではログインできなくする方法も取り扱っているので必ずセットで行いましょう!
一般ユーザーの作成をしよう
それでは実際に作業を始めていきましょう!
- Step.1一般ユーザーの作成
- Step.2公開鍵配置用のディレクトリを作成
- Step.3一般ユーザーのSSH接続用キーペアの作成
- Step.4公開鍵の設定変更
- Step.5一般ユーザーでログイン
いきなりrootユーザーのログインを禁止してしまっては誰もログインできなくなってしまうので、普段自分が使う一般ユーザーを作成していきます。
まずはrootユーザーで通常通りSSH接続します。
一般ユーザーの作成
一般ユーザーはrootに比べ権限が制限されているユーザーです。
つまり万が一クラッキング(不正ログイン)されても、システムに重大な攻撃をする事が防げるという事。
ただし何もできないと困るので、必要な時にだけrootユーザーの権限を借り受ける事ができます。
そんな一般ユーザーの作成をまずは行っていきます。
このコマンドで一般ユーザーの作成が行えます。
一般ユーザーにパスワードを付与
一般ユーザーは作成しましたが、今のままではパスワードが設定されていません。
という事でパスワードを設定して行きましょう!
コマンドを実行すると、パスワードを入力する画面になりますがセキュリティ上キーボードを打っても画面に一切の変化がありません。
間違わないようにキーボードを打って行きましょう、反映はされませんが当然大文字小文字の区別はあります。
パスワードを入力してEnterキーを押すともう一度パスワードを入力する画面になるので同じパスワードを入力します。
再度コマンド入力画面([root@IPアドレス ~]#)になったらユーザーの作成・パスワード付与ができました!
一般ユーザーに切り替え
では試しに一般ユーザーでログインしてみましょう!
exitコマンドでログアウトして再接続・・・いえいえ、WindowsやMacと同じようにユーザー切り替えのコマンドがあります。
実行するとどうでしょう、@の前のユーザー名がrootから先程作ったユーザー名に、最後の#が$に変わりましたよね?
これで一般ユーザーへの切り替え成功です!
公開鍵配置用のディレクトリを作成
それでは一般ユーザーの状態($)で、SSH接続する為に必要なキーペアのうち公開鍵を設置する為のディレクトリ(フォルダ)を作って行きます。
Macユーザーの方は前回使ったディレクトリを作る為のmkdirコマンドを使って行きます。
続いて作った.sshフォルダの権限を変更して行きます。
こちらもMacユーザーの方は既に使った事があるchmodです。
念の為正しくディレクトリが作成できているか、権限が正しいかどうか確認して行きましょう。
ここまで手順通りにやってきたらこんな感じの表示になると思います。
.sshディレクトリが作成されていますね!
もしここに.sshが出てこなければディレクトリが作れていない、先頭がdrwx——以外だとパーミッションの設定が間違えています。
パーミッションはdrwx・・・の部分になります。
最初の1文字目はファイルの種別を表し、dはディレクトリ、-はファイルです(他にもあるけど割愛)。
次の9桁のうち最初の3桁が所有者、次の3桁が所有グループ、最後の3桁がその他の権限を表します。
それぞれ最初の1文字目は読み取り(readリード)、2文字目が書き込み(writteライト)、3文字目が実行(executionエグゼキューション)。
-となっているとその権限が無いので、この.sshのdrwx——は「所有者に読み書き実行の権限があるがそれ以外には一切の権限が無いディレクトリ」という意味になります。
また、rを4、wを2、xを1とした加算で7は全ての権限、6は読み書き、5は読み実行、4は読みと数字で表現もできます。
仮にパーミッションが707だとしたら「所有者とその他にはフル権限、所有グループには権限無し」、777なら「全てのユーザーに対しフル権限」という事になります。
パーミッションは中々理解が難しいですが、覚えてしまえば意外と簡単なので是非覚えておきましょう。
一般ユーザーのSSH接続用キーペアの作成
次に行うのがrootユーザーで使っているような秘密鍵を、一般ユーザー用にも作っていきます。
rootユーザー用のキーをコピーして使う事もできない訳じゃないんですが、それだとセキュリティ的にも「何の意味があるんだ・・・?」という事請け合いなのでめんどくさがらずに別のキーペアを用意して行きましょう笑。
なおキーペアはローカル(自分のパソコン)でもサーバーでも作成ができるんですが、僕個人は秘密鍵(自分のパソコンに保存して使う鍵)をネットワークを通して移動させる事をあんまり良い事だと思っていないので、ローカルで作成をしてサーバー上に公開鍵をアップロードする方法で解説します。
Windows(Tera Term)ユーザーの場合
ログインしている状態で、上部の設定の中からSSH鍵作成を選択します。
こんな感じの画面が現れるので上から順に作成していきます。
- 生成をクリック
- 鍵のパスワードフレーズと確認をそれぞれ入力
- 公開鍵の保存をクリックして保存
- 秘密鍵の保存をクリックして保存
パスワードフレーズは無くても鍵自体は生成できますが、セキュリティ上あったほうが好ましいです。
鍵の保存場所はどこでも良いんですが、とりあえず自分が分かりやすい場所に保存しておいて下さい。
秘密鍵と公開鍵のダウンロードが終わるとローカル上にこんな感じの2つのファイルが保存されます。
.pubがpublic(パブリック)、つまり公開鍵ですね!
今度はこの公開鍵をサーバー上にアップロードしていきます。
やり方は簡単、この.pubのファイルをドラッグ&ドロップでTera Termのウインドウ上に持っていけばOK。
こんな画面になるので、転送先を入力してOKボタンをクリックします。
転送先は先程作成した/home/ユーザー名/.sshの直下ですね!
次はMacユーザーの場合なので、飛ばして公開鍵の設定変更から作業を再開して下さい!
Macユーザーの場合
Macは全てコンソールで完結します。
ローカルでキーペアを作成するので、一度exitコマンドでログアウトして下さい。
それではキーペアを作って行きましょう!
実行するとちょっとした操作が必要です。
キーペアのファイル名(id_rsa/id_rsa.pub)がそのままで良ければそのままEnterキーを押して下さい。
ファイル名を変更したい時はここに入力すればファイル名の変更ができますが、その時は今コンソール上に居る位置で作成されます(なのでファイル名を変更したい場合はcdコマンドで~/.sshに移動して作成して下さい)。
次にキーペアのパスフレーズです。
これも空Enterでパスワード無しにもできますが、あった方がベターです。
上記で入力したパスワードと同じものを入力します。
こんな感じの画面になったらキーペアが出来上がりました!
キーペアのうち公開鍵のパーミッションを変えておきます
ファイルがちゃんとできているか、パーミッションが正しく設定されているかlsコマンドで見ておきましょう。
id_rsaとid_rsa.pubができていて、.pubの公開鍵のパーミッションが-rw——-になっていたらOKです!
最後に公開鍵をサーバー上にコピーします。
ちょっと長いコマンドですが、慎重に入力していきましょう!
どこかSSH接続する時のコマンドに似ていますね!
rootユーザーで認証している為、-iには今までSSHログインで使っていた秘密鍵のパスが入ります。
その後は先程作った公開鍵(id_rsa.pub)のローカルのパスを指定し、その後接続先のユーザー名やIPアドレスを指定します。
最後に保存先のディレクトリを指定しています。
ちょっと横に長くて申し訳ないんですがあえて未編集で出しました、こんな感じでコンソールの右端に小さい文字が出ます。
この画面が表示されていれば成功です!
長いコマンドはそれだけ間違えやすいので、必ずEnterを押す前に正しいか確認しましょう!
次は再度サーバー上の作業なので、rootでログイン後su – ユーザー名で一般ユーザーに切り替えて次へ進みましょう!
公開鍵の設定変更
それではここからはWindows/Macどちらも共通操作です!
現在公開鍵ファイルが/home/ユーザー名/.ssh/id_rsa.pubという名前で配置されています。
この公開鍵の名前を変更します。
Macユーザーの方はローカルで一度使っていると思うんですが、mvコマンドは移動だけじゃなく名前の変更も行える便利なやつです!
それではきちんと名前が変わったかどうか確認してみましょう。
先程も使ったlsコマンドで確認して行きます。
最終的にこんな感じでauthorized_keysが表示されていればOKです!
一般ユーザーでログイン
rootユーザーから完全にログアウトして、一般ユーザーとして先程設定した一般ユーザー用のキーペアを使ってログインして行きます。
ログインのやり方は基本的にrootユーザーの時と同じですが、ユーザー名とパスワードは作成した一般ユーザーの物、秘密鍵も作った一般ユーザー用の物を使っていきます。
もしログインできなかった場合は
- パーミッションが正しく設定されているか
- 公開鍵の場所が/home/ユーザー名/.ssh配下になっているか
- 秘密鍵をrootユーザー用と間違えていないか
この辺りを確認してみて下さい。
rootユーザーのログインを禁止
それではいよいよrootユーザーのログインを禁止して行きます。
- Step.1設定ファイルの書き換え
- Step.2sshdサービス再起動
sshd設定ファイルの書き換え
まずは設定ファイルの書き換えです。
SSHに関する設定ファイルは/etc/ssh/sshd_configというファイルです。
その前に万が一設定ファイルの書き換えを間違えてしまった時用のバックアップファイルを作成しておきましょう。
見慣れないsudoのコマンドが出てきましたが、これめちゃくちゃよく使います。
一般ユーザーに権限があるのは/homeディレクトリ配下なので、/etc配下のsshd_configには通常触る事ができません。
そこでsudoコマンドでrootユーザーの権限を一時的に借り受けて実行している訳ですね!
sudoコマンドはパスワードを聞かれる事がありますが、その時入力するパスワードは自分(一般ユーザー)のパスワードです。
以上の作業でバックアップが作成できました。
万が一の時はsshd_configを削除し、sshd_config.oldをリネームして.old部分を削除すればここまでの状態のsshd_configの設定に戻す事ができます。
では書き換えを行っていきましょう!
Linux系OSにはviというテキストエディタがインストールされているので、このviを使って編集していきます。
今回はrootユーザーのSSH接続を禁止するので、次の行を探してみて下さい。
この行の先頭の#を削除し、末尾のyesをnoに変更します(先頭の#が最初から無い場合もあります)。
viの基本的な使い方ですが、最初はコマンドモードというモードです。
テキストを編集するには入力モードにする必要があり、キーボードのiキーを押す事で入力モードに変更可能です(他にも入力モードにするキーはたくさんあるんですが、とりあえずiキーで覚えて下さい)。
該当の行へ矢印キーで移動し、iキーを押して入力モードにします。
入力モードになると左下に-INSERT-と表示されます。
入力が終わったらキーボードのESCキーを押して、入力モードを終了します(-INSERT-の表示も消えます)。
この状態で「:wq」と入力すると左下に:wqを表示されるので、Enterキーを押します。
これで変更が保存されました。
viは言葉だけじゃ伝わりにくいので動画にしてみました、是非参考にしてみて下さい!
SSHサーバーの再起動
最後にSSHサーバーの再起動を行います。
設定ファイルの変更を読み込ませる為に必要な作業ですね。
rootユーザーのログイン試行
それでは最後に、rootユーザーでログインできるか試してみましょう!
ログインができなかったら大成功!これでrootユーザーに直接ログインができなくなりました。
ログインできてしまった場合どこかが間違えている可能性があります。
もう一度落ち着いて確認してみて下さい。
rootユーザーログイン禁止でセキュリティ向上
コマンドでの作業量がちょっと多くて億劫になってしまう作業ですが、VPSサーバーでは必ずやっておきたい作業です。
rootユーザーをそのままログインできる状態を放置するという事は、世界中に対して「ログイン求む!」と挑戦しているようなもんです・・・笑。
rootユーザーは原則ログイン禁止、必要な時に権限を借り受けるという認識を持って取り組んで行きましょう!
更に同時にSSHサーバーのポートを標準の22番から他のポートへ変更する事も簡単ですがめっちゃ重要です。
合わせて以下の記事から設定して見て下さい!
ConoHa VPS+KUSANAGIで始めるWordPress超高速環境
当記事はWordPressを超高速化できるWordPress専用仮想マシンKUSANAGIをConoHa VPSで初心者でも簡単に導入できるというコンセプトの1記事です。
手順通りに行えば誰でもKUSANAGI環境が実現できる!を目指して作成しました。
是非合わせてお読み下さい!
コメント