知行合一

とか言ってみる

【VPS】さくらのVPSの設定まとめ (CentOS 6.3)

ドットインストールで学んだことを自分用にまとめ。

下記作業内容。

  • VPSへ接続
  • 作業用ユーザを設定
  • 鍵認証
  • SSHの設定
  • ファイアーウォールの設定
  • Webサーバの設定
  • Webサーバにファイルを置いてみる

◼︎VPSへ接続

ssh ユーザ名@接続先のIPアドレス

ssh root@153.126.~~

最初に繋ぐ時は「接続できますか?」と聞かれるので「yes」と答える。
パスワードはメールで聞かれたやつ。
上手くいけばログインできてる感じのメッセージ出てくる。
そしたら、

yum update

をして、入ってるアプリケーション全てを最新の状態にしてくれる。
更新がある場合は「y/n」で聞かれるので「y」

(日本語にしたい場合は)

vi /etc/sysconfig/i18n

のLANGを

"ja_JP.UTF-8"

と入力。

◼︎作業用ユーザの設定

普段はroot以外の普通のユーザーを使うのが一般的。
ユーザーを作る時

useradd ユーザー名

そのユーザーのパスワードを設定する

passwd ユーザー名

終わったら、一般ユーザーでもroot権限で作業ができるsudoの設定。
これは決まり文句らしい。

usermod -G wheel ユーザー名

指定したユーザーを「wheel」グループに入れるように変更している。
そして、wheelグループがsudoのコマンドを使えるようにしたいので、

visudo

をして「/」を押して「wheel」を検索。

## Allows people in group wheel to run all commands
の下の# %wheelの#を削除。

保存。

これで、ターミナル再起動からのssh ユーザー名@153.126.~~でパスワードを入れると通るとパスワード認証ができる。
しかし、パスワード認証はセキュリティ的に良くないので、鍵認証の設定をする。

◼︎鍵認証の設定

公開鍵をVPSに置いて秘密鍵Mac側に置く。
まずはVPS側に公開鍵を置く場所を作る。
ログインしたら
/home/ユーザー名
にいると思うので、

mkdir ~/.ssh

で.sshディレクトリを作成する。
パーミッション

chmod 700 ~/.ssh

700にしておく。

次はMac側の作業。
鍵のペアを作るコマンドは

ssh-keygen -t rsa -v

という決まり文句がある(Macの場合)。
鍵の名前をどうするか聞かれるがデフォルトでokなのでReturn。
passphraseもデフォルトで良いのでReturn, Return。
そしたら鍵完成。
「id_ras」が秘密鍵
「id_rsa.pub」が公開鍵。
公開鍵を転送する前にパーミッションの変更を忘れずに。

chmod 600 .ssh/id_ras.pub

転送にはscpを使う。入れる場所は.sshディレクトリだが、「authorized_keys」と変えている。
決まり文句らしいのでyesとして、ユーザー名のパスワードを聞かれるので入力。

scp ~/.ssh/id_rsa.pub ユーザー名@IP.ADD.RE.SS:~/.ssh/authorized_keys

ここまでで転送が完了しているはず。

ちゃんとできるかをMacから鍵認証でログインしてみる。

ssh -i ~/.ssh/id_rsa ユーザー名@IP.ADD.RE.SS

ただ、-i ~/.ssh/id_rsa はデフォルト値なので、同じ名前なら

ssh ユーザー名@IP.ADD.RE.SS

というように省略できる。

◼︎SSHのセキュリティ設定をする

ここまでで鍵認証ができるようになったが、まだパスワードでも認証ができてしまうなどのセキュリティ的に安全ではない部分があるので、セキュリティを高める3つのことをする。

  • ポート番号の変更
  • パスワードログインの禁止
  • rootログインの禁止
ポート番号の変更

ポート番号はSSHで通信するときはデフォルトは22番だが危ないので変更する。
1024~65535までの中から好きな番号を使えるので適当に選んで設定する。

これらの設定はrootで作業したいのでVPSにログインした状態で、

sudo -s

を入力してパスワードを入れるとrootで作業ができる。コマンドプロンプトが$から#になっていればおっけー。

そして、設定ファイルをいじるのだがまずは設定ファイルのバックアップを取ることにする

cp /etc/ssh/sshd_config /etc/ssh/sshd_config.org

.orgという拡張子はoriginalという意味らしい。.orgでバックアップをとってくれるみたい。

ということで設定ファイルを弄ってポート番号を変更する。

vi /etc/ssh/sshd_config

からのー、/Portで検索してみる。
(vimは#がコメントでxで消去できるよ。wで次の単語に移動だよ)

22番から好きな番号に変更する。
#取るの忘れずに!!
escで抜けて/PasswordAuthで検索する。
PasswordAuthentication をyesからnoにする。
エスケープで抜けてwqで保存。

ここまでの設定を反映させたいので

service sshd restart

で反映。新しくタブを作って

ssh -p YOUR_PORT_NUMBER ユーザー名@IP.ADD.RE.SS

でログインできればok!!
22番ではもうログインできないので、上記コマンド以前のログイン方法ではログインできない。

◼︎ファイアーウォールの設定

ファイアーウォールは外部のネットワークと内部のネットワークを遮断してくれてセキュリティを高めている。(後日この辺書く。)
VPSにログイン後に

vi /etc/sysconfig/iptables

で設定ファイルを作る。
設定ファイルは長いからドットインストールで用意してくださったやつを使う。
ざっくり言うと指定したポート番号だけは空けておいてという感じに設定してるみたい。

*filter
:INPUT    DROP    [0:0]
:FORWARD  DROP    [0:0]
:OUTPUT   ACCEPT  [0:0]
:SERVICES -       [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 4  -j ACCEPT
-A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp -m state --state NEW -j SERVICES
-A INPUT -p udp --sport 53 -j ACCEPT
-A INPUT -p udp --sport 123 --dport 123 -j ACCEPT
-A SERVICES -p tcp --dport 自分で決めたポート番号 -j ACCEPT
-A SERVICES -p tcp --dport 80 -j ACCEPT
-A SERVICES -p tcp --dport 443 -j ACCEPT
COMMIT

保存したら、

service iptables restart

で再起動で設定を反映させてあげる。

設定が反映されているかの確認は

iptables -L

でどこのポートが空いてるかを確認することができる。

◼︎Webサーバ(Apache)の設定

Webサーバで代表的なApacheを入れる手順。
インストール。

yum install httpd

再起動後に自動立ち上げ。

chkconfig httpd on

設定ファイルを弄ってセキュリティを高める。
さっきやったみたいに設定ファイルのバックアップをとり、

cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org

編集する

vi /etc/httpd/conf/httpd.conf

ServerTokensを検索して「OS」から「Prod」に変更する。
ServerSignatureを検索して「On」から「OFF」に変更する。
Options Indexを検索してvar/www/htmlの下にあるOptions IndexのIndexの前に「-」(ハイフン)を入れてあげる。

<Directory "/var/www/icons">
    Options -Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

ここまで出来たら保存。

設定の確認方法は、

service httpd configtest

でテストができるみたい。okだったら

service httpd start

Apacheを再起動する。

◼︎ Webサーバにファイルを置いてみる

まずは、ブラウザでIPアドレスを打ってみて「Apache 2 Test Page」みたいなタイトルのページになればok。
ドキュメントルートにまだファイルがないのでそこにファイルを置く。
設定ファイルにpathが書いてあるので、

vi /etc/httpd/conf/httpd.conf

で見て、DocumentRootで検索すると「/var/www/html」以下にあるものというようにデフォルトで指定されているはず。
ファイルを置いたりするには権限が必要で、さっき作ったユーザー名で転送したりすると思うので権限の変更をする。

chown -R ユーザー名:ユーザー名 /var/www/html
  • Rはこれ以下の全部のフォルダをユーザー名が所有するようにという指定。

ここまでできたら、ファイル転送ソフトでもなんでも良いのだがファイルを置いてみて確認。

ということでWebサーバの設置までできたのであとはPHPとかMySQLとかWordpressとかのインストールでも書こうかな。