読者です 読者をやめる 読者になる 読者になる

@Satoh_D no blog

大分にUターンしたので記念に。調べたこととか作ったこととか食べたこととか

お名前.comのVPSを借りた & 色々サーバ設定を行った vol.01

regular VPS CentOS お名前.com

サーバ設定のお勉強がてらお名前.comのVPSを借りました。
お名前.comの設定についての情報って結構少ないのですね、引っかかるのはさくらのVPSの情報ばかり...。
今後VPSの設定を行う方のお役に立てればと思い、今行っていることを諸々メモしておきます。

長いので複数の記事に分けます。
というかまだ設定が終わっていないので途中までしか書けないのです...。

今回の環境

  • お名前.com VPS(KVM) 2Gプランを契約
  • 作業はMacのターミナルを使用

以下の作業はサーバ契約時のメールに記載されいてるので省略します。

  • VPSの初期セットアップ
  • root権限でSSH接続する

次からやったことをつらつら書いていきます。

システムにインストールされているパッケージのアップデートを行う

SSH接続後、システムに予めインストールされているシステムのアップデートを行います。

# yum -y update

するとシステムにインストールされているパッケージが続々アップデートされていきます。
実行中は下記のような画面が流れます。
意外と時間がかかるので気長に待ちましょう。

oaded plugins: fastestmirror, security
Determining fastest mirrors
epel/metalink                                                                                              | 4.9 kB     00:00     
 * base: ftp.tsukuba.wide.ad.jp
 * epel: ftp.kddilabs.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
base                                                                                                       | 3.7 kB     00:00     
base/primary_db                                                                                            | 4.6 MB     00:00 
...
〜中略〜
...

作業用ユーザを作成する

root権限で作業するのはセキュリティ上あまりよろしくないので、作業用のユーザを作成します。
後ほどrootになれるユーザを制限するためにwheelグループに所属させておきます。

# /usr/sbin/useradd -d /home/{作業用ユーザ名を指定} -s /bin/bash {作業用ユーザ名を指定}
# passwd {任意のパスワードを設定}
# usermod -G wheel

ユーザの公開鍵を登録する

作業用ユーザがリモートで入れるように公開鍵を登録します。

# su - {作業用ユーザ名}
$ ssh-keygen -t rsa
$ vi ~/.ssh/authorized_key

authorized_keyの編集画面が開きます。
ローカルで作成している公開鍵をコピペして保存します。
ローカルに公開鍵を作っていない方はこれを機に作っておくと良いかと思います。

$ chmod ~/.ssh/authorized_key

sshdの設定を変更する

セキュリティを高めるためにパスワードでの認証をやめ、公開認証鍵でのログインのみに変更します。

# vi /etc/ssh/sshd_config

// 下記の項目を no にします
PermitRootLogin no
PasswordAuthentication no
UserPAM no

設定が完了したら保存して終了します。
ここで試しにターミナルの別タブを開き、作業用ユーザでログインしてみます。
※この時、root権限でログインしているタブは閉じないで下さい。

$ ssh {作業用ユーザ名}@{サーバのIPアドレス}

無事にログイン出来るようでしたら今のところ順調に成功です。 この時点で

  • リモートからのパスワード認証不可
  • 公開鍵に対する秘密鍵を持ったクライアントからのログイン以外不可

となります。

作業用ユーザでsudo出来るように設定を変更する

root権限でログインできなくなっていますので、作業用ユーザでsudo出来るように設定を変更します。

# visudo

sudoの設定ファイルを開きます。
設定ファイルを以下のように変更します。

## Allows people in group wheel to run all commands
# %wheel        ALL=(ALL)       ALL // コピペしてコメントを外す
%wheel        ALL=(ALL)       ALL

ファイアウォールを設定する

さらにセキュリティを高めるために、使用しないポートは閉じておきます。
ポートの設定は iptables を編集します。

# vi /etc/sysconfig/iptables

今回は以下の様な設定にしています。

*filter
:INPUT   ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT  ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]

-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# SSH, HTTP, FTP1, FTP2, MySQL
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80    -j ACCEPT

-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited

COMMIT

ざっくり言うと SSH(22)、HTML(80)、FTP(20/21)、MySQL(3306)のみ許可しました。

2015/04/08追記
※例としてデフォルトのポート番号を書いています。 実際に使用する際はポート番号を変えておくとセキュリティ上安心です。
※SCPが使用できるのでFTPは必要ないとのご指摘を頂きました。設定から削除いたしました。

2015/04/09追記
MySQLのポートも外部からのアクセスは必要ないのなら閉じておいても良いという指摘をいただき、MySQLのポート設定部分を削除しました

他の詳しい説明は下記のページを御覧ください。

入力が完了したら保存して終了します。
設定を反映するためにiptablesを再起動します。

/etc/rc.d/init.d/iptables restart

次のような文言が表示されれば再起動完了です。

iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Unloading modules:                               [  OK  ]
iptables: Applying firewall rules:                         [  OK  ]

設定が反映されているか確認します。

# iptables -L

指定したポートがACCEPTになっていれば完了です。

今日はここまで行いました。
いろんな記事を行ったり来たりしながらの設定は大変ですね...。

次はApache, PHP, MySQLの設定を行う予定です。

今回参考にしたページ