第十八話 それはひみつ

「サクサク進むわねぇ」


 絶望から始まったものの、順調にサーバは復旧してる。


「うんうん、ちゃんと見えるわね」


 自宅内 LAN 上からローカルアドレスでアクセスすれば、ブログのページは正常に表示されていた。


「もう、公開しちゃおっかな」


 と思ったけど、まだ駄目。


「 ssh のアクセス、鍵認証にしとかないとね」


 今、サーバの設定は、 ssh という仕組みで外部から接続してコマンドをあれこれ実行して行ってるわけだけど、もしも、誰かがユーザとパスワードを突き止めたらどうなるか?


 そりゃまぁ、侵入されちゃうわよね。


 これ、ユーザとパスワードがバレちゃったら、システム上ではどうしようもない。ときどき、簡単なパスワードを設定しておいて第三者に侵入されたことについて、システムのせいにしてクレーム言ってくる人いたりするけど、ユーザとパスワードの入力だけで認証している限り、どうしようもない。


 勿論、普段と違う IP アドレスからのログインと言うことで警告を上げたりする仕組みはあるけど、それは『事後』で、一回は侵入されちゃってるってことなのよね。


 さて、前置きが長くなっちゃったけど、 ssh ってサーバをあれこれ弄ったりも出来ちゃうから、外部からの接続が必要な場合は可能な限りセキュリティを高めておくに限る。


 例えば、管理者である root ユーザで直接ログインできるようにしていると、 root のパスワードが漏洩したらやりたい放題されちゃうのは自明。


「だから、 root での ssh ログインは拒否するのが基本」


 という訳で、 外部からの接続を設定する前に、 ssh 接続のセキュリティを高めておくことにする。


 設定ファイルは、 /etc/ssh/sshd_config 。


「って、設定は簡単なんだけどね」


PermitRootLogin yes


 というそのままの設定があるので、


PermitRootLogin no


 にするだけ。


 で、


/etc/init.d/sshd restart


 外部からの ssh 接続を受け付けるデーモンプログラム sshd を再起動して設定を反映させるとあら不思議、


「root、アウト!」


 putty でサーバへ接続し、ユーザに『 root 』と入力した時点でエラーで弾かれるようになる。


 これで、 root のパスワードが漏れても接続ができないようになったってわけ。


 でも、別のユーザとパスワードがバレたらログインは防げない。


 例えば、 sabae というユーザのパスワードが突き止められたら、 putty なんかでサーバに接続して、 sabae ユーザでログインはできちゃう。


 そりゃそうよね。サーバ側では、本人の入力かどうか確実に判断する術はないんだから。


 だから、もう少し、セキュリティを高めておく。


 あ、この辺で断っておくけど、外部から接続する必要がある限り、完璧なセキュリティはありえないから。特別なハードで生体認証を行っても、体の一部を奪ってログインとかは、理論上できないことはないでしょうし。


 正直、ユーザとパスワードを複雑にして頻繁に変更するだけでも大概は問題ないんだけどね。


 でも、科学的な必要十分な安全を確保できたところで、後一手ぐらい打っておけば安心を担保できるわよね。


 そこで、パスワードでの認証を禁止して、公開鍵認証方式というものを採用することにする。


 これは、サーバに公開鍵を設置し、その公開鍵に対応する秘密鍵を持っているクライアントからしかアクセスできないという仕組みね。


 ま、色々語弊はあるかもだけど、サーバに公開鍵という鍵穴を用意して、ローカルにその鍵穴に合う秘密鍵がないと入れないようにする、って形ね。


 ほら、合い言葉さえ言えば開けて貰える扉より、物理的な鍵がないと開かない扉の方が、開けるのは難しいのは道理でしょ?


「じゃ、ちゃちゃっとやっちゃうかな」


 まずは、鍵の作成。


 ssh-keygen -t rsa


 ってコマンドで、 RSA 形式の鍵が作成される。 RSA ってのは、感覚的にはちょっと複雑目の鍵、ってところかしらね。もう一個 DSA 形式っていう古い形式があるんだけど、そっちをギザギザの形のピンタンブラーキーとすれば、 RSA は凹凸のついたディンプルキーってところね。


 後は、画面の指示に従って、パスフレーズを入力したりしたらあっという間に鍵ファイルができあがる。


 今は、 sabae ユーザでログインしてるんで、


[秘密鍵]

/home/sabae/.ssh/id_rsa

[公開鍵]

/home/sabae/.ssh/id_rsa.pub


 って感じでファイルが出来上がってる。 .pub って方が公開鍵ね。


 でも、この状態ではまだ、公開鍵が外部に公開されてないから、幾ら秘密鍵でアクセスしようとしても、無理。鍵穴がないようなものね。


 鍵穴を開けるには、公開鍵を外部から接続してもいいって明示的に登録してあげないといけないわ。


 まぁ、 id_rsa.pub の中身を、


/home/sabae/.ssh/authorized_keys


 ってファイルに追加するだけなんだけどね。


cat /home/sabae/.ssh/id_rsa.pub >>/home/sabae/.ssh/authorized_keys


 でOK……じゃない。


 もう一工夫しないと、いけない。


「 .ssh と authorized_keys のパーミッションを適切に設定してないとだめなのよね」


 ここ、結構ハマるポイント。仕事で数時間悩んだことがあるので、思い出せたわ。経験は力になるわね、やっぱり。


chmod 700 /home/sabae/.ssh/

chmod 600 /home/sabae/.ssh/authorized_keys


 で今度こそ OK 。


 あとは、 /home/sabae/.ssh/id_rsa をクライアントにどうにかして持ってきて、 ssh クライアントに登録して(あたしが使ってるのは putty だから、 putty に登録。 putty 用に変換とか特別な作業もあったりするけど、それは割愛)、意気揚々とアクセス。


 今度は、パスワードではなく、鍵のパスフレーズの入力を求められるので、さっき設定したものを入力して、


「うんうん、接続完了」


 公開鍵認証方式で、 ssh 接続ができるようになった。


「じゃ、パスワード認証できないようにしちゃいましょうかね」


 これも、さっきの root ログインを不可にしたのと同じような設定で実現できる。


/etc/ssh/sshd_config


 を開いて、


PasswordAuthentication yes


 がデフォルトのところ、明示的に、


PasswordAuthentication no


 を設定して、 sshd を再起動するだけ。


 試しに、 putty からパスワード認証しようとしてみたけど、しっかり接続は拒否された。


「ま、こんぐらいやっとけば、外部公開してもいいかしらね……でも、ちょっと遅くなっちゃったから、続きは明日、ね」


 今日のところの作業は終わりにして、お風呂に入って缶ジュース(未成年お断り)を飲んでから布団に入ることにした。

  • Xで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る