さくらのVPSでminecraftマルチプレイヤサーバを構築 OS設定編

メニュー

インストール関連
運用関連

コンソールからログイン

CentOS7のインストールが完了したら、今度はOSの設定を行っていきます。
まずは、コンソールで作業してきますので、rootユーザでログインします。

アップデート実行

さくらのVPSをカスタムインストールでOSをインストールした場合は、OSはネットインストールなので最新状態でインストールされていると思うのですが、念のために「yum」でアップデートを行っておきます。

# yum -y update

SSH設定変更

初期状態のSSHはセキュリティ上甘い設定なので、セキュリティを高めるために設定変更を行っていきます。

rootユーザのログイン禁止

初期状態のSSHは「root」ユーザの直接ログインが許可されています。
これは、rootのパスワードが破られてしまうと一発でサーバの管理者権限が奪われてしまい非常に危険ですので、rootユーザは直接SSHでログインできない設定を行っていきます。

まずは、sshの設定ファイルをバックアップしてから編集を行っていきます。

# cd /etc/ssh/
# cp -p sshd_config sshd_config_20150323
# vi sshd_config

設定変更部分


「PermitRootLogin」という箇所を変更することで、SSHでrootユーザが直接ログイン出来なくなります。

設定変更前

#PermitRootLogin yes

設定変更後

PermitRootLogin no

SSH接続ポート変更

通常SSHは22番ポートで接続しますが、この番号のままだとインターネット上からブルートフォースアタック(ユーザー名・パスワード総当り攻撃)等、非常に多くの攻撃を受けてしまいます。

そこで、SSH接続用のポート番号をデフォルトの22番ポートから、別のポート番号に変更しておきます。

このポート番号の変更も、SSHの設定ファイルである「/etc/sshd_config」で行います。

設定変更部分

「Port」の部分を変更することで、SSHのポート番号を変更することが出来ます。
今回はポート番号を20022に設定していきます。

変更前

#Port 22

変更後

Port 20022

設定反映

設定が完了したら、SSHサービスを再起動して設定を反映させます。

# systemctl restart sshd

鍵認証方式への変更について

本当であれば、SSHは鍵認証方式にしたほうがよりセキュリティが向上するのですが、運用上デメリット等もあります。
そのあたりを考慮して設定を行うか判断してください。

設定方法こちらのページにまとめていますので、設定を行う場合は参照願います。

firewalld設定

CentOS7の初期インストール状態では、ファイアウォール機能(firewalld)が有効となっていて、このままでは先ほどポート番号を変更した「SSH」も、これからインストールしていく「minecraft」サーバも通信出来ません。

そこで、これらのサービスに接続できるように設定を行っていきます。

ゾーンの変更

初期状態のfirewalldのゾーンは「public」となっているので、これを「dmz」に変更していきます。

ゾーンの確認

「firewall-cmd --list-all」コマンドを使用して、現在のdefaultゾーンを確認すると、「public」がデフォルトのゾーンであることが確認できます。

# firewall-cmd --list-all
public (default, active)
interfaces: eth0
sources:
services: dhcpv6-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:

デフォルトゾーンの変更

「firewall-cmd」コマンドを使用して、デフォルトのゾーンを変更していきます。

# firewall-cmd --set-default-zone=dmz
success

dmzゾーンにインターフェイス接続

初期状態で「public」ゾーンに設定されている、eth0のNICインターフェイスを、「dmz」ゾーンに設定変更します。

設定の変更は、NICインターフェイスの設定ファイルである、「/etc/sysconfig/network-scripts/ifcfg-eth0」に設定を追加することで行えます。

※さくらのVPSではeth0となるはずですが、別環境の場合はファイル名が異なることがあるので、適宜読み替えてください。

設定変更

# cd /etc/sysconfig/network-scripts/
# cp -p ifcfg-eth0 20150323_ifcfg-eth0
# vi ifcfg-eth0

追加設定

ZONEの項目が無い場合は下記の設定を追加します。すでに別の値が設定されている場合は、「dmz」に変更して下さい。

ZONE=dmz

ポート開放設定

SSHの設定で変更したポートと、minecraftサーバで使用するポートで通信が出来るように、設定を行っていきます。

SSHポートの開放

SSHの設定変更でポート番号を初期設定の22番ポートから20022番ポートに変更しているので、このポートで通信できるように設定します。

20022番ポートで通信を許可する方法ですが、今回は何番ポートが通信許可されているかすぐに分かるように、独自サービスを追加する方法ではなく、ポートを追加する形でいきます。正常に設定が完了すると、「success」と表示されます。

firewall-cmd --permanent --add-port=20022/tcp
success

ssh(22番)ポートの削除

20022番ポートが追加されたら、dmzゾーンの初期設定で通信許可されているsshは必要ないので設定を削除します。

# firewall-cmd --permanent --remove-service=ssh
success

minecraft用ポートの開放

minecraftサーバは初期設定では25565番ポートで通信を行うので、このポートの通信を許可する設定を行っていきます。

# firewall-cmd --permanent --add-port=25565/tcp
success

firewall設定の反映

ポートの設定が完了しましたら、設定を反映させます。

# firewall-cmd --reload
success

SELinux設定無効化

CentOS7の初期設定はSELinuxが有効となっていますので、その設定を無効化していきます。

設定変更

SELinuxの有効・無効の設定は「/etc/sysconfig/selinux」ファイルで設定しますので、設定を行っていきます。

# cp -p /etc/sysconfig/selinux /etc/sysconfig/selinux_yyyymmdd
# vi /etc/sysconfig/selinux

変更内容

現状、有効化されているSELinuxの機能を無効化するには、下記の項目を変更することで無効化することが出来ます。設定変更後サーバを再起動することでSELinuxの機能が停止した状態でサーバが起動します。

変更前

SELINUX=enforcing

変更後

SELINUX=disabled

※SELinuxについて、もうちょっとだけ詳しい説明をこちらのページでまとめています。

サーバ再起動

SSH、firewalld、SELinuxの無効化設定が完了しましたら、サーバを再起動しこれまで行った設定の動作確認を実施します。

# reboot

動作確認作業

サーバの再起動が完了後、これまで設定を変更してきた「SSH」、「firewalld」、「SELinux」の動作確認を行っていきます。

動作確認する項目はSSH、firewalld、SELinuxの無効化設定となります。

SSHの動作確認

sshの接続確認ですが、Windows端末からならば「TeraTerm」等のSSHクライアントを使用して下記の動作試験を行っていきます。忘れがちなのですが、SSHのポート番号を初期値の22番から変更しているので、変更したポート(この手順では20022番ポート)で接続するようにしてください。

  • SSHでOSインストール時に作成したユーザでサーバに接続できること
  • rootユーザでログイン出来ないこと

※SSHを鍵認証方式に変更している場合は、通常のユーザ・パスワード認証でログインできないことも確認します。

firewalldの設定確認

「firewall-cmd」コマンドを使用して、以下の内容がfirewalldに設定されているかの確認をします。

  • defaultのゾーンが「dmz」になっていること
  • interfacesにeth0が割り当てられていること
  • portsにSSH用ポート20022とminecraft用ポート25565が設定されていること

ここからの作業はSSHでログインしての作業となります。
ログイン直後は一般ユーザですので、「su -」でrootユーザなってから確認をしていきます。

$ su -
# firewall-cmd --list-all
dmz (default, active)
  interfaces: eth0
  sources:
  services:
  ports: 20022/tcp 25565/tcp
  masquerade: no
  forward-ports:
  icmp-blocks:
  rich rules:

SELinux無効化確認

getneforce getenforceコマンドを実行し、SELinuxが無効化されている状態である「Disabled」と表示されることを確認します。

※2015.07.06 getenforceのタイプミスを修正しました。ご指摘ありがとうございました。

# getenforce
Disabled

動作確認は以上です。
次にサーバの時刻同期の設定を行っていきます。

時刻同期設定

OSインストール時は時間がずれているとことが多いので、手動で時刻同期を行います。

ntpdateインストール

手動での時刻同期に必要な「ntpdate」を「yum」でインストールします。

# yum -y install ntpdate

ntpdate実行

インストールが完了しましたら、「ntpdate」コマンドを実行し手動でサーバの時刻を合わせます。

# ntpdate ntp1.jst.mfeed.ad.jp

chronyd設定

サーバの時間はほっとくと少しずつズレていってしまうため、chronydで定期的に時刻を同期させていきます。

※chronydはCentOS7からntpdの替わりにインストールされている、時刻同期のサービスです。

chronydの設定ファイルは「/etc/chrony.conf」となりますので、バックアップしてから設定を行っていきます。

# cp -p /etc/chrony.conf /etc/chrony.conf_20150323
# vi /etc/chrony.conf

編集内容

時刻同期を行うサーバの設定を変更していきます。初期設定のままでも、動作はするのですがネットワーク的に遠いので、日本にあるサーバに同期先を変更しています。

さくらのVPSを使用しているのであれば、「さくらインターネット」様が用意している「ntp1.sakura.ad.jp」に同期しても良いのですが、一台だけだと不安なので3台ある「インターネットマルチフィード」様のサーバに同期をさせています。

変更前
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
変更後
server ntp1.jst.mfeed.ad.jp iburst
server ntp2.jst.mfeed.ad.jp iburst
server ntp3.jst.mfeed.ad.jp iburst

設定反映

chronydを再起動し設定を反映させます。

# systemctl restart chronyd

時刻同期確認

時刻同期が動作しているかの確認には、「chronyc sources」コマンドを使用します。

サーバ名の前に「^+」「^* 」が表示されていれば、正常に同期しています。

# chronyc sources
210 Number of sources = 3
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^+ ntp1.jst.mfeed.ad.jp 2 6 17 19 -14us[ +15us] +/- 36ms
^+ ntp2.jst.mfeed.ad.jp 2 6 17 19 +53us[ +82us] +/- 37ms
^* ntp3.jst.mfeed.ad.jp 2 6 17 19 +31us[ +60us] +/- 13ms

以上で、OS周りの設定はとりあえず完了となります。

次はいよいよminecraft_serverのインストールを行っていきます。

コメント

  1. yahata より:

    反映と書いているところは、そのコマンドを一番下にエンターで段を追加して、コマンド入力をしたら、画面が変わる。ということでしょうか?

    一番最初の変更点のport番号を変更後、設定反映のコマンド入力のところでつまづいております。

    • yahata より:

      こちらでの返答がお手数であれば、メール回答でも大丈夫ですので、よろしくお願いいたします。

      • tamohiko より:

        yahataさん

        ご質問ありがとうございます。
        では、ご回答のほうをメールでお送りさせていただきます。

        もし、届いていないようでしたら、こちらのほうにご連絡ください。

        よろしくお願いします。

  2. yahata より:

    初歩的な質問ですいません。
    こちらのosインストール方法を参考にしながらインストールしているのですが、
    アップデートのところでつまづいております。
    この入力は、自分はコンソール(HTML)で行うと判断し、osインストールの際に決めたrootパスワードで入力をし、何度も確認したり、osの再インストールをしたり、一般のパスワードを試したり、起動から時間をおいて試したりしたのですが、全てだめで、どうしたらいいのかわかりません。

    申し訳ありませんが、ご回答のほどよろしくお願いします。

    • yahata より:

      すいません。ログインができました。
      しかし、その後のこととして、アップデートをした後に、いろいろ打つのは、HTMLコンソールでいいのでしょうか?それとも途中に登場するTera Termでにゅうりょくするのでしょうか?
      たびたび申し訳ありませんが、よろしくお願いします。

      • tamohiko より:

        yahataさん

        お返事が遅くなりすいませんです。

        ご質問の内容は、
        「コマンドの実行を何で行えば良いのか」
        ということでよいでしょうか?

        ということであれば、TeraTermとコンソールのどちらで作業を行っても問題はありません。

        ただ、このページで説明している手順では、さくらインターネット様で提供されているコンソール(HTML)で作業を行っています。

        理由としましては、SSHやfirewalldの設定作業は設定を間違えると、SSHでサーバに接続することが出来なくなる可能性があるため、念のためにコンソールで作業を行いTeraTermで動作確認を行っています。

        TeraTermで作業を行い、接続できない場合にコンソールで作業という方法でも特に問題はありません。
        このへんは好みの問題ですかね。

        ちなみに、私はアップデート、SSH、firewalld、SELinux無効の設定とサーバ再起動が終わりましたら、その後はTeraTermで作業を行っています。

        他に疑問点等ありましたら、またご連絡お願いいたします。

      • yahata より:

        なるほど。とてもわかりやすく、かつ簡潔なお答えありがとうございます!

  3. rakusuke より:

    すいません。自己解決しました。
    さくらサーバーから送られてくるパスワードではなく、自分で設定したパスワードでした。

    • tamohiko より:

      返信が遅くなりすいません。
      解決したとのことで何よりです。

      minecraftのインストールは無事完了出来ましたでしょうか?
      記事上で何か分からないことがありましたら、お気軽にご質問くださいね。

      今後ともよろしくお願いいたします。

  4. rakusuke より:

    おそらく非常に初歩的な質問で申し訳ないのですが、このページの一番最初『コンソールからログイン』でつまづいてしまっています。

    ○○○○○○ login:

    と表示されている右側に『root』と入力してエンターキー

    次に表示される

    Password:

    という項目の右側にさくらVPSからメールで送られてきた管理用ユーザの初期パスワードを入力(この時、コンソール内には何も文字は表示されません)してエンターキー。すると

    login incorrect

    と表示されてまた

    ○○○○○○ login:

    と表示されます。
    私は一体なにを間違えてログイン出来ないのでしょう。
    お手数おかけしますが教えて頂けると助かります。

  5. 名無し より:

    細かいところですが誤字です。
    SELinux無効化確認の
    誤)getneforceコマンドを(ry
    正)getenforceコマンドを(ry
    お願いします。

    • tamohiko より:

      ご指摘ありがとうございました!!
      該当箇所の修正をさせていただきました。

      今後ともよろしくお願いいたします。

タイトルとURLをコピーしました