UbuntuServer13.04は普通にインストールを実施します。その際に2.5inchのHDD2台でRAID1構成としたかったので、インストール中にRAIDを組んでいます。
ここから下は、OSインストール後の初期設定です。本サイトでTV録画やKVM環境を構築していますが、そのいずれもの前提条件となっています。
UbuntuServer 13.04をインストールした後の初期設定を行います。
IPv6は今のところ使わないので無効化する。
sudo su - echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.conf
パッケージを更新しておく。
sudo apt-get update sudo apt-get upgrade
ドライバの導入等の際に必要なパッケージを事前導入しておく。
#必要なパッケージの導入(開発系のパッケージもいくつか含まれています) sudo apt-get install vim sudo apt-get install git unzip pkg-config automake build-essential sudo apt-get install automake omake autopoint libtool libboost-all-dev
SSHでのログイン時にDNSを引いて待たされないようにする
sudo echo "UseDNS no" >> /etc/ssh/sshd_config sudo /etc/init.d/ssh restart
ufwは使わずに独自に定義したiptablesのルールを使えるようにする
sudo apt-get remove ufw sudo apt-get install iptables-persistent
iptablesの設定をする
公開しているサービス以外は、パッケージの管理だけ対応できて、管理用ネットワークからのみアクセス出来れば良いと言うスタンスです。iptablesの設定解説で良く見受けられる192.168.0.0/16がインターネット側から来た場合には~みたいな設定は、Linuxをルータとして使用する際には必要ですが、ルータの下にあるサーバでは設定していません。『ルータではねてるでしょ?』と言う事で。
## 変数の定義 # ローカルネットワーク(安全なLANセグメント) LOCAL_ETH='eth0' LOCAL_NETWORK='172.20.2.0/24' LOCAL_MY_IP='172.20.2.31' MANAGE_HOST='172.20.1.128/25' # iptablesのプログラム IPTABLES='/sbin/iptables' IPTABLES_SAVE='/sbin/iptables-save' # ルールの設定中だけは全部許可 # 本当は、管理用PCからのSSHのみアクセスするフィルタを暫定的に入れるのが望ましいのですが、 # iptablesの設定がすべて完了してから公開セグメントに持っていくことを想定している事と、 # 単純にコピペでスクリプトを流し込むので、リスクは極小と判断しています。 $IPTABLES -P INPUT ACCEPT $IPTABLES -P OUTPUT ACCEPT # ルールの初期化 $IPTABLES -F # ローカルループバックを許可 $IPTABLES -A INPUT -i lo -j ACCEPT $IPTABLES -A OUTPUT -o lo -j ACCEPT # 明らかにおかしいパケットは拒否 $IPTABLES -A INPUT -p tcp -m state --state INVALID -j DROP $IPTABLES -A OUTPUT -p tcp -m state --state INVALID -j DROP # サーバから外部サーバへのアクセス許可(パッケージアップデート等の為) $IPTABLES -A INPUT -i $LOCAL_ETH -d $LOCAL_MY_IP -p udp --sport 53 -j ACCEPT $IPTABLES -A INPUT -i $LOCAL_ETH -d $LOCAL_MY_IP -p tcp -m multiport --sports 25,53,80,443,587 -j ACCEPT $IPTABLES -A OUTPUT -o $LOCAL_ETH -s $LOCAL_MY_IP -p udp --dport 53 -j ACCEPT $IPTABLES -A OUTPUT -o $LOCAL_ETH -s $LOCAL_MY_IP -p tcp -m multiport --dport 25,53,80,443,587 -j ACCEPT # サービスの公開ポート $IPTABLES -A INPUT -i $LOCAL_ETH -d $LOCAL_MY_IP -p tcp --sport 1024:65535 --dport 25 -j ACCEPT $IPTABLES -A OUTPUT -o $LOCAL_ETH -s $LOCAL_MY_IP -p tcp --sport 25 --dport 1024:65535 -j ACCEPT # ssh $IPTABLES -A INPUT -i $LOCAL_ETH -d $LOCAL_MY_IP -s $MANAGE_HOST -p tcp --sport 1024:65535 --dport 22 -j ACCEPT $IPTABLES -A OUTPUT -o $LOCAL_ETH -s $LOCAL_MY_IP -d $MANAGE_HOST -p tcp --sport 22 --dport 1024:65535 -j ACCEPT # デフォルトDROPにする $IPTABLES -P INPUT DROP $IPTABLES -P OUTPUT DROP $IPTABLES -P FORWARD DROP
設定したiptablesのルールをセーブする
IPTABLES_SAVE='/sbin/iptables-save' IPTABLES_RULES='/etc/iptables/rules.v4' $IPTABLES_SAVE > $IPTABLES_RULES
その他ちょっとしたTIPS(と言うか変な所ではまった箇所)
UEFI対応のMBでインストールした場合がNGだったのかは調査できていませんが、Ubuntuのインストール時にHDDの設定をする際にMBRではなくGPTでHDDの初期化がされてしまう場合があり、その場合には、Linuxによるsoftware raidを組んでいる際に、マスターブートレコードが上手くインストールされない事がありました。
今回はKVMも動かしたかったため、HDDをミラーリング構成にする都合上、UEFIに非対応のサーバマシン(富士通の TX110 S3)上でUbuntuをインストールしてから、今回のマシンにHDDを指し直すというバッドプラクティスを行ったため、TX110 S3のNICの設定が記憶されていたことから、昔のNICのMACアドレスを新しいNICの物に書き換えました。
# /etc/udev/rules.d/70-persistent-net.rules SUBSYSTEM=="net", DRIVERS=="?*", ATTR{address}=="11:22:33:44:55:66", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"