ServersMan@VPS のサーバは、面白いことに初期状態でrootでのSSH接続・ログインが出来る。
唯一のセキュリティ対策として、接続ポートが22番でなくなったこと。
それに危ないのは、/tmp配下にルートパスワードが記載されたファイルがある。
一般ユーザにこれがバレたら、rootとしてログインすることも可能だ。
メールでの案内に記載されているとおり
「※rootパスワードは定期的にご変更ください。」が大切だということ再度思い出しておこう。
VPSの管理者は契約者です。不正アクセスを受けても文句は言えません。
さて、SSHの接続をrootで行えない様にするには以下の手順になります。
1. rootに変わるユーザを追加する。
2. /etc/ssh/sshd_configのバックアップをとる。
3. /etc/ssh/sshd_configの編集をする。
4. ファイルの差分を確認する。
5. sshd を再起動する。
6. 新規ユーザでSSH接続が出来るか確認。
ではまず上記1「ユーザの追加」から。
# useradd -s /bin/bash username # passwd username Changing password for user trippyboy. New UNIX password:パスワードを入力(画面には表示されません) Retype new UNIX password:パスワードを入力(画面には表示されません) passwd: all authentication tokens updated successfully. #
はい、完了。超簡単ですね。
次に上記2「/etc/ssh/sshd_configのバックアップ」を作成します。どんなファイルでも設定ファイルである場合には、必ず‼バックアップをとりましょう。自分のため、そしてもしもサポートに調査を依頼するときがくれば、調査担当者のため。問題解決には常にバックアップとの差分が鍵になります。
# cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.ORG
「cp」コマンドを使ってファイルを「CoPy」してます。「-p」はタイムスタンプもそのままコピーするオプションです。
次に上記3「/etc/ssh/sshd_configの編集」をします。
# sed -i 's/#PermitRootLogin yes/PermitRootLogin no/g' /etc/ssh/sshd_config
「sed」コマンドを用いて、ファイル内の「#PermitRootLogin yes」を置き換えています。「vi」コマンドを使って編集してもいいのですが、経験がない方には何が何だかわからなくなるのでこのコマンドで置き換えましょう。
「#PermitRootLogin yes」を「PermitRootLogin no」に置き換えます。
上記4「ファイルの差分を確認」します。
# diff /etc/ssh/sshd_config /etc/ssh/sshd_config.ORG 39c39 < PermitRootLogin no --- > #PermitRootLogin yes #
「diff」コマンドを用いてバックアップとの差分を表示正しく変更がされたことを確認しましょう。
上記5「sshを再起動」します。
# service sshd restart
上記6「新規ユーザでログイン」を必ず試して下さい。
これが出来ない状態で、rootでの現在のSSH接続をログアウトするとサポートの手無しにはログイン出来なくなります。
一般ユーザでログインが出来たら、「su -」と入力しEnter。rootのパスワードを入力すればrootユーザへ切り替わることが出来ます。
ひとまず以上でrootでのログインを制限出来ました。
なぜ、rootユーザでの接続を制限することを推奨するのか。
なぜなら、sshに利用するポートはいくら変更してもポート総当たりを行うことで特定することが容易です。そうなると全サーバに100%存在する「root」というユーザ名を用いてパスワードアタック(でたらめなパスワードを使ってログインを試みること)をされる可能性があります。ログインには「ユーザ名」と「パスワード」を用いますが、そのうちの「ユーザ名」が分かっているのであれば、不正アクセスを試みる者の労力も少なく済むわけです。なので、「root」ではログイン出来ないようにしました。「root」は管理者なので何でも出来てしまいますし、特に注意が必要です。
「test」や「info」、「admin」などのユーザ名も極力避けましょう。理由は上述のとおりです。
コメント