2013年9月15日日曜日

GMOクラウドVPSにUbuntu12.04をクリーンインストール(前編)

仕様は悪くないのに、妙に重い・・・ということで色々と調べてみるとファイルシステムがext3になっている・・・
ネット上を調べてみるとext4にコンバートされている方もいらっしゃるようですが、せっかくなのでパーティションも切り直せるクリーンインストールを試してみました。



GMOクラウドVPSではVNCコンソールが提供されているので、特に悩むことなどありません。

まずは、コントロールパネルから「OS再インストール」を実施してSSHでログイン。
/bootディレクトリに二つのファイルを追加します。

# cd /boot
# wget http://archive.ubuntu.com/ubuntu/dists/precise-updates/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/initrd.gz
# wget http://archive.ubuntu.com/ubuntu/dists/precise-updates/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/linux

/boot/grub/menu.lstをの末尾に4行を追加します。

# vi /boot/grub/menu.lst
title install
    root (hd0,0)
    kernel /boot/linux priority=low --
    initrd /boot/initrd.gz



ここで、コントロールパネルからコンソールを立ち上げて # reboot します。
ブートローダからinstallを選んでUbuntuのインストーラを立ち上げてインストールを行います。

無事にUbuntu12.04をインストール出来ましたので、パフォーマンスアップに着手します。
その前にセキュリティを強化しておきましょう。

# aptitude install apparmor-profiles iptables-persistent openssh-server


まずはファイアウォールを設定します。
私は、後から編集し易いように以下のようなスクリプトを組んでいます。

#vi /root/iptables.sh

 #!/bin/bash
 iptables -F
 iptables -X
 iptables -Z
 iptables -P INPUT   DROP
 iptables -P OUTPUT  ACCEPT
 iptables -P FORWARD DROP
 
 iptables -A INPUT -i lo -j ACCEPT
 iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
 iptables -A INPUT -p udp -m state --state ESTABLISHED,RELATED -j ACCEPT
 
 ip6tables -F
 ip6tables -X
 ip6tables -Z
 ip6tables -P INPUT   DROP
 ip6tables -P OUTPUT  ACCEPT
 ip6tables -P FORWARD DROP
 
 ip6tables -A INPUT -i lo -j ACCEPT
 ip6tables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
 ip6tables -A INPUT -p udp -m state --state ESTABLISHED,RELATED -j ACCEPT
 
 # IDENT
 iptables -A INPUT -p tcp --dport 113 -j REJECT --reject-with tcp-reset
 ip6tables -A INPUT -p tcp --dport 113 -j REJECT
 # Dropbox
 iptables -A INPUT -p udp --dport 17500 -j REJECT
 ip6tables -A INPUT -p udp --dport 17500 -j REJECT
 
 # services
 iptables -A INPUT -p icmp -j ACCEPT
 iptables -A INPUT -p tcp --dport 22 -j ACCEPT
 ip6tables -A INPUT -p icmpv6 -j ACCEPT
 ip6tables -A INPUT -p tcp --dport 22 -j ACCEPT
 
 iptables -A INPUT  -j LOG --log-prefix "drop: "
 iptables -A INPUT  -j DROP
 ip6tables -A INPUT -j DROP
 
 iptables-save > /etc/iptables/rules.v4
 ip6tables-save > /etc/iptables/rules.v6

SSHログイン出来るネットワークを絞ります。
# vi /etc/hosts.allow

 sshd: .jp

# vi /etc/hosts.deny

 ALL: ALL

OpenSSHの設定を行います。
# vi /etc/ssh/sshd_config
パスワード認証を無効にして鍵認証のみにする。
# rm /etc/ssh/ssh_host*
# ssh-keygen -t rsa1 -b 4096 -f /etc/ssh/ssh_host_key -N ''
# ssh-keygen -t dsa -b 1024 -f /etc/ssh/ssh_host_dsa_key -N ''
# ssh-keygen -t rsa -b 4096 -f /etc/ssh/ssh_host_rsa_key -N ''
# ssh-keygen -t ecdsa -b 521 -f /etc/ssh/ssh_host_ecdsa_key -N ''

少しでもメモリが欲しいので、ZRAMを導入してみます。
# aptitude install zram-config
# vi /etc/fstab
swap領域のオプション「sw」を「sw,pri=3」に変更して優先順位を下げておきます。

カーネルの設定を調整します。
# vi /etc/sysctl.conf

 net.ipv6.conf.all.disable_ipv6 = 1
 net.ipv6.conf.default.disable_ipv6 = 1
 net.ipv4.tcp_window_scaling = 1
 net.ipv4.tcp_moderate_rcvbuf = 1
 net.ipv4.tcp_no_metrics_save = 1
 net.ipv4.tcp_syncookies = 1
 net.ipv4.conf.all.rp_filter = 1
 net.ipv4.tcp_max_syn_backlog = 4096
 net.ipv4.tcp_sack = 1
 net.core.somaxconn = 4096
 net.core.netdev_max_backlog = 4096
 kernel.sysrq = 0
 kernel.panic = 120

# vi /etc/rc.local

 /sbin/ifconfig eth0 txqueuelen 60000

ここまで設定したら # reboot して完了です。