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

またVPSを契約してみた

DTI ServersMan@VPSが一ヶ月無料ということで試しに契約をしてみました。選んだのはEntry プランで、メモリ512MB保証、HDD10GBのものです。選んだOSはSaaSesの時と同じようにDebianの32bit。
メモリの512MBは少なくともこれだけは使えるようにしておくよという量で、freeコマンドを叩くと1GBある様に見えます。サーバに余裕があるときは1GB近くまでのメモリを利用できるらしいです。
ここでは契約をして最初にやったことをメモしておきます。ちょっと長いかも。

いろいろ

cat /etc/debian_versionでバージョンを確認したら6.0.4だったのでDebianの更新を行を行います。更新後は6.0.7になりました。

# apt-get update
# apt-get dist-upgrade

ホストネームが長いので適当なホストネームに変更します。

# hostname %ホストネーム%

なんか嫌なのでserversmanサービスを自動起動しないようにしました。

# update-rc.d serversman remove
# /etc/init.d/serversman stop

pgrep serversmanを探してプロセス番号が出てこなければOK。本当はアンインストールしたかったのですが、エラーが出てアンインストールできなかったので止めるだけになりました。


次に自分の常用するユーザを追加します。

# useradd %ユーザ名%
# passwd %ユーザ名%

今回はホームディレクトリが作成されなかったので作成しておきました。

# mkdir /home/%ユーザ名%
# chwon %ユーザ名%:%グループ名% /home/%ユーザ名%

sudoとsshの設定

rootのまま作業は危険だという常識に乗るべく設定をします。
まずはsudoできるようにユーザを追加します。

# visudo
%ユーザ名% ALL=(ALL) ALL

設定したユーザでログインしてsudoできるか確認をします。
確認ができたらrootはログアウトしておきます。


デフォルトのシェルが/bin/shだったのでbashに変更します。

# chsh -s /bin/bash


今回sudoしたときに

sudo: unable to resolve host %ホストネーム%

と出てきました、なんとなく名前を解決できなかったのかなと思って/etc/hostsにホストネームを追記したところメッセージが出てこなくなりました。


一般ユーザでログインできたらsshでrootからのログインを禁止します。

# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.def
# vi /etc/ssh/sshd_config
PermitRootLogin no
# /etc/init.d/ssh restart

sshを再起動させた後にrootでログインできなければOK、公開鍵認証にするためにローカルで鍵のペアを作成します。
今回はWindowsXP上のcygwinで作成しました。

# ssh-keygen

鍵ができたらサーバに公開鍵用のファイルを作成し、ssh-keygenで作成されたid_rsa.pubファイルを開いて内容を./.ssh/authorized_keysに書き込みます。
SCPで送ってファイル名変えたりしてもいいかもしれません。.sshディレクトリが存在しなかったので作成から。ディレクトリと鍵ファイルのパーミッションは変更しておきます。

# mkdir ./.ssh
# touch ./.ssh/authorized_keys
# vi ./.ssh/authorized_keys
# chmod 700 ./.ssh
# chmod 600 ./.ssh/authorized_keys

ここまでできたら鍵認証ログインを試してみて、成功したらパスワードによるログインを禁止します。

# vi /etc/ssh/sshd_config
PasswordAuthentication no
# /etc/init.d/ssh restart

sshを再起動したらパスワードログインができないことと鍵認証ログインができることを確認します。


一応rootのパスワードをロックしておきます。

# passwd -l root

パスワードを復活させるときはpasswd -u rootでイケるらしいです。

ローケルの変更

英語は苦手なのでできる限り日本語を表示してもらうためにローケルを日本語に設定します。

# dpkg-reconfigure locales
en_GB.UTF-8 UTF-8
ja_JP.EUC-JP EUC-JP
ja_JP.UTF-8 UTF-8

上の3つを選択してOK、デフォルトのローケルを聞かれるのでja_JP.UTF-8 UTF-8を選択しておきました。
さらに./.profileにLANGを設定します。./.profileが無かったので作成も含めて。

# touch ./.profile
# vi ./.profile 
export LANG=ja_JP.UTF-8

ログインし直すかコマンドでexport LANG=ja_JP.UTF-8を実行して適当にdf -hなどをすると日本語が表示されてくるはずです。

ネットワーク関係の設定

ポート番号が22ではなく指定された番号になるのでServieにポート番号を登録しました。

# vi /etc/services
ssh %ポート番号%/tcp
ssh %ポート番号%/tcp


だだ漏れもアレなのでパケットフィルタを設定。通過させるのは80番、sshのポート、ICMP、DNS、サーバから接続を開始した通信です。それらを設定してから他のポート番号への接続はdropさせます。

# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# iptables -A INPUT -p tcp --dport %sshポート番号% -j ACCEPT
# iptables -A INPUT -p icmp -j ACCEPT
# iptables -A INPUT -p udp --sport domain -j ACCEPT
# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# iptables -P INPUT DROP
# iptables -P FORWARD DROP
# iptables -P OUTPUT ACCEPT

ミスるとsshでも通信できなくなりますが、この時点であれば仮想マシンを再起動させれば大丈夫なはずです。というか大丈夫でした。
iptablesを起動時に自動設定するパッケージのインストール。スクリプトを書いて云々もありましたが、パッケージがあるのでこれを利用します。

# apt-get install iptables-persistent

現在の設定を保存してからiptablesの自動起動を設定します。

# iptables-save > /etc/iptables/rules
# service iptables-persistent start


これで最初にやっておきたいことが完了しました。
無料期間でどこまでできるかなー。うまく構築できれば継続して使うかもしれません。