ConohaVPS + kusanagiセキュリティ対策第1弾。
筆者は特に何のセキュリティ対策をしないまま1年半ほど放置してたんですが、ブログが成長するにつれて大量の不正ログイン試行が行われていた事が判明。
そのほとんどは最も強い権限を持つ『root』で試されるので、いずれは数の暴力により突破されます。
イメージとしてはこんな感じ。
突破されてぐにゃぁ〜っとなる前に、SSHやFTPでのrootログインを禁止し、新規ユーザーでログインするようにしましょう!
- rootログインを禁止して、新しいユーザ名でSSH・FTP接続するように変更する
- 簡単なパスワードはいずれ必ず抜かれる
ちなみに、筆者の環境はMacBookAir2013(mojave)、使用しているのはMac標準のターミナルとFileZillaです。Windowsでは色々と勝手が違うので参考までに。
- ConohaVPS + kusanagiを契約済
- 筆者のユーザー名は「tomato」
- 筆者のipアドレスは「133.130.120.164」
ipアドレスやユーザー名は、自分の環境に合わせて変えてください。
rootログインはなぜ危険か
そもそも何でrootログインを禁止するの?って話なんですが、実際に不正ログイン試行履歴を見てみるとよく分かります。
conoha + kusanagiだとcentOS系なので、/var/logファイル内にある、secure-〇〇にて履歴が見れます。
SSH接続後、rootに成り上がった後に、下記コマンドで閲覧可能です。
cd /var/log
less secure-〇〇
〇〇は人によって異なるので、FTPなどでファイル名を覗いて調べると分かりやすいです。
user名を適当に入力(testやunknownなども多い)し、片っ端からログイン試行を繰り返している事が分かります。
その中でも圧倒的に多いのがrootでログイン試行をしているケース。
設定を変えなければrootでのログインは可能なため、パスワードを変えてひたすら何通りも試しているんですね。恐ろしい……。
新規ユーザーを作る
rootで接続する怖さを理解したところで、早速本題へ移っていきましょう。
まずは新しいユーザー名を作成します。通常通りSSH接続を行い、下記手順で作成しましょう。
ssh root@133.130.120.164
ipアドレスはconohaのネームタグをクリックすると見れます。
Conohaでサーバーを作る際に、オプションで秘密鍵選択を選んだ場合は下記の様に入力してログインします。
ssh -i .ssh/〇〇.pem root@133.130.120.164
※.sshファイル内に秘密鍵を置いた場合。
〇〇の部分はconohaのSSH-keyにて作ってダウンロードした秘密鍵です。
.sshファイルにない、もしくはファイルの場所の名前等が分からないという方は、ダウンロードした秘密鍵(〇〇.pem)をドラッグ&ドロップでターミナルへ入れてみましょう。ファイルまでのアドレスがそのまま表示されます。
新規ユーザーの作成
rootログインが済んだら、下記のコマンドを入力します。
useradd -G wheel tomato
- useradd -G ~ : 新規ユーザーを~グループに追加する
- wheel : sudo権限(rootになれるエライ権限)を持ったグループ
ユーザー名は何でもOKです。
筆者の場合は『tomato』に設定するので、これから行うコードは全て読者さんのユーザー名に置き換えてください。
パスワードを加える
追加し終えたら、ユーザー名にパスワードを付加します。
passwd tomato
新しいパスワードを確認を含め、2回入力し完了。
「passwd: すべての認証トークンが正しく更新できました」と表示されればOKです。
ユーザー登録が正しく行われているか、確認しましょう。
su - tomato
問題なく登録を終えていたら、ターミナルの入力画面が
[root@133-130-120-164 ~]#
から
[tomato@133-130-120-164 ~]$
の様に変更されているはずです。
また、一般ユーザーからrootユーザーへと変更するには
su -
と入力するとパスワード入力後に変更可能です。覚えておきましょう。
公開鍵を配置するためのディレクトリを作る
ユーザーを作っただけでは空っぽの状態。
このままでは鍵認証が出来ないので、公開鍵を設置するためのディレクトリを作ります。
mkdirコマンドでフォルダ作成
一般ユーザー(筆者の場合tomato)になり、.sshフォルダを作成していきます。
su - tomato
mkdir /home/tomato/.ssh
続いて、.sshフォルダのパーミッション権限を変えます。
chmod 700 /home/tomato/.ssh/
- mkdir : ディレクトリ(フォルダ)を作るコマンド。
上記コマンドの場合、/home/tomato に『.ssh』というフォルダを作る。 - chmod : パーミッション権限(アクセス権限)変更
sshフォルダ、パーミッションの確認
作成した.sshフォルダと、パーミッションの変更がうまく行っているか確認します。
ls -la /home/tomato/
- ls : ファイルやディレクトリの一覧を表示する
-la~ で一覧表示。
上記の場合、tomatoフォルダ内のディレクトリ&ファイルを一覧表示させる。
特に問題がない場合はこのように表示されます。
これらの作業が終わったら、次に一般ユーザー用の秘密鍵&公開鍵の作成、またはrootログインを禁止にする作業を行います。
rootログインを禁止する
最後にrootログインを禁止し、一般ユーザーからログインするように変更します。
su - tomato
SSHに一般ユーザーでログイン後、下記コマンドを入力します。
sudo vim /etc/ssh/sshd_config
vimエディタが起動します。
「aキー」を押し、挿入モードへ変更。
49行目あたりにある
#PermitRootLogin yes
を
PermitRootLogin no
に変更します。#を外し、yesをnoに変えるだけです。
79行目のPasswordAuthenticationを確認します。この処理を忘れると鍵認証を設定していた場合接続できなくなるので注意しましょう。
※既に一般ユーザー用の秘密鍵&公開鍵の作成および設置を終えている方は必要ありません。何を言っているか分からない方はとりあえずやっときましょう。
PasswordAuthentication no
になっていたら、鍵認証なしでログイン出来なくなるので
PasswordAuthentication yes
に変更し、パスワードのみでログイン出来る様に変更しておきます。
編集を終えたら、「esc」キーを押して挿入モードを終了。
「:wq」と入力して上書き保存して終わりです。
- aキー : 挿入モードに切り替え
- ESCキー:挿入モード終了
- uキー:一つ前の処理に戻す
- :wq:上書き保存する
焦って変な処理を行なってしまったら、「esc」キーを押した後に「u」キーを連打すると処理を戻せます。便利なので覚えておきましょう。
以上の処理を終えたら、
systemctl restart sshd.service
と入力し、sshdの再起動をかけます。これにて終わりっ!
確認、および次の設定へ
最後に新しく作ったユーザー名でSSH接続出来るか確認しましょう。
一旦exitを連打しターミナルを終了して、再度接続し直します。
試しにrootログインを行なってみます。
ssh root@133.130.120.164
「Permission denied, please try again」と表示されたら成功!
次に新しいユーザー名でログイン出来るか確かめます。
ssh tomato@133.130.120.164
無事ログイン出来たら完了!
SFTP接続もrootログインが不可になってるので、変えておきましょう。
が、これだけではまだまだセキュリティ的には貧弱。
というか鍵認証を外しているので、多分むしろ弱まってます()
攻撃される前に次の設定へ行いましょう!
次のセキュリティ対策はport変更です。
コメント
> vim secure-〇〇
> 「:wq」と入力して上書き保存して終わりです。
vimでログを開くのはどうかと…vimは編集コマンドですのでlessコマンドを使って下さい
[:wq]で上書きしてしまった時点でそのログはなんの価値も無くなってしまいます。
百歩譲ってvimでログファイルを開いたとしても[:wq]
ではなく[:q!]で抜けて下さい。
コメントありがとうございます!
編集もしないログファイルをvimコマンドで開くのは無知な行為でしたね…。記事を更新させていただきました!
「コイツ何言ってんの?」って記述が他にありましたら、遠慮なくご指摘ください!