VPSでCentOS7サーバを構築する 初期設定編

サーバ移転記念ということで、しばらくはこのネタでやっていきたいと思います。まあ、今だとAWSやら何やらでほとんどがデフォルトで用意されている物を使えばなんていうことはなかったりするのですが、自前で構築してみたい人や自宅サーバを設定してみたい人向けに、設定でややこしそうなところをあげていって見ます。

 

基本的な全体手順

私が構築したときの手順は以下の通りです。

  1. VPSの契約(自宅サーバの場合はマシンセットアップ)
  2. rootログインを行い、yumで一度最新までアップデートを行う
  3. 通常のログインユーザを作成してsudoによるroot昇格を設定する
  4. (必要であれば)SELinuxを設定する
  5. SSHの設定を行い、外部からの侵入されないようにする
  6. 不必要なサービスを停止する
  7. ディスククォータを設定する
  8. 最新のパッケージを導入するために、現在入っている不必要なパッケージをすべて削除する
  9. 最新のパッケージを導入するためのリポジトリを設定する
  10. アンチウィルスを導入する

これ以降は必要な各サービスの導入となります。今回はWordPressが動作できることや、いまで使用していたftpやらメールやらが使用できることが条件なので、それに対応したサービスを設定します。以前に動作していた状態とほぼ同じにするので、バックエンドにhttpd(Apache)、フロントエンド(リバースプロキシ)にnginxを使い、phpはサーバ化することを念頭に置くと、

  1. httpd(Apache)の導入
  2. Let’s Encryptを使った常時SSL化対応処理
  3. php-fpmの導入
  4. MariaDBの導入
  5. nginxの導入
  6. vsftpdの導入
  7. postfix、dovecotの導入
  8. 各サービスの動作チェック

となります。今回はこの中の基本的な部分までを紹介したいと思います。

 

1.VPSの契約

これがなくては何も始まりません。特に常時応答となると自宅サーバでは電気代やらインフラやらが大変になるので簡単なサーバであればクラウドに任せてしまうのが正しいと思います。というわけで良さそうな物を適当に契約してください。ただし、メインメモリが1GBだと今の時期のプログラムだとさすがに厳しい物があるのでできれば2GB以上のプランにするとよいと思います。また、基本的にサーバでは余計な物を入れないのが鉄則なのと、極端にストレージを使うような用途(共有ファイルサーバなど)でもない限りはストレージ容量を使うことはあまりないので、ストレージの反応速度を上げるためにもSSDと書いてあればそちらの方がよいです。うまく選んでください。

なお、自宅サーバで考えている人は、これがマシンセットアップに変わります。マシン自体はほとんど何でもいいですが、OSを入れるときにはできるだけ最小構成でインストールするとよいと思います。必要になってからパッケージをインストールする方が余計な容量や余計なメモリを使わなくて済むので。

  • よほど動作が限定されなければメインメモリは2GB以上のプランを使う
  • ストレージはSSDと書いてある方が応答速度は速くなる傾向あり
  • OSからインストールする場合は最小構成で

2.rootログインを行い、yumで一度最新までアップデートを行う

契約した直後OSを入れ終わった直後はセキュリティ的にもかなり弱い状態ですのでまずは最新までアップデートする方がよいと思います。特にCentOSのようなOSでは、メジャーバージョンが変わらない限りはyumで最新のパッケージが入る物が少なくないので、ログイン用ユーザを作るよりも仮想コンソールなどで最新の状態にするのがよいのではないでしょうか。

 

3.通常のログインユーザを作成してsudoによるroot昇格を設定する

基本的にrootを用いて作業を行うのは非常に危険なのでrootを使うのははじめのアップデートとログイン用ユーザの作成およびsudoによる昇格設定までだと思います。手順としては

  1. useraddでログインするユーザを作成
  2. passwdでユーザにパスワードを設定
  3. visudoでwheelグループをsudoを使用できるグループに設定する
  4. usermodで作成したユーザにwheelグループに所属させる

になります。これができればいったんコンソールから抜けて作成したユーザでログインを行い、sudoによる昇格ができるかどうか確認してください。状況によってはサーバの再起動がいるかもしれません。

 

4.(必要であれば)SELinuxを設定する

VPSだと設定されていないこともあるSELinuxですが、OSを初期からインストールした場合はSELinuxが有効になっている場合も多いと思います。今現在ならばこれは「設定を簡単にしたい」ならばSELinuxを無効にする、「セキュリティを高めたい」ならSELinuxを有効にする、といったことで一長一短状態になっています。ここは個人的な好みではないでしょうか。

 

5.SSHの設定を行い、外部からの侵入されないようにする

SSHが設定できればあとは別マシンからでも操作が簡単にできるのでこれを設定して終わりになると思います。セキュリティ的には以下を考えておくとよいと思います。

  • Port22は攻撃の対象になるので(個人サーバであれば)ポート変更などでアタックされないようにするとよいかも。
  • ユーザをパスワード認証にすると、パスワード攻撃を受けてたときにかなり弱い。特定のコンピュータからしかログインしないのであれば鍵交換によるログインを設定してパスワード認証を無効にするとよい

特に後者については今ならば外部からのログインだとスマートフォンでのログインが考えられますが、こちらもAndroidであれば鍵ファイルを手動で入れておいてアプリ側で指定すればよほどでない限りはログインできますので、おすすめです。というわけで、設定の方法ですが、

  1. /etc/ssh/sshd_configに対して設定を行う
  2. ログイン用の鍵を作成する(ssh-keygen -t [鍵交換方式])
  3. 鍵ファイルをログイン用ユーザの場所に置く
  4. firewall-cmdでポートを再設定する
  5. /etc/ssh/sshd_configを変更してパスワードログインができないようにする

という手順になるかと思います。sshd_configに対して設定する重要なポイントは

Port 22
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

の3点になります。もちろん、rootログインの無効設定など当たり前の設定は行います。また、はじめの段階でパスワードログインができないようになると設定が失敗したときにサーバに入れなくなってしまいますので手順を間違えないように。鍵ファイルの作成および設定は、

$ ssh-keygen -t rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 700 .ssh
$ chmod 600 .ssh/authorized_keys

のように行います。なお、ssh-keygenの時にオプションを聞かれますが、鍵付きにするとSSHのログイン時に鍵ファイルを開くためのパスワードが必要となるのでそれが良いか悪いかは人次第となります。あとはパーミッションの設定を忘れないように。.sshにあるid_rsaは(sftpなどで)手元に引き寄せておいて、id_rsa.pubは削除しておくとよいでしょう。ここまで設定できればポート変更をした人はfirewall-cmdでポートを開く設定を行い(–permanentと–reloadを忘れない)一度sshdを再起動して設定を有効にしましょう。ただし、外部からSSHでつないで処理している人はその端末をログイン確認ができるまでは絶対に落とさないように。落とすと直接コンソールからの処理に逆戻りとなります。

 

6.不必要なサービスを停止する

この段階でいらないサービスはすべて停止しておくのがよいかと思います。プリンタサーバとして使わないならcupsがある意味はないですし、bluetoothなんてサーバではほとんど使わないはずなのでこれも切ってしまってもよいと思います。なお、ここまで書いていませんでしたが、CentOS7系統はserviceコマンドではなくsystemctlを使いますので、こちらの使い方に慣れておきましょう。

 

次回は拡張設定編

ここまで来れば何もできないけれども乗っ取りなどの攻撃には耐えられるようになっていると思いますので一安心。逆にいうとここまで来ないと攻撃を受けてあっさりと乗っ取られる、なんて事態も起こりかねないことに気をつけておきましょう。次回はそのほかの設定ということで拡張設定編、と名乗っておきましょう。メインの設定はまだまだ後ですね。

 


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

この記事のトラックバック用URL