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

さくらのVPSへのDebianのインストール

概要

  • さくらのVPSDebianをインストールし、最低限の設定を行います。
  • OSは Debian 7.0(Wheezy) を使用します。

レンタル開始

  • http://vps.sakura.ad.jp/ から申し込みます。
  • 『お申込受付完了のお知らせ』と『仮登録完了のお知らせ』のメールが送付されます。
  • 『仮登録完了のお知らせ』メールに基本情報が記述されています。
  • ※外向き25番ポート利用不可、DNS利用不可、転送量制限等の制限事項があるので、しっかりとメールとメール上のリンクからの情報を確認しておきましょう。

OSインストール前の情報確認

OSのインストール

  • VPSコントロールパネルにログイン。
  • 諸情報はコントロールパネル上の情報を利用。
  • VPSコントロールパネルの左側にある「OS再インストール」を選択。
  • OS再インストール画面が表示されたら「カスタムOSインストールへ」を選択。
  • カスタムOSインストール画面が表示されたら、OS選択で「Debian 7 amd64」を選択し、画面下部の「確認」を押下。
  • 確認画面が表示されるので、OSが「Debian 7 amd64」であることを確認してから「実行」を押下。
  • ブラウザに「インストールを開始しました。」と表示されたら、「HTML5モードで開く(推奨)」を選択し、手順を参考にインストールを続ける。
  • インストール途中で聞かれる root 以外の初期ユーザは作業者自身のアカウントを作成し、パスワードは運用ルールに従って適切に設定する。
  • rootのパスワードは運用ルールに従って適切に設定する。

OSの基本設定

仮想マシンの起動

  • VPSホームから、仮想サーバを起動する。

Debian Linuxへのログイン

  • VPSコントロールパネルの「リモートコンソール」を選択し、以下のようにログインする。
user: 作業者のユーザー名
password: 作業者のパスワード

apt の設定

  • su 後に /etc/apt/sources.list の各行に contrib non-free を追加する(コピペは上部のコピペ用アイコンでできる)
deb http://ftp.jp.debian.org/debian wheezy main contrib non-free
deb-src http://ftp.jp.debian.org/debian wheezy main contrib non-free

deb http://security.debian.org/ wheezy/updates main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main contrib non-free

# wheezy-updates, previously known as 'volatile'
deb http://ftp.jp.debian.org/debian wheezy-updates main contrib non-free
deb-src http://ftp.jp.debian.org/debian wheezy-updates main contrib non-free

Debianのアップデート

# resynchronize the package index files from their sources
apt-get update

# install the newest versions of all packages currently installed on the system from the sources
apt-get upgrade

# remove packages that were automatically installed to satisfy dependencies for some package and that are no more needed
apt-get autoremove

# clears out the local repository of retrieved package files
apt-get clean

# updates the package cache and checks for broken dependencies
apt-get check

sshの設定

通常はネットワーク経由で作業を行うため、ssh の設定を行い、以降は ssh 経由で作業を行う。

作業者のSSH認証用設定

作業者全員分の公開鍵を設定する。以下例:

USER_NAME="作業者のユーザー名"
PUB_KEY="作業者の公開鍵"
mkdir /home/$USER_NAME/.ssh
chmod 700 /home/$USER_NAME/.ssh
echo $PUB_KEY > /home/$USER_NAME/.ssh/authorized_keys
chmod 600 /home/$USER_NAME/.ssh/authorized_keys
chown -R $USER_NAME:$USER_NAME /home/$USER_NAME/.ssh
sshdの設定
  • ポート番号を 22 から別の番号に変更(今回は便宜的に56789番ポートとする)
  • ssh接続時のrootログインを禁止
  • パスワード認証を禁止

以下はviで目視確認しながら置換を行う例:

vi /etc/ssh/sshd_config

↓以下はviのコマンド
:%s/Port 22/Port 56789/gc
:%s/PermitRootLogin yes/PermitRootLogin no/gc
:%s/#PasswordAuthentication yes/PasswordAuthentication no/gc
sshdの再起動
/etc/init.d/ssh restart

sshd の再起動後、公開鍵認証でログインできるかを確認する。

iptablesの設定

ここに書かれているのはインストール直後の無防備状態よりはマシ程度の最低限の設定。実際に作業をする際には、環境に合った適切な設定をしてください。(日本語だとこことか参考になりそう)

設定概要
  • www(80)を公開
  • https(443)を公開
  • 56789(独自のsshポート)を公開
  • icmpを公開
設定ファイルの作成

以下を実行して設定ファイルを /etc/network/if-pre-up.d/iptables-setup に作成する。*1

echo '#!/bin/sh

### initialize ###
/sbin/iptables -F # テーブルを初期化
/sbin/iptables -X # チェーンを削除

### policies ###
/sbin/iptables -P INPUT   DROP   # 外部からのパケットは基本的に無視する。
/sbin/iptables -P OUTPUT  ACCEPT # 内部で生成されたパケットは基本的に処理する。
/sbin/iptables -P FORWARD DROP   # パケットのルーティングは基本的に行わない。

### rules ###
/sbin/iptables -A INPUT -p TCP -s 0/0 --dport 80 -j ACCEPT                    # tomcat
/sbin/iptables -A INPUT -p TCP -s 0/0 --dport 443 -j ACCEPT                   # tomcat(ssl)
/sbin/iptables -A INPUT -p TCP -s 0/0 --dport 56789 -j ACCEPT                 # ssh
/sbin/iptables -A INPUT -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT                # icmp
/sbin/iptables -A INPUT -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT               # icmp
/sbin/iptables -A INPUT -p ALL -i lo -s 127.0.0.1 -j ACCEPT                   # ローカルループバックからの入力は許可
/sbin/iptables -A INPUT -p ALL -m state --state ESTABLISHED,RELATED -j ACCEPT # セッション確立後のパケット疎通は許可' > /etc/network/if-pre-up.d/iptables-setup
chmod 755 /etc/network/if-pre-up.d/iptables-setup
フィルタリングの手動実行
/etc/network/if-pre-up.d/iptables-setup

ntpの設定

ntpのインストール
yes | apt-get install ntp
設定ファイルの変更

/etc/ntp.conf ファイルの下記の箇所を

server 0.debian.pool.ntp.org iburst
server 1.debian.pool.ntp.org iburst
server 2.debian.pool.ntp.org iburst
server 3.debian.pool.ntp.org iburst

下記の内容に置き換える

server ntp1.jst.mfeed.ad.jp
server ntp2.jst.mfeed.ad.jp
server ntp3.jst.mfeed.ad.jp
ntpdの再起動

/etc/init.d/ntp restart

その他必要なパッケージのインストール

自分が必要と思うパッケージを思うままに入れる。

vim のインストール
yes | apt-get install vim

デフォルトのエディタを vim に変更

update-alternatives --config editor

/usr/bin/vim.basic を選択する。

pbzip2 のインストール
apt-get install pbzip2

ユーザの追加

  • adduser コマンドでユーザーを追加する。対話式で色々聞かれるが、パスワード以外は全て エンターを押下し「Is the information correct? [Y/n]」と聞かれたら「Y」を入力してエンターを押下。
  • 各ユーザーに対して、必要に応じてSSHの公開鍵を設定する。以下例:
USER_NAME="作業者のユーザー名"
PUB_KEY="作業者の公開鍵"
mkdir /home/$USER_NAME/.ssh
chmod 700 /home/$USER_NAME/.ssh
echo $PUB_KEY > /home/$USER_NAME/.ssh/authorized_keys
chmod 600 /home/$USER_NAME/.ssh/authorized_keys
chown -R $USER_NAME:$USER_NAME /home/$USER_NAME/.ssh

IPv6の無効化

※本来は無効化ではなくきちんと設定すべきだが、もし取り急ぎ対応したいということであれば下記のようにIPv6を無効化するという方法もある。

  • ipv6を無効にするようにカーネルパラメータを設定してリブートする
echo net.ipv6.conf.all.disable_ipv6=1 > /etc/sysctl.d/disableipv6.conf
  • リブート後、以下を実行してパラメータが 1 になっていることを確認する。
/sbin/sysctl -a --pattern 'net.ipv6.conf.all.disable'

*1:iptables-save/restore を利用したほうが高速なのだが今回はシンプルさを重視した