- さくらVPSの契約
- 表示を日本語化
- 作業用ユーザーの作成
- SSHの設定
- 作業用ユーザーを sudo できるようにする
- 鍵認証の作成と保存
- SSHログイン方法を鍵認証に変更
- iptables(ファイアウォール)の設定
- PHPのインストール
- Apache(httpd)のインストール
- Apacheの設定
- Mysqlのインストール
- phpMyAdminのインストール
- FTP接続できるようにする(vsftpd)
- バーチャルホストの設定
- バリュードメインで取得したドメインをさくらのVPSに設定
- ベーシック認証の設定
さくらVPSの契約
2週間お試しはクレジットカードのみ。
お試し期間中は機能制限がある。
→お試し期間中の制限と本登録について
vps.sakura.ad.jp/flow.html
契約後にメールで管理用ユーザー情報が送られてくる。
メール件名:[さくらのVPS] 仮登録完了のお知らせ ------------------------------------------------ [サーバ基本情報] IPアドレス:***.***.**.*** [管理用ユーザ] ユーザ名 :root (※) 初期パスワード:********** ------------------------------------------------
Cent OS バージョン確認
cat /etc/redhat-release
yum updateの実行
yum update
表示を日本語化
設定ファイルを開く
vim /etc/sysconfig/i18n
下記に変更
LANG="C" SYSFONT="latarcyrheb-sun16" ↓↓↓↓ LANG="ja_JP.UTF-8" SYSFONT="latarcyrheb-sun16"
その後、再起動を行う。
作業用ユーザーの作成
複数人で作業したいため、グループを先に作成
groupadd GROUP_NAME
ユーザーの作成
useradd -g GROUP_NAME USER_NAME
作成したユーザーのパスワードを設定
passwd USER_NAME
ユーザー一覧
cut -d: -f1 /etc/passwd
SSHの設定
vim /etc/ssh/sshd_config
ポート番号の変更
#Port 22 ↓↓↓ Port 2468
SSH接続でrootでログインを禁止
#PermitRootLogin yes ↓↓↓ PermitRootLogin no
SSH許可ユーザーの設定
# hoge というユーザだけログインを許可する AllowUsers hoge
wqで保存して再起動
/etc/init.d/sshd restart
作業用ユーザーを sudo できるようにする
設定ファイルを開く
visudo
sudo できるユーザー、またはグループを追記
%GROUP_NAME ALL=(ALL) NOPASSWD: ALL
鍵認証の作成と保存
秘密鍵・公開鍵の作成
teraterm の メニューから、
設定 → SSH鍵生成 → 生成(RSA・2048bit) → 任意のパスフレーズ入力 → 公開鍵と秘密鍵をローカルに保存
鍵認証用の保存場所として、ユーザーのホームディレクトリの直下にフォルダを作成
mkdir /home/USER_NAME/.ssh
パーミッションは700に設定
chmod 700 /home/USER_NAME/.ssh
公開鍵の設定ファイルを作成(USER_NAMEはユーザー名)
authorized_keysファイルを作成し、ローカルに保存した公開鍵の内容をコピペする。
vim /home/USER_NAME/.ssh/authorized_keys
authorized_keysのパーミッションは600に設定(USER_NAMEはユーザー名)
chmod 600 /home/USER_NAME/.ssh/authorized_keys
SSHのログイン方法を鍵認証に変更
SSH設定ファイルを開く
vim /etc/ssh/sshd_config
鍵認証を使うように変更
#RSAAuthentication yes #PubkeyAuthentication yes #AuthorizedKeysFile .ssh/authorized_keys ↓↓↓↓↓ RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
パスワード認証ログインを無効に変更
※鍵認証でログインできた後に変更する
#PasswordAuthentication yes ↓↓↓↓↓ PasswordAuthentication no
SSHを再起動
service sshd restart
うまくログインできない場合
ディレクトリ・ファイルのパーミッションをよく確認する。
ユーザーのホームディレクトリは、自分以外に書き込み権限を与えてはいけない。(777や775の場合は755に変更)
chmod 755 /home/USER_DIR/
iptables(ファイアウォール)の設定
設定ファイルを開く
vim /etc/sysconfig/iptables
→ポート番号は適宜変更
→COMMIT以降に改行やスペースを入れてはいけない。
→無駄なスペースが入っているとエラーになる場合がある(ここらへんのルールが分からない)
*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 2468 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited COMMIT
iptables再起動
/etc/init.d/iptables restart
PHPのインストール
yum -y install php php-cli php-fpm php-devel php-gd php-mbstring php-mysql php-pdo php-pear php-xml php-imap php-pecl php-mcrypt php-common
タイムゾーンの設定
php.iniを開く
vim /etc/php.ini
下記に設定
date.timezone = "Asia/Tokyo"
Apache(httpd)のインストール
Apacheをyumでインストール
yum -y install httpd
Apacheを起動
/etc/rc.d/init.d/httpd start
自動起動設定をONに設定
/sbin/chkconfig httpd on
Apacheの設定
Apache設定ファイルを開く
vim /etc/httpd/conf
Webサーバーにアクセスしたクライアントに返す情報を最小限にする
(OS情報等を返すと攻撃者にヒントを与えてしまうため)
ServerTokens OS ↓↓↓↓ ServerTokens Prod
404等のエラーページに表示されるサーバー情報を非表示に変更
(ServerTokensと同様の理由)
ServerSignature On ↓↓↓↓ ServerSignature Off
Mysqlのインストール
Mysqlをyumでインストール
yum -y install mysql-server
Mysqlを起動
service mysqld start
自動起動設定
chkconfig mysqld on
再起動
service mysqld restart
設定されたか確認
chkconfig --list mysqld
2~5までがonになっていればOK
phpMyAdminのインストール
yumでインストール
yum install phpmyadmin
※設定を変更したら、httpdを再起動して反映。
service httpd restart
yumに入っていない場合、remiでインスト
qiita.com/kidachi_/items/40f862181050b78b9cc7
ブラウザからアクセスできるように変更
設定ファイルを開く
vim /etc/httpd/conf.d/phpMyAdmin.conf
下記のように変更
# Apache 2.2 #Order Deny,Allow ←コメントアウト #Deny from All ←コメントアウト #Allow from 127.0.0.1 ←コメントアウト #Allow from ::1 ←コメントアウト Order allow,deny ←追加 Allow from all ←追加
認証方法をベーシック認証からCookie認証に変更
設定ファイルを開く
vim /etc/phpMyAdmin/config.inc.php
パスフレーズを入力(適当な乱数)
$cfg['blowfish_secret'] = 'abcdefghijasklmnopqrssssdtuvwxyz0123456789';
auth_typeをhttpからcookieに変更
$cfg['Servers'][$i]['auth_type'] = 'cookie';
phpMyadminのURLを変更
設定ファイルを開く
vim /etc/httpd/conf.d/phpMyAdmin.conf
下記にように変更
#Alias /phpMyAdmin /usr/share/phpMyAdmin ←コメントアウト #Alias /phpmyadmin /usr/share/phpMyAdmin ←コメントアウト Alias /XXX-pma /usr/share/phpMyAdmin //←任意のURLを設定
hogehoge.jp/XXX-pma/でphpMyAdminにアクセスできる。
FTP接続できるようにする(vsftpd)
vsftpdをyumからインストール
yum -y install vsftpd
vsftpdを起動する
/etc/rc.d/init.d/vsftpd start
設定方法は下記のサイトが分かりやすい
pro-grammer.info/archives/902
バーチャルホストの設定
設定ファイルを作成
vim /etc/httpd/conf.d/vhost.conf
下記を適宜変更して記述する。
XXXXXの部分を取得したドメインに変更
NameVirtualHost *:80DocumentRoot /var/www/html/ ServerName XXXXX.info ServerAlias www.XXXXX.info AllowOverride All
Apacheを再起動
/etc/rc.d/init.d/httpd restart
バリュードメインで取得したドメインをさくらのVPSに設定
DNS設定
xxx.xxx.xx.xxxはVPSのIPアドレス
a @ xxx.xxx.xx.xxx cname www @
ネームサーバー変更
ns1.value-domain.com ns2.value-domain.com ns3.value-domain.com ns4.value-domain.com ns5.value-domain.com
ベーシック認証の設定
httpd.conf または.htaccessに記述
AuthType Basic AuthName "ID and password" AuthUserFile /etc/httpd/conf/.htpasswd Require valid-user
htpasswdの作成
.htpasswdの内容
/etc/httpd/conf/.htpasswdファイル USER_NAME:PASSWORD // PASSWORDは暗号化されたもの
.htpasswd をコマンドで作成
htpasswd -c .htpasswd USER_NAME
ユーザの追加(オプションの c が不要)
htpasswd .htpasswd USER_NAME
ユーザーの削除
htpasswd -D .htpasswd USER_NAME
特定のディレクトリを除外
// httpd.confファイル または.htaccesssatisfy any