2012年12月2日日曜日

さくらVPS立ち上げのためにやったこと

さくらインターネットさんの高専生VPS無料キャンペーン の恩恵でVPSを借りることができました。さくらさんありがとう!!
はじめてもつサーバーにわくわくしっぱなしですが、セキュリティの設定が甘くて簡単に乗っ取られSPAMメール送信拠点になってしまったら笑えません。

のでドットインストールさんのさくらVPSの基礎という講座を参考に各種設定を行いました。
ドットインストールのサイトでは一回3分程度のYoutube動画で21回に渡り解説されているさくらVPSの基礎ですが、ここではさらっと確認するためにやったことを文字にまとめてみました。
誰かの参考になったら良いと言うよりは自分自身の備忘録ですね。
ちなみにローカルはMacOSX10.6.8です。
※赤文字一字下げはvimで変更する箇所

1.rootのパスワードを変更

2.パッケージのアップデート
 → yum update

3.日本語化
 → vim /etc/sysconfig/i18n
  LANG = "ja_JP.UTF-8"に変更

4.作業用ユーザの作成
 → useradd userA
  passwd *****
  usermod -G wheel userA //sudo権限を移譲
  visudo //wheelグループの有効化
  wheelを検索して先頭の#を削除しコメントを解除

5.公開鍵認証の設定
 →mkdir ~/.ssh
  chmod 700 ~/.ssh
  ssh-keygen -t rsa -v //ローカルで
  鍵の名前をid_rsa_userA、id_rsa_userA.pubに変更
  chmod 600 .ssh/id_rsa_userA.pub //公開鍵のパーミッション変更
  scp ~/.ssh/id_rsa_userA.pub userA@IP.ADD.RE.SS:~/.ssh/authorized_keys
  ssh -i ~/.ssh/id_rsa_userA userA@IP.ADD.RE.SS //公開鍵を用いたssh

6.ポート番号、パスワードログイン、rootログインの禁止
 → sudo -s //root権限取得
  cp /etc/ssh/sshd_config /etc/ssh/sshd_config.org //バックアップ
  vim /etc/ssh/sshd_config
   #Port 22 → Port ***** //は1024〜65534の任意の数字
   Port 5555 //仮設定
   PasswordAutentication yes → Passwordauthentication no
   #PermitRootLogin yes → PermitRootLogin no
  service sshd restart
  ssh -p 5555 userA@IP.ADD.RE.SS

7.ファイアウォールの設定
 → vim /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 YOUR_PORT_NUMBER -j ACCEPT
-A SERVICES -p tcp --dport 80 -j ACCEPT
-A SERVICES -p tcp --dport 443 -j ACCEPT
COMMIT 
service iptables restart
  iptables -L //設定の確認

8.Webサーバーのインストール
 → yum install httpd
 chkconfig httpd on //自動起動
 cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org
 vim /etc/httpd/conf/httpd.conf
  ServerTokens Prod
  ServerSignature Off
  Options -Indexes FollowSymLinks
 service httpd configtest //設定のテスト
 service httpd start

9.PHPのインストール
 → yum install php php-devel php-mysql php-mbstring php-gd
 php -v //バージョンチェック
 cp /etc/php.ini /etc/php.ini.org
 vim /etc/php.ini
  error_log = /var/log/php.log //エラーログの場所
  mbstring.language = Japanese //文字を日本語に設定
  mbstring.internal_encoding = UTF-8 //エンコーディングをUTF-8に
  mbstring.http_input = auto
  mbstring.detect_order = auto
  expose_php = Off
  date.timezone = Asia/Tokyo //タイムゾーンを日本に
 service httpd restart

10.MySQLのインストール
 → yum install mysql-server
  cp /etc/my.cnf /etc/my.cnf.org
  vim /etc/my.cnf
  service mysqld start
  mysql_secure_installation
  chkconfig mysqld on
  mysql -u root -p

これでLAMP(Linux,Apache,MySQL,PHP)の環境構築完了です。
このあとRuby On RailsとmongoDBのインストールも行いましたが省略します。

個人的に引っかかったポイントとしてパスワードログインの禁止後に新規ユーザを作成した際のsshログインの仕方について記述します。

1.新規ユーザーの追加
 → useradd userB
  passwd *****

2.新規ユーザの鍵ペアの作成
 → 省略しますがid_rsa_userB、id_rsa_userB.pubという鍵を作成

3.新規ユーザのホームに.sshディレクトリの作成
 → userA $ → sudo -s → root # //ルート権限の委譲
  mkdir /home/userB/.ssh/
  chmod 700 /home/userB/.ssh/
  chown userB /home/userB/.ssh/
  chgrp userB /home/userB/.ssh/
  exit
  logout

4.公開鍵の移動
 → scp -P 5555 -i id_rsa_userA  id_rsa_userB.pub userA@IP.ADD.LE.SS:~/.ssh/authorized_userB
  ssh -i ~/.ssh/id_rsa_userA userA@IP.ADD.RE.SS
  sudo -s
  cp /home/userA/.ssh/authorized_userB /home/userB/.ssh/aurhorized_key
  chmod 600 /home/userB/.ssh/aurhorized_key
  chown userB /home/userB/.ssh/aurhorized_key
  chgrp userB /home/userB/.ssh/aurhorized_key
  exit
  logout

5.userBで公開鍵認証
 → ssh -p 5555 -i ~/.ssh/id_rsa_userB userB@IP.ADD.LE.SS

6.(Mac限定?)sshを簡単にするconfigの設定
 → ローカルの~/.sshディレクトリの中のconfigを設定する
Host userA
    HostName IP.ADD.LE.SS
    Port 5555
    IdentityFile ~/.ssh/id_rsa_userA
    User    userA


Host userB
    HostName IP.ADD.LE.SS
    Port 5555
    IdentityFile ~/.ssh/id_rsa_userB
    User    userB

この様にすればssh userAとすればuserAにssh userBとすればuserBでログインすることが可能です。

簡単に言うと.sshフォルダとauthorized_keysの所有者がuserBになっていれば大丈夫です。ここがわからなくてかなりの時間を消費しました。

0 件のコメント:

コメントを投稿