まずは見てもらおう、この惨状を。
謎のプロセスが大量発生!その結果、CPUの負荷が徐々に高まり、システムがまともに動かなくなっていく。それだけで済めばいいのだが、このプロセス、ただ増殖するだけではなく、海外のアドレス宛に謎の通信もしていて、とにかくもう手が付けられない状況になっていた。
これが、公開してたった数日での話だ。あっという間に侵入者によって仕込まれてしまったのだ。
正直、今までサーバ運用なんて結構楽にできるのではないかと、高を括るような慢心さで居たのかもしれない。しかし、この現実を突きつけられて我に返った。
一刻も早く対策が必要だ!
直ちにデータベースのバックアップをしたあと、CentOSを再導入し、データをリストアして復旧したが、このまま何もしないでサーバを公開するのはとても危険だ。
SSHはサーバ管理上で欠かせないものだが、きちんとしたやり方でだけログインできるようにしなくてはならない。これよりその手順を書いていこう。
- SSHのrootログインを無効化する
- SSHの公開鍵認証方式に変更する
- SSHのパスワード認証方式を無効化する
公開鍵認証とは、接続元(クライアント)と接続先(サーバ)とで公開鍵を使い、唯一秘密鍵を持ったクライアントの端末からサーバに接続して、サーバに保管されている公開鍵と照合して認証がされる仕組みだ。(さらにパスフレーズも追加するとより強力になる)
言葉では説明が難しいが、とりあえずWindowsでは『Tera Term』が有名なので、それを使ってサクっと公開鍵・秘密鍵を作ってサーバに設置しよう。
1.準備(SSHの設定変更)
sshdの設定で、まずはrootでのSSHログオンを禁止するようにした。
vi /etc/ssh/sshd_conf systemctl restart sshd
PermitRootLogin no
何は無くともこれだけは最低限しておく。侵入者はroot権限が大好物だからだ。
2.Tera Termで鍵作成
次に、Tera Termには公開鍵・秘密鍵を生成できるツールが内包されているので、これを使っていく。
起動させてから、「設定」-「SSH鍵生成」を選択する。
鍵生成の画面にくるので、そのまま右上の「生成」ボタンを押す。
すると、下の「鍵のパスフレーズ」が入力できるようになる。これはいわば「鍵専用のパスワード」だ。いつもログインで使っているパスワードじゃないので気を付けよう。あと、コメントは本当にコメントなのでつけなくても構わない。出来たら、まずは「公開鍵の保存」を選ぼう。
保存場所を聞かれるのでとりあえず、Tera Termのプログラムの場所でも指定しておく。続いて秘密鍵だ。
ここで「id_rsa」と名前がついているのが秘密鍵、「id_rsa.pub」が公開鍵となる。これで鍵の準備は終了だ。
3.公開鍵をサーバに設置する
公開鍵はTera Termを使えば簡単に移動させられる。ログインしているTera Termの画面上に公開鍵のファイルをドラッグアンドドロップすれば完了だ。
続いて、この公開鍵をサーバに設置していく。
cd mkdir .ssh mv id_rsa.pub .ssh/ chmod 600 .ssh/ cd .ssh mv id_rsa.pub authorized_keys
これで設置は完了、試しにログインしてみよう。
ユーザー名を入れ、パスフレーズは鍵を生成した時のパスフレーズを入力。そして「RSA/DSA/ECDSA/ED22519鍵を使う」の「秘密鍵」をクリックしたら、先ほど作った「id_rsa」を指定してから、下の「OK」ボタンを押そう。
これで、ひとまず公開鍵認証でのログインが出来るようになった。
4.SSHのパスワード認証ログインを禁止する
で、ここで安心してはいけない。まだSSHではパスワード認証が可能なまま。このままでは非常に危険だ。
vi /etc/ssh/sshd_conf systemctl restart sshd
PasswordAuthentication no
これをきちんと設定してから、sshdを再起動だ。Tera Termで入れなくなっているかテストしてみる。
パスワード認証でのログインができなくなった。これで最低限の戸締りはできた、というものだろう。サーバを少しでもインターネットアクセスできる場所に設置している場合は、かならずこれをやっておくのが必要だ。
SSHを公開鍵認証にしてひとまず安心したが、まだまだ侵入者の影に怯える日々は続く。次回はその侵入者を拒む方法について取りあげることにしよう。
コメント