さくらのVPSでCentOS7のサーバーを構築する その5

このブログでは以前にVMware上でCentOS7のサーバーを構築する手順を解説しましたが、今度はさくらのVPSを使ってサーバーを構築します。5回目となる今回は、いよいよWEBサーバーとして運用するための準備に入ります。

本編の目次

  • サーバーコントロールパネルへのログイン~サーバー起動まで(第1回)
  • サーバーへログイン~初回起動時に行う設定
  • SSHログインについて
  • SELinuxの有効化(第2回)
  • 一般ユーザーの作成
  • sudoの有効化
  • SSH経由でのrootログイン禁止設定(第3回)
  • 公開鍵認証の導入
  • ファイアウォール(Firewalld)の設定(第4回)
  • SSHのポート番号変更とSELinux
  • WEBサイト公開用ユーザーの作成とChrootの設定(第5回)
  • Apacheのインストールと設定
  • ユーザーのホームディレクトリ配下にあるpublic_htmlを公開する(第6回)
  • バーチャルホストの設定
  • PHPのインストールと設定(第7回)
  • PHPのCGIモード化
  • MySQLのインストールと設定(第8回)
  • phpMyAdminのインストールと設定(第9回)
  • WordPressを使うためのMySQLの設定(第10回)
  • WordPressのインストール

WEBサイト公開用ユーザーの作成とChrootの設定

ここからはVPSサーバーをWEBサーバーとして運用できるような環境を整備し、最終的にはWordPressを動かせるようにすることを目指します。しかし、sudoできるユーザーはrootに近い権限を持ててしまうので、WEBサイトを公開するにはオーバースペックです。また、rootとsudo出来るユーザーだけのユーザーアカウント構成では、他人とサーバーを共有してWEBサイトを管理することは非常に難しくなります。ここはWEBサイト公開用のユーザーを作成し、そのユーザーについてはアクセスできるディレクトリと権限を制限するべきです。

まずはユーザーを追加しましょう。名前は任意の半角英数です。 [VIM] sudo useradd fuga [/VIM] 続いてパスワードの設定です。そこそこ強固なものを使うようにしましょう。 [VIM] sudo passwd fuga [/VIM]

ユーザーを作成したら、以下のコマンドでユーザーディレクトリ所有者およびパーミッションの変更、新しいディレクトリの作成を行います。理由は後述。 [VIM] sudo chown root:root /home/fuga sudo chmod 755 /home/fuga sudo mkdir /home/fuga/public_html sudo chown fuga:fuga /home/fuga/public_html sudo chmod 755 /home/fuga/public_html sudo mkdir /home/nitiniti/.ssh sudo chown fuga:fuga /home/nitiniti/.ssh sudo chmod 700 /home/nitiniti/.ssh [/VIM]

そして、ユーザーグループを追加します。名前は適当な半角英数です。グループ名の通り、このグループのユーザーについてはSFTPでのファイルアップロードは出来るようにし、その他の権限は制限します。 [VIM] sudo groupadd sftponly [/VIM]

作成したユーザーグループに、先ほど作成したユーザーを追加します。 [VIM] sudo gpasswd -a fuga sftponly [/VIM]

今度はSSHサービスの設定をいじります。 [VIM] sudo vim /etc/ssh/sshd_config [/VIM]

設定ファイルを開いたら、まずはSFTPに関する設定を変更します。以下の記述を探して変更してください(140行目辺りにあるか?)。 [VIM] #編集前 Subsystem sftp /usr/libexec/openssh/sftp-server #編集後(もともとの記述はコメントアウトして新しい記述を追加) #Subsystem sftp /usr/libexec/openssh/sftp-server Subsystem sftp internal-sftp [/VIM]

そして、ファイル末尾に以下の記述を追加し、保存しましょう。 [VIM] Match Group sftponly ForceCommand internal-sftp ChrootDirectory /home/%u PasswordAuthentication yes [/VIM]

ここまでの設定により、sftponlyグループに所属するユーザーはSFTP接続のみが可能になり、自分のホームディレクトリより上のディレクトリは操作できなくなります(自分のホームディレクトリがルートディレクトリになる)。これが世にいう「Chroot監獄」の設定です。後は以下のコマンドでSSHサービスを再起動すれば、sftponlyグループに所属するユーザーに対するChroot監獄が発動します。 [VIM] sudo systemctl restart sshd [/VIM]

また、上の設定ではsftponlyグループに所属するユーザーについては公開鍵認証を使用しないログイン(パスワードでのログイン)を許可しています。公開鍵認証を強制してしまうと、管理者側でユーザーパスワードの作成と同時に公開鍵の登録を行う必要が生じて面倒なので、公開鍵認証縛りは外しています。

ちなみに、ユーザーアカウント作成時に管理者側でディレクトリ作成・所有者およびパーミッション変更を行った理由は、ChrootDirectoryで指定できるディレクトリに以下の制限が課されているからです。

  • 対象ディレクトリの所有者がrootである
  • 対象ディレクトリはroot以外のユーザーが書き込めない
この制約のため、ユーザーのホームディレクトリは所有者をrootにし、パーミッションを755にしました。しかしこれではユーザーがファイルを配置できないので、WEBサイト用のファイルを置くpublic_htmlとSSH公開鍵認証の公開鍵を置く.sshディレクトリを作成し、こちらをユーザー所有にして適切なパーミッションを設定しました。この2つ以外にユーザーが自由に書き込めるディレクトリが必要な場合は、別途管理者側で作成してください。

Apacheのインストールと設定

今回はWEBサーバーソフトウェアとして「Apache」を使用するので、早速インストールしましょう。CentOS7の場合、2017年地点ではApache2.4がインストールされます。 [VIM] sudo yum install httpd [/VIM]

インストールしたら設定作業を行います。 [VIM] sudo vim /etc/httpd/conf/httpd.conf [/VIM] 設定ファイルを開いたら、以下のように書き換えます。 [VIM] #86行目あたりの記述…本来は管理者のメアドを書くべきだが #書かなくても動作には差し支えなし(書かなくてよし) ServerAdmin root@localhost #95行目あたりの記述…VPSサーバー用に独自ドメインを用意できるならそれを書く #(コメントアウトを外す・ポート番号は80番決め打ちでOK) ServerName www.example.com:80 #144行目あたりの記述…OptionsディレクティブについてIndexesという文字列を削除 Options FollowSymLinks #最終行に追記 ServerTokens Prod KeepAlive On [/VIM]

Firewalldの設定は前回に済ませているので、特別な解説は行いません。HTTPの通信を許可していない場合は、以下のコマンドで許可してください。 [VIM] sudo firewall-cmd –add-service=http –zone=public –permanent sudo firewall-cmd –reload [/VIM]

ここまで終わったら、Apacheを起動します。また、サーバーが再起動する時にApacheも自動的に再起動するような設定を行います。 [VIM] sudo systemctl enable httpd sudo systemctl start httpd [/VIM]

無事にApacheが起動したら、ブラウザでVPSサーバーのIPアドレスまたはVPSサーバーにアクセスするようにDNSの設定を施したドメインを指定してみましょう。


こんな感じのWEBページが表示されれば、設定成功です。

このブログを応援する・寄付する

当ブログでは暗号通貨による寄付を募っております。

モナゲボタン モナゲボタン

Bitcoin:

Monacoin:

Litecoin: